diff --git a/docs/gateway/policies/writing-custom-python-policies.md b/docs/gateway/policies/writing-custom-python-policies.md index 76d103bdb9..0e0564ca2f 100644 --- a/docs/gateway/policies/writing-custom-python-policies.md +++ b/docs/gateway/policies/writing-custom-python-policies.md @@ -570,10 +570,12 @@ Available in `on_request_body()`. | Field | Type | Description | |-------|------|-------------| -| `headers` | `Headers` | Read-only, case-insensitive request headers | +| `headers` | `Headers` | Read-only, case-insensitive request headers (**current** — may reflect mutations by earlier header-phase policies) | | `body` | `Body \| None` | Buffered request body (`.content: bytes`, `.present: bool`) | | `path` | `str` | Request path (e.g., `/api/v1/items`) | | `method` | `str` | HTTP method (e.g., `POST`) | +| `downstream` | `DownstreamContext \| None` | Snapshot of the **original** client request (`.request.headers: Headers`). `None` on older gateways — see [Validating original headers](#validating-original-headers-downstream--upstream) | +| `upstream` | `UpstreamRequestContext \| None` | Resolved upstream target for this request (`.name: str`, `.url: str`, `.base_path: str`). `None` on older gateways | | `shared` | `SharedContext` | API metadata, auth context, and cross-policy metadata bag | ### `RequestHeaderContext` @@ -582,11 +584,13 @@ Available in `on_request_headers()`. | Field | Type | Description | |-------|------|-------------| -| `headers` | `Headers` | Read-only, case-insensitive request headers | +| `headers` | `Headers` | Read-only, case-insensitive request headers (**current**) | | `path` | `str` | Request path | | `method` | `str` | HTTP method | | `authority` | `str` | Request authority | | `scheme` | `str` | Request scheme (`http`/`https`) | +| `downstream` | `DownstreamContext \| None` | Snapshot of the **original** client request (`.request.headers: Headers`). `None` on older gateways | +| `upstream` | `UpstreamRequestContext \| None` | Resolved upstream target for this request (`.name: str`, `.url: str`, `.base_path: str`). `None` on older gateways | | `shared` | `SharedContext` | API metadata, auth context, and cross-policy metadata bag | ### `ResponseContext` @@ -599,9 +603,11 @@ Available in `on_response_body()`. | `request_body` | `Body \| None` | Original request body | | `request_path` | `str` | Original request path | | `request_method` | `str` | Original HTTP method | -| `response_headers` | `Headers` | Response headers from upstream | +| `response_headers` | `Headers` | Response headers (**current** — may reflect mutations by earlier header-phase policies) | | `response_body` | `Body \| None` | Buffered response body | | `response_status` | `int` | HTTP status code from upstream | +| `downstream` | `DownstreamContext \| None` | Snapshot of the **original** client request (`.request.headers: Headers`). `None` on older gateways | +| `upstream` | `UpstreamResponseContext \| None` | Resolved upstream target plus a snapshot of the **original** upstream response (`.name: str`, `.url: str`, `.base_path: str`, `.response.headers: Headers`). `None` on older gateways | | `shared` | `SharedContext` | API metadata, auth context, and cross-policy metadata bag | ### `ResponseHeaderContext` @@ -611,8 +617,10 @@ Available in `on_response_headers()`. | Field | Type | Description | |-------|------|-------------| | `request_headers` | `Headers` | Original request headers | -| `response_headers` | `Headers` | Response headers from upstream | +| `response_headers` | `Headers` | Response headers (**current**) | | `response_status` | `int` | HTTP status code from upstream | +| `downstream` | `DownstreamContext \| None` | Snapshot of the **original** client request (`.request.headers: Headers`). `None` on older gateways | +| `upstream` | `UpstreamResponseContext \| None` | Resolved upstream target plus a snapshot of the **original** upstream response (`.name: str`, `.url: str`, `.base_path: str`, `.response.headers: Headers`). `None` on older gateways | | `shared` | `SharedContext` | API metadata, auth context, and cross-policy metadata bag | ### `SharedContext` @@ -642,6 +650,56 @@ Read-only, case-insensitive header wrapper. | `get_all()` | `dict[str, list[str]]` | Defensive copy of all headers | | `iterate()` | `Iterator[tuple[str, list[str]]]` | Iterate over `(name, values)` pairs | +### Validating original headers (`downstream` / `upstream`) + +The gateway runs **every** policy's header phase before **any** policy's body +phase, and header mutations are applied in place. So if a later policy rewrites +a header during its header phase, a body-phase validator reading `headers` will +see the *rewritten* value — not what the client (or backend) actually sent. + +When your policy needs to validate against the **original** value, read from the +snapshot instead: + +- `ctx.downstream.request.headers` — the original **client request** headers. +- `ctx.upstream.response.headers` — the original **upstream response** headers + (response-phase contexts only). + +These snapshots are captured before any policy mutation. + +**Always nil-check and fall back.** `downstream`/`upstream` — and their nested +`request`/`response` — are `None` on older gateways that predate this feature. A +`None` snapshot means "not available", so fall back to the mutable headers so +your policy keeps working across gateway versions: + +```python +def on_request_body(self, ctx: RequestContext, params: dict) -> RequestAction | None: + # Prefer the pristine client headers; fall back on older gateways. + headers = ctx.headers + if ( + ctx.downstream is not None + and ctx.downstream.request is not None + and ctx.downstream.request.headers is not None + ): + headers = ctx.downstream.request.headers + + token = headers.get("authorization") # exactly what the client sent + if not token or not self._valid(token[0]): + return ImmediateResponse( + status_code=401, + headers={"content-type": "application/json"}, + body=b'{"error":"unauthorized","message":"Invalid or expired credentials."}', + ) + return None +``` + +For a response-phase policy validating a header the **backend** set, use +`ctx.upstream.response.headers` with the same nil-check pattern (guarding +`ctx.upstream`, `ctx.upstream.response`, then `.headers`). + +> **Note:** `headers` and `downstream.request.headers` are identical unless +> another policy actually mutated the header, so test the mutate-then-validate +> ordering explicitly — not just the happy path. + --- ## Step 4: Register and Build diff --git a/gateway/gateway-runtime/api/proto/python_executor.proto b/gateway/gateway-runtime/api/proto/python_executor.proto index fdf416aae9..6670b8aa0d 100644 --- a/gateway/gateway-runtime/api/proto/python_executor.proto +++ b/gateway/gateway-runtime/api/proto/python_executor.proto @@ -192,6 +192,44 @@ message StreamBody { uint64 index = 3; } +// DownstreamRequest carries a snapshot of the request as received from the +// downstream client, captured before any policy mutation. +message DownstreamRequest { + Headers headers = 1; +} + +// DownstreamContext identifies the downstream client and carries a snapshot of +// the client request. Absent on older gateways — new policies must treat an +// unset field as "not available" and fall back to legacy validation against +// the mutable headers. +message DownstreamContext { + DownstreamRequest request = 1; +} + +// UpstreamRequestContext identifies the route's resolved upstream target during +// the request phase. Absent on older gateways. +message UpstreamRequestContext { + string name = 1; + string url = 2; + string base_path = 3; +} + +// UpstreamResponse carries a snapshot of the upstream response headers, +// captured before any policy mutation. +message UpstreamResponse { + Headers headers = 1; +} + +// UpstreamResponseContext identifies the route's resolved upstream target during +// the response phase and carries a snapshot of the upstream response. Absent on +// older gateways — see DownstreamContext for the backward-compat contract. +message UpstreamResponseContext { + string name = 1; + string url = 2; + string base_path = 3; + UpstreamResponse response = 4; +} + message AuthContext { bool authenticated = 1; bool authorized = 2; @@ -213,6 +251,8 @@ message RequestHeaderContext { string authority = 4; string scheme = 5; string vhost = 6; + DownstreamContext downstream = 7; + UpstreamRequestContext upstream = 8; } message RequestContext { @@ -223,6 +263,8 @@ message RequestContext { string authority = 5; string scheme = 6; string vhost = 7; + DownstreamContext downstream = 8; + UpstreamRequestContext upstream = 9; } message ResponseHeaderContext { @@ -232,6 +274,8 @@ message ResponseHeaderContext { string request_method = 4; Headers response_headers = 5; int32 response_status = 6; + DownstreamContext downstream = 7; + UpstreamResponseContext upstream = 8; } message ResponseContext { @@ -242,6 +286,8 @@ message ResponseContext { Headers response_headers = 5; Body response_body = 6; int32 response_status = 7; + DownstreamContext downstream = 8; + UpstreamResponseContext upstream = 9; } message RequestStreamContext { @@ -251,6 +297,8 @@ message RequestStreamContext { string authority = 4; string scheme = 5; string vhost = 6; + DownstreamContext downstream = 7; + UpstreamRequestContext upstream = 8; } message ResponseStreamContext { @@ -260,6 +308,8 @@ message ResponseStreamContext { string request_method = 4; Headers response_headers = 5; int32 response_status = 6; + DownstreamContext downstream = 7; + UpstreamResponseContext upstream = 8; } message RequestHeadersPayload { diff --git a/gateway/gateway-runtime/policy-engine/go.mod b/gateway/gateway-runtime/policy-engine/go.mod index 556ff76d51..ca469dbfbb 100644 --- a/gateway/gateway-runtime/policy-engine/go.mod +++ b/gateway/gateway-runtime/policy-engine/go.mod @@ -17,7 +17,7 @@ require ( github.com/prometheus/client_golang v1.23.2 github.com/stretchr/testify v1.11.1 github.com/wso2/api-platform/common v0.0.0-20260326194347-3d85c50eae71 - github.com/wso2/api-platform/sdk/core v0.2.18 + github.com/wso2/api-platform/sdk/core v0.3.0 go.opentelemetry.io/otel v1.44.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0 go.opentelemetry.io/otel/sdk v1.44.0 diff --git a/gateway/gateway-runtime/policy-engine/go.sum b/gateway/gateway-runtime/policy-engine/go.sum index 5daf9ca443..f0491f54db 100644 --- a/gateway/gateway-runtime/policy-engine/go.sum +++ b/gateway/gateway-runtime/policy-engine/go.sum @@ -94,8 +94,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/wso2/api-platform/sdk/core v0.2.18 h1:j6UhHjGBa9qCxqbT4p8cwLUKkQVtpvoMTMsjs1DfYR0= -github.com/wso2/api-platform/sdk/core v0.2.18/go.mod h1:NZMDIQadQDpbynlCLYdZT6duiHwnf7emr7SbLHdCjaE= +github.com/wso2/api-platform/sdk/core v0.3.0 h1:iPUEwB1lpjQto/Gjgl1F4ZrrU4P85bXvmabxgBSHs7E= +github.com/wso2/api-platform/sdk/core v0.3.0/go.mod h1:NZMDIQadQDpbynlCLYdZT6duiHwnf7emr7SbLHdCjaE= github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= diff --git a/gateway/gateway-runtime/policy-engine/internal/kernel/downstream_upstream_test.go b/gateway/gateway-runtime/policy-engine/internal/kernel/downstream_upstream_test.go new file mode 100644 index 0000000000..f098b8efab --- /dev/null +++ b/gateway/gateway-runtime/policy-engine/internal/kernel/downstream_upstream_test.go @@ -0,0 +1,192 @@ +/* + * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com). + * + * WSO2 LLC. licenses this file to you 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. + */ + +package kernel + +import ( + "testing" + + corev3 "github.com/envoyproxy/go-control-plane/envoy/config/core/v3" + extprocv3 "github.com/envoyproxy/go-control-plane/envoy/service/ext_proc/v3" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/wso2/api-platform/gateway/gateway-runtime/policy-engine/internal/config" + "github.com/wso2/api-platform/gateway/gateway-runtime/policy-engine/internal/executor" + "github.com/wso2/api-platform/gateway/gateway-runtime/policy-engine/internal/registry" + policy "github.com/wso2/api-platform/sdk/core/policy/v1alpha2" +) + +// newDownstreamTestExecCtx builds a bare PolicyExecutionContext suitable for +// exercising the context builders and header-mutation helpers directly. +func newDownstreamTestExecCtx() *PolicyExecutionContext { + kernel := NewKernel() + chainExecutor := executor.NewChainExecutor(nil, nil, nil) + server := NewExternalProcessorServer(kernel, chainExecutor, config.TracingConfig{}, "") + return newPolicyExecutionContext(server, "test-route", ®istry.PolicyChain{}) +} + +func httpHeaders(pairs ...[2]string) *extprocv3.HttpHeaders { + values := make([]*corev3.HeaderValue, 0, len(pairs)) + for _, p := range pairs { + values = append(values, &corev3.HeaderValue{Key: p[0], RawValue: []byte(p[1])}) + } + return &extprocv3.HttpHeaders{Headers: &corev3.HeaderMap{Headers: values}} +} + +// setRequestHeaderResult mimics a later header-phase policy that overwrites and +// removes request headers, so we can drive applyRequestHeaderMutations. +func setRequestHeaderResult(set map[string]string, remove []string) []executor.RequestHeaderPolicyResult { + return []executor.RequestHeaderPolicyResult{{ + PolicyName: "mutator", + Action: policy.UpstreamRequestHeaderModifications{ + HeadersToSet: set, + HeadersToRemove: remove, + }, + }} +} + +func setResponseHeaderResult(set map[string]string, remove []string) []executor.ResponseHeaderPolicyResult { + return []executor.ResponseHeaderPolicyResult{{ + PolicyName: "mutator", + Action: policy.DownstreamResponseHeaderModifications{ + HeadersToSet: set, + HeadersToRemove: remove, + }, + }} +} + +// TestDownstreamSnapshot_PopulatedOnAllRequestContexts verifies buildRequestContexts +// captures the original client headers onto Downstream for every request-phase context. +func TestDownstreamSnapshot_PopulatedOnAllRequestContexts(t *testing.T) { + ec := newDownstreamTestExecCtx() + ec.buildRequestContexts(httpHeaders( + [2]string{":path", "/api/pets"}, + [2]string{":method", "POST"}, + [2]string{"authorization", "Bearer original"}, + ), RouteMetadata{}) + + for name, ds := range map[string]*policy.DownstreamContext{ + "requestHeaderCtx": ec.requestHeaderCtx.Downstream, + "requestBodyCtx": ec.requestBodyCtx.Downstream, + "requestStreamContext": ec.requestStreamContext.Downstream, + } { + require.NotNilf(t, ds, "%s.Downstream should be populated", name) + require.NotNilf(t, ds.Request, "%s.Downstream.Request should be populated", name) + require.NotNilf(t, ds.Request.Headers, "%s.Downstream.Request.Headers should be populated", name) + assert.Equalf(t, []string{"Bearer original"}, ds.Request.Headers.Get("authorization"), + "%s should expose the original client header", name) + } +} + +// TestDownstreamSnapshot_SurvivesRequestHeaderMutation is the core regression test: +// a later header-phase policy rewrites a header, but the Downstream snapshot that a +// body-phase validator reads must still reflect the original client value. +func TestDownstreamSnapshot_SurvivesRequestHeaderMutation(t *testing.T) { + ec := newDownstreamTestExecCtx() + ec.buildRequestContexts(httpHeaders( + [2]string{":path", "/api/pets"}, + [2]string{"authorization", "Bearer original"}, + [2]string{"x-legacy", "keep-me"}, + ), RouteMetadata{}) + + // Simulate a later header-phase policy: overwrite authorization, remove x-legacy. + applyRequestHeaderMutations(ec.requestHeaderCtx.Headers, setRequestHeaderResult( + map[string]string{"authorization": "Bearer mutated"}, + []string{"x-legacy"}, + )) + + // Mutable view reflects the mutation (what a header-phase policy left behind). + assert.Equal(t, []string{"Bearer mutated"}, ec.requestBodyCtx.Headers.Get("authorization")) + assert.False(t, ec.requestBodyCtx.Headers.Has("x-legacy")) + + // Downstream snapshot still reflects what the client actually sent. + require.NotNil(t, ec.requestBodyCtx.Downstream) + assert.Equal(t, []string{"Bearer original"}, ec.requestBodyCtx.Downstream.Request.Headers.Get("authorization"), + "body-phase validator must see the pristine downstream header") + assert.True(t, ec.requestBodyCtx.Downstream.Request.Headers.Has("x-legacy"), + "a header removed by a later policy must still be visible in the downstream snapshot") +} + +// TestResponseSnapshots_DownstreamIsOriginalClientAndUpstreamSurvivesMutation verifies: +// - Response Downstream is the ORIGINAL client request headers, not the mutated +// request headers (i.e. the kernel uses the request-time snapshot, not +// requestHeaderCtx.Headers which header-phase policies mutate in place). +// - Response Upstream survives a response-header mutation. +func TestResponseSnapshots_DownstreamIsOriginalClientAndUpstreamSurvivesMutation(t *testing.T) { + ec := newDownstreamTestExecCtx() + ec.buildRequestContexts(httpHeaders( + [2]string{":path", "/api/pets"}, + [2]string{"authorization", "Bearer original"}, + ), RouteMetadata{}) + + // A request header-phase policy rewrites the client header in place. + applyRequestHeaderMutations(ec.requestHeaderCtx.Headers, setRequestHeaderResult( + map[string]string{"authorization": "Bearer mutated"}, nil, + )) + + ec.buildResponseContexts(httpHeaders( + [2]string{":status", "200"}, + [2]string{"x-backend-signature", "sig-original"}, + )) + + // Downstream on the response path must be the pristine client value, even + // though requestHeaderCtx.Headers now holds the mutated value. + require.NotNil(t, ec.responseBodyCtx.Downstream) + assert.Equal(t, []string{"Bearer original"}, ec.responseBodyCtx.Downstream.Request.Headers.Get("authorization"), + "response Downstream must be the original client header, not the mutated one") + + // Now a response header-phase policy rewrites an upstream header. + applyResponseHeaderMutations(ec.responseHeaderCtx.ResponseHeaders, setResponseHeaderResult( + map[string]string{"x-backend-signature": "sig-mutated"}, nil, + )) + + // Mutable response headers reflect the mutation... + assert.Equal(t, []string{"sig-mutated"}, ec.responseBodyCtx.ResponseHeaders.Get("x-backend-signature")) + // ...but the Upstream snapshot preserves what the backend actually sent. + require.NotNil(t, ec.responseBodyCtx.Upstream) + assert.Equal(t, []string{"sig-original"}, ec.responseBodyCtx.Upstream.Response.Headers.Get("x-backend-signature"), + "response-body validator must see the pristine upstream header") +} + +// TestSnapshots_PopulatedOnAllResponseContexts verifies Downstream and Upstream are +// set on every response-phase context. +func TestSnapshots_PopulatedOnAllResponseContexts(t *testing.T) { + ec := newDownstreamTestExecCtx() + ec.buildRequestContexts(httpHeaders([2]string{":path", "/api/pets"}), RouteMetadata{}) + ec.buildResponseContexts(httpHeaders( + [2]string{":status", "200"}, + [2]string{"x-backend-signature", "sig"}, + )) + + type snap struct { + ds *policy.DownstreamContext + us *policy.UpstreamResponseContext + } + for name, s := range map[string]snap{ + "responseHeaderCtx": {ec.responseHeaderCtx.Downstream, ec.responseHeaderCtx.Upstream}, + "responseBodyCtx": {ec.responseBodyCtx.Downstream, ec.responseBodyCtx.Upstream}, + "responseStreamContext": {ec.responseStreamContext.Downstream, ec.responseStreamContext.Upstream}, + } { + require.NotNilf(t, s.ds, "%s.Downstream should be populated", name) + require.NotNilf(t, s.us, "%s.Upstream should be populated", name) + require.NotNilf(t, s.us.Response, "%s.Upstream.Response should be populated", name) + assert.Equalf(t, []string{"sig"}, s.us.Response.Headers.Get("x-backend-signature"), + "%s should expose the original upstream header", name) + } +} diff --git a/gateway/gateway-runtime/policy-engine/internal/kernel/execution_context.go b/gateway/gateway-runtime/policy-engine/internal/kernel/execution_context.go index 6e109c5958..3d11d38f81 100644 --- a/gateway/gateway-runtime/policy-engine/internal/kernel/execution_context.go +++ b/gateway/gateway-runtime/policy-engine/internal/kernel/execution_context.go @@ -63,6 +63,12 @@ type PolicyExecutionContext struct { // Pointed to by each per-phase context's SharedContext field. sharedCtx *policy.SharedContext + // downstreamHeaders is a snapshot of the client request headers, captured at + // buildRequestContexts before any policy mutation. + // Exposed to policies via Request*Context.Downstream and, on the response + // path, via Response*Context.Downstream. + downstreamHeaders *policy.Headers + // Policy chain for this request policyChain *registry.PolicyChain @@ -992,6 +998,13 @@ func (ec *PolicyExecutionContext) buildRequestContexts(headers *extprocv3.HttpHe wrappedHeaders := policy.NewHeaders(headersMap) + // Capture a snapshot of the downstream (client) headers before any policy + // mutation. Header-phase policies mutate wrappedHeaders in + // place, so body/stream-phase validators need this pristine copy to inspect + // what the client actually sent. + ec.downstreamHeaders = cloneHeaders(wrappedHeaders) + downstream := &policy.DownstreamContext{Request: &policy.DownstreamRequest{Headers: ec.downstreamHeaders}} + ec.requestHeaderCtx = &policy.RequestHeaderContext{ SharedContext: sharedCtx, Headers: wrappedHeaders, @@ -1000,6 +1013,8 @@ func (ec *PolicyExecutionContext) buildRequestContexts(headers *extprocv3.HttpHe Authority: authority, Scheme: scheme, Vhost: routeMetadata.Vhost, + Downstream: downstream, + Upstream: toRequestUpstream(ec.defaultUpstream), } // requestBodyCtx shares the same shared context and headers; Body is set later. @@ -1017,6 +1032,8 @@ func (ec *PolicyExecutionContext) buildRequestContexts(headers *extprocv3.HttpHe Scheme: scheme, Vhost: routeMetadata.Vhost, UpstreamInfo: ec.defaultUpstream, + Downstream: downstream, + Upstream: toRequestUpstream(ec.defaultUpstream), } // Build the streaming context once; reused across all chunks for this request. @@ -1028,6 +1045,8 @@ func (ec *PolicyExecutionContext) buildRequestContexts(headers *extprocv3.HttpHe Authority: authority, Scheme: scheme, Vhost: routeMetadata.Vhost, + Downstream: downstream, + Upstream: toRequestUpstream(ec.defaultUpstream), } // Detect request streaming at context-build time while headers are available. @@ -1074,6 +1093,15 @@ func (ec *PolicyExecutionContext) buildResponseContexts(headers *extprocv3.HttpH responseHeaders := policy.NewHeaders(responseHeadersMap) + // Downstream snapshot: the pristine client request headers captured at + // request time (ec.downstreamHeaders). + downstream := &policy.DownstreamContext{Request: &policy.DownstreamRequest{Headers: ec.downstreamHeaders}} + + // Upstream: the route's resolved upstream target plus a snapshot of the + // original upstream response headers, captured before any response-header + // policy mutation. + upstream := toResponseUpstream(ec.defaultUpstream, cloneHeaders(responseHeaders)) + ec.responseHeaderCtx = &policy.ResponseHeaderContext{ SharedContext: ec.sharedCtx, RequestHeaders: ec.requestHeaderCtx.Headers, @@ -1082,6 +1110,8 @@ func (ec *PolicyExecutionContext) buildResponseContexts(headers *extprocv3.HttpH RequestMethod: ec.requestHeaderCtx.Method, ResponseHeaders: responseHeaders, ResponseStatus: responseStatus, + Downstream: downstream, + Upstream: upstream, } var responseBodyEOS *policy.Body @@ -1097,6 +1127,8 @@ func (ec *PolicyExecutionContext) buildResponseContexts(headers *extprocv3.HttpH ResponseHeaders: responseHeaders, ResponseBody: responseBodyEOS, ResponseStatus: responseStatus, + Downstream: downstream, + Upstream: upstream, } // Build the streaming context once; reused across all chunks for this response. @@ -1108,6 +1140,8 @@ func (ec *PolicyExecutionContext) buildResponseContexts(headers *extprocv3.HttpH RequestMethod: ec.requestHeaderCtx.Method, ResponseHeaders: responseHeaders, ResponseStatus: responseStatus, + Downstream: downstream, + Upstream: upstream, } } @@ -1145,6 +1179,49 @@ func isStreamingUpstreamResponse(headers *policy.Headers) bool { return false } +// cloneHeaders returns an independent copy of h — both the map and every +// value slice — so it survives in-place mutation of the source headers. Built on +// the SDK's public GetAll() (which already deep-copies) so no policy-facing +// surface is added for this kernel-only concern. Used to snapshot the original +// downstream/upstream headers before policy mutation. +func cloneHeaders(h *policy.Headers) *policy.Headers { + return policy.NewHeaders(h.GetAll()) +} + +// toRequestUpstream maps the internal wire UpstreamInfo to the request-phase SDK +// type surfaced to policies. Returns nil when no upstream is resolved so the +// context field is left unset (older gateways / no route upstream). +// +// Name is intentionally left unset: the internal Envoy cluster name must +// not be exposed here, and the wire UpstreamInfo carries no user-facing name. +// Policies that still need the raw cluster name can read the deprecated +// RequestContext.UpstreamInfo field. +func toRequestUpstream(info *policyenginev1.UpstreamInfo) *policy.UpstreamRequestContext { + if info == nil { + return nil + } + return &policy.UpstreamRequestContext{ + URL: info.URL, + BasePath: info.BasePath, + } +} + +// toResponseUpstream maps the internal wire UpstreamInfo plus the upstream +// response header snapshot to the response-phase SDK type. The UpstreamResponseContext +// is always built (the response came from an upstream), with the identity fields +// filled only when info is available. Name is left unset for the same +// reason as toRequestUpstream — the cluster name is not exposed here. +func toResponseUpstream(info *policyenginev1.UpstreamInfo, respHeaders *policy.Headers) *policy.UpstreamResponseContext { + us := &policy.UpstreamResponseContext{ + Response: &policy.UpstreamResponse{Headers: respHeaders}, + } + if info != nil { + us.URL = info.URL + us.BasePath = info.BasePath + } + return us +} + // applyRequestHeaderMutations applies RequestHeaderAction mutations from all policy // results into the shared in-memory Headers object so that body-phase policies see // the post-mutation state of the request headers. diff --git a/gateway/gateway-runtime/policy-engine/internal/pythonbridge/bridge_execution.go b/gateway/gateway-runtime/policy-engine/internal/pythonbridge/bridge_execution.go index b1cf424a6b..f018f7098c 100644 --- a/gateway/gateway-runtime/policy-engine/internal/pythonbridge/bridge_execution.go +++ b/gateway/gateway-runtime/policy-engine/internal/pythonbridge/bridge_execution.go @@ -54,6 +54,8 @@ func (b *bridge) buildRequestHeadersRequest( Authority: reqCtx.Authority, Scheme: reqCtx.Scheme, Vhost: reqCtx.Vhost, + Downstream: b.translator.ToProtoDownstream(reqCtx.Downstream), + Upstream: b.translator.ToProtoRequestUpstream(reqCtx.Upstream), }, } return b.newStreamRequest(ctx, reqCtx.SharedContext, params, proto.Phase_PHASE_REQUEST_HEADERS, &proto.StreamRequest_RequestHeaders{ @@ -75,6 +77,8 @@ func (b *bridge) buildRequestBodyRequest( Authority: reqCtx.Authority, Scheme: reqCtx.Scheme, Vhost: reqCtx.Vhost, + Downstream: b.translator.ToProtoDownstream(reqCtx.Downstream), + Upstream: b.translator.ToProtoRequestUpstream(reqCtx.Upstream), }, } return b.newStreamRequest(ctx, reqCtx.SharedContext, params, proto.Phase_PHASE_REQUEST_BODY, &proto.StreamRequest_RequestBody{ @@ -97,6 +101,8 @@ func (b *bridge) buildResponseHeadersRequest( respCtx.ResponseHeaders, ), ResponseStatus: int32(respCtx.ResponseStatus), + Downstream: b.translator.ToProtoDownstream(respCtx.Downstream), + Upstream: b.translator.ToProtoUpstream(respCtx.Upstream), }, } return b.newStreamRequest(ctx, respCtx.SharedContext, params, proto.Phase_PHASE_RESPONSE_HEADERS, &proto.StreamRequest_ResponseHeaders{ @@ -120,6 +126,8 @@ func (b *bridge) buildResponseBodyRequest( ), ResponseBody: b.translator.ToProtoBody(respCtx.ResponseBody), ResponseStatus: int32(respCtx.ResponseStatus), + Downstream: b.translator.ToProtoDownstream(respCtx.Downstream), + Upstream: b.translator.ToProtoUpstream(respCtx.Upstream), }, } return b.newStreamRequest(ctx, respCtx.SharedContext, params, proto.Phase_PHASE_RESPONSE_BODY, &proto.StreamRequest_ResponseBody{ @@ -152,6 +160,8 @@ func (b *bridge) buildRequestChunkRequest( Authority: reqCtx.Authority, Scheme: reqCtx.Scheme, Vhost: reqCtx.Vhost, + Downstream: b.translator.ToProtoDownstream(reqCtx.Downstream), + Upstream: b.translator.ToProtoRequestUpstream(reqCtx.Upstream), }, Chunk: b.translator.ToProtoStreamBody(chunk), } @@ -187,6 +197,8 @@ func (b *bridge) buildResponseChunkRequest( respCtx.ResponseHeaders, ), ResponseStatus: int32(respCtx.ResponseStatus), + Downstream: b.translator.ToProtoDownstream(respCtx.Downstream), + Upstream: b.translator.ToProtoUpstream(respCtx.Upstream), }, Chunk: b.translator.ToProtoStreamBody(chunk), } diff --git a/gateway/gateway-runtime/policy-engine/internal/pythonbridge/proto/python_executor.pb.go b/gateway/gateway-runtime/policy-engine/internal/pythonbridge/proto/python_executor.pb.go index a223f6330e..434d5d0606 100644 --- a/gateway/gateway-runtime/policy-engine/internal/pythonbridge/proto/python_executor.pb.go +++ b/gateway/gateway-runtime/policy-engine/internal/pythonbridge/proto/python_executor.pb.go @@ -1540,6 +1540,279 @@ func (x *StreamBody) GetIndex() uint64 { return 0 } +// DownstreamRequest carries a snapshot of the request as received from the +// downstream client, captured before any policy mutation. +type DownstreamRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Headers *Headers `protobuf:"bytes,1,opt,name=headers,proto3" json:"headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DownstreamRequest) Reset() { + *x = DownstreamRequest{} + mi := &file_proto_python_executor_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DownstreamRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DownstreamRequest) ProtoMessage() {} + +func (x *DownstreamRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_python_executor_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 DownstreamRequest.ProtoReflect.Descriptor instead. +func (*DownstreamRequest) Descriptor() ([]byte, []int) { + return file_proto_python_executor_proto_rawDescGZIP(), []int{15} +} + +func (x *DownstreamRequest) GetHeaders() *Headers { + if x != nil { + return x.Headers + } + return nil +} + +// DownstreamContext identifies the downstream client and carries a snapshot of +// the client request. Absent on older gateways — new policies must treat an +// unset field as "not available" and fall back to legacy validation against +// the mutable headers. +type DownstreamContext struct { + state protoimpl.MessageState `protogen:"open.v1"` + Request *DownstreamRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DownstreamContext) Reset() { + *x = DownstreamContext{} + mi := &file_proto_python_executor_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DownstreamContext) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DownstreamContext) ProtoMessage() {} + +func (x *DownstreamContext) ProtoReflect() protoreflect.Message { + mi := &file_proto_python_executor_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 DownstreamContext.ProtoReflect.Descriptor instead. +func (*DownstreamContext) Descriptor() ([]byte, []int) { + return file_proto_python_executor_proto_rawDescGZIP(), []int{16} +} + +func (x *DownstreamContext) GetRequest() *DownstreamRequest { + if x != nil { + return x.Request + } + return nil +} + +// UpstreamRequestContext identifies the route's resolved upstream target during +// the request phase. Absent on older gateways. +type UpstreamRequestContext struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + BasePath string `protobuf:"bytes,3,opt,name=base_path,json=basePath,proto3" json:"base_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamRequestContext) Reset() { + *x = UpstreamRequestContext{} + mi := &file_proto_python_executor_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamRequestContext) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamRequestContext) ProtoMessage() {} + +func (x *UpstreamRequestContext) ProtoReflect() protoreflect.Message { + mi := &file_proto_python_executor_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 UpstreamRequestContext.ProtoReflect.Descriptor instead. +func (*UpstreamRequestContext) Descriptor() ([]byte, []int) { + return file_proto_python_executor_proto_rawDescGZIP(), []int{17} +} + +func (x *UpstreamRequestContext) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *UpstreamRequestContext) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *UpstreamRequestContext) GetBasePath() string { + if x != nil { + return x.BasePath + } + return "" +} + +// UpstreamResponse carries a snapshot of the upstream response headers, +// captured before any policy mutation. +type UpstreamResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Headers *Headers `protobuf:"bytes,1,opt,name=headers,proto3" json:"headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamResponse) Reset() { + *x = UpstreamResponse{} + mi := &file_proto_python_executor_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamResponse) ProtoMessage() {} + +func (x *UpstreamResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_python_executor_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 UpstreamResponse.ProtoReflect.Descriptor instead. +func (*UpstreamResponse) Descriptor() ([]byte, []int) { + return file_proto_python_executor_proto_rawDescGZIP(), []int{18} +} + +func (x *UpstreamResponse) GetHeaders() *Headers { + if x != nil { + return x.Headers + } + return nil +} + +// UpstreamResponseContext identifies the route's resolved upstream target during +// the response phase and carries a snapshot of the upstream response. Absent on +// older gateways — see DownstreamContext for the backward-compat contract. +type UpstreamResponseContext struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + BasePath string `protobuf:"bytes,3,opt,name=base_path,json=basePath,proto3" json:"base_path,omitempty"` + Response *UpstreamResponse `protobuf:"bytes,4,opt,name=response,proto3" json:"response,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamResponseContext) Reset() { + *x = UpstreamResponseContext{} + mi := &file_proto_python_executor_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamResponseContext) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamResponseContext) ProtoMessage() {} + +func (x *UpstreamResponseContext) ProtoReflect() protoreflect.Message { + mi := &file_proto_python_executor_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 UpstreamResponseContext.ProtoReflect.Descriptor instead. +func (*UpstreamResponseContext) Descriptor() ([]byte, []int) { + return file_proto_python_executor_proto_rawDescGZIP(), []int{19} +} + +func (x *UpstreamResponseContext) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *UpstreamResponseContext) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *UpstreamResponseContext) GetBasePath() string { + if x != nil { + return x.BasePath + } + return "" +} + +func (x *UpstreamResponseContext) GetResponse() *UpstreamResponse { + if x != nil { + return x.Response + } + return nil +} + type AuthContext struct { state protoimpl.MessageState `protogen:"open.v1"` Authenticated bool `protobuf:"varint,1,opt,name=authenticated,proto3" json:"authenticated,omitempty"` @@ -1559,7 +1832,7 @@ type AuthContext struct { func (x *AuthContext) Reset() { *x = AuthContext{} - mi := &file_proto_python_executor_proto_msgTypes[15] + mi := &file_proto_python_executor_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1571,7 +1844,7 @@ func (x *AuthContext) String() string { func (*AuthContext) ProtoMessage() {} func (x *AuthContext) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[15] + mi := &file_proto_python_executor_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1584,7 +1857,7 @@ func (x *AuthContext) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthContext.ProtoReflect.Descriptor instead. func (*AuthContext) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{15} + return file_proto_python_executor_proto_rawDescGZIP(), []int{20} } func (x *AuthContext) GetAuthenticated() bool { @@ -1665,20 +1938,22 @@ func (x *AuthContext) GetTokenId() string { } type RequestHeaderContext struct { - state protoimpl.MessageState `protogen:"open.v1"` - Headers *Headers `protobuf:"bytes,1,opt,name=headers,proto3" json:"headers,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - Method string `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"` - Authority string `protobuf:"bytes,4,opt,name=authority,proto3" json:"authority,omitempty"` - Scheme string `protobuf:"bytes,5,opt,name=scheme,proto3" json:"scheme,omitempty"` - Vhost string `protobuf:"bytes,6,opt,name=vhost,proto3" json:"vhost,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Headers *Headers `protobuf:"bytes,1,opt,name=headers,proto3" json:"headers,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + Method string `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"` + Authority string `protobuf:"bytes,4,opt,name=authority,proto3" json:"authority,omitempty"` + Scheme string `protobuf:"bytes,5,opt,name=scheme,proto3" json:"scheme,omitempty"` + Vhost string `protobuf:"bytes,6,opt,name=vhost,proto3" json:"vhost,omitempty"` + Downstream *DownstreamContext `protobuf:"bytes,7,opt,name=downstream,proto3" json:"downstream,omitempty"` + Upstream *UpstreamRequestContext `protobuf:"bytes,8,opt,name=upstream,proto3" json:"upstream,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RequestHeaderContext) Reset() { *x = RequestHeaderContext{} - mi := &file_proto_python_executor_proto_msgTypes[16] + mi := &file_proto_python_executor_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1690,7 +1965,7 @@ func (x *RequestHeaderContext) String() string { func (*RequestHeaderContext) ProtoMessage() {} func (x *RequestHeaderContext) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[16] + mi := &file_proto_python_executor_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1703,7 +1978,7 @@ func (x *RequestHeaderContext) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestHeaderContext.ProtoReflect.Descriptor instead. func (*RequestHeaderContext) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{16} + return file_proto_python_executor_proto_rawDescGZIP(), []int{21} } func (x *RequestHeaderContext) GetHeaders() *Headers { @@ -1748,22 +2023,38 @@ func (x *RequestHeaderContext) GetVhost() string { return "" } +func (x *RequestHeaderContext) GetDownstream() *DownstreamContext { + if x != nil { + return x.Downstream + } + return nil +} + +func (x *RequestHeaderContext) GetUpstream() *UpstreamRequestContext { + if x != nil { + return x.Upstream + } + return nil +} + type RequestContext struct { - state protoimpl.MessageState `protogen:"open.v1"` - Headers *Headers `protobuf:"bytes,1,opt,name=headers,proto3" json:"headers,omitempty"` - Body *Body `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` - Method string `protobuf:"bytes,4,opt,name=method,proto3" json:"method,omitempty"` - Authority string `protobuf:"bytes,5,opt,name=authority,proto3" json:"authority,omitempty"` - Scheme string `protobuf:"bytes,6,opt,name=scheme,proto3" json:"scheme,omitempty"` - Vhost string `protobuf:"bytes,7,opt,name=vhost,proto3" json:"vhost,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Headers *Headers `protobuf:"bytes,1,opt,name=headers,proto3" json:"headers,omitempty"` + Body *Body `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` + Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + Method string `protobuf:"bytes,4,opt,name=method,proto3" json:"method,omitempty"` + Authority string `protobuf:"bytes,5,opt,name=authority,proto3" json:"authority,omitempty"` + Scheme string `protobuf:"bytes,6,opt,name=scheme,proto3" json:"scheme,omitempty"` + Vhost string `protobuf:"bytes,7,opt,name=vhost,proto3" json:"vhost,omitempty"` + Downstream *DownstreamContext `protobuf:"bytes,8,opt,name=downstream,proto3" json:"downstream,omitempty"` + Upstream *UpstreamRequestContext `protobuf:"bytes,9,opt,name=upstream,proto3" json:"upstream,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RequestContext) Reset() { *x = RequestContext{} - mi := &file_proto_python_executor_proto_msgTypes[17] + mi := &file_proto_python_executor_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1775,7 +2066,7 @@ func (x *RequestContext) String() string { func (*RequestContext) ProtoMessage() {} func (x *RequestContext) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[17] + mi := &file_proto_python_executor_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1788,7 +2079,7 @@ func (x *RequestContext) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestContext.ProtoReflect.Descriptor instead. func (*RequestContext) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{17} + return file_proto_python_executor_proto_rawDescGZIP(), []int{22} } func (x *RequestContext) GetHeaders() *Headers { @@ -1840,21 +2131,37 @@ func (x *RequestContext) GetVhost() string { return "" } +func (x *RequestContext) GetDownstream() *DownstreamContext { + if x != nil { + return x.Downstream + } + return nil +} + +func (x *RequestContext) GetUpstream() *UpstreamRequestContext { + if x != nil { + return x.Upstream + } + return nil +} + type ResponseHeaderContext struct { - state protoimpl.MessageState `protogen:"open.v1"` - RequestHeaders *Headers `protobuf:"bytes,1,opt,name=request_headers,json=requestHeaders,proto3" json:"request_headers,omitempty"` - RequestBody *Body `protobuf:"bytes,2,opt,name=request_body,json=requestBody,proto3" json:"request_body,omitempty"` - RequestPath string `protobuf:"bytes,3,opt,name=request_path,json=requestPath,proto3" json:"request_path,omitempty"` - RequestMethod string `protobuf:"bytes,4,opt,name=request_method,json=requestMethod,proto3" json:"request_method,omitempty"` - ResponseHeaders *Headers `protobuf:"bytes,5,opt,name=response_headers,json=responseHeaders,proto3" json:"response_headers,omitempty"` - ResponseStatus int32 `protobuf:"varint,6,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + RequestHeaders *Headers `protobuf:"bytes,1,opt,name=request_headers,json=requestHeaders,proto3" json:"request_headers,omitempty"` + RequestBody *Body `protobuf:"bytes,2,opt,name=request_body,json=requestBody,proto3" json:"request_body,omitempty"` + RequestPath string `protobuf:"bytes,3,opt,name=request_path,json=requestPath,proto3" json:"request_path,omitempty"` + RequestMethod string `protobuf:"bytes,4,opt,name=request_method,json=requestMethod,proto3" json:"request_method,omitempty"` + ResponseHeaders *Headers `protobuf:"bytes,5,opt,name=response_headers,json=responseHeaders,proto3" json:"response_headers,omitempty"` + ResponseStatus int32 `protobuf:"varint,6,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"` + Downstream *DownstreamContext `protobuf:"bytes,7,opt,name=downstream,proto3" json:"downstream,omitempty"` + Upstream *UpstreamResponseContext `protobuf:"bytes,8,opt,name=upstream,proto3" json:"upstream,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ResponseHeaderContext) Reset() { *x = ResponseHeaderContext{} - mi := &file_proto_python_executor_proto_msgTypes[18] + mi := &file_proto_python_executor_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1866,7 +2173,7 @@ func (x *ResponseHeaderContext) String() string { func (*ResponseHeaderContext) ProtoMessage() {} func (x *ResponseHeaderContext) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[18] + mi := &file_proto_python_executor_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1879,7 +2186,7 @@ func (x *ResponseHeaderContext) ProtoReflect() protoreflect.Message { // Deprecated: Use ResponseHeaderContext.ProtoReflect.Descriptor instead. func (*ResponseHeaderContext) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{18} + return file_proto_python_executor_proto_rawDescGZIP(), []int{23} } func (x *ResponseHeaderContext) GetRequestHeaders() *Headers { @@ -1924,22 +2231,38 @@ func (x *ResponseHeaderContext) GetResponseStatus() int32 { return 0 } +func (x *ResponseHeaderContext) GetDownstream() *DownstreamContext { + if x != nil { + return x.Downstream + } + return nil +} + +func (x *ResponseHeaderContext) GetUpstream() *UpstreamResponseContext { + if x != nil { + return x.Upstream + } + return nil +} + type ResponseContext struct { - state protoimpl.MessageState `protogen:"open.v1"` - RequestHeaders *Headers `protobuf:"bytes,1,opt,name=request_headers,json=requestHeaders,proto3" json:"request_headers,omitempty"` - RequestBody *Body `protobuf:"bytes,2,opt,name=request_body,json=requestBody,proto3" json:"request_body,omitempty"` - RequestPath string `protobuf:"bytes,3,opt,name=request_path,json=requestPath,proto3" json:"request_path,omitempty"` - RequestMethod string `protobuf:"bytes,4,opt,name=request_method,json=requestMethod,proto3" json:"request_method,omitempty"` - ResponseHeaders *Headers `protobuf:"bytes,5,opt,name=response_headers,json=responseHeaders,proto3" json:"response_headers,omitempty"` - ResponseBody *Body `protobuf:"bytes,6,opt,name=response_body,json=responseBody,proto3" json:"response_body,omitempty"` - ResponseStatus int32 `protobuf:"varint,7,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + RequestHeaders *Headers `protobuf:"bytes,1,opt,name=request_headers,json=requestHeaders,proto3" json:"request_headers,omitempty"` + RequestBody *Body `protobuf:"bytes,2,opt,name=request_body,json=requestBody,proto3" json:"request_body,omitempty"` + RequestPath string `protobuf:"bytes,3,opt,name=request_path,json=requestPath,proto3" json:"request_path,omitempty"` + RequestMethod string `protobuf:"bytes,4,opt,name=request_method,json=requestMethod,proto3" json:"request_method,omitempty"` + ResponseHeaders *Headers `protobuf:"bytes,5,opt,name=response_headers,json=responseHeaders,proto3" json:"response_headers,omitempty"` + ResponseBody *Body `protobuf:"bytes,6,opt,name=response_body,json=responseBody,proto3" json:"response_body,omitempty"` + ResponseStatus int32 `protobuf:"varint,7,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"` + Downstream *DownstreamContext `protobuf:"bytes,8,opt,name=downstream,proto3" json:"downstream,omitempty"` + Upstream *UpstreamResponseContext `protobuf:"bytes,9,opt,name=upstream,proto3" json:"upstream,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ResponseContext) Reset() { *x = ResponseContext{} - mi := &file_proto_python_executor_proto_msgTypes[19] + mi := &file_proto_python_executor_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1951,7 +2274,7 @@ func (x *ResponseContext) String() string { func (*ResponseContext) ProtoMessage() {} func (x *ResponseContext) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[19] + mi := &file_proto_python_executor_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1964,7 +2287,7 @@ func (x *ResponseContext) ProtoReflect() protoreflect.Message { // Deprecated: Use ResponseContext.ProtoReflect.Descriptor instead. func (*ResponseContext) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{19} + return file_proto_python_executor_proto_rawDescGZIP(), []int{24} } func (x *ResponseContext) GetRequestHeaders() *Headers { @@ -2016,21 +2339,37 @@ func (x *ResponseContext) GetResponseStatus() int32 { return 0 } +func (x *ResponseContext) GetDownstream() *DownstreamContext { + if x != nil { + return x.Downstream + } + return nil +} + +func (x *ResponseContext) GetUpstream() *UpstreamResponseContext { + if x != nil { + return x.Upstream + } + return nil +} + type RequestStreamContext struct { - state protoimpl.MessageState `protogen:"open.v1"` - Headers *Headers `protobuf:"bytes,1,opt,name=headers,proto3" json:"headers,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - Method string `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"` - Authority string `protobuf:"bytes,4,opt,name=authority,proto3" json:"authority,omitempty"` - Scheme string `protobuf:"bytes,5,opt,name=scheme,proto3" json:"scheme,omitempty"` - Vhost string `protobuf:"bytes,6,opt,name=vhost,proto3" json:"vhost,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Headers *Headers `protobuf:"bytes,1,opt,name=headers,proto3" json:"headers,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + Method string `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"` + Authority string `protobuf:"bytes,4,opt,name=authority,proto3" json:"authority,omitempty"` + Scheme string `protobuf:"bytes,5,opt,name=scheme,proto3" json:"scheme,omitempty"` + Vhost string `protobuf:"bytes,6,opt,name=vhost,proto3" json:"vhost,omitempty"` + Downstream *DownstreamContext `protobuf:"bytes,7,opt,name=downstream,proto3" json:"downstream,omitempty"` + Upstream *UpstreamRequestContext `protobuf:"bytes,8,opt,name=upstream,proto3" json:"upstream,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RequestStreamContext) Reset() { *x = RequestStreamContext{} - mi := &file_proto_python_executor_proto_msgTypes[20] + mi := &file_proto_python_executor_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2042,7 +2381,7 @@ func (x *RequestStreamContext) String() string { func (*RequestStreamContext) ProtoMessage() {} func (x *RequestStreamContext) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[20] + mi := &file_proto_python_executor_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2055,7 +2394,7 @@ func (x *RequestStreamContext) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestStreamContext.ProtoReflect.Descriptor instead. func (*RequestStreamContext) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{20} + return file_proto_python_executor_proto_rawDescGZIP(), []int{25} } func (x *RequestStreamContext) GetHeaders() *Headers { @@ -2100,21 +2439,37 @@ func (x *RequestStreamContext) GetVhost() string { return "" } +func (x *RequestStreamContext) GetDownstream() *DownstreamContext { + if x != nil { + return x.Downstream + } + return nil +} + +func (x *RequestStreamContext) GetUpstream() *UpstreamRequestContext { + if x != nil { + return x.Upstream + } + return nil +} + type ResponseStreamContext struct { - state protoimpl.MessageState `protogen:"open.v1"` - RequestHeaders *Headers `protobuf:"bytes,1,opt,name=request_headers,json=requestHeaders,proto3" json:"request_headers,omitempty"` - RequestBody *Body `protobuf:"bytes,2,opt,name=request_body,json=requestBody,proto3" json:"request_body,omitempty"` - RequestPath string `protobuf:"bytes,3,opt,name=request_path,json=requestPath,proto3" json:"request_path,omitempty"` - RequestMethod string `protobuf:"bytes,4,opt,name=request_method,json=requestMethod,proto3" json:"request_method,omitempty"` - ResponseHeaders *Headers `protobuf:"bytes,5,opt,name=response_headers,json=responseHeaders,proto3" json:"response_headers,omitempty"` - ResponseStatus int32 `protobuf:"varint,6,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + RequestHeaders *Headers `protobuf:"bytes,1,opt,name=request_headers,json=requestHeaders,proto3" json:"request_headers,omitempty"` + RequestBody *Body `protobuf:"bytes,2,opt,name=request_body,json=requestBody,proto3" json:"request_body,omitempty"` + RequestPath string `protobuf:"bytes,3,opt,name=request_path,json=requestPath,proto3" json:"request_path,omitempty"` + RequestMethod string `protobuf:"bytes,4,opt,name=request_method,json=requestMethod,proto3" json:"request_method,omitempty"` + ResponseHeaders *Headers `protobuf:"bytes,5,opt,name=response_headers,json=responseHeaders,proto3" json:"response_headers,omitempty"` + ResponseStatus int32 `protobuf:"varint,6,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"` + Downstream *DownstreamContext `protobuf:"bytes,7,opt,name=downstream,proto3" json:"downstream,omitempty"` + Upstream *UpstreamResponseContext `protobuf:"bytes,8,opt,name=upstream,proto3" json:"upstream,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ResponseStreamContext) Reset() { *x = ResponseStreamContext{} - mi := &file_proto_python_executor_proto_msgTypes[21] + mi := &file_proto_python_executor_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2126,7 +2481,7 @@ func (x *ResponseStreamContext) String() string { func (*ResponseStreamContext) ProtoMessage() {} func (x *ResponseStreamContext) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[21] + mi := &file_proto_python_executor_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2139,7 +2494,7 @@ func (x *ResponseStreamContext) ProtoReflect() protoreflect.Message { // Deprecated: Use ResponseStreamContext.ProtoReflect.Descriptor instead. func (*ResponseStreamContext) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{21} + return file_proto_python_executor_proto_rawDescGZIP(), []int{26} } func (x *ResponseStreamContext) GetRequestHeaders() *Headers { @@ -2184,6 +2539,20 @@ func (x *ResponseStreamContext) GetResponseStatus() int32 { return 0 } +func (x *ResponseStreamContext) GetDownstream() *DownstreamContext { + if x != nil { + return x.Downstream + } + return nil +} + +func (x *ResponseStreamContext) GetUpstream() *UpstreamResponseContext { + if x != nil { + return x.Upstream + } + return nil +} + type RequestHeadersPayload struct { state protoimpl.MessageState `protogen:"open.v1"` Context *RequestHeaderContext `protobuf:"bytes,1,opt,name=context,proto3" json:"context,omitempty"` @@ -2193,7 +2562,7 @@ type RequestHeadersPayload struct { func (x *RequestHeadersPayload) Reset() { *x = RequestHeadersPayload{} - mi := &file_proto_python_executor_proto_msgTypes[22] + mi := &file_proto_python_executor_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2205,7 +2574,7 @@ func (x *RequestHeadersPayload) String() string { func (*RequestHeadersPayload) ProtoMessage() {} func (x *RequestHeadersPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[22] + mi := &file_proto_python_executor_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2218,7 +2587,7 @@ func (x *RequestHeadersPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestHeadersPayload.ProtoReflect.Descriptor instead. func (*RequestHeadersPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{22} + return file_proto_python_executor_proto_rawDescGZIP(), []int{27} } func (x *RequestHeadersPayload) GetContext() *RequestHeaderContext { @@ -2237,7 +2606,7 @@ type RequestBodyPayload struct { func (x *RequestBodyPayload) Reset() { *x = RequestBodyPayload{} - mi := &file_proto_python_executor_proto_msgTypes[23] + mi := &file_proto_python_executor_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2249,7 +2618,7 @@ func (x *RequestBodyPayload) String() string { func (*RequestBodyPayload) ProtoMessage() {} func (x *RequestBodyPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[23] + mi := &file_proto_python_executor_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2262,7 +2631,7 @@ func (x *RequestBodyPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestBodyPayload.ProtoReflect.Descriptor instead. func (*RequestBodyPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{23} + return file_proto_python_executor_proto_rawDescGZIP(), []int{28} } func (x *RequestBodyPayload) GetContext() *RequestContext { @@ -2281,7 +2650,7 @@ type ResponseHeadersPayload struct { func (x *ResponseHeadersPayload) Reset() { *x = ResponseHeadersPayload{} - mi := &file_proto_python_executor_proto_msgTypes[24] + mi := &file_proto_python_executor_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2293,7 +2662,7 @@ func (x *ResponseHeadersPayload) String() string { func (*ResponseHeadersPayload) ProtoMessage() {} func (x *ResponseHeadersPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[24] + mi := &file_proto_python_executor_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2306,7 +2675,7 @@ func (x *ResponseHeadersPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use ResponseHeadersPayload.ProtoReflect.Descriptor instead. func (*ResponseHeadersPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{24} + return file_proto_python_executor_proto_rawDescGZIP(), []int{29} } func (x *ResponseHeadersPayload) GetContext() *ResponseHeaderContext { @@ -2325,7 +2694,7 @@ type ResponseBodyPayload struct { func (x *ResponseBodyPayload) Reset() { *x = ResponseBodyPayload{} - mi := &file_proto_python_executor_proto_msgTypes[25] + mi := &file_proto_python_executor_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2337,7 +2706,7 @@ func (x *ResponseBodyPayload) String() string { func (*ResponseBodyPayload) ProtoMessage() {} func (x *ResponseBodyPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[25] + mi := &file_proto_python_executor_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2350,7 +2719,7 @@ func (x *ResponseBodyPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use ResponseBodyPayload.ProtoReflect.Descriptor instead. func (*ResponseBodyPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{25} + return file_proto_python_executor_proto_rawDescGZIP(), []int{30} } func (x *ResponseBodyPayload) GetContext() *ResponseContext { @@ -2369,7 +2738,7 @@ type NeedsMoreRequestDataPayload struct { func (x *NeedsMoreRequestDataPayload) Reset() { *x = NeedsMoreRequestDataPayload{} - mi := &file_proto_python_executor_proto_msgTypes[26] + mi := &file_proto_python_executor_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2381,7 +2750,7 @@ func (x *NeedsMoreRequestDataPayload) String() string { func (*NeedsMoreRequestDataPayload) ProtoMessage() {} func (x *NeedsMoreRequestDataPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[26] + mi := &file_proto_python_executor_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2394,7 +2763,7 @@ func (x *NeedsMoreRequestDataPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use NeedsMoreRequestDataPayload.ProtoReflect.Descriptor instead. func (*NeedsMoreRequestDataPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{26} + return file_proto_python_executor_proto_rawDescGZIP(), []int{31} } func (x *NeedsMoreRequestDataPayload) GetAccumulated() []byte { @@ -2414,7 +2783,7 @@ type RequestChunkPayload struct { func (x *RequestChunkPayload) Reset() { *x = RequestChunkPayload{} - mi := &file_proto_python_executor_proto_msgTypes[27] + mi := &file_proto_python_executor_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2426,7 +2795,7 @@ func (x *RequestChunkPayload) String() string { func (*RequestChunkPayload) ProtoMessage() {} func (x *RequestChunkPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[27] + mi := &file_proto_python_executor_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2439,7 +2808,7 @@ func (x *RequestChunkPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestChunkPayload.ProtoReflect.Descriptor instead. func (*RequestChunkPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{27} + return file_proto_python_executor_proto_rawDescGZIP(), []int{32} } func (x *RequestChunkPayload) GetContext() *RequestStreamContext { @@ -2465,7 +2834,7 @@ type NeedsMoreResponseDataPayload struct { func (x *NeedsMoreResponseDataPayload) Reset() { *x = NeedsMoreResponseDataPayload{} - mi := &file_proto_python_executor_proto_msgTypes[28] + mi := &file_proto_python_executor_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2477,7 +2846,7 @@ func (x *NeedsMoreResponseDataPayload) String() string { func (*NeedsMoreResponseDataPayload) ProtoMessage() {} func (x *NeedsMoreResponseDataPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[28] + mi := &file_proto_python_executor_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2490,7 +2859,7 @@ func (x *NeedsMoreResponseDataPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use NeedsMoreResponseDataPayload.ProtoReflect.Descriptor instead. func (*NeedsMoreResponseDataPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{28} + return file_proto_python_executor_proto_rawDescGZIP(), []int{33} } func (x *NeedsMoreResponseDataPayload) GetAccumulated() []byte { @@ -2510,7 +2879,7 @@ type ResponseChunkPayload struct { func (x *ResponseChunkPayload) Reset() { *x = ResponseChunkPayload{} - mi := &file_proto_python_executor_proto_msgTypes[29] + mi := &file_proto_python_executor_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2522,7 +2891,7 @@ func (x *ResponseChunkPayload) String() string { func (*ResponseChunkPayload) ProtoMessage() {} func (x *ResponseChunkPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[29] + mi := &file_proto_python_executor_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2535,7 +2904,7 @@ func (x *ResponseChunkPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use ResponseChunkPayload.ProtoReflect.Descriptor instead. func (*ResponseChunkPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{29} + return file_proto_python_executor_proto_rawDescGZIP(), []int{34} } func (x *ResponseChunkPayload) GetContext() *ResponseStreamContext { @@ -2562,7 +2931,7 @@ type CancelExecutionPayload struct { func (x *CancelExecutionPayload) Reset() { *x = CancelExecutionPayload{} - mi := &file_proto_python_executor_proto_msgTypes[30] + mi := &file_proto_python_executor_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2574,7 +2943,7 @@ func (x *CancelExecutionPayload) String() string { func (*CancelExecutionPayload) ProtoMessage() {} func (x *CancelExecutionPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[30] + mi := &file_proto_python_executor_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2587,7 +2956,7 @@ func (x *CancelExecutionPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use CancelExecutionPayload.ProtoReflect.Descriptor instead. func (*CancelExecutionPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{30} + return file_proto_python_executor_proto_rawDescGZIP(), []int{35} } func (x *CancelExecutionPayload) GetTargetPhase() Phase { @@ -2617,7 +2986,7 @@ type PolicyMetadata struct { func (x *PolicyMetadata) Reset() { *x = PolicyMetadata{} - mi := &file_proto_python_executor_proto_msgTypes[31] + mi := &file_proto_python_executor_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2629,7 +2998,7 @@ func (x *PolicyMetadata) String() string { func (*PolicyMetadata) ProtoMessage() {} func (x *PolicyMetadata) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[31] + mi := &file_proto_python_executor_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2642,7 +3011,7 @@ func (x *PolicyMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use PolicyMetadata.ProtoReflect.Descriptor instead. func (*PolicyMetadata) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{31} + return file_proto_python_executor_proto_rawDescGZIP(), []int{36} } func (x *PolicyMetadata) GetRouteName() string { @@ -2690,7 +3059,7 @@ type DropHeaderAction struct { func (x *DropHeaderAction) Reset() { *x = DropHeaderAction{} - mi := &file_proto_python_executor_proto_msgTypes[32] + mi := &file_proto_python_executor_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2702,7 +3071,7 @@ func (x *DropHeaderAction) String() string { func (*DropHeaderAction) ProtoMessage() {} func (x *DropHeaderAction) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[32] + mi := &file_proto_python_executor_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2715,7 +3084,7 @@ func (x *DropHeaderAction) ProtoReflect() protoreflect.Message { // Deprecated: Use DropHeaderAction.ProtoReflect.Descriptor instead. func (*DropHeaderAction) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{32} + return file_proto_python_executor_proto_rawDescGZIP(), []int{37} } func (x *DropHeaderAction) GetAction() DropHeaderActionType { @@ -2746,7 +3115,7 @@ type ImmediateResponse struct { func (x *ImmediateResponse) Reset() { *x = ImmediateResponse{} - mi := &file_proto_python_executor_proto_msgTypes[33] + mi := &file_proto_python_executor_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2758,7 +3127,7 @@ func (x *ImmediateResponse) String() string { func (*ImmediateResponse) ProtoMessage() {} func (x *ImmediateResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[33] + mi := &file_proto_python_executor_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2771,7 +3140,7 @@ func (x *ImmediateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ImmediateResponse.ProtoReflect.Descriptor instead. func (*ImmediateResponse) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{33} + return file_proto_python_executor_proto_rawDescGZIP(), []int{38} } func (x *ImmediateResponse) GetStatusCode() int32 { @@ -2835,7 +3204,7 @@ type UpstreamRequestHeaderModifications struct { func (x *UpstreamRequestHeaderModifications) Reset() { *x = UpstreamRequestHeaderModifications{} - mi := &file_proto_python_executor_proto_msgTypes[34] + mi := &file_proto_python_executor_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2847,7 +3216,7 @@ func (x *UpstreamRequestHeaderModifications) String() string { func (*UpstreamRequestHeaderModifications) ProtoMessage() {} func (x *UpstreamRequestHeaderModifications) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[34] + mi := &file_proto_python_executor_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2860,7 +3229,7 @@ func (x *UpstreamRequestHeaderModifications) ProtoReflect() protoreflect.Message // Deprecated: Use UpstreamRequestHeaderModifications.ProtoReflect.Descriptor instead. func (*UpstreamRequestHeaderModifications) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{34} + return file_proto_python_executor_proto_rawDescGZIP(), []int{39} } func (x *UpstreamRequestHeaderModifications) GetHeadersToSet() map[string]string { @@ -2960,7 +3329,7 @@ type UpstreamRequestModifications struct { func (x *UpstreamRequestModifications) Reset() { *x = UpstreamRequestModifications{} - mi := &file_proto_python_executor_proto_msgTypes[35] + mi := &file_proto_python_executor_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2972,7 +3341,7 @@ func (x *UpstreamRequestModifications) String() string { func (*UpstreamRequestModifications) ProtoMessage() {} func (x *UpstreamRequestModifications) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[35] + mi := &file_proto_python_executor_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2985,7 +3354,7 @@ func (x *UpstreamRequestModifications) ProtoReflect() protoreflect.Message { // Deprecated: Use UpstreamRequestModifications.ProtoReflect.Descriptor instead. func (*UpstreamRequestModifications) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{35} + return file_proto_python_executor_proto_rawDescGZIP(), []int{40} } func (x *UpstreamRequestModifications) GetBody() *wrapperspb.BytesValue { @@ -3085,7 +3454,7 @@ type DownstreamResponseHeaderModifications struct { func (x *DownstreamResponseHeaderModifications) Reset() { *x = DownstreamResponseHeaderModifications{} - mi := &file_proto_python_executor_proto_msgTypes[36] + mi := &file_proto_python_executor_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3097,7 +3466,7 @@ func (x *DownstreamResponseHeaderModifications) String() string { func (*DownstreamResponseHeaderModifications) ProtoMessage() {} func (x *DownstreamResponseHeaderModifications) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[36] + mi := &file_proto_python_executor_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3110,7 +3479,7 @@ func (x *DownstreamResponseHeaderModifications) ProtoReflect() protoreflect.Mess // Deprecated: Use DownstreamResponseHeaderModifications.ProtoReflect.Descriptor instead. func (*DownstreamResponseHeaderModifications) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{36} + return file_proto_python_executor_proto_rawDescGZIP(), []int{41} } func (x *DownstreamResponseHeaderModifications) GetHeadersToSet() map[string]string { @@ -3163,7 +3532,7 @@ type DownstreamResponseModifications struct { func (x *DownstreamResponseModifications) Reset() { *x = DownstreamResponseModifications{} - mi := &file_proto_python_executor_proto_msgTypes[37] + mi := &file_proto_python_executor_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3175,7 +3544,7 @@ func (x *DownstreamResponseModifications) String() string { func (*DownstreamResponseModifications) ProtoMessage() {} func (x *DownstreamResponseModifications) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[37] + mi := &file_proto_python_executor_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3188,7 +3557,7 @@ func (x *DownstreamResponseModifications) ProtoReflect() protoreflect.Message { // Deprecated: Use DownstreamResponseModifications.ProtoReflect.Descriptor instead. func (*DownstreamResponseModifications) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{37} + return file_proto_python_executor_proto_rawDescGZIP(), []int{42} } func (x *DownstreamResponseModifications) GetBody() *wrapperspb.BytesValue { @@ -3251,7 +3620,7 @@ type ForwardRequestChunk struct { func (x *ForwardRequestChunk) Reset() { *x = ForwardRequestChunk{} - mi := &file_proto_python_executor_proto_msgTypes[38] + mi := &file_proto_python_executor_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3263,7 +3632,7 @@ func (x *ForwardRequestChunk) String() string { func (*ForwardRequestChunk) ProtoMessage() {} func (x *ForwardRequestChunk) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[38] + mi := &file_proto_python_executor_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3276,7 +3645,7 @@ func (x *ForwardRequestChunk) ProtoReflect() protoreflect.Message { // Deprecated: Use ForwardRequestChunk.ProtoReflect.Descriptor instead. func (*ForwardRequestChunk) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{38} + return file_proto_python_executor_proto_rawDescGZIP(), []int{43} } func (x *ForwardRequestChunk) GetBody() *wrapperspb.BytesValue { @@ -3311,7 +3680,7 @@ type ForwardResponseChunk struct { func (x *ForwardResponseChunk) Reset() { *x = ForwardResponseChunk{} - mi := &file_proto_python_executor_proto_msgTypes[39] + mi := &file_proto_python_executor_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3323,7 +3692,7 @@ func (x *ForwardResponseChunk) String() string { func (*ForwardResponseChunk) ProtoMessage() {} func (x *ForwardResponseChunk) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[39] + mi := &file_proto_python_executor_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3336,7 +3705,7 @@ func (x *ForwardResponseChunk) ProtoReflect() protoreflect.Message { // Deprecated: Use ForwardResponseChunk.ProtoReflect.Descriptor instead. func (*ForwardResponseChunk) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{39} + return file_proto_python_executor_proto_rawDescGZIP(), []int{44} } func (x *ForwardResponseChunk) GetBody() *wrapperspb.BytesValue { @@ -3371,7 +3740,7 @@ type TerminateResponseChunk struct { func (x *TerminateResponseChunk) Reset() { *x = TerminateResponseChunk{} - mi := &file_proto_python_executor_proto_msgTypes[40] + mi := &file_proto_python_executor_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3383,7 +3752,7 @@ func (x *TerminateResponseChunk) String() string { func (*TerminateResponseChunk) ProtoMessage() {} func (x *TerminateResponseChunk) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[40] + mi := &file_proto_python_executor_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3396,7 +3765,7 @@ func (x *TerminateResponseChunk) ProtoReflect() protoreflect.Message { // Deprecated: Use TerminateResponseChunk.ProtoReflect.Descriptor instead. func (*TerminateResponseChunk) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{40} + return file_proto_python_executor_proto_rawDescGZIP(), []int{45} } func (x *TerminateResponseChunk) GetBody() *wrapperspb.BytesValue { @@ -3433,7 +3802,7 @@ type RequestHeaderActionPayload struct { func (x *RequestHeaderActionPayload) Reset() { *x = RequestHeaderActionPayload{} - mi := &file_proto_python_executor_proto_msgTypes[41] + mi := &file_proto_python_executor_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3445,7 +3814,7 @@ func (x *RequestHeaderActionPayload) String() string { func (*RequestHeaderActionPayload) ProtoMessage() {} func (x *RequestHeaderActionPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[41] + mi := &file_proto_python_executor_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3458,7 +3827,7 @@ func (x *RequestHeaderActionPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestHeaderActionPayload.ProtoReflect.Descriptor instead. func (*RequestHeaderActionPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{41} + return file_proto_python_executor_proto_rawDescGZIP(), []int{46} } func (x *RequestHeaderActionPayload) GetAction() isRequestHeaderActionPayload_Action { @@ -3516,7 +3885,7 @@ type RequestActionPayload struct { func (x *RequestActionPayload) Reset() { *x = RequestActionPayload{} - mi := &file_proto_python_executor_proto_msgTypes[42] + mi := &file_proto_python_executor_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3528,7 +3897,7 @@ func (x *RequestActionPayload) String() string { func (*RequestActionPayload) ProtoMessage() {} func (x *RequestActionPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[42] + mi := &file_proto_python_executor_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3541,7 +3910,7 @@ func (x *RequestActionPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestActionPayload.ProtoReflect.Descriptor instead. func (*RequestActionPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{42} + return file_proto_python_executor_proto_rawDescGZIP(), []int{47} } func (x *RequestActionPayload) GetAction() isRequestActionPayload_Action { @@ -3598,7 +3967,7 @@ type ResponseHeaderActionPayload struct { func (x *ResponseHeaderActionPayload) Reset() { *x = ResponseHeaderActionPayload{} - mi := &file_proto_python_executor_proto_msgTypes[43] + mi := &file_proto_python_executor_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3610,7 +3979,7 @@ func (x *ResponseHeaderActionPayload) String() string { func (*ResponseHeaderActionPayload) ProtoMessage() {} func (x *ResponseHeaderActionPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[43] + mi := &file_proto_python_executor_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3623,7 +3992,7 @@ func (x *ResponseHeaderActionPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use ResponseHeaderActionPayload.ProtoReflect.Descriptor instead. func (*ResponseHeaderActionPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{43} + return file_proto_python_executor_proto_rawDescGZIP(), []int{48} } func (x *ResponseHeaderActionPayload) GetAction() isResponseHeaderActionPayload_Action { @@ -3681,7 +4050,7 @@ type ResponseActionPayload struct { func (x *ResponseActionPayload) Reset() { *x = ResponseActionPayload{} - mi := &file_proto_python_executor_proto_msgTypes[44] + mi := &file_proto_python_executor_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3693,7 +4062,7 @@ func (x *ResponseActionPayload) String() string { func (*ResponseActionPayload) ProtoMessage() {} func (x *ResponseActionPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[44] + mi := &file_proto_python_executor_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3706,7 +4075,7 @@ func (x *ResponseActionPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use ResponseActionPayload.ProtoReflect.Descriptor instead. func (*ResponseActionPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{44} + return file_proto_python_executor_proto_rawDescGZIP(), []int{49} } func (x *ResponseActionPayload) GetAction() isResponseActionPayload_Action { @@ -3759,7 +4128,7 @@ type NeedsMoreDecisionPayload struct { func (x *NeedsMoreDecisionPayload) Reset() { *x = NeedsMoreDecisionPayload{} - mi := &file_proto_python_executor_proto_msgTypes[45] + mi := &file_proto_python_executor_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3771,7 +4140,7 @@ func (x *NeedsMoreDecisionPayload) String() string { func (*NeedsMoreDecisionPayload) ProtoMessage() {} func (x *NeedsMoreDecisionPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[45] + mi := &file_proto_python_executor_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3784,7 +4153,7 @@ func (x *NeedsMoreDecisionPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use NeedsMoreDecisionPayload.ProtoReflect.Descriptor instead. func (*NeedsMoreDecisionPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{45} + return file_proto_python_executor_proto_rawDescGZIP(), []int{50} } func (x *NeedsMoreDecisionPayload) GetNeedsMore() bool { @@ -3803,7 +4172,7 @@ type StreamingRequestActionPayload struct { func (x *StreamingRequestActionPayload) Reset() { *x = StreamingRequestActionPayload{} - mi := &file_proto_python_executor_proto_msgTypes[46] + mi := &file_proto_python_executor_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3815,7 +4184,7 @@ func (x *StreamingRequestActionPayload) String() string { func (*StreamingRequestActionPayload) ProtoMessage() {} func (x *StreamingRequestActionPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[46] + mi := &file_proto_python_executor_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3828,7 +4197,7 @@ func (x *StreamingRequestActionPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamingRequestActionPayload.ProtoReflect.Descriptor instead. func (*StreamingRequestActionPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{46} + return file_proto_python_executor_proto_rawDescGZIP(), []int{51} } func (x *StreamingRequestActionPayload) GetForwardRequestChunk() *ForwardRequestChunk { @@ -3851,7 +4220,7 @@ type StreamingResponseActionPayload struct { func (x *StreamingResponseActionPayload) Reset() { *x = StreamingResponseActionPayload{} - mi := &file_proto_python_executor_proto_msgTypes[47] + mi := &file_proto_python_executor_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3863,7 +4232,7 @@ func (x *StreamingResponseActionPayload) String() string { func (*StreamingResponseActionPayload) ProtoMessage() {} func (x *StreamingResponseActionPayload) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[47] + mi := &file_proto_python_executor_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3876,7 +4245,7 @@ func (x *StreamingResponseActionPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamingResponseActionPayload.ProtoReflect.Descriptor instead. func (*StreamingResponseActionPayload) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{47} + return file_proto_python_executor_proto_rawDescGZIP(), []int{52} } func (x *StreamingResponseActionPayload) GetAction() isStreamingResponseActionPayload_Action { @@ -3934,7 +4303,7 @@ type ExecutionError struct { func (x *ExecutionError) Reset() { *x = ExecutionError{} - mi := &file_proto_python_executor_proto_msgTypes[48] + mi := &file_proto_python_executor_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3946,7 +4315,7 @@ func (x *ExecutionError) String() string { func (*ExecutionError) ProtoMessage() {} func (x *ExecutionError) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[48] + mi := &file_proto_python_executor_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3959,7 +4328,7 @@ func (x *ExecutionError) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionError.ProtoReflect.Descriptor instead. func (*ExecutionError) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{48} + return file_proto_python_executor_proto_rawDescGZIP(), []int{53} } func (x *ExecutionError) GetMessage() string { @@ -3998,7 +4367,7 @@ type HealthCheckRequest struct { func (x *HealthCheckRequest) Reset() { *x = HealthCheckRequest{} - mi := &file_proto_python_executor_proto_msgTypes[49] + mi := &file_proto_python_executor_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4010,7 +4379,7 @@ func (x *HealthCheckRequest) String() string { func (*HealthCheckRequest) ProtoMessage() {} func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[49] + mi := &file_proto_python_executor_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4023,7 +4392,7 @@ func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use HealthCheckRequest.ProtoReflect.Descriptor instead. func (*HealthCheckRequest) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{49} + return file_proto_python_executor_proto_rawDescGZIP(), []int{54} } type HealthCheckResponse struct { @@ -4036,7 +4405,7 @@ type HealthCheckResponse struct { func (x *HealthCheckResponse) Reset() { *x = HealthCheckResponse{} - mi := &file_proto_python_executor_proto_msgTypes[50] + mi := &file_proto_python_executor_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4048,7 +4417,7 @@ func (x *HealthCheckResponse) String() string { func (*HealthCheckResponse) ProtoMessage() {} func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_python_executor_proto_msgTypes[50] + mi := &file_proto_python_executor_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4061,7 +4430,7 @@ func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use HealthCheckResponse.ProtoReflect.Descriptor instead. func (*HealthCheckResponse) Descriptor() ([]byte, []int) { - return file_proto_python_executor_proto_rawDescGZIP(), []int{50} + return file_proto_python_executor_proto_rawDescGZIP(), []int{55} } func (x *HealthCheckResponse) GetReady() bool { @@ -4192,7 +4561,22 @@ const file_proto_python_executor_proto_rawDesc = "" + "StreamBody\x12\x14\n" + "\x05chunk\x18\x01 \x01(\fR\x05chunk\x12\"\n" + "\rend_of_stream\x18\x02 \x01(\bR\vendOfStream\x12\x14\n" + - "\x05index\x18\x03 \x01(\x04R\x05index\"\xe9\x04\n" + + "\x05index\x18\x03 \x01(\x04R\x05index\"T\n" + + "\x11DownstreamRequest\x12?\n" + + "\aheaders\x18\x01 \x01(\v2%.wso2.gateway.python.v1alpha2.HeadersR\aheaders\"^\n" + + "\x11DownstreamContext\x12I\n" + + "\arequest\x18\x01 \x01(\v2/.wso2.gateway.python.v1alpha2.DownstreamRequestR\arequest\"[\n" + + "\x16UpstreamRequestContext\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n" + + "\x03url\x18\x02 \x01(\tR\x03url\x12\x1b\n" + + "\tbase_path\x18\x03 \x01(\tR\bbasePath\"S\n" + + "\x10UpstreamResponse\x12?\n" + + "\aheaders\x18\x01 \x01(\v2%.wso2.gateway.python.v1alpha2.HeadersR\aheaders\"\xa8\x01\n" + + "\x17UpstreamResponseContext\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n" + + "\x03url\x18\x02 \x01(\tR\x03url\x12\x1b\n" + + "\tbase_path\x18\x03 \x01(\tR\bbasePath\x12J\n" + + "\bresponse\x18\x04 \x01(\v2..wso2.gateway.python.v1alpha2.UpstreamResponseR\bresponse\"\xe9\x04\n" + "\vAuthContext\x12$\n" + "\rauthenticated\x18\x01 \x01(\bR\rauthenticated\x12\x1e\n" + "\n" + @@ -4215,14 +4599,18 @@ const file_proto_python_executor_proto_rawDesc = "" + "\x05value\x18\x02 \x01(\bR\x05value:\x028\x01\x1a=\n" + "\x0fPropertiesEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xcf\x01\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xf2\x02\n" + "\x14RequestHeaderContext\x12?\n" + "\aheaders\x18\x01 \x01(\v2%.wso2.gateway.python.v1alpha2.HeadersR\aheaders\x12\x12\n" + "\x04path\x18\x02 \x01(\tR\x04path\x12\x16\n" + "\x06method\x18\x03 \x01(\tR\x06method\x12\x1c\n" + "\tauthority\x18\x04 \x01(\tR\tauthority\x12\x16\n" + "\x06scheme\x18\x05 \x01(\tR\x06scheme\x12\x14\n" + - "\x05vhost\x18\x06 \x01(\tR\x05vhost\"\x81\x02\n" + + "\x05vhost\x18\x06 \x01(\tR\x05vhost\x12O\n" + + "\n" + + "downstream\x18\a \x01(\v2/.wso2.gateway.python.v1alpha2.DownstreamContextR\n" + + "downstream\x12P\n" + + "\bupstream\x18\b \x01(\v24.wso2.gateway.python.v1alpha2.UpstreamRequestContextR\bupstream\"\xa4\x03\n" + "\x0eRequestContext\x12?\n" + "\aheaders\x18\x01 \x01(\v2%.wso2.gateway.python.v1alpha2.HeadersR\aheaders\x126\n" + "\x04body\x18\x02 \x01(\v2\".wso2.gateway.python.v1alpha2.BodyR\x04body\x12\x12\n" + @@ -4230,14 +4618,22 @@ const file_proto_python_executor_proto_rawDesc = "" + "\x06method\x18\x04 \x01(\tR\x06method\x12\x1c\n" + "\tauthority\x18\x05 \x01(\tR\tauthority\x12\x16\n" + "\x06scheme\x18\x06 \x01(\tR\x06scheme\x12\x14\n" + - "\x05vhost\x18\a \x01(\tR\x05vhost\"\xf3\x02\n" + + "\x05vhost\x18\a \x01(\tR\x05vhost\x12O\n" + + "\n" + + "downstream\x18\b \x01(\v2/.wso2.gateway.python.v1alpha2.DownstreamContextR\n" + + "downstream\x12P\n" + + "\bupstream\x18\t \x01(\v24.wso2.gateway.python.v1alpha2.UpstreamRequestContextR\bupstream\"\x97\x04\n" + "\x15ResponseHeaderContext\x12N\n" + "\x0frequest_headers\x18\x01 \x01(\v2%.wso2.gateway.python.v1alpha2.HeadersR\x0erequestHeaders\x12E\n" + "\frequest_body\x18\x02 \x01(\v2\".wso2.gateway.python.v1alpha2.BodyR\vrequestBody\x12!\n" + "\frequest_path\x18\x03 \x01(\tR\vrequestPath\x12%\n" + "\x0erequest_method\x18\x04 \x01(\tR\rrequestMethod\x12P\n" + "\x10response_headers\x18\x05 \x01(\v2%.wso2.gateway.python.v1alpha2.HeadersR\x0fresponseHeaders\x12'\n" + - "\x0fresponse_status\x18\x06 \x01(\x05R\x0eresponseStatus\"\xb6\x03\n" + + "\x0fresponse_status\x18\x06 \x01(\x05R\x0eresponseStatus\x12O\n" + + "\n" + + "downstream\x18\a \x01(\v2/.wso2.gateway.python.v1alpha2.DownstreamContextR\n" + + "downstream\x12Q\n" + + "\bupstream\x18\b \x01(\v25.wso2.gateway.python.v1alpha2.UpstreamResponseContextR\bupstream\"\xda\x04\n" + "\x0fResponseContext\x12N\n" + "\x0frequest_headers\x18\x01 \x01(\v2%.wso2.gateway.python.v1alpha2.HeadersR\x0erequestHeaders\x12E\n" + "\frequest_body\x18\x02 \x01(\v2\".wso2.gateway.python.v1alpha2.BodyR\vrequestBody\x12!\n" + @@ -4245,21 +4641,33 @@ const file_proto_python_executor_proto_rawDesc = "" + "\x0erequest_method\x18\x04 \x01(\tR\rrequestMethod\x12P\n" + "\x10response_headers\x18\x05 \x01(\v2%.wso2.gateway.python.v1alpha2.HeadersR\x0fresponseHeaders\x12G\n" + "\rresponse_body\x18\x06 \x01(\v2\".wso2.gateway.python.v1alpha2.BodyR\fresponseBody\x12'\n" + - "\x0fresponse_status\x18\a \x01(\x05R\x0eresponseStatus\"\xcf\x01\n" + + "\x0fresponse_status\x18\a \x01(\x05R\x0eresponseStatus\x12O\n" + + "\n" + + "downstream\x18\b \x01(\v2/.wso2.gateway.python.v1alpha2.DownstreamContextR\n" + + "downstream\x12Q\n" + + "\bupstream\x18\t \x01(\v25.wso2.gateway.python.v1alpha2.UpstreamResponseContextR\bupstream\"\xf2\x02\n" + "\x14RequestStreamContext\x12?\n" + "\aheaders\x18\x01 \x01(\v2%.wso2.gateway.python.v1alpha2.HeadersR\aheaders\x12\x12\n" + "\x04path\x18\x02 \x01(\tR\x04path\x12\x16\n" + "\x06method\x18\x03 \x01(\tR\x06method\x12\x1c\n" + "\tauthority\x18\x04 \x01(\tR\tauthority\x12\x16\n" + "\x06scheme\x18\x05 \x01(\tR\x06scheme\x12\x14\n" + - "\x05vhost\x18\x06 \x01(\tR\x05vhost\"\xf3\x02\n" + + "\x05vhost\x18\x06 \x01(\tR\x05vhost\x12O\n" + + "\n" + + "downstream\x18\a \x01(\v2/.wso2.gateway.python.v1alpha2.DownstreamContextR\n" + + "downstream\x12P\n" + + "\bupstream\x18\b \x01(\v24.wso2.gateway.python.v1alpha2.UpstreamRequestContextR\bupstream\"\x97\x04\n" + "\x15ResponseStreamContext\x12N\n" + "\x0frequest_headers\x18\x01 \x01(\v2%.wso2.gateway.python.v1alpha2.HeadersR\x0erequestHeaders\x12E\n" + "\frequest_body\x18\x02 \x01(\v2\".wso2.gateway.python.v1alpha2.BodyR\vrequestBody\x12!\n" + "\frequest_path\x18\x03 \x01(\tR\vrequestPath\x12%\n" + "\x0erequest_method\x18\x04 \x01(\tR\rrequestMethod\x12P\n" + "\x10response_headers\x18\x05 \x01(\v2%.wso2.gateway.python.v1alpha2.HeadersR\x0fresponseHeaders\x12'\n" + - "\x0fresponse_status\x18\x06 \x01(\x05R\x0eresponseStatus\"e\n" + + "\x0fresponse_status\x18\x06 \x01(\x05R\x0eresponseStatus\x12O\n" + + "\n" + + "downstream\x18\a \x01(\v2/.wso2.gateway.python.v1alpha2.DownstreamContextR\n" + + "downstream\x12Q\n" + + "\bupstream\x18\b \x01(\v25.wso2.gateway.python.v1alpha2.UpstreamResponseContextR\bupstream\"e\n" + "\x15RequestHeadersPayload\x12L\n" + "\acontext\x18\x01 \x01(\v22.wso2.gateway.python.v1alpha2.RequestHeaderContextR\acontext\"\\\n" + "\x12RequestBodyPayload\x12F\n" + @@ -4480,7 +4888,7 @@ func file_proto_python_executor_proto_rawDescGZIP() []byte { } var file_proto_python_executor_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_proto_python_executor_proto_msgTypes = make([]protoimpl.MessageInfo, 69) +var file_proto_python_executor_proto_msgTypes = make([]protoimpl.MessageInfo, 74) var file_proto_python_executor_proto_goTypes = []any{ (HeaderProcessingMode)(0), // 0: wso2.gateway.python.v1alpha2.HeaderProcessingMode (BodyProcessingMode)(0), // 1: wso2.gateway.python.v1alpha2.BodyProcessingMode @@ -4501,207 +4909,228 @@ var file_proto_python_executor_proto_goTypes = []any{ (*StringList)(nil), // 16: wso2.gateway.python.v1alpha2.StringList (*Body)(nil), // 17: wso2.gateway.python.v1alpha2.Body (*StreamBody)(nil), // 18: wso2.gateway.python.v1alpha2.StreamBody - (*AuthContext)(nil), // 19: wso2.gateway.python.v1alpha2.AuthContext - (*RequestHeaderContext)(nil), // 20: wso2.gateway.python.v1alpha2.RequestHeaderContext - (*RequestContext)(nil), // 21: wso2.gateway.python.v1alpha2.RequestContext - (*ResponseHeaderContext)(nil), // 22: wso2.gateway.python.v1alpha2.ResponseHeaderContext - (*ResponseContext)(nil), // 23: wso2.gateway.python.v1alpha2.ResponseContext - (*RequestStreamContext)(nil), // 24: wso2.gateway.python.v1alpha2.RequestStreamContext - (*ResponseStreamContext)(nil), // 25: wso2.gateway.python.v1alpha2.ResponseStreamContext - (*RequestHeadersPayload)(nil), // 26: wso2.gateway.python.v1alpha2.RequestHeadersPayload - (*RequestBodyPayload)(nil), // 27: wso2.gateway.python.v1alpha2.RequestBodyPayload - (*ResponseHeadersPayload)(nil), // 28: wso2.gateway.python.v1alpha2.ResponseHeadersPayload - (*ResponseBodyPayload)(nil), // 29: wso2.gateway.python.v1alpha2.ResponseBodyPayload - (*NeedsMoreRequestDataPayload)(nil), // 30: wso2.gateway.python.v1alpha2.NeedsMoreRequestDataPayload - (*RequestChunkPayload)(nil), // 31: wso2.gateway.python.v1alpha2.RequestChunkPayload - (*NeedsMoreResponseDataPayload)(nil), // 32: wso2.gateway.python.v1alpha2.NeedsMoreResponseDataPayload - (*ResponseChunkPayload)(nil), // 33: wso2.gateway.python.v1alpha2.ResponseChunkPayload - (*CancelExecutionPayload)(nil), // 34: wso2.gateway.python.v1alpha2.CancelExecutionPayload - (*PolicyMetadata)(nil), // 35: wso2.gateway.python.v1alpha2.PolicyMetadata - (*DropHeaderAction)(nil), // 36: wso2.gateway.python.v1alpha2.DropHeaderAction - (*ImmediateResponse)(nil), // 37: wso2.gateway.python.v1alpha2.ImmediateResponse - (*UpstreamRequestHeaderModifications)(nil), // 38: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications - (*UpstreamRequestModifications)(nil), // 39: wso2.gateway.python.v1alpha2.UpstreamRequestModifications - (*DownstreamResponseHeaderModifications)(nil), // 40: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications - (*DownstreamResponseModifications)(nil), // 41: wso2.gateway.python.v1alpha2.DownstreamResponseModifications - (*ForwardRequestChunk)(nil), // 42: wso2.gateway.python.v1alpha2.ForwardRequestChunk - (*ForwardResponseChunk)(nil), // 43: wso2.gateway.python.v1alpha2.ForwardResponseChunk - (*TerminateResponseChunk)(nil), // 44: wso2.gateway.python.v1alpha2.TerminateResponseChunk - (*RequestHeaderActionPayload)(nil), // 45: wso2.gateway.python.v1alpha2.RequestHeaderActionPayload - (*RequestActionPayload)(nil), // 46: wso2.gateway.python.v1alpha2.RequestActionPayload - (*ResponseHeaderActionPayload)(nil), // 47: wso2.gateway.python.v1alpha2.ResponseHeaderActionPayload - (*ResponseActionPayload)(nil), // 48: wso2.gateway.python.v1alpha2.ResponseActionPayload - (*NeedsMoreDecisionPayload)(nil), // 49: wso2.gateway.python.v1alpha2.NeedsMoreDecisionPayload - (*StreamingRequestActionPayload)(nil), // 50: wso2.gateway.python.v1alpha2.StreamingRequestActionPayload - (*StreamingResponseActionPayload)(nil), // 51: wso2.gateway.python.v1alpha2.StreamingResponseActionPayload - (*ExecutionError)(nil), // 52: wso2.gateway.python.v1alpha2.ExecutionError - (*HealthCheckRequest)(nil), // 53: wso2.gateway.python.v1alpha2.HealthCheckRequest - (*HealthCheckResponse)(nil), // 54: wso2.gateway.python.v1alpha2.HealthCheckResponse - nil, // 55: wso2.gateway.python.v1alpha2.Headers.ValuesEntry - nil, // 56: wso2.gateway.python.v1alpha2.AuthContext.ScopesEntry - nil, // 57: wso2.gateway.python.v1alpha2.AuthContext.PropertiesEntry - nil, // 58: wso2.gateway.python.v1alpha2.ImmediateResponse.HeadersEntry - nil, // 59: wso2.gateway.python.v1alpha2.ImmediateResponse.DynamicMetadataEntry - nil, // 60: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.HeadersToSetEntry - nil, // 61: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.QueryParametersToAddEntry - nil, // 62: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.DynamicMetadataEntry - nil, // 63: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.HeadersToSetEntry - nil, // 64: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.QueryParametersToAddEntry - nil, // 65: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.DynamicMetadataEntry - nil, // 66: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.HeadersToSetEntry - nil, // 67: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.DynamicMetadataEntry - nil, // 68: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.HeadersToSetEntry - nil, // 69: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.DynamicMetadataEntry - nil, // 70: wso2.gateway.python.v1alpha2.ForwardRequestChunk.DynamicMetadataEntry - nil, // 71: wso2.gateway.python.v1alpha2.ForwardResponseChunk.DynamicMetadataEntry - nil, // 72: wso2.gateway.python.v1alpha2.TerminateResponseChunk.DynamicMetadataEntry - (*structpb.Struct)(nil), // 73: google.protobuf.Struct - (*timestamppb.Timestamp)(nil), // 74: google.protobuf.Timestamp - (*wrapperspb.BytesValue)(nil), // 75: google.protobuf.BytesValue - (*wrapperspb.StringValue)(nil), // 76: google.protobuf.StringValue - (*wrapperspb.Int32Value)(nil), // 77: google.protobuf.Int32Value + (*DownstreamRequest)(nil), // 19: wso2.gateway.python.v1alpha2.DownstreamRequest + (*DownstreamContext)(nil), // 20: wso2.gateway.python.v1alpha2.DownstreamContext + (*UpstreamRequestContext)(nil), // 21: wso2.gateway.python.v1alpha2.UpstreamRequestContext + (*UpstreamResponse)(nil), // 22: wso2.gateway.python.v1alpha2.UpstreamResponse + (*UpstreamResponseContext)(nil), // 23: wso2.gateway.python.v1alpha2.UpstreamResponseContext + (*AuthContext)(nil), // 24: wso2.gateway.python.v1alpha2.AuthContext + (*RequestHeaderContext)(nil), // 25: wso2.gateway.python.v1alpha2.RequestHeaderContext + (*RequestContext)(nil), // 26: wso2.gateway.python.v1alpha2.RequestContext + (*ResponseHeaderContext)(nil), // 27: wso2.gateway.python.v1alpha2.ResponseHeaderContext + (*ResponseContext)(nil), // 28: wso2.gateway.python.v1alpha2.ResponseContext + (*RequestStreamContext)(nil), // 29: wso2.gateway.python.v1alpha2.RequestStreamContext + (*ResponseStreamContext)(nil), // 30: wso2.gateway.python.v1alpha2.ResponseStreamContext + (*RequestHeadersPayload)(nil), // 31: wso2.gateway.python.v1alpha2.RequestHeadersPayload + (*RequestBodyPayload)(nil), // 32: wso2.gateway.python.v1alpha2.RequestBodyPayload + (*ResponseHeadersPayload)(nil), // 33: wso2.gateway.python.v1alpha2.ResponseHeadersPayload + (*ResponseBodyPayload)(nil), // 34: wso2.gateway.python.v1alpha2.ResponseBodyPayload + (*NeedsMoreRequestDataPayload)(nil), // 35: wso2.gateway.python.v1alpha2.NeedsMoreRequestDataPayload + (*RequestChunkPayload)(nil), // 36: wso2.gateway.python.v1alpha2.RequestChunkPayload + (*NeedsMoreResponseDataPayload)(nil), // 37: wso2.gateway.python.v1alpha2.NeedsMoreResponseDataPayload + (*ResponseChunkPayload)(nil), // 38: wso2.gateway.python.v1alpha2.ResponseChunkPayload + (*CancelExecutionPayload)(nil), // 39: wso2.gateway.python.v1alpha2.CancelExecutionPayload + (*PolicyMetadata)(nil), // 40: wso2.gateway.python.v1alpha2.PolicyMetadata + (*DropHeaderAction)(nil), // 41: wso2.gateway.python.v1alpha2.DropHeaderAction + (*ImmediateResponse)(nil), // 42: wso2.gateway.python.v1alpha2.ImmediateResponse + (*UpstreamRequestHeaderModifications)(nil), // 43: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications + (*UpstreamRequestModifications)(nil), // 44: wso2.gateway.python.v1alpha2.UpstreamRequestModifications + (*DownstreamResponseHeaderModifications)(nil), // 45: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications + (*DownstreamResponseModifications)(nil), // 46: wso2.gateway.python.v1alpha2.DownstreamResponseModifications + (*ForwardRequestChunk)(nil), // 47: wso2.gateway.python.v1alpha2.ForwardRequestChunk + (*ForwardResponseChunk)(nil), // 48: wso2.gateway.python.v1alpha2.ForwardResponseChunk + (*TerminateResponseChunk)(nil), // 49: wso2.gateway.python.v1alpha2.TerminateResponseChunk + (*RequestHeaderActionPayload)(nil), // 50: wso2.gateway.python.v1alpha2.RequestHeaderActionPayload + (*RequestActionPayload)(nil), // 51: wso2.gateway.python.v1alpha2.RequestActionPayload + (*ResponseHeaderActionPayload)(nil), // 52: wso2.gateway.python.v1alpha2.ResponseHeaderActionPayload + (*ResponseActionPayload)(nil), // 53: wso2.gateway.python.v1alpha2.ResponseActionPayload + (*NeedsMoreDecisionPayload)(nil), // 54: wso2.gateway.python.v1alpha2.NeedsMoreDecisionPayload + (*StreamingRequestActionPayload)(nil), // 55: wso2.gateway.python.v1alpha2.StreamingRequestActionPayload + (*StreamingResponseActionPayload)(nil), // 56: wso2.gateway.python.v1alpha2.StreamingResponseActionPayload + (*ExecutionError)(nil), // 57: wso2.gateway.python.v1alpha2.ExecutionError + (*HealthCheckRequest)(nil), // 58: wso2.gateway.python.v1alpha2.HealthCheckRequest + (*HealthCheckResponse)(nil), // 59: wso2.gateway.python.v1alpha2.HealthCheckResponse + nil, // 60: wso2.gateway.python.v1alpha2.Headers.ValuesEntry + nil, // 61: wso2.gateway.python.v1alpha2.AuthContext.ScopesEntry + nil, // 62: wso2.gateway.python.v1alpha2.AuthContext.PropertiesEntry + nil, // 63: wso2.gateway.python.v1alpha2.ImmediateResponse.HeadersEntry + nil, // 64: wso2.gateway.python.v1alpha2.ImmediateResponse.DynamicMetadataEntry + nil, // 65: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.HeadersToSetEntry + nil, // 66: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.QueryParametersToAddEntry + nil, // 67: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.DynamicMetadataEntry + nil, // 68: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.HeadersToSetEntry + nil, // 69: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.QueryParametersToAddEntry + nil, // 70: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.DynamicMetadataEntry + nil, // 71: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.HeadersToSetEntry + nil, // 72: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.DynamicMetadataEntry + nil, // 73: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.HeadersToSetEntry + nil, // 74: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.DynamicMetadataEntry + nil, // 75: wso2.gateway.python.v1alpha2.ForwardRequestChunk.DynamicMetadataEntry + nil, // 76: wso2.gateway.python.v1alpha2.ForwardResponseChunk.DynamicMetadataEntry + nil, // 77: wso2.gateway.python.v1alpha2.TerminateResponseChunk.DynamicMetadataEntry + (*structpb.Struct)(nil), // 78: google.protobuf.Struct + (*timestamppb.Timestamp)(nil), // 79: google.protobuf.Timestamp + (*wrapperspb.BytesValue)(nil), // 80: google.protobuf.BytesValue + (*wrapperspb.StringValue)(nil), // 81: google.protobuf.StringValue + (*wrapperspb.Int32Value)(nil), // 82: google.protobuf.Int32Value } var file_proto_python_executor_proto_depIdxs = []int32{ - 73, // 0: wso2.gateway.python.v1alpha2.StreamRequest.params:type_name -> google.protobuf.Struct + 78, // 0: wso2.gateway.python.v1alpha2.StreamRequest.params:type_name -> google.protobuf.Struct 14, // 1: wso2.gateway.python.v1alpha2.StreamRequest.shared_context:type_name -> wso2.gateway.python.v1alpha2.SharedContext 12, // 2: wso2.gateway.python.v1alpha2.StreamRequest.execution_metadata:type_name -> wso2.gateway.python.v1alpha2.ExecutionMetadata - 26, // 3: wso2.gateway.python.v1alpha2.StreamRequest.request_headers:type_name -> wso2.gateway.python.v1alpha2.RequestHeadersPayload - 27, // 4: wso2.gateway.python.v1alpha2.StreamRequest.request_body:type_name -> wso2.gateway.python.v1alpha2.RequestBodyPayload - 28, // 5: wso2.gateway.python.v1alpha2.StreamRequest.response_headers:type_name -> wso2.gateway.python.v1alpha2.ResponseHeadersPayload - 29, // 6: wso2.gateway.python.v1alpha2.StreamRequest.response_body:type_name -> wso2.gateway.python.v1alpha2.ResponseBodyPayload - 30, // 7: wso2.gateway.python.v1alpha2.StreamRequest.needs_more_request_data:type_name -> wso2.gateway.python.v1alpha2.NeedsMoreRequestDataPayload - 31, // 8: wso2.gateway.python.v1alpha2.StreamRequest.request_chunk:type_name -> wso2.gateway.python.v1alpha2.RequestChunkPayload - 32, // 9: wso2.gateway.python.v1alpha2.StreamRequest.needs_more_response_data:type_name -> wso2.gateway.python.v1alpha2.NeedsMoreResponseDataPayload - 33, // 10: wso2.gateway.python.v1alpha2.StreamRequest.response_chunk:type_name -> wso2.gateway.python.v1alpha2.ResponseChunkPayload - 34, // 11: wso2.gateway.python.v1alpha2.StreamRequest.cancel_execution:type_name -> wso2.gateway.python.v1alpha2.CancelExecutionPayload - 73, // 12: wso2.gateway.python.v1alpha2.StreamResponse.updated_metadata:type_name -> google.protobuf.Struct - 45, // 13: wso2.gateway.python.v1alpha2.StreamResponse.request_header_action:type_name -> wso2.gateway.python.v1alpha2.RequestHeaderActionPayload - 46, // 14: wso2.gateway.python.v1alpha2.StreamResponse.request_action:type_name -> wso2.gateway.python.v1alpha2.RequestActionPayload - 47, // 15: wso2.gateway.python.v1alpha2.StreamResponse.response_header_action:type_name -> wso2.gateway.python.v1alpha2.ResponseHeaderActionPayload - 48, // 16: wso2.gateway.python.v1alpha2.StreamResponse.response_action:type_name -> wso2.gateway.python.v1alpha2.ResponseActionPayload - 49, // 17: wso2.gateway.python.v1alpha2.StreamResponse.needs_more_decision:type_name -> wso2.gateway.python.v1alpha2.NeedsMoreDecisionPayload - 50, // 18: wso2.gateway.python.v1alpha2.StreamResponse.streaming_request_action:type_name -> wso2.gateway.python.v1alpha2.StreamingRequestActionPayload - 51, // 19: wso2.gateway.python.v1alpha2.StreamResponse.streaming_response_action:type_name -> wso2.gateway.python.v1alpha2.StreamingResponseActionPayload - 52, // 20: wso2.gateway.python.v1alpha2.StreamResponse.error:type_name -> wso2.gateway.python.v1alpha2.ExecutionError + 31, // 3: wso2.gateway.python.v1alpha2.StreamRequest.request_headers:type_name -> wso2.gateway.python.v1alpha2.RequestHeadersPayload + 32, // 4: wso2.gateway.python.v1alpha2.StreamRequest.request_body:type_name -> wso2.gateway.python.v1alpha2.RequestBodyPayload + 33, // 5: wso2.gateway.python.v1alpha2.StreamRequest.response_headers:type_name -> wso2.gateway.python.v1alpha2.ResponseHeadersPayload + 34, // 6: wso2.gateway.python.v1alpha2.StreamRequest.response_body:type_name -> wso2.gateway.python.v1alpha2.ResponseBodyPayload + 35, // 7: wso2.gateway.python.v1alpha2.StreamRequest.needs_more_request_data:type_name -> wso2.gateway.python.v1alpha2.NeedsMoreRequestDataPayload + 36, // 8: wso2.gateway.python.v1alpha2.StreamRequest.request_chunk:type_name -> wso2.gateway.python.v1alpha2.RequestChunkPayload + 37, // 9: wso2.gateway.python.v1alpha2.StreamRequest.needs_more_response_data:type_name -> wso2.gateway.python.v1alpha2.NeedsMoreResponseDataPayload + 38, // 10: wso2.gateway.python.v1alpha2.StreamRequest.response_chunk:type_name -> wso2.gateway.python.v1alpha2.ResponseChunkPayload + 39, // 11: wso2.gateway.python.v1alpha2.StreamRequest.cancel_execution:type_name -> wso2.gateway.python.v1alpha2.CancelExecutionPayload + 78, // 12: wso2.gateway.python.v1alpha2.StreamResponse.updated_metadata:type_name -> google.protobuf.Struct + 50, // 13: wso2.gateway.python.v1alpha2.StreamResponse.request_header_action:type_name -> wso2.gateway.python.v1alpha2.RequestHeaderActionPayload + 51, // 14: wso2.gateway.python.v1alpha2.StreamResponse.request_action:type_name -> wso2.gateway.python.v1alpha2.RequestActionPayload + 52, // 15: wso2.gateway.python.v1alpha2.StreamResponse.response_header_action:type_name -> wso2.gateway.python.v1alpha2.ResponseHeaderActionPayload + 53, // 16: wso2.gateway.python.v1alpha2.StreamResponse.response_action:type_name -> wso2.gateway.python.v1alpha2.ResponseActionPayload + 54, // 17: wso2.gateway.python.v1alpha2.StreamResponse.needs_more_decision:type_name -> wso2.gateway.python.v1alpha2.NeedsMoreDecisionPayload + 55, // 18: wso2.gateway.python.v1alpha2.StreamResponse.streaming_request_action:type_name -> wso2.gateway.python.v1alpha2.StreamingRequestActionPayload + 56, // 19: wso2.gateway.python.v1alpha2.StreamResponse.streaming_response_action:type_name -> wso2.gateway.python.v1alpha2.StreamingResponseActionPayload + 57, // 20: wso2.gateway.python.v1alpha2.StreamResponse.error:type_name -> wso2.gateway.python.v1alpha2.ExecutionError 0, // 21: wso2.gateway.python.v1alpha2.ProcessingMode.request_header_mode:type_name -> wso2.gateway.python.v1alpha2.HeaderProcessingMode 1, // 22: wso2.gateway.python.v1alpha2.ProcessingMode.request_body_mode:type_name -> wso2.gateway.python.v1alpha2.BodyProcessingMode 0, // 23: wso2.gateway.python.v1alpha2.ProcessingMode.response_header_mode:type_name -> wso2.gateway.python.v1alpha2.HeaderProcessingMode 1, // 24: wso2.gateway.python.v1alpha2.ProcessingMode.response_body_mode:type_name -> wso2.gateway.python.v1alpha2.BodyProcessingMode - 35, // 25: wso2.gateway.python.v1alpha2.InitPolicyRequest.policy_metadata:type_name -> wso2.gateway.python.v1alpha2.PolicyMetadata - 73, // 26: wso2.gateway.python.v1alpha2.InitPolicyRequest.params:type_name -> google.protobuf.Struct + 40, // 25: wso2.gateway.python.v1alpha2.InitPolicyRequest.policy_metadata:type_name -> wso2.gateway.python.v1alpha2.PolicyMetadata + 78, // 26: wso2.gateway.python.v1alpha2.InitPolicyRequest.params:type_name -> google.protobuf.Struct 6, // 27: wso2.gateway.python.v1alpha2.InitPolicyResponse.processing_mode:type_name -> wso2.gateway.python.v1alpha2.ProcessingMode 7, // 28: wso2.gateway.python.v1alpha2.InitPolicyResponse.capabilities:type_name -> wso2.gateway.python.v1alpha2.PolicyCapabilities 2, // 29: wso2.gateway.python.v1alpha2.ExecutionMetadata.phase:type_name -> wso2.gateway.python.v1alpha2.Phase - 74, // 30: wso2.gateway.python.v1alpha2.ExecutionMetadata.deadline:type_name -> google.protobuf.Timestamp + 79, // 30: wso2.gateway.python.v1alpha2.ExecutionMetadata.deadline:type_name -> google.protobuf.Timestamp 13, // 31: wso2.gateway.python.v1alpha2.ExecutionMetadata.trace:type_name -> wso2.gateway.python.v1alpha2.TraceMetadata - 73, // 32: wso2.gateway.python.v1alpha2.SharedContext.metadata:type_name -> google.protobuf.Struct - 19, // 33: wso2.gateway.python.v1alpha2.SharedContext.auth_context:type_name -> wso2.gateway.python.v1alpha2.AuthContext - 55, // 34: wso2.gateway.python.v1alpha2.Headers.values:type_name -> wso2.gateway.python.v1alpha2.Headers.ValuesEntry - 56, // 35: wso2.gateway.python.v1alpha2.AuthContext.scopes:type_name -> wso2.gateway.python.v1alpha2.AuthContext.ScopesEntry - 57, // 36: wso2.gateway.python.v1alpha2.AuthContext.properties:type_name -> wso2.gateway.python.v1alpha2.AuthContext.PropertiesEntry - 19, // 37: wso2.gateway.python.v1alpha2.AuthContext.previous:type_name -> wso2.gateway.python.v1alpha2.AuthContext - 15, // 38: wso2.gateway.python.v1alpha2.RequestHeaderContext.headers:type_name -> wso2.gateway.python.v1alpha2.Headers - 15, // 39: wso2.gateway.python.v1alpha2.RequestContext.headers:type_name -> wso2.gateway.python.v1alpha2.Headers - 17, // 40: wso2.gateway.python.v1alpha2.RequestContext.body:type_name -> wso2.gateway.python.v1alpha2.Body - 15, // 41: wso2.gateway.python.v1alpha2.ResponseHeaderContext.request_headers:type_name -> wso2.gateway.python.v1alpha2.Headers - 17, // 42: wso2.gateway.python.v1alpha2.ResponseHeaderContext.request_body:type_name -> wso2.gateway.python.v1alpha2.Body - 15, // 43: wso2.gateway.python.v1alpha2.ResponseHeaderContext.response_headers:type_name -> wso2.gateway.python.v1alpha2.Headers - 15, // 44: wso2.gateway.python.v1alpha2.ResponseContext.request_headers:type_name -> wso2.gateway.python.v1alpha2.Headers - 17, // 45: wso2.gateway.python.v1alpha2.ResponseContext.request_body:type_name -> wso2.gateway.python.v1alpha2.Body - 15, // 46: wso2.gateway.python.v1alpha2.ResponseContext.response_headers:type_name -> wso2.gateway.python.v1alpha2.Headers - 17, // 47: wso2.gateway.python.v1alpha2.ResponseContext.response_body:type_name -> wso2.gateway.python.v1alpha2.Body - 15, // 48: wso2.gateway.python.v1alpha2.RequestStreamContext.headers:type_name -> wso2.gateway.python.v1alpha2.Headers - 15, // 49: wso2.gateway.python.v1alpha2.ResponseStreamContext.request_headers:type_name -> wso2.gateway.python.v1alpha2.Headers - 17, // 50: wso2.gateway.python.v1alpha2.ResponseStreamContext.request_body:type_name -> wso2.gateway.python.v1alpha2.Body - 15, // 51: wso2.gateway.python.v1alpha2.ResponseStreamContext.response_headers:type_name -> wso2.gateway.python.v1alpha2.Headers - 20, // 52: wso2.gateway.python.v1alpha2.RequestHeadersPayload.context:type_name -> wso2.gateway.python.v1alpha2.RequestHeaderContext - 21, // 53: wso2.gateway.python.v1alpha2.RequestBodyPayload.context:type_name -> wso2.gateway.python.v1alpha2.RequestContext - 22, // 54: wso2.gateway.python.v1alpha2.ResponseHeadersPayload.context:type_name -> wso2.gateway.python.v1alpha2.ResponseHeaderContext - 23, // 55: wso2.gateway.python.v1alpha2.ResponseBodyPayload.context:type_name -> wso2.gateway.python.v1alpha2.ResponseContext - 24, // 56: wso2.gateway.python.v1alpha2.RequestChunkPayload.context:type_name -> wso2.gateway.python.v1alpha2.RequestStreamContext - 18, // 57: wso2.gateway.python.v1alpha2.RequestChunkPayload.chunk:type_name -> wso2.gateway.python.v1alpha2.StreamBody - 25, // 58: wso2.gateway.python.v1alpha2.ResponseChunkPayload.context:type_name -> wso2.gateway.python.v1alpha2.ResponseStreamContext - 18, // 59: wso2.gateway.python.v1alpha2.ResponseChunkPayload.chunk:type_name -> wso2.gateway.python.v1alpha2.StreamBody - 2, // 60: wso2.gateway.python.v1alpha2.CancelExecutionPayload.target_phase:type_name -> wso2.gateway.python.v1alpha2.Phase - 3, // 61: wso2.gateway.python.v1alpha2.DropHeaderAction.action:type_name -> wso2.gateway.python.v1alpha2.DropHeaderActionType - 58, // 62: wso2.gateway.python.v1alpha2.ImmediateResponse.headers:type_name -> wso2.gateway.python.v1alpha2.ImmediateResponse.HeadersEntry - 75, // 63: wso2.gateway.python.v1alpha2.ImmediateResponse.body:type_name -> google.protobuf.BytesValue - 73, // 64: wso2.gateway.python.v1alpha2.ImmediateResponse.analytics_metadata:type_name -> google.protobuf.Struct - 59, // 65: wso2.gateway.python.v1alpha2.ImmediateResponse.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.ImmediateResponse.DynamicMetadataEntry - 36, // 66: wso2.gateway.python.v1alpha2.ImmediateResponse.analytics_header_filter:type_name -> wso2.gateway.python.v1alpha2.DropHeaderAction - 60, // 67: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.headers_to_set:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.HeadersToSetEntry - 76, // 68: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.upstream_name:type_name -> google.protobuf.StringValue - 76, // 69: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.path:type_name -> google.protobuf.StringValue - 76, // 70: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.host:type_name -> google.protobuf.StringValue - 76, // 71: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.method:type_name -> google.protobuf.StringValue - 61, // 72: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.query_parameters_to_add:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.QueryParametersToAddEntry - 73, // 73: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.analytics_metadata:type_name -> google.protobuf.Struct - 62, // 74: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.DynamicMetadataEntry - 36, // 75: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.analytics_header_filter:type_name -> wso2.gateway.python.v1alpha2.DropHeaderAction - 75, // 76: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.body:type_name -> google.protobuf.BytesValue - 63, // 77: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.headers_to_set:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestModifications.HeadersToSetEntry - 76, // 78: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.upstream_name:type_name -> google.protobuf.StringValue - 76, // 79: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.path:type_name -> google.protobuf.StringValue - 76, // 80: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.host:type_name -> google.protobuf.StringValue - 76, // 81: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.method:type_name -> google.protobuf.StringValue - 64, // 82: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.query_parameters_to_add:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestModifications.QueryParametersToAddEntry - 73, // 83: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.analytics_metadata:type_name -> google.protobuf.Struct - 65, // 84: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestModifications.DynamicMetadataEntry - 36, // 85: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.analytics_header_filter:type_name -> wso2.gateway.python.v1alpha2.DropHeaderAction - 66, // 86: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.headers_to_set:type_name -> wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.HeadersToSetEntry - 73, // 87: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.analytics_metadata:type_name -> google.protobuf.Struct - 67, // 88: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.DynamicMetadataEntry - 36, // 89: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.analytics_header_filter:type_name -> wso2.gateway.python.v1alpha2.DropHeaderAction - 75, // 90: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.body:type_name -> google.protobuf.BytesValue - 77, // 91: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.status_code:type_name -> google.protobuf.Int32Value - 68, // 92: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.headers_to_set:type_name -> wso2.gateway.python.v1alpha2.DownstreamResponseModifications.HeadersToSetEntry - 73, // 93: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.analytics_metadata:type_name -> google.protobuf.Struct - 69, // 94: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.DownstreamResponseModifications.DynamicMetadataEntry - 36, // 95: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.analytics_header_filter:type_name -> wso2.gateway.python.v1alpha2.DropHeaderAction - 75, // 96: wso2.gateway.python.v1alpha2.ForwardRequestChunk.body:type_name -> google.protobuf.BytesValue - 73, // 97: wso2.gateway.python.v1alpha2.ForwardRequestChunk.analytics_metadata:type_name -> google.protobuf.Struct - 70, // 98: wso2.gateway.python.v1alpha2.ForwardRequestChunk.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.ForwardRequestChunk.DynamicMetadataEntry - 75, // 99: wso2.gateway.python.v1alpha2.ForwardResponseChunk.body:type_name -> google.protobuf.BytesValue - 73, // 100: wso2.gateway.python.v1alpha2.ForwardResponseChunk.analytics_metadata:type_name -> google.protobuf.Struct - 71, // 101: wso2.gateway.python.v1alpha2.ForwardResponseChunk.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.ForwardResponseChunk.DynamicMetadataEntry - 75, // 102: wso2.gateway.python.v1alpha2.TerminateResponseChunk.body:type_name -> google.protobuf.BytesValue - 73, // 103: wso2.gateway.python.v1alpha2.TerminateResponseChunk.analytics_metadata:type_name -> google.protobuf.Struct - 72, // 104: wso2.gateway.python.v1alpha2.TerminateResponseChunk.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.TerminateResponseChunk.DynamicMetadataEntry - 38, // 105: wso2.gateway.python.v1alpha2.RequestHeaderActionPayload.upstream_request_header_modifications:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications - 37, // 106: wso2.gateway.python.v1alpha2.RequestHeaderActionPayload.immediate_response:type_name -> wso2.gateway.python.v1alpha2.ImmediateResponse - 39, // 107: wso2.gateway.python.v1alpha2.RequestActionPayload.upstream_request_modifications:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestModifications - 37, // 108: wso2.gateway.python.v1alpha2.RequestActionPayload.immediate_response:type_name -> wso2.gateway.python.v1alpha2.ImmediateResponse - 40, // 109: wso2.gateway.python.v1alpha2.ResponseHeaderActionPayload.downstream_response_header_modifications:type_name -> wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications - 37, // 110: wso2.gateway.python.v1alpha2.ResponseHeaderActionPayload.immediate_response:type_name -> wso2.gateway.python.v1alpha2.ImmediateResponse - 41, // 111: wso2.gateway.python.v1alpha2.ResponseActionPayload.downstream_response_modifications:type_name -> wso2.gateway.python.v1alpha2.DownstreamResponseModifications - 37, // 112: wso2.gateway.python.v1alpha2.ResponseActionPayload.immediate_response:type_name -> wso2.gateway.python.v1alpha2.ImmediateResponse - 42, // 113: wso2.gateway.python.v1alpha2.StreamingRequestActionPayload.forward_request_chunk:type_name -> wso2.gateway.python.v1alpha2.ForwardRequestChunk - 43, // 114: wso2.gateway.python.v1alpha2.StreamingResponseActionPayload.forward_response_chunk:type_name -> wso2.gateway.python.v1alpha2.ForwardResponseChunk - 44, // 115: wso2.gateway.python.v1alpha2.StreamingResponseActionPayload.terminate_response_chunk:type_name -> wso2.gateway.python.v1alpha2.TerminateResponseChunk - 16, // 116: wso2.gateway.python.v1alpha2.Headers.ValuesEntry.value:type_name -> wso2.gateway.python.v1alpha2.StringList - 73, // 117: wso2.gateway.python.v1alpha2.ImmediateResponse.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct - 16, // 118: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.QueryParametersToAddEntry.value:type_name -> wso2.gateway.python.v1alpha2.StringList - 73, // 119: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct - 16, // 120: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.QueryParametersToAddEntry.value:type_name -> wso2.gateway.python.v1alpha2.StringList - 73, // 121: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct - 73, // 122: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct - 73, // 123: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct - 73, // 124: wso2.gateway.python.v1alpha2.ForwardRequestChunk.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct - 73, // 125: wso2.gateway.python.v1alpha2.ForwardResponseChunk.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct - 73, // 126: wso2.gateway.python.v1alpha2.TerminateResponseChunk.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct - 4, // 127: wso2.gateway.python.v1alpha2.PythonExecutorService.ExecuteStream:input_type -> wso2.gateway.python.v1alpha2.StreamRequest - 53, // 128: wso2.gateway.python.v1alpha2.PythonExecutorService.HealthCheck:input_type -> wso2.gateway.python.v1alpha2.HealthCheckRequest - 8, // 129: wso2.gateway.python.v1alpha2.PythonExecutorService.InitPolicy:input_type -> wso2.gateway.python.v1alpha2.InitPolicyRequest - 10, // 130: wso2.gateway.python.v1alpha2.PythonExecutorService.DestroyPolicy:input_type -> wso2.gateway.python.v1alpha2.DestroyPolicyRequest - 5, // 131: wso2.gateway.python.v1alpha2.PythonExecutorService.ExecuteStream:output_type -> wso2.gateway.python.v1alpha2.StreamResponse - 54, // 132: wso2.gateway.python.v1alpha2.PythonExecutorService.HealthCheck:output_type -> wso2.gateway.python.v1alpha2.HealthCheckResponse - 9, // 133: wso2.gateway.python.v1alpha2.PythonExecutorService.InitPolicy:output_type -> wso2.gateway.python.v1alpha2.InitPolicyResponse - 11, // 134: wso2.gateway.python.v1alpha2.PythonExecutorService.DestroyPolicy:output_type -> wso2.gateway.python.v1alpha2.DestroyPolicyResponse - 131, // [131:135] is the sub-list for method output_type - 127, // [127:131] is the sub-list for method input_type - 127, // [127:127] is the sub-list for extension type_name - 127, // [127:127] is the sub-list for extension extendee - 0, // [0:127] is the sub-list for field type_name + 78, // 32: wso2.gateway.python.v1alpha2.SharedContext.metadata:type_name -> google.protobuf.Struct + 24, // 33: wso2.gateway.python.v1alpha2.SharedContext.auth_context:type_name -> wso2.gateway.python.v1alpha2.AuthContext + 60, // 34: wso2.gateway.python.v1alpha2.Headers.values:type_name -> wso2.gateway.python.v1alpha2.Headers.ValuesEntry + 15, // 35: wso2.gateway.python.v1alpha2.DownstreamRequest.headers:type_name -> wso2.gateway.python.v1alpha2.Headers + 19, // 36: wso2.gateway.python.v1alpha2.DownstreamContext.request:type_name -> wso2.gateway.python.v1alpha2.DownstreamRequest + 15, // 37: wso2.gateway.python.v1alpha2.UpstreamResponse.headers:type_name -> wso2.gateway.python.v1alpha2.Headers + 22, // 38: wso2.gateway.python.v1alpha2.UpstreamResponseContext.response:type_name -> wso2.gateway.python.v1alpha2.UpstreamResponse + 61, // 39: wso2.gateway.python.v1alpha2.AuthContext.scopes:type_name -> wso2.gateway.python.v1alpha2.AuthContext.ScopesEntry + 62, // 40: wso2.gateway.python.v1alpha2.AuthContext.properties:type_name -> wso2.gateway.python.v1alpha2.AuthContext.PropertiesEntry + 24, // 41: wso2.gateway.python.v1alpha2.AuthContext.previous:type_name -> wso2.gateway.python.v1alpha2.AuthContext + 15, // 42: wso2.gateway.python.v1alpha2.RequestHeaderContext.headers:type_name -> wso2.gateway.python.v1alpha2.Headers + 20, // 43: wso2.gateway.python.v1alpha2.RequestHeaderContext.downstream:type_name -> wso2.gateway.python.v1alpha2.DownstreamContext + 21, // 44: wso2.gateway.python.v1alpha2.RequestHeaderContext.upstream:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestContext + 15, // 45: wso2.gateway.python.v1alpha2.RequestContext.headers:type_name -> wso2.gateway.python.v1alpha2.Headers + 17, // 46: wso2.gateway.python.v1alpha2.RequestContext.body:type_name -> wso2.gateway.python.v1alpha2.Body + 20, // 47: wso2.gateway.python.v1alpha2.RequestContext.downstream:type_name -> wso2.gateway.python.v1alpha2.DownstreamContext + 21, // 48: wso2.gateway.python.v1alpha2.RequestContext.upstream:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestContext + 15, // 49: wso2.gateway.python.v1alpha2.ResponseHeaderContext.request_headers:type_name -> wso2.gateway.python.v1alpha2.Headers + 17, // 50: wso2.gateway.python.v1alpha2.ResponseHeaderContext.request_body:type_name -> wso2.gateway.python.v1alpha2.Body + 15, // 51: wso2.gateway.python.v1alpha2.ResponseHeaderContext.response_headers:type_name -> wso2.gateway.python.v1alpha2.Headers + 20, // 52: wso2.gateway.python.v1alpha2.ResponseHeaderContext.downstream:type_name -> wso2.gateway.python.v1alpha2.DownstreamContext + 23, // 53: wso2.gateway.python.v1alpha2.ResponseHeaderContext.upstream:type_name -> wso2.gateway.python.v1alpha2.UpstreamResponseContext + 15, // 54: wso2.gateway.python.v1alpha2.ResponseContext.request_headers:type_name -> wso2.gateway.python.v1alpha2.Headers + 17, // 55: wso2.gateway.python.v1alpha2.ResponseContext.request_body:type_name -> wso2.gateway.python.v1alpha2.Body + 15, // 56: wso2.gateway.python.v1alpha2.ResponseContext.response_headers:type_name -> wso2.gateway.python.v1alpha2.Headers + 17, // 57: wso2.gateway.python.v1alpha2.ResponseContext.response_body:type_name -> wso2.gateway.python.v1alpha2.Body + 20, // 58: wso2.gateway.python.v1alpha2.ResponseContext.downstream:type_name -> wso2.gateway.python.v1alpha2.DownstreamContext + 23, // 59: wso2.gateway.python.v1alpha2.ResponseContext.upstream:type_name -> wso2.gateway.python.v1alpha2.UpstreamResponseContext + 15, // 60: wso2.gateway.python.v1alpha2.RequestStreamContext.headers:type_name -> wso2.gateway.python.v1alpha2.Headers + 20, // 61: wso2.gateway.python.v1alpha2.RequestStreamContext.downstream:type_name -> wso2.gateway.python.v1alpha2.DownstreamContext + 21, // 62: wso2.gateway.python.v1alpha2.RequestStreamContext.upstream:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestContext + 15, // 63: wso2.gateway.python.v1alpha2.ResponseStreamContext.request_headers:type_name -> wso2.gateway.python.v1alpha2.Headers + 17, // 64: wso2.gateway.python.v1alpha2.ResponseStreamContext.request_body:type_name -> wso2.gateway.python.v1alpha2.Body + 15, // 65: wso2.gateway.python.v1alpha2.ResponseStreamContext.response_headers:type_name -> wso2.gateway.python.v1alpha2.Headers + 20, // 66: wso2.gateway.python.v1alpha2.ResponseStreamContext.downstream:type_name -> wso2.gateway.python.v1alpha2.DownstreamContext + 23, // 67: wso2.gateway.python.v1alpha2.ResponseStreamContext.upstream:type_name -> wso2.gateway.python.v1alpha2.UpstreamResponseContext + 25, // 68: wso2.gateway.python.v1alpha2.RequestHeadersPayload.context:type_name -> wso2.gateway.python.v1alpha2.RequestHeaderContext + 26, // 69: wso2.gateway.python.v1alpha2.RequestBodyPayload.context:type_name -> wso2.gateway.python.v1alpha2.RequestContext + 27, // 70: wso2.gateway.python.v1alpha2.ResponseHeadersPayload.context:type_name -> wso2.gateway.python.v1alpha2.ResponseHeaderContext + 28, // 71: wso2.gateway.python.v1alpha2.ResponseBodyPayload.context:type_name -> wso2.gateway.python.v1alpha2.ResponseContext + 29, // 72: wso2.gateway.python.v1alpha2.RequestChunkPayload.context:type_name -> wso2.gateway.python.v1alpha2.RequestStreamContext + 18, // 73: wso2.gateway.python.v1alpha2.RequestChunkPayload.chunk:type_name -> wso2.gateway.python.v1alpha2.StreamBody + 30, // 74: wso2.gateway.python.v1alpha2.ResponseChunkPayload.context:type_name -> wso2.gateway.python.v1alpha2.ResponseStreamContext + 18, // 75: wso2.gateway.python.v1alpha2.ResponseChunkPayload.chunk:type_name -> wso2.gateway.python.v1alpha2.StreamBody + 2, // 76: wso2.gateway.python.v1alpha2.CancelExecutionPayload.target_phase:type_name -> wso2.gateway.python.v1alpha2.Phase + 3, // 77: wso2.gateway.python.v1alpha2.DropHeaderAction.action:type_name -> wso2.gateway.python.v1alpha2.DropHeaderActionType + 63, // 78: wso2.gateway.python.v1alpha2.ImmediateResponse.headers:type_name -> wso2.gateway.python.v1alpha2.ImmediateResponse.HeadersEntry + 80, // 79: wso2.gateway.python.v1alpha2.ImmediateResponse.body:type_name -> google.protobuf.BytesValue + 78, // 80: wso2.gateway.python.v1alpha2.ImmediateResponse.analytics_metadata:type_name -> google.protobuf.Struct + 64, // 81: wso2.gateway.python.v1alpha2.ImmediateResponse.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.ImmediateResponse.DynamicMetadataEntry + 41, // 82: wso2.gateway.python.v1alpha2.ImmediateResponse.analytics_header_filter:type_name -> wso2.gateway.python.v1alpha2.DropHeaderAction + 65, // 83: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.headers_to_set:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.HeadersToSetEntry + 81, // 84: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.upstream_name:type_name -> google.protobuf.StringValue + 81, // 85: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.path:type_name -> google.protobuf.StringValue + 81, // 86: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.host:type_name -> google.protobuf.StringValue + 81, // 87: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.method:type_name -> google.protobuf.StringValue + 66, // 88: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.query_parameters_to_add:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.QueryParametersToAddEntry + 78, // 89: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.analytics_metadata:type_name -> google.protobuf.Struct + 67, // 90: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.DynamicMetadataEntry + 41, // 91: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.analytics_header_filter:type_name -> wso2.gateway.python.v1alpha2.DropHeaderAction + 80, // 92: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.body:type_name -> google.protobuf.BytesValue + 68, // 93: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.headers_to_set:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestModifications.HeadersToSetEntry + 81, // 94: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.upstream_name:type_name -> google.protobuf.StringValue + 81, // 95: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.path:type_name -> google.protobuf.StringValue + 81, // 96: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.host:type_name -> google.protobuf.StringValue + 81, // 97: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.method:type_name -> google.protobuf.StringValue + 69, // 98: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.query_parameters_to_add:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestModifications.QueryParametersToAddEntry + 78, // 99: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.analytics_metadata:type_name -> google.protobuf.Struct + 70, // 100: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestModifications.DynamicMetadataEntry + 41, // 101: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.analytics_header_filter:type_name -> wso2.gateway.python.v1alpha2.DropHeaderAction + 71, // 102: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.headers_to_set:type_name -> wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.HeadersToSetEntry + 78, // 103: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.analytics_metadata:type_name -> google.protobuf.Struct + 72, // 104: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.DynamicMetadataEntry + 41, // 105: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.analytics_header_filter:type_name -> wso2.gateway.python.v1alpha2.DropHeaderAction + 80, // 106: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.body:type_name -> google.protobuf.BytesValue + 82, // 107: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.status_code:type_name -> google.protobuf.Int32Value + 73, // 108: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.headers_to_set:type_name -> wso2.gateway.python.v1alpha2.DownstreamResponseModifications.HeadersToSetEntry + 78, // 109: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.analytics_metadata:type_name -> google.protobuf.Struct + 74, // 110: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.DownstreamResponseModifications.DynamicMetadataEntry + 41, // 111: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.analytics_header_filter:type_name -> wso2.gateway.python.v1alpha2.DropHeaderAction + 80, // 112: wso2.gateway.python.v1alpha2.ForwardRequestChunk.body:type_name -> google.protobuf.BytesValue + 78, // 113: wso2.gateway.python.v1alpha2.ForwardRequestChunk.analytics_metadata:type_name -> google.protobuf.Struct + 75, // 114: wso2.gateway.python.v1alpha2.ForwardRequestChunk.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.ForwardRequestChunk.DynamicMetadataEntry + 80, // 115: wso2.gateway.python.v1alpha2.ForwardResponseChunk.body:type_name -> google.protobuf.BytesValue + 78, // 116: wso2.gateway.python.v1alpha2.ForwardResponseChunk.analytics_metadata:type_name -> google.protobuf.Struct + 76, // 117: wso2.gateway.python.v1alpha2.ForwardResponseChunk.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.ForwardResponseChunk.DynamicMetadataEntry + 80, // 118: wso2.gateway.python.v1alpha2.TerminateResponseChunk.body:type_name -> google.protobuf.BytesValue + 78, // 119: wso2.gateway.python.v1alpha2.TerminateResponseChunk.analytics_metadata:type_name -> google.protobuf.Struct + 77, // 120: wso2.gateway.python.v1alpha2.TerminateResponseChunk.dynamic_metadata:type_name -> wso2.gateway.python.v1alpha2.TerminateResponseChunk.DynamicMetadataEntry + 43, // 121: wso2.gateway.python.v1alpha2.RequestHeaderActionPayload.upstream_request_header_modifications:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications + 42, // 122: wso2.gateway.python.v1alpha2.RequestHeaderActionPayload.immediate_response:type_name -> wso2.gateway.python.v1alpha2.ImmediateResponse + 44, // 123: wso2.gateway.python.v1alpha2.RequestActionPayload.upstream_request_modifications:type_name -> wso2.gateway.python.v1alpha2.UpstreamRequestModifications + 42, // 124: wso2.gateway.python.v1alpha2.RequestActionPayload.immediate_response:type_name -> wso2.gateway.python.v1alpha2.ImmediateResponse + 45, // 125: wso2.gateway.python.v1alpha2.ResponseHeaderActionPayload.downstream_response_header_modifications:type_name -> wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications + 42, // 126: wso2.gateway.python.v1alpha2.ResponseHeaderActionPayload.immediate_response:type_name -> wso2.gateway.python.v1alpha2.ImmediateResponse + 46, // 127: wso2.gateway.python.v1alpha2.ResponseActionPayload.downstream_response_modifications:type_name -> wso2.gateway.python.v1alpha2.DownstreamResponseModifications + 42, // 128: wso2.gateway.python.v1alpha2.ResponseActionPayload.immediate_response:type_name -> wso2.gateway.python.v1alpha2.ImmediateResponse + 47, // 129: wso2.gateway.python.v1alpha2.StreamingRequestActionPayload.forward_request_chunk:type_name -> wso2.gateway.python.v1alpha2.ForwardRequestChunk + 48, // 130: wso2.gateway.python.v1alpha2.StreamingResponseActionPayload.forward_response_chunk:type_name -> wso2.gateway.python.v1alpha2.ForwardResponseChunk + 49, // 131: wso2.gateway.python.v1alpha2.StreamingResponseActionPayload.terminate_response_chunk:type_name -> wso2.gateway.python.v1alpha2.TerminateResponseChunk + 16, // 132: wso2.gateway.python.v1alpha2.Headers.ValuesEntry.value:type_name -> wso2.gateway.python.v1alpha2.StringList + 78, // 133: wso2.gateway.python.v1alpha2.ImmediateResponse.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct + 16, // 134: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.QueryParametersToAddEntry.value:type_name -> wso2.gateway.python.v1alpha2.StringList + 78, // 135: wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct + 16, // 136: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.QueryParametersToAddEntry.value:type_name -> wso2.gateway.python.v1alpha2.StringList + 78, // 137: wso2.gateway.python.v1alpha2.UpstreamRequestModifications.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct + 78, // 138: wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct + 78, // 139: wso2.gateway.python.v1alpha2.DownstreamResponseModifications.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct + 78, // 140: wso2.gateway.python.v1alpha2.ForwardRequestChunk.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct + 78, // 141: wso2.gateway.python.v1alpha2.ForwardResponseChunk.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct + 78, // 142: wso2.gateway.python.v1alpha2.TerminateResponseChunk.DynamicMetadataEntry.value:type_name -> google.protobuf.Struct + 4, // 143: wso2.gateway.python.v1alpha2.PythonExecutorService.ExecuteStream:input_type -> wso2.gateway.python.v1alpha2.StreamRequest + 58, // 144: wso2.gateway.python.v1alpha2.PythonExecutorService.HealthCheck:input_type -> wso2.gateway.python.v1alpha2.HealthCheckRequest + 8, // 145: wso2.gateway.python.v1alpha2.PythonExecutorService.InitPolicy:input_type -> wso2.gateway.python.v1alpha2.InitPolicyRequest + 10, // 146: wso2.gateway.python.v1alpha2.PythonExecutorService.DestroyPolicy:input_type -> wso2.gateway.python.v1alpha2.DestroyPolicyRequest + 5, // 147: wso2.gateway.python.v1alpha2.PythonExecutorService.ExecuteStream:output_type -> wso2.gateway.python.v1alpha2.StreamResponse + 59, // 148: wso2.gateway.python.v1alpha2.PythonExecutorService.HealthCheck:output_type -> wso2.gateway.python.v1alpha2.HealthCheckResponse + 9, // 149: wso2.gateway.python.v1alpha2.PythonExecutorService.InitPolicy:output_type -> wso2.gateway.python.v1alpha2.InitPolicyResponse + 11, // 150: wso2.gateway.python.v1alpha2.PythonExecutorService.DestroyPolicy:output_type -> wso2.gateway.python.v1alpha2.DestroyPolicyResponse + 147, // [147:151] is the sub-list for method output_type + 143, // [143:147] is the sub-list for method input_type + 143, // [143:143] is the sub-list for extension type_name + 143, // [143:143] is the sub-list for extension extendee + 0, // [0:143] is the sub-list for field type_name } func init() { file_proto_python_executor_proto_init() } @@ -4730,23 +5159,23 @@ func file_proto_python_executor_proto_init() { (*StreamResponse_StreamingResponseAction)(nil), (*StreamResponse_Error)(nil), } - file_proto_python_executor_proto_msgTypes[41].OneofWrappers = []any{ + file_proto_python_executor_proto_msgTypes[46].OneofWrappers = []any{ (*RequestHeaderActionPayload_UpstreamRequestHeaderModifications)(nil), (*RequestHeaderActionPayload_ImmediateResponse)(nil), } - file_proto_python_executor_proto_msgTypes[42].OneofWrappers = []any{ + file_proto_python_executor_proto_msgTypes[47].OneofWrappers = []any{ (*RequestActionPayload_UpstreamRequestModifications)(nil), (*RequestActionPayload_ImmediateResponse)(nil), } - file_proto_python_executor_proto_msgTypes[43].OneofWrappers = []any{ + file_proto_python_executor_proto_msgTypes[48].OneofWrappers = []any{ (*ResponseHeaderActionPayload_DownstreamResponseHeaderModifications)(nil), (*ResponseHeaderActionPayload_ImmediateResponse)(nil), } - file_proto_python_executor_proto_msgTypes[44].OneofWrappers = []any{ + file_proto_python_executor_proto_msgTypes[49].OneofWrappers = []any{ (*ResponseActionPayload_DownstreamResponseModifications)(nil), (*ResponseActionPayload_ImmediateResponse)(nil), } - file_proto_python_executor_proto_msgTypes[47].OneofWrappers = []any{ + file_proto_python_executor_proto_msgTypes[52].OneofWrappers = []any{ (*StreamingResponseActionPayload_ForwardResponseChunk)(nil), (*StreamingResponseActionPayload_TerminateResponseChunk)(nil), } @@ -4756,7 +5185,7 @@ func file_proto_python_executor_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_python_executor_proto_rawDesc), len(file_proto_python_executor_proto_rawDesc)), NumEnums: 4, - NumMessages: 69, + NumMessages: 74, NumExtensions: 0, NumServices: 1, }, diff --git a/gateway/gateway-runtime/policy-engine/internal/pythonbridge/translator.go b/gateway/gateway-runtime/policy-engine/internal/pythonbridge/translator.go index 29018408be..559b9f60a8 100644 --- a/gateway/gateway-runtime/policy-engine/internal/pythonbridge/translator.go +++ b/gateway/gateway-runtime/policy-engine/internal/pythonbridge/translator.go @@ -72,6 +72,55 @@ func (t *Translator) ToProtoHeaders(headers *policy.Headers) *proto.Headers { return result } +// ToProtoDownstream converts the downstream (client) header snapshot into the +// transport form. Returns nil when the snapshot is absent so the field is left +// unset on the wire and older/newer peers can detect its absence and fall back +// to legacy validation. +func (t *Translator) ToProtoDownstream(ds *policy.DownstreamContext) *proto.DownstreamContext { + if ds == nil || ds.Request == nil { + return nil + } + return &proto.DownstreamContext{ + Request: &proto.DownstreamRequest{ + Headers: t.ToProtoHeaders(ds.Request.Headers), + }, + } +} + +// ToProtoRequestUpstream converts the request-phase resolved upstream target +// into the transport form. Returns nil when absent (see ToProtoDownstream for +// the backward-compat contract). +func (t *Translator) ToProtoRequestUpstream(us *policy.UpstreamRequestContext) *proto.UpstreamRequestContext { + if us == nil { + return nil + } + return &proto.UpstreamRequestContext{ + Name: us.Name, + Url: us.URL, + BasePath: us.BasePath, + } +} + +// ToProtoUpstream converts the response-phase resolved upstream target and its +// response header snapshot into the transport form. Returns nil when absent +// (see ToProtoDownstream for the backward-compat contract). +func (t *Translator) ToProtoUpstream(us *policy.UpstreamResponseContext) *proto.UpstreamResponseContext { + if us == nil { + return nil + } + out := &proto.UpstreamResponseContext{ + Name: us.Name, + Url: us.URL, + BasePath: us.BasePath, + } + if us.Response != nil { + out.Response = &proto.UpstreamResponse{ + Headers: t.ToProtoHeaders(us.Response.Headers), + } + } + return out +} + // ToProtoBody converts buffered body data into the transport form. func (t *Translator) ToProtoBody(body *policy.Body) *proto.Body { if body == nil { diff --git a/gateway/gateway-runtime/policy-engine/internal/testutils/contexts.go b/gateway/gateway-runtime/policy-engine/internal/testutils/contexts.go index e0e50dab5e..33c17a85a6 100644 --- a/gateway/gateway-runtime/policy-engine/internal/testutils/contexts.go +++ b/gateway/gateway-runtime/policy-engine/internal/testutils/contexts.go @@ -36,39 +36,46 @@ func NewTestSharedContext() *policy.SharedContext { // NewTestRequestContext creates a RequestContext with default test values. func NewTestRequestContext() *policy.RequestContext { + headers := policy.NewHeaders(map[string][]string{"content-type": {"application/json"}}) return &policy.RequestContext{ SharedContext: NewTestSharedContext(), - Headers: policy.NewHeaders(map[string][]string{"content-type": {"application/json"}}), + Headers: headers, Path: "/api/v1/users/123", Method: "GET", Authority: "api.example.com", Scheme: "https", + Downstream: &policy.DownstreamContext{Request: &policy.DownstreamRequest{Headers: policy.NewHeaders(headers.GetAll())}}, } } // NewTestRequestContextWithHeaders creates a RequestContext with custom headers. func NewTestRequestContextWithHeaders(headers map[string][]string) *policy.RequestContext { + wrapped := policy.NewHeaders(headers) return &policy.RequestContext{ SharedContext: NewTestSharedContext(), - Headers: policy.NewHeaders(headers), + Headers: wrapped, Path: "/test/path", Method: "GET", Authority: "test.example.com", Scheme: "https", + Downstream: &policy.DownstreamContext{Request: &policy.DownstreamRequest{Headers: policy.NewHeaders(wrapped.GetAll())}}, } } // NewTestResponseContext creates a ResponseContext with default test values. func NewTestResponseContext() *policy.ResponseContext { reqCtx := NewTestRequestContext() + responseHeaders := policy.NewHeaders(map[string][]string{"content-type": {"application/json"}}) return &policy.ResponseContext{ SharedContext: reqCtx.SharedContext, RequestHeaders: reqCtx.Headers, RequestBody: reqCtx.Body, RequestPath: reqCtx.Path, RequestMethod: reqCtx.Method, - ResponseHeaders: policy.NewHeaders(map[string][]string{"content-type": {"application/json"}}), + ResponseHeaders: responseHeaders, ResponseStatus: 200, + Downstream: &policy.DownstreamContext{Request: &policy.DownstreamRequest{Headers: policy.NewHeaders(reqCtx.Headers.GetAll())}}, + Upstream: &policy.UpstreamResponseContext{Response: &policy.UpstreamResponse{Headers: policy.NewHeaders(responseHeaders.GetAll())}}, } } diff --git a/gateway/gateway-runtime/python-executor/executor/translator.py b/gateway/gateway-runtime/python-executor/executor/translator.py index d0cc3725b0..b40f0592dd 100644 --- a/gateway/gateway-runtime/python-executor/executor/translator.py +++ b/gateway/gateway-runtime/python-executor/executor/translator.py @@ -26,6 +26,8 @@ from apip_sdk_core import ( AuthContext, Body, + DownstreamContext, + DownstreamRequest, DownstreamResponseHeaderModifications, DownstreamResponseModifications, DropHeaderAction, @@ -51,8 +53,11 @@ StreamingRequestAction, StreamingResponseAction, TerminateResponseChunk, + UpstreamRequestContext, UpstreamRequestHeaderModifications, UpstreamRequestModifications, + UpstreamResponse, + UpstreamResponseContext, ) @@ -154,6 +159,8 @@ def to_python_request_header_context( authority=proto_ctx.authority, scheme=proto_ctx.scheme, vhost=proto_ctx.vhost, + downstream=Translator._to_python_downstream(proto_ctx), + upstream=Translator._to_python_request_upstream(proto_ctx), ) @staticmethod @@ -171,6 +178,8 @@ def to_python_request_context( authority=proto_ctx.authority, scheme=proto_ctx.scheme, vhost=proto_ctx.vhost, + downstream=Translator._to_python_downstream(proto_ctx), + upstream=Translator._to_python_request_upstream(proto_ctx), ) @staticmethod @@ -191,6 +200,8 @@ def to_python_response_header_context( request_method=proto_ctx.request_method, response_headers=Translator._to_python_headers(proto_ctx.response_headers), response_status=proto_ctx.response_status, + downstream=Translator._to_python_downstream(proto_ctx), + upstream=Translator._to_python_upstream(proto_ctx), ) @staticmethod @@ -217,6 +228,8 @@ def to_python_response_context( response_headers=Translator._to_python_headers(proto_ctx.response_headers), response_body=response_body, response_status=proto_ctx.response_status, + downstream=Translator._to_python_downstream(proto_ctx), + upstream=Translator._to_python_upstream(proto_ctx), ) @staticmethod @@ -232,6 +245,8 @@ def to_python_request_stream_context( authority=proto_ctx.authority, scheme=proto_ctx.scheme, vhost=proto_ctx.vhost, + downstream=Translator._to_python_downstream(proto_ctx), + upstream=Translator._to_python_request_upstream(proto_ctx), ) @staticmethod @@ -252,6 +267,8 @@ def to_python_response_stream_context( request_method=proto_ctx.request_method, response_headers=Translator._to_python_headers(proto_ctx.response_headers), response_status=proto_ctx.response_status, + downstream=Translator._to_python_downstream(proto_ctx), + upstream=Translator._to_python_upstream(proto_ctx), ) @staticmethod @@ -392,6 +409,53 @@ def _to_python_headers(proto_headers: proto.Headers) -> Headers: values[name] = list(header_values.values) return Headers(values) + @staticmethod + def _to_python_downstream(proto_ctx, field_name: str = "downstream") -> DownstreamContext | None: + """Convert the optional downstream snapshot. Returns None when the field + is unset (older gateways) so policies can detect absence and fall back.""" + if not proto_ctx.HasField(field_name): + return None + return DownstreamContext( + request=DownstreamRequest( + headers=Translator._to_python_headers(getattr(proto_ctx, field_name).request.headers), + ), + ) + + @staticmethod + def _to_python_request_upstream( + proto_ctx, field_name: str = "upstream" + ) -> UpstreamRequestContext | None: + """Convert the optional request-phase resolved upstream target. Returns + None when the field is unset (older gateways); see _to_python_downstream.""" + if not proto_ctx.HasField(field_name): + return None + up = getattr(proto_ctx, field_name) + return UpstreamRequestContext( + name=up.name, + url=up.url, + base_path=up.base_path, + ) + + @staticmethod + def _to_python_upstream(proto_ctx, field_name: str = "upstream") -> UpstreamResponseContext | None: + """Convert the optional response-phase resolved upstream target and its + response header snapshot. Returns None when the field is unset (older + gateways); see _to_python_downstream.""" + if not proto_ctx.HasField(field_name): + return None + up = getattr(proto_ctx, field_name) + response = None + if up.HasField("response"): + response = UpstreamResponse( + headers=Translator._to_python_headers(up.response.headers), + ) + return UpstreamResponseContext( + name=up.name, + url=up.url, + base_path=up.base_path, + response=response, + ) + @staticmethod def _to_python_body(proto_body: proto.Body) -> Body: return Body( diff --git a/gateway/gateway-runtime/python-executor/proto/python_executor_pb2.py b/gateway/gateway-runtime/python-executor/proto/python_executor_pb2.py index 933e49da27..9dd1a4d460 100644 --- a/gateway/gateway-runtime/python-executor/proto/python_executor_pb2.py +++ b/gateway/gateway-runtime/python-executor/proto/python_executor_pb2.py @@ -27,7 +27,7 @@ from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bproto/python_executor.proto\x12\x1cwso2.gateway.python.v1alpha2\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x8d\x08\n\rStreamRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x13\n\x0binstance_id\x18\x02 \x01(\t\x12\x13\n\x0bpolicy_name\x18\x03 \x01(\t\x12\x16\n\x0epolicy_version\x18\x04 \x01(\t\x12\'\n\x06params\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x43\n\x0eshared_context\x18\x06 \x01(\x0b\x32+.wso2.gateway.python.v1alpha2.SharedContext\x12K\n\x12\x65xecution_metadata\x18\x07 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.ExecutionMetadata\x12N\n\x0frequest_headers\x18\x08 \x01(\x0b\x32\x33.wso2.gateway.python.v1alpha2.RequestHeadersPayloadH\x00\x12H\n\x0crequest_body\x18\t \x01(\x0b\x32\x30.wso2.gateway.python.v1alpha2.RequestBodyPayloadH\x00\x12P\n\x10response_headers\x18\n \x01(\x0b\x32\x34.wso2.gateway.python.v1alpha2.ResponseHeadersPayloadH\x00\x12J\n\rresponse_body\x18\x0b \x01(\x0b\x32\x31.wso2.gateway.python.v1alpha2.ResponseBodyPayloadH\x00\x12\\\n\x17needs_more_request_data\x18\x0c \x01(\x0b\x32\x39.wso2.gateway.python.v1alpha2.NeedsMoreRequestDataPayloadH\x00\x12J\n\rrequest_chunk\x18\r \x01(\x0b\x32\x31.wso2.gateway.python.v1alpha2.RequestChunkPayloadH\x00\x12^\n\x18needs_more_response_data\x18\x0e \x01(\x0b\x32:.wso2.gateway.python.v1alpha2.NeedsMoreResponseDataPayloadH\x00\x12L\n\x0eresponse_chunk\x18\x0f \x01(\x0b\x32\x32.wso2.gateway.python.v1alpha2.ResponseChunkPayloadH\x00\x12P\n\x10\x63\x61ncel_execution\x18\x10 \x01(\x0b\x32\x34.wso2.gateway.python.v1alpha2.CancelExecutionPayloadH\x00\x42\t\n\x07payload\"\x92\x06\n\x0eStreamResponse\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x31\n\x10updated_metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12Y\n\x15request_header_action\x18\x03 \x01(\x0b\x32\x38.wso2.gateway.python.v1alpha2.RequestHeaderActionPayloadH\x00\x12L\n\x0erequest_action\x18\x04 \x01(\x0b\x32\x32.wso2.gateway.python.v1alpha2.RequestActionPayloadH\x00\x12[\n\x16response_header_action\x18\x05 \x01(\x0b\x32\x39.wso2.gateway.python.v1alpha2.ResponseHeaderActionPayloadH\x00\x12N\n\x0fresponse_action\x18\x06 \x01(\x0b\x32\x33.wso2.gateway.python.v1alpha2.ResponseActionPayloadH\x00\x12U\n\x13needs_more_decision\x18\x07 \x01(\x0b\x32\x36.wso2.gateway.python.v1alpha2.NeedsMoreDecisionPayloadH\x00\x12_\n\x18streaming_request_action\x18\x08 \x01(\x0b\x32;.wso2.gateway.python.v1alpha2.StreamingRequestActionPayloadH\x00\x12\x61\n\x19streaming_response_action\x18\t \x01(\x0b\x32<.wso2.gateway.python.v1alpha2.StreamingResponseActionPayloadH\x00\x12=\n\x05\x65rror\x18\n \x01(\x0b\x32,.wso2.gateway.python.v1alpha2.ExecutionErrorH\x00\x42\t\n\x07payload\"\xce\x02\n\x0eProcessingMode\x12O\n\x13request_header_mode\x18\x01 \x01(\x0e\x32\x32.wso2.gateway.python.v1alpha2.HeaderProcessingMode\x12K\n\x11request_body_mode\x18\x02 \x01(\x0e\x32\x30.wso2.gateway.python.v1alpha2.BodyProcessingMode\x12P\n\x14response_header_mode\x18\x03 \x01(\x0e\x32\x32.wso2.gateway.python.v1alpha2.HeaderProcessingMode\x12L\n\x12response_body_mode\x18\x04 \x01(\x0e\x32\x30.wso2.gateway.python.v1alpha2.BodyProcessingMode\"\xab\x01\n\x12PolicyCapabilities\x12\x17\n\x0frequest_headers\x18\x01 \x01(\x08\x12\x14\n\x0crequest_body\x18\x02 \x01(\x08\x12\x18\n\x10response_headers\x18\x03 \x01(\x08\x12\x15\n\rresponse_body\x18\x04 \x01(\x08\x12\x19\n\x11streaming_request\x18\x05 \x01(\x08\x12\x1a\n\x12streaming_response\x18\x06 \x01(\x08\"\xb0\x01\n\x11InitPolicyRequest\x12\x13\n\x0bpolicy_name\x18\x01 \x01(\t\x12\x16\n\x0epolicy_version\x18\x02 \x01(\t\x12\x45\n\x0fpolicy_metadata\x18\x03 \x01(\x0b\x32,.wso2.gateway.python.v1alpha2.PolicyMetadata\x12\'\n\x06params\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\"\xe0\x01\n\x12InitPolicyResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x13\n\x0binstance_id\x18\x02 \x01(\t\x12\x15\n\rerror_message\x18\x03 \x01(\t\x12\x45\n\x0fprocessing_mode\x18\x04 \x01(\x0b\x32,.wso2.gateway.python.v1alpha2.ProcessingMode\x12\x46\n\x0c\x63\x61pabilities\x18\x05 \x01(\x0b\x32\x30.wso2.gateway.python.v1alpha2.PolicyCapabilities\"+\n\x14\x44\x65stroyPolicyRequest\x12\x13\n\x0binstance_id\x18\x01 \x01(\t\"?\n\x15\x44\x65stroyPolicyResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x15\n\rerror_message\x18\x02 \x01(\t\"\xc5\x01\n\x11\x45xecutionMetadata\x12\x32\n\x05phase\x18\x01 \x01(\x0e\x32#.wso2.gateway.python.v1alpha2.Phase\x12,\n\x08\x64\x65\x61\x64line\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12:\n\x05trace\x18\x03 \x01(\x0b\x32+.wso2.gateway.python.v1alpha2.TraceMetadata\x12\x12\n\nroute_name\x18\x04 \x01(\t\"2\n\rTraceMetadata\x12\x10\n\x08trace_id\x18\x01 \x01(\t\x12\x0f\n\x07span_id\x18\x02 \x01(\t\"\x99\x02\n\rSharedContext\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x12\n\nrequest_id\x18\x02 \x01(\t\x12)\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x0e\n\x06\x61pi_id\x18\x04 \x01(\t\x12\x10\n\x08\x61pi_name\x18\x05 \x01(\t\x12\x13\n\x0b\x61pi_version\x18\x06 \x01(\t\x12\x10\n\x08\x61pi_kind\x18\x07 \x01(\t\x12\x13\n\x0b\x61pi_context\x18\x08 \x01(\t\x12\x16\n\x0eoperation_path\x18\t \x01(\t\x12?\n\x0c\x61uth_context\x18\n \x01(\x0b\x32).wso2.gateway.python.v1alpha2.AuthContext\"\xa5\x01\n\x07Headers\x12\x41\n\x06values\x18\x01 \x03(\x0b\x32\x31.wso2.gateway.python.v1alpha2.Headers.ValuesEntry\x1aW\n\x0bValuesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x37\n\x05value\x18\x02 \x01(\x0b\x32(.wso2.gateway.python.v1alpha2.StringList:\x02\x38\x01\"\x1c\n\nStringList\x12\x0e\n\x06values\x18\x01 \x03(\t\"?\n\x04\x42ody\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\x0c\x12\x15\n\rend_of_stream\x18\x02 \x01(\x08\x12\x0f\n\x07present\x18\x03 \x01(\x08\"A\n\nStreamBody\x12\r\n\x05\x63hunk\x18\x01 \x01(\x0c\x12\x15\n\rend_of_stream\x18\x02 \x01(\x08\x12\r\n\x05index\x18\x03 \x01(\x04\"\xca\x03\n\x0b\x41uthContext\x12\x15\n\rauthenticated\x18\x01 \x01(\x08\x12\x12\n\nauthorized\x18\x02 \x01(\x08\x12\x11\n\tauth_type\x18\x03 \x01(\t\x12\x0f\n\x07subject\x18\x04 \x01(\t\x12\x0e\n\x06issuer\x18\x05 \x01(\t\x12\x10\n\x08\x61udience\x18\x06 \x03(\t\x12\x45\n\x06scopes\x18\x07 \x03(\x0b\x32\x35.wso2.gateway.python.v1alpha2.AuthContext.ScopesEntry\x12\x15\n\rcredential_id\x18\x08 \x01(\t\x12M\n\nproperties\x18\t \x03(\x0b\x32\x39.wso2.gateway.python.v1alpha2.AuthContext.PropertiesEntry\x12;\n\x08previous\x18\n \x01(\x0b\x32).wso2.gateway.python.v1alpha2.AuthContext\x1a-\n\x0bScopesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x31\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x9e\x01\n\x14RequestHeaderContext\x12\x36\n\x07headers\x18\x01 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x0e\n\x06method\x18\x03 \x01(\t\x12\x11\n\tauthority\x18\x04 \x01(\t\x12\x0e\n\x06scheme\x18\x05 \x01(\t\x12\r\n\x05vhost\x18\x06 \x01(\t\"\xca\x01\n\x0eRequestContext\x12\x36\n\x07headers\x18\x01 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x30\n\x04\x62ody\x18\x02 \x01(\x0b\x32\".wso2.gateway.python.v1alpha2.Body\x12\x0c\n\x04path\x18\x03 \x01(\t\x12\x0e\n\x06method\x18\x04 \x01(\t\x12\x11\n\tauthority\x18\x05 \x01(\t\x12\x0e\n\x06scheme\x18\x06 \x01(\t\x12\r\n\x05vhost\x18\x07 \x01(\t\"\x99\x02\n\x15ResponseHeaderContext\x12>\n\x0frequest_headers\x18\x01 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x38\n\x0crequest_body\x18\x02 \x01(\x0b\x32\".wso2.gateway.python.v1alpha2.Body\x12\x14\n\x0crequest_path\x18\x03 \x01(\t\x12\x16\n\x0erequest_method\x18\x04 \x01(\t\x12?\n\x10response_headers\x18\x05 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x17\n\x0fresponse_status\x18\x06 \x01(\x05\"\xce\x02\n\x0fResponseContext\x12>\n\x0frequest_headers\x18\x01 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x38\n\x0crequest_body\x18\x02 \x01(\x0b\x32\".wso2.gateway.python.v1alpha2.Body\x12\x14\n\x0crequest_path\x18\x03 \x01(\t\x12\x16\n\x0erequest_method\x18\x04 \x01(\t\x12?\n\x10response_headers\x18\x05 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x39\n\rresponse_body\x18\x06 \x01(\x0b\x32\".wso2.gateway.python.v1alpha2.Body\x12\x17\n\x0fresponse_status\x18\x07 \x01(\x05\"\x9e\x01\n\x14RequestStreamContext\x12\x36\n\x07headers\x18\x01 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x0e\n\x06method\x18\x03 \x01(\t\x12\x11\n\tauthority\x18\x04 \x01(\t\x12\x0e\n\x06scheme\x18\x05 \x01(\t\x12\r\n\x05vhost\x18\x06 \x01(\t\"\x99\x02\n\x15ResponseStreamContext\x12>\n\x0frequest_headers\x18\x01 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x38\n\x0crequest_body\x18\x02 \x01(\x0b\x32\".wso2.gateway.python.v1alpha2.Body\x12\x14\n\x0crequest_path\x18\x03 \x01(\t\x12\x16\n\x0erequest_method\x18\x04 \x01(\t\x12?\n\x10response_headers\x18\x05 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x17\n\x0fresponse_status\x18\x06 \x01(\x05\"\\\n\x15RequestHeadersPayload\x12\x43\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x32.wso2.gateway.python.v1alpha2.RequestHeaderContext\"S\n\x12RequestBodyPayload\x12=\n\x07\x63ontext\x18\x01 \x01(\x0b\x32,.wso2.gateway.python.v1alpha2.RequestContext\"^\n\x16ResponseHeadersPayload\x12\x44\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x33.wso2.gateway.python.v1alpha2.ResponseHeaderContext\"U\n\x13ResponseBodyPayload\x12>\n\x07\x63ontext\x18\x01 \x01(\x0b\x32-.wso2.gateway.python.v1alpha2.ResponseContext\"2\n\x1bNeedsMoreRequestDataPayload\x12\x13\n\x0b\x61\x63\x63umulated\x18\x01 \x01(\x0c\"\x93\x01\n\x13RequestChunkPayload\x12\x43\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x32.wso2.gateway.python.v1alpha2.RequestStreamContext\x12\x37\n\x05\x63hunk\x18\x02 \x01(\x0b\x32(.wso2.gateway.python.v1alpha2.StreamBody\"3\n\x1cNeedsMoreResponseDataPayload\x12\x13\n\x0b\x61\x63\x63umulated\x18\x01 \x01(\x0c\"\x95\x01\n\x14ResponseChunkPayload\x12\x44\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x33.wso2.gateway.python.v1alpha2.ResponseStreamContext\x12\x37\n\x05\x63hunk\x18\x02 \x01(\x0b\x32(.wso2.gateway.python.v1alpha2.StreamBody\"c\n\x16\x43\x61ncelExecutionPayload\x12\x39\n\x0ctarget_phase\x18\x01 \x01(\x0e\x32#.wso2.gateway.python.v1alpha2.Phase\x12\x0e\n\x06reason\x18\x02 \x01(\t\"p\n\x0ePolicyMetadata\x12\x12\n\nroute_name\x18\x01 \x01(\t\x12\x0e\n\x06\x61pi_id\x18\x02 \x01(\t\x12\x10\n\x08\x61pi_name\x18\x03 \x01(\t\x12\x13\n\x0b\x61pi_version\x18\x04 \x01(\t\x12\x13\n\x0b\x61ttached_to\x18\x05 \x01(\t\"g\n\x10\x44ropHeaderAction\x12\x42\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x32.wso2.gateway.python.v1alpha2.DropHeaderActionType\x12\x0f\n\x07headers\x18\x02 \x03(\t\"\x89\x04\n\x11ImmediateResponse\x12\x13\n\x0bstatus_code\x18\x01 \x01(\x05\x12M\n\x07headers\x18\x02 \x03(\x0b\x32<.wso2.gateway.python.v1alpha2.ImmediateResponse.HeadersEntry\x12)\n\x04\x62ody\x18\x03 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x33\n\x12\x61nalytics_metadata\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\x12^\n\x10\x64ynamic_metadata\x18\x05 \x03(\x0b\x32\x44.wso2.gateway.python.v1alpha2.ImmediateResponse.DynamicMetadataEntry\x12O\n\x17\x61nalytics_header_filter\x18\x06 \x01(\x0b\x32..wso2.gateway.python.v1alpha2.DropHeaderAction\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xeb\x07\n\"UpstreamRequestHeaderModifications\x12j\n\x0eheaders_to_set\x18\x01 \x03(\x0b\x32R.wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.HeadersToSetEntry\x12\x19\n\x11headers_to_remove\x18\x02 \x03(\t\x12\x33\n\rupstream_name\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12*\n\x04path\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12*\n\x04host\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12,\n\x06method\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12{\n\x17query_parameters_to_add\x18\x07 \x03(\x0b\x32Z.wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.QueryParametersToAddEntry\x12\"\n\x1aquery_parameters_to_remove\x18\x08 \x03(\t\x12\x33\n\x12\x61nalytics_metadata\x18\t \x01(\x0b\x32\x17.google.protobuf.Struct\x12o\n\x10\x64ynamic_metadata\x18\n \x03(\x0b\x32U.wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.DynamicMetadataEntry\x12O\n\x17\x61nalytics_header_filter\x18\x0b \x01(\x0b\x32..wso2.gateway.python.v1alpha2.DropHeaderAction\x1a\x33\n\x11HeadersToSetEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x65\n\x19QueryParametersToAddEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x37\n\x05value\x18\x02 \x01(\x0b\x32(.wso2.gateway.python.v1alpha2.StringList:\x02\x38\x01\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xfe\x07\n\x1cUpstreamRequestModifications\x12)\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x64\n\x0eheaders_to_set\x18\x02 \x03(\x0b\x32L.wso2.gateway.python.v1alpha2.UpstreamRequestModifications.HeadersToSetEntry\x12\x19\n\x11headers_to_remove\x18\x03 \x03(\t\x12\x33\n\rupstream_name\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12*\n\x04path\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12*\n\x04host\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12,\n\x06method\x18\x07 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12u\n\x17query_parameters_to_add\x18\x08 \x03(\x0b\x32T.wso2.gateway.python.v1alpha2.UpstreamRequestModifications.QueryParametersToAddEntry\x12\"\n\x1aquery_parameters_to_remove\x18\t \x03(\t\x12\x33\n\x12\x61nalytics_metadata\x18\n \x01(\x0b\x32\x17.google.protobuf.Struct\x12i\n\x10\x64ynamic_metadata\x18\x0b \x03(\x0b\x32O.wso2.gateway.python.v1alpha2.UpstreamRequestModifications.DynamicMetadataEntry\x12O\n\x17\x61nalytics_header_filter\x18\x0c \x01(\x0b\x32..wso2.gateway.python.v1alpha2.DropHeaderAction\x1a\x33\n\x11HeadersToSetEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x65\n\x19QueryParametersToAddEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x37\n\x05value\x18\x02 \x01(\x0b\x32(.wso2.gateway.python.v1alpha2.StringList:\x02\x38\x01\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xb1\x04\n%DownstreamResponseHeaderModifications\x12m\n\x0eheaders_to_set\x18\x01 \x03(\x0b\x32U.wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.HeadersToSetEntry\x12\x19\n\x11headers_to_remove\x18\x02 \x03(\t\x12\x33\n\x12\x61nalytics_metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12r\n\x10\x64ynamic_metadata\x18\x04 \x03(\x0b\x32X.wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.DynamicMetadataEntry\x12O\n\x17\x61nalytics_header_filter\x18\x05 \x01(\x0b\x32..wso2.gateway.python.v1alpha2.DropHeaderAction\x1a\x33\n\x11HeadersToSetEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xfc\x04\n\x1f\x44ownstreamResponseModifications\x12)\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x30\n\x0bstatus_code\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.Int32Value\x12g\n\x0eheaders_to_set\x18\x03 \x03(\x0b\x32O.wso2.gateway.python.v1alpha2.DownstreamResponseModifications.HeadersToSetEntry\x12\x19\n\x11headers_to_remove\x18\x04 \x03(\t\x12\x33\n\x12\x61nalytics_metadata\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12l\n\x10\x64ynamic_metadata\x18\x06 \x03(\x0b\x32R.wso2.gateway.python.v1alpha2.DownstreamResponseModifications.DynamicMetadataEntry\x12O\n\x17\x61nalytics_header_filter\x18\x07 \x01(\x0b\x32..wso2.gateway.python.v1alpha2.DropHeaderAction\x1a\x33\n\x11HeadersToSetEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xa8\x02\n\x13\x46orwardRequestChunk\x12)\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x33\n\x12\x61nalytics_metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12`\n\x10\x64ynamic_metadata\x18\x03 \x03(\x0b\x32\x46.wso2.gateway.python.v1alpha2.ForwardRequestChunk.DynamicMetadataEntry\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xaa\x02\n\x14\x46orwardResponseChunk\x12)\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x33\n\x12\x61nalytics_metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x61\n\x10\x64ynamic_metadata\x18\x03 \x03(\x0b\x32G.wso2.gateway.python.v1alpha2.ForwardResponseChunk.DynamicMetadataEntry\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xae\x02\n\x16TerminateResponseChunk\x12)\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x33\n\x12\x61nalytics_metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x63\n\x10\x64ynamic_metadata\x18\x03 \x03(\x0b\x32I.wso2.gateway.python.v1alpha2.TerminateResponseChunk.DynamicMetadataEntry\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xe8\x01\n\x1aRequestHeaderActionPayload\x12q\n%upstream_request_header_modifications\x18\x01 \x01(\x0b\x32@.wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModificationsH\x00\x12M\n\x12immediate_response\x18\x02 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.ImmediateResponseH\x00\x42\x08\n\x06\x61\x63tion\"\xd5\x01\n\x14RequestActionPayload\x12\x64\n\x1eupstream_request_modifications\x18\x01 \x01(\x0b\x32:.wso2.gateway.python.v1alpha2.UpstreamRequestModificationsH\x00\x12M\n\x12immediate_response\x18\x02 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.ImmediateResponseH\x00\x42\x08\n\x06\x61\x63tion\"\xef\x01\n\x1bResponseHeaderActionPayload\x12w\n(downstream_response_header_modifications\x18\x01 \x01(\x0b\x32\x43.wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModificationsH\x00\x12M\n\x12immediate_response\x18\x02 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.ImmediateResponseH\x00\x42\x08\n\x06\x61\x63tion\"\xdc\x01\n\x15ResponseActionPayload\x12j\n!downstream_response_modifications\x18\x01 \x01(\x0b\x32=.wso2.gateway.python.v1alpha2.DownstreamResponseModificationsH\x00\x12M\n\x12immediate_response\x18\x02 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.ImmediateResponseH\x00\x42\x08\n\x06\x61\x63tion\".\n\x18NeedsMoreDecisionPayload\x12\x12\n\nneeds_more\x18\x01 \x01(\x08\"q\n\x1dStreamingRequestActionPayload\x12P\n\x15\x66orward_request_chunk\x18\x01 \x01(\x0b\x32\x31.wso2.gateway.python.v1alpha2.ForwardRequestChunk\"\xda\x01\n\x1eStreamingResponseActionPayload\x12T\n\x16\x66orward_response_chunk\x18\x01 \x01(\x0b\x32\x32.wso2.gateway.python.v1alpha2.ForwardResponseChunkH\x00\x12X\n\x18terminate_response_chunk\x18\x02 \x01(\x0b\x32\x34.wso2.gateway.python.v1alpha2.TerminateResponseChunkH\x00\x42\x08\n\x06\x61\x63tion\"b\n\x0e\x45xecutionError\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x13\n\x0bpolicy_name\x18\x02 \x01(\t\x12\x16\n\x0epolicy_version\x18\x03 \x01(\t\x12\x12\n\nerror_type\x18\x04 \x01(\t\"\x14\n\x12HealthCheckRequest\"=\n\x13HealthCheckResponse\x12\r\n\x05ready\x18\x01 \x01(\x08\x12\x17\n\x0floaded_policies\x18\x02 \x01(\x05*\x83\x01\n\x14HeaderProcessingMode\x12&\n\"HEADER_PROCESSING_MODE_UNSPECIFIED\x10\x00\x12\x1f\n\x1bHEADER_PROCESSING_MODE_SKIP\x10\x01\x12\"\n\x1eHEADER_PROCESSING_MODE_PROCESS\x10\x02*\x9b\x01\n\x12\x42odyProcessingMode\x12$\n BODY_PROCESSING_MODE_UNSPECIFIED\x10\x00\x12\x1d\n\x19\x42ODY_PROCESSING_MODE_SKIP\x10\x01\x12\x1f\n\x1b\x42ODY_PROCESSING_MODE_BUFFER\x10\x02\x12\x1f\n\x1b\x42ODY_PROCESSING_MODE_STREAM\x10\x03*\x9c\x02\n\x05Phase\x12\x15\n\x11PHASE_UNSPECIFIED\x10\x00\x12\x19\n\x15PHASE_REQUEST_HEADERS\x10\x01\x12\x16\n\x12PHASE_REQUEST_BODY\x10\x02\x12\x1a\n\x16PHASE_RESPONSE_HEADERS\x10\x03\x12\x17\n\x13PHASE_RESPONSE_BODY\x10\x04\x12!\n\x1dPHASE_NEEDS_MORE_REQUEST_DATA\x10\x05\x12\x1c\n\x18PHASE_REQUEST_BODY_CHUNK\x10\x06\x12\"\n\x1ePHASE_NEEDS_MORE_RESPONSE_DATA\x10\x07\x12\x1d\n\x19PHASE_RESPONSE_BODY_CHUNK\x10\x08\x12\x10\n\x0cPHASE_CANCEL\x10\t*\x84\x01\n\x14\x44ropHeaderActionType\x12\'\n#DROP_HEADER_ACTION_TYPE_UNSPECIFIED\x10\x00\x12!\n\x1d\x44ROP_HEADER_ACTION_TYPE_ALLOW\x10\x01\x12 \n\x1c\x44ROP_HEADER_ACTION_TYPE_DENY\x10\x02\x32\xe6\x03\n\x15PythonExecutorService\x12n\n\rExecuteStream\x12+.wso2.gateway.python.v1alpha2.StreamRequest\x1a,.wso2.gateway.python.v1alpha2.StreamResponse(\x01\x30\x01\x12r\n\x0bHealthCheck\x12\x30.wso2.gateway.python.v1alpha2.HealthCheckRequest\x1a\x31.wso2.gateway.python.v1alpha2.HealthCheckResponse\x12o\n\nInitPolicy\x12/.wso2.gateway.python.v1alpha2.InitPolicyRequest\x1a\x30.wso2.gateway.python.v1alpha2.InitPolicyResponse\x12x\n\rDestroyPolicy\x12\x32.wso2.gateway.python.v1alpha2.DestroyPolicyRequest\x1a\x33.wso2.gateway.python.v1alpha2.DestroyPolicyResponseB`Z^github.com/wso2/api-platform/gateway/gateway-runtime/policy-engine/internal/pythonbridge/protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bproto/python_executor.proto\x12\x1cwso2.gateway.python.v1alpha2\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x8d\x08\n\rStreamRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x13\n\x0binstance_id\x18\x02 \x01(\t\x12\x13\n\x0bpolicy_name\x18\x03 \x01(\t\x12\x16\n\x0epolicy_version\x18\x04 \x01(\t\x12\'\n\x06params\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x43\n\x0eshared_context\x18\x06 \x01(\x0b\x32+.wso2.gateway.python.v1alpha2.SharedContext\x12K\n\x12\x65xecution_metadata\x18\x07 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.ExecutionMetadata\x12N\n\x0frequest_headers\x18\x08 \x01(\x0b\x32\x33.wso2.gateway.python.v1alpha2.RequestHeadersPayloadH\x00\x12H\n\x0crequest_body\x18\t \x01(\x0b\x32\x30.wso2.gateway.python.v1alpha2.RequestBodyPayloadH\x00\x12P\n\x10response_headers\x18\n \x01(\x0b\x32\x34.wso2.gateway.python.v1alpha2.ResponseHeadersPayloadH\x00\x12J\n\rresponse_body\x18\x0b \x01(\x0b\x32\x31.wso2.gateway.python.v1alpha2.ResponseBodyPayloadH\x00\x12\\\n\x17needs_more_request_data\x18\x0c \x01(\x0b\x32\x39.wso2.gateway.python.v1alpha2.NeedsMoreRequestDataPayloadH\x00\x12J\n\rrequest_chunk\x18\r \x01(\x0b\x32\x31.wso2.gateway.python.v1alpha2.RequestChunkPayloadH\x00\x12^\n\x18needs_more_response_data\x18\x0e \x01(\x0b\x32:.wso2.gateway.python.v1alpha2.NeedsMoreResponseDataPayloadH\x00\x12L\n\x0eresponse_chunk\x18\x0f \x01(\x0b\x32\x32.wso2.gateway.python.v1alpha2.ResponseChunkPayloadH\x00\x12P\n\x10\x63\x61ncel_execution\x18\x10 \x01(\x0b\x32\x34.wso2.gateway.python.v1alpha2.CancelExecutionPayloadH\x00\x42\t\n\x07payload\"\x92\x06\n\x0eStreamResponse\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x31\n\x10updated_metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12Y\n\x15request_header_action\x18\x03 \x01(\x0b\x32\x38.wso2.gateway.python.v1alpha2.RequestHeaderActionPayloadH\x00\x12L\n\x0erequest_action\x18\x04 \x01(\x0b\x32\x32.wso2.gateway.python.v1alpha2.RequestActionPayloadH\x00\x12[\n\x16response_header_action\x18\x05 \x01(\x0b\x32\x39.wso2.gateway.python.v1alpha2.ResponseHeaderActionPayloadH\x00\x12N\n\x0fresponse_action\x18\x06 \x01(\x0b\x32\x33.wso2.gateway.python.v1alpha2.ResponseActionPayloadH\x00\x12U\n\x13needs_more_decision\x18\x07 \x01(\x0b\x32\x36.wso2.gateway.python.v1alpha2.NeedsMoreDecisionPayloadH\x00\x12_\n\x18streaming_request_action\x18\x08 \x01(\x0b\x32;.wso2.gateway.python.v1alpha2.StreamingRequestActionPayloadH\x00\x12\x61\n\x19streaming_response_action\x18\t \x01(\x0b\x32<.wso2.gateway.python.v1alpha2.StreamingResponseActionPayloadH\x00\x12=\n\x05\x65rror\x18\n \x01(\x0b\x32,.wso2.gateway.python.v1alpha2.ExecutionErrorH\x00\x42\t\n\x07payload\"\xce\x02\n\x0eProcessingMode\x12O\n\x13request_header_mode\x18\x01 \x01(\x0e\x32\x32.wso2.gateway.python.v1alpha2.HeaderProcessingMode\x12K\n\x11request_body_mode\x18\x02 \x01(\x0e\x32\x30.wso2.gateway.python.v1alpha2.BodyProcessingMode\x12P\n\x14response_header_mode\x18\x03 \x01(\x0e\x32\x32.wso2.gateway.python.v1alpha2.HeaderProcessingMode\x12L\n\x12response_body_mode\x18\x04 \x01(\x0e\x32\x30.wso2.gateway.python.v1alpha2.BodyProcessingMode\"\xab\x01\n\x12PolicyCapabilities\x12\x17\n\x0frequest_headers\x18\x01 \x01(\x08\x12\x14\n\x0crequest_body\x18\x02 \x01(\x08\x12\x18\n\x10response_headers\x18\x03 \x01(\x08\x12\x15\n\rresponse_body\x18\x04 \x01(\x08\x12\x19\n\x11streaming_request\x18\x05 \x01(\x08\x12\x1a\n\x12streaming_response\x18\x06 \x01(\x08\"\xb0\x01\n\x11InitPolicyRequest\x12\x13\n\x0bpolicy_name\x18\x01 \x01(\t\x12\x16\n\x0epolicy_version\x18\x02 \x01(\t\x12\x45\n\x0fpolicy_metadata\x18\x03 \x01(\x0b\x32,.wso2.gateway.python.v1alpha2.PolicyMetadata\x12\'\n\x06params\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\"\xe0\x01\n\x12InitPolicyResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x13\n\x0binstance_id\x18\x02 \x01(\t\x12\x15\n\rerror_message\x18\x03 \x01(\t\x12\x45\n\x0fprocessing_mode\x18\x04 \x01(\x0b\x32,.wso2.gateway.python.v1alpha2.ProcessingMode\x12\x46\n\x0c\x63\x61pabilities\x18\x05 \x01(\x0b\x32\x30.wso2.gateway.python.v1alpha2.PolicyCapabilities\"+\n\x14\x44\x65stroyPolicyRequest\x12\x13\n\x0binstance_id\x18\x01 \x01(\t\"?\n\x15\x44\x65stroyPolicyResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x15\n\rerror_message\x18\x02 \x01(\t\"\xc5\x01\n\x11\x45xecutionMetadata\x12\x32\n\x05phase\x18\x01 \x01(\x0e\x32#.wso2.gateway.python.v1alpha2.Phase\x12,\n\x08\x64\x65\x61\x64line\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12:\n\x05trace\x18\x03 \x01(\x0b\x32+.wso2.gateway.python.v1alpha2.TraceMetadata\x12\x12\n\nroute_name\x18\x04 \x01(\t\"2\n\rTraceMetadata\x12\x10\n\x08trace_id\x18\x01 \x01(\t\x12\x0f\n\x07span_id\x18\x02 \x01(\t\"\x99\x02\n\rSharedContext\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x12\n\nrequest_id\x18\x02 \x01(\t\x12)\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x0e\n\x06\x61pi_id\x18\x04 \x01(\t\x12\x10\n\x08\x61pi_name\x18\x05 \x01(\t\x12\x13\n\x0b\x61pi_version\x18\x06 \x01(\t\x12\x10\n\x08\x61pi_kind\x18\x07 \x01(\t\x12\x13\n\x0b\x61pi_context\x18\x08 \x01(\t\x12\x16\n\x0eoperation_path\x18\t \x01(\t\x12?\n\x0c\x61uth_context\x18\n \x01(\x0b\x32).wso2.gateway.python.v1alpha2.AuthContext\"\xa5\x01\n\x07Headers\x12\x41\n\x06values\x18\x01 \x03(\x0b\x32\x31.wso2.gateway.python.v1alpha2.Headers.ValuesEntry\x1aW\n\x0bValuesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x37\n\x05value\x18\x02 \x01(\x0b\x32(.wso2.gateway.python.v1alpha2.StringList:\x02\x38\x01\"\x1c\n\nStringList\x12\x0e\n\x06values\x18\x01 \x03(\t\"?\n\x04\x42ody\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\x0c\x12\x15\n\rend_of_stream\x18\x02 \x01(\x08\x12\x0f\n\x07present\x18\x03 \x01(\x08\"A\n\nStreamBody\x12\r\n\x05\x63hunk\x18\x01 \x01(\x0c\x12\x15\n\rend_of_stream\x18\x02 \x01(\x08\x12\r\n\x05index\x18\x03 \x01(\x04\"K\n\x11\x44ownstreamRequest\x12\x36\n\x07headers\x18\x01 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\"U\n\x11\x44ownstreamContext\x12@\n\x07request\x18\x01 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.DownstreamRequest\"F\n\x16UpstreamRequestContext\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x11\n\tbase_path\x18\x03 \x01(\t\"J\n\x10UpstreamResponse\x12\x36\n\x07headers\x18\x01 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\"\x89\x01\n\x17UpstreamResponseContext\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x11\n\tbase_path\x18\x03 \x01(\t\x12@\n\x08response\x18\x04 \x01(\x0b\x32..wso2.gateway.python.v1alpha2.UpstreamResponse\"\xdc\x03\n\x0b\x41uthContext\x12\x15\n\rauthenticated\x18\x01 \x01(\x08\x12\x12\n\nauthorized\x18\x02 \x01(\x08\x12\x11\n\tauth_type\x18\x03 \x01(\t\x12\x0f\n\x07subject\x18\x04 \x01(\t\x12\x0e\n\x06issuer\x18\x05 \x01(\t\x12\x10\n\x08\x61udience\x18\x06 \x03(\t\x12\x45\n\x06scopes\x18\x07 \x03(\x0b\x32\x35.wso2.gateway.python.v1alpha2.AuthContext.ScopesEntry\x12\x15\n\rcredential_id\x18\x08 \x01(\t\x12M\n\nproperties\x18\t \x03(\x0b\x32\x39.wso2.gateway.python.v1alpha2.AuthContext.PropertiesEntry\x12;\n\x08previous\x18\n \x01(\x0b\x32).wso2.gateway.python.v1alpha2.AuthContext\x12\x10\n\x08token_id\x18\x0b \x01(\t\x1a-\n\x0bScopesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x31\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xab\x02\n\x14RequestHeaderContext\x12\x36\n\x07headers\x18\x01 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x0e\n\x06method\x18\x03 \x01(\t\x12\x11\n\tauthority\x18\x04 \x01(\t\x12\x0e\n\x06scheme\x18\x05 \x01(\t\x12\r\n\x05vhost\x18\x06 \x01(\t\x12\x43\n\ndownstream\x18\x07 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.DownstreamContext\x12\x46\n\x08upstream\x18\x08 \x01(\x0b\x32\x34.wso2.gateway.python.v1alpha2.UpstreamRequestContext\"\xd7\x02\n\x0eRequestContext\x12\x36\n\x07headers\x18\x01 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x30\n\x04\x62ody\x18\x02 \x01(\x0b\x32\".wso2.gateway.python.v1alpha2.Body\x12\x0c\n\x04path\x18\x03 \x01(\t\x12\x0e\n\x06method\x18\x04 \x01(\t\x12\x11\n\tauthority\x18\x05 \x01(\t\x12\x0e\n\x06scheme\x18\x06 \x01(\t\x12\r\n\x05vhost\x18\x07 \x01(\t\x12\x43\n\ndownstream\x18\x08 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.DownstreamContext\x12\x46\n\x08upstream\x18\t \x01(\x0b\x32\x34.wso2.gateway.python.v1alpha2.UpstreamRequestContext\"\xa7\x03\n\x15ResponseHeaderContext\x12>\n\x0frequest_headers\x18\x01 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x38\n\x0crequest_body\x18\x02 \x01(\x0b\x32\".wso2.gateway.python.v1alpha2.Body\x12\x14\n\x0crequest_path\x18\x03 \x01(\t\x12\x16\n\x0erequest_method\x18\x04 \x01(\t\x12?\n\x10response_headers\x18\x05 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x17\n\x0fresponse_status\x18\x06 \x01(\x05\x12\x43\n\ndownstream\x18\x07 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.DownstreamContext\x12G\n\x08upstream\x18\x08 \x01(\x0b\x32\x35.wso2.gateway.python.v1alpha2.UpstreamResponseContext\"\xdc\x03\n\x0fResponseContext\x12>\n\x0frequest_headers\x18\x01 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x38\n\x0crequest_body\x18\x02 \x01(\x0b\x32\".wso2.gateway.python.v1alpha2.Body\x12\x14\n\x0crequest_path\x18\x03 \x01(\t\x12\x16\n\x0erequest_method\x18\x04 \x01(\t\x12?\n\x10response_headers\x18\x05 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x39\n\rresponse_body\x18\x06 \x01(\x0b\x32\".wso2.gateway.python.v1alpha2.Body\x12\x17\n\x0fresponse_status\x18\x07 \x01(\x05\x12\x43\n\ndownstream\x18\x08 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.DownstreamContext\x12G\n\x08upstream\x18\t \x01(\x0b\x32\x35.wso2.gateway.python.v1alpha2.UpstreamResponseContext\"\xab\x02\n\x14RequestStreamContext\x12\x36\n\x07headers\x18\x01 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x0e\n\x06method\x18\x03 \x01(\t\x12\x11\n\tauthority\x18\x04 \x01(\t\x12\x0e\n\x06scheme\x18\x05 \x01(\t\x12\r\n\x05vhost\x18\x06 \x01(\t\x12\x43\n\ndownstream\x18\x07 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.DownstreamContext\x12\x46\n\x08upstream\x18\x08 \x01(\x0b\x32\x34.wso2.gateway.python.v1alpha2.UpstreamRequestContext\"\xa7\x03\n\x15ResponseStreamContext\x12>\n\x0frequest_headers\x18\x01 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x38\n\x0crequest_body\x18\x02 \x01(\x0b\x32\".wso2.gateway.python.v1alpha2.Body\x12\x14\n\x0crequest_path\x18\x03 \x01(\t\x12\x16\n\x0erequest_method\x18\x04 \x01(\t\x12?\n\x10response_headers\x18\x05 \x01(\x0b\x32%.wso2.gateway.python.v1alpha2.Headers\x12\x17\n\x0fresponse_status\x18\x06 \x01(\x05\x12\x43\n\ndownstream\x18\x07 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.DownstreamContext\x12G\n\x08upstream\x18\x08 \x01(\x0b\x32\x35.wso2.gateway.python.v1alpha2.UpstreamResponseContext\"\\\n\x15RequestHeadersPayload\x12\x43\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x32.wso2.gateway.python.v1alpha2.RequestHeaderContext\"S\n\x12RequestBodyPayload\x12=\n\x07\x63ontext\x18\x01 \x01(\x0b\x32,.wso2.gateway.python.v1alpha2.RequestContext\"^\n\x16ResponseHeadersPayload\x12\x44\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x33.wso2.gateway.python.v1alpha2.ResponseHeaderContext\"U\n\x13ResponseBodyPayload\x12>\n\x07\x63ontext\x18\x01 \x01(\x0b\x32-.wso2.gateway.python.v1alpha2.ResponseContext\"2\n\x1bNeedsMoreRequestDataPayload\x12\x13\n\x0b\x61\x63\x63umulated\x18\x01 \x01(\x0c\"\x93\x01\n\x13RequestChunkPayload\x12\x43\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x32.wso2.gateway.python.v1alpha2.RequestStreamContext\x12\x37\n\x05\x63hunk\x18\x02 \x01(\x0b\x32(.wso2.gateway.python.v1alpha2.StreamBody\"3\n\x1cNeedsMoreResponseDataPayload\x12\x13\n\x0b\x61\x63\x63umulated\x18\x01 \x01(\x0c\"\x95\x01\n\x14ResponseChunkPayload\x12\x44\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x33.wso2.gateway.python.v1alpha2.ResponseStreamContext\x12\x37\n\x05\x63hunk\x18\x02 \x01(\x0b\x32(.wso2.gateway.python.v1alpha2.StreamBody\"c\n\x16\x43\x61ncelExecutionPayload\x12\x39\n\x0ctarget_phase\x18\x01 \x01(\x0e\x32#.wso2.gateway.python.v1alpha2.Phase\x12\x0e\n\x06reason\x18\x02 \x01(\t\"p\n\x0ePolicyMetadata\x12\x12\n\nroute_name\x18\x01 \x01(\t\x12\x0e\n\x06\x61pi_id\x18\x02 \x01(\t\x12\x10\n\x08\x61pi_name\x18\x03 \x01(\t\x12\x13\n\x0b\x61pi_version\x18\x04 \x01(\t\x12\x13\n\x0b\x61ttached_to\x18\x05 \x01(\t\"g\n\x10\x44ropHeaderAction\x12\x42\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x32.wso2.gateway.python.v1alpha2.DropHeaderActionType\x12\x0f\n\x07headers\x18\x02 \x03(\t\"\x89\x04\n\x11ImmediateResponse\x12\x13\n\x0bstatus_code\x18\x01 \x01(\x05\x12M\n\x07headers\x18\x02 \x03(\x0b\x32<.wso2.gateway.python.v1alpha2.ImmediateResponse.HeadersEntry\x12)\n\x04\x62ody\x18\x03 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x33\n\x12\x61nalytics_metadata\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\x12^\n\x10\x64ynamic_metadata\x18\x05 \x03(\x0b\x32\x44.wso2.gateway.python.v1alpha2.ImmediateResponse.DynamicMetadataEntry\x12O\n\x17\x61nalytics_header_filter\x18\x06 \x01(\x0b\x32..wso2.gateway.python.v1alpha2.DropHeaderAction\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xeb\x07\n\"UpstreamRequestHeaderModifications\x12j\n\x0eheaders_to_set\x18\x01 \x03(\x0b\x32R.wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.HeadersToSetEntry\x12\x19\n\x11headers_to_remove\x18\x02 \x03(\t\x12\x33\n\rupstream_name\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12*\n\x04path\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12*\n\x04host\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12,\n\x06method\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12{\n\x17query_parameters_to_add\x18\x07 \x03(\x0b\x32Z.wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.QueryParametersToAddEntry\x12\"\n\x1aquery_parameters_to_remove\x18\x08 \x03(\t\x12\x33\n\x12\x61nalytics_metadata\x18\t \x01(\x0b\x32\x17.google.protobuf.Struct\x12o\n\x10\x64ynamic_metadata\x18\n \x03(\x0b\x32U.wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModifications.DynamicMetadataEntry\x12O\n\x17\x61nalytics_header_filter\x18\x0b \x01(\x0b\x32..wso2.gateway.python.v1alpha2.DropHeaderAction\x1a\x33\n\x11HeadersToSetEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x65\n\x19QueryParametersToAddEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x37\n\x05value\x18\x02 \x01(\x0b\x32(.wso2.gateway.python.v1alpha2.StringList:\x02\x38\x01\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xfe\x07\n\x1cUpstreamRequestModifications\x12)\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x64\n\x0eheaders_to_set\x18\x02 \x03(\x0b\x32L.wso2.gateway.python.v1alpha2.UpstreamRequestModifications.HeadersToSetEntry\x12\x19\n\x11headers_to_remove\x18\x03 \x03(\t\x12\x33\n\rupstream_name\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12*\n\x04path\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12*\n\x04host\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12,\n\x06method\x18\x07 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12u\n\x17query_parameters_to_add\x18\x08 \x03(\x0b\x32T.wso2.gateway.python.v1alpha2.UpstreamRequestModifications.QueryParametersToAddEntry\x12\"\n\x1aquery_parameters_to_remove\x18\t \x03(\t\x12\x33\n\x12\x61nalytics_metadata\x18\n \x01(\x0b\x32\x17.google.protobuf.Struct\x12i\n\x10\x64ynamic_metadata\x18\x0b \x03(\x0b\x32O.wso2.gateway.python.v1alpha2.UpstreamRequestModifications.DynamicMetadataEntry\x12O\n\x17\x61nalytics_header_filter\x18\x0c \x01(\x0b\x32..wso2.gateway.python.v1alpha2.DropHeaderAction\x1a\x33\n\x11HeadersToSetEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x65\n\x19QueryParametersToAddEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x37\n\x05value\x18\x02 \x01(\x0b\x32(.wso2.gateway.python.v1alpha2.StringList:\x02\x38\x01\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xb1\x04\n%DownstreamResponseHeaderModifications\x12m\n\x0eheaders_to_set\x18\x01 \x03(\x0b\x32U.wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.HeadersToSetEntry\x12\x19\n\x11headers_to_remove\x18\x02 \x03(\t\x12\x33\n\x12\x61nalytics_metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12r\n\x10\x64ynamic_metadata\x18\x04 \x03(\x0b\x32X.wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModifications.DynamicMetadataEntry\x12O\n\x17\x61nalytics_header_filter\x18\x05 \x01(\x0b\x32..wso2.gateway.python.v1alpha2.DropHeaderAction\x1a\x33\n\x11HeadersToSetEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xfc\x04\n\x1f\x44ownstreamResponseModifications\x12)\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x30\n\x0bstatus_code\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.Int32Value\x12g\n\x0eheaders_to_set\x18\x03 \x03(\x0b\x32O.wso2.gateway.python.v1alpha2.DownstreamResponseModifications.HeadersToSetEntry\x12\x19\n\x11headers_to_remove\x18\x04 \x03(\t\x12\x33\n\x12\x61nalytics_metadata\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12l\n\x10\x64ynamic_metadata\x18\x06 \x03(\x0b\x32R.wso2.gateway.python.v1alpha2.DownstreamResponseModifications.DynamicMetadataEntry\x12O\n\x17\x61nalytics_header_filter\x18\x07 \x01(\x0b\x32..wso2.gateway.python.v1alpha2.DropHeaderAction\x1a\x33\n\x11HeadersToSetEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xa8\x02\n\x13\x46orwardRequestChunk\x12)\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x33\n\x12\x61nalytics_metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12`\n\x10\x64ynamic_metadata\x18\x03 \x03(\x0b\x32\x46.wso2.gateway.python.v1alpha2.ForwardRequestChunk.DynamicMetadataEntry\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xaa\x02\n\x14\x46orwardResponseChunk\x12)\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x33\n\x12\x61nalytics_metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x61\n\x10\x64ynamic_metadata\x18\x03 \x03(\x0b\x32G.wso2.gateway.python.v1alpha2.ForwardResponseChunk.DynamicMetadataEntry\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xae\x02\n\x16TerminateResponseChunk\x12)\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x33\n\x12\x61nalytics_metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x63\n\x10\x64ynamic_metadata\x18\x03 \x03(\x0b\x32I.wso2.gateway.python.v1alpha2.TerminateResponseChunk.DynamicMetadataEntry\x1aO\n\x14\x44ynamicMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"\xe8\x01\n\x1aRequestHeaderActionPayload\x12q\n%upstream_request_header_modifications\x18\x01 \x01(\x0b\x32@.wso2.gateway.python.v1alpha2.UpstreamRequestHeaderModificationsH\x00\x12M\n\x12immediate_response\x18\x02 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.ImmediateResponseH\x00\x42\x08\n\x06\x61\x63tion\"\xd5\x01\n\x14RequestActionPayload\x12\x64\n\x1eupstream_request_modifications\x18\x01 \x01(\x0b\x32:.wso2.gateway.python.v1alpha2.UpstreamRequestModificationsH\x00\x12M\n\x12immediate_response\x18\x02 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.ImmediateResponseH\x00\x42\x08\n\x06\x61\x63tion\"\xef\x01\n\x1bResponseHeaderActionPayload\x12w\n(downstream_response_header_modifications\x18\x01 \x01(\x0b\x32\x43.wso2.gateway.python.v1alpha2.DownstreamResponseHeaderModificationsH\x00\x12M\n\x12immediate_response\x18\x02 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.ImmediateResponseH\x00\x42\x08\n\x06\x61\x63tion\"\xdc\x01\n\x15ResponseActionPayload\x12j\n!downstream_response_modifications\x18\x01 \x01(\x0b\x32=.wso2.gateway.python.v1alpha2.DownstreamResponseModificationsH\x00\x12M\n\x12immediate_response\x18\x02 \x01(\x0b\x32/.wso2.gateway.python.v1alpha2.ImmediateResponseH\x00\x42\x08\n\x06\x61\x63tion\".\n\x18NeedsMoreDecisionPayload\x12\x12\n\nneeds_more\x18\x01 \x01(\x08\"q\n\x1dStreamingRequestActionPayload\x12P\n\x15\x66orward_request_chunk\x18\x01 \x01(\x0b\x32\x31.wso2.gateway.python.v1alpha2.ForwardRequestChunk\"\xda\x01\n\x1eStreamingResponseActionPayload\x12T\n\x16\x66orward_response_chunk\x18\x01 \x01(\x0b\x32\x32.wso2.gateway.python.v1alpha2.ForwardResponseChunkH\x00\x12X\n\x18terminate_response_chunk\x18\x02 \x01(\x0b\x32\x34.wso2.gateway.python.v1alpha2.TerminateResponseChunkH\x00\x42\x08\n\x06\x61\x63tion\"b\n\x0e\x45xecutionError\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x13\n\x0bpolicy_name\x18\x02 \x01(\t\x12\x16\n\x0epolicy_version\x18\x03 \x01(\t\x12\x12\n\nerror_type\x18\x04 \x01(\t\"\x14\n\x12HealthCheckRequest\"=\n\x13HealthCheckResponse\x12\r\n\x05ready\x18\x01 \x01(\x08\x12\x17\n\x0floaded_policies\x18\x02 \x01(\x05*\x83\x01\n\x14HeaderProcessingMode\x12&\n\"HEADER_PROCESSING_MODE_UNSPECIFIED\x10\x00\x12\x1f\n\x1bHEADER_PROCESSING_MODE_SKIP\x10\x01\x12\"\n\x1eHEADER_PROCESSING_MODE_PROCESS\x10\x02*\x9b\x01\n\x12\x42odyProcessingMode\x12$\n BODY_PROCESSING_MODE_UNSPECIFIED\x10\x00\x12\x1d\n\x19\x42ODY_PROCESSING_MODE_SKIP\x10\x01\x12\x1f\n\x1b\x42ODY_PROCESSING_MODE_BUFFER\x10\x02\x12\x1f\n\x1b\x42ODY_PROCESSING_MODE_STREAM\x10\x03*\x9c\x02\n\x05Phase\x12\x15\n\x11PHASE_UNSPECIFIED\x10\x00\x12\x19\n\x15PHASE_REQUEST_HEADERS\x10\x01\x12\x16\n\x12PHASE_REQUEST_BODY\x10\x02\x12\x1a\n\x16PHASE_RESPONSE_HEADERS\x10\x03\x12\x17\n\x13PHASE_RESPONSE_BODY\x10\x04\x12!\n\x1dPHASE_NEEDS_MORE_REQUEST_DATA\x10\x05\x12\x1c\n\x18PHASE_REQUEST_BODY_CHUNK\x10\x06\x12\"\n\x1ePHASE_NEEDS_MORE_RESPONSE_DATA\x10\x07\x12\x1d\n\x19PHASE_RESPONSE_BODY_CHUNK\x10\x08\x12\x10\n\x0cPHASE_CANCEL\x10\t*\x84\x01\n\x14\x44ropHeaderActionType\x12\'\n#DROP_HEADER_ACTION_TYPE_UNSPECIFIED\x10\x00\x12!\n\x1d\x44ROP_HEADER_ACTION_TYPE_ALLOW\x10\x01\x12 \n\x1c\x44ROP_HEADER_ACTION_TYPE_DENY\x10\x02\x32\xe6\x03\n\x15PythonExecutorService\x12n\n\rExecuteStream\x12+.wso2.gateway.python.v1alpha2.StreamRequest\x1a,.wso2.gateway.python.v1alpha2.StreamResponse(\x01\x30\x01\x12r\n\x0bHealthCheck\x12\x30.wso2.gateway.python.v1alpha2.HealthCheckRequest\x1a\x31.wso2.gateway.python.v1alpha2.HealthCheckResponse\x12o\n\nInitPolicy\x12/.wso2.gateway.python.v1alpha2.InitPolicyRequest\x1a\x30.wso2.gateway.python.v1alpha2.InitPolicyResponse\x12x\n\rDestroyPolicy\x12\x32.wso2.gateway.python.v1alpha2.DestroyPolicyRequest\x1a\x33.wso2.gateway.python.v1alpha2.DestroyPolicyResponseB`Z^github.com/wso2/api-platform/gateway/gateway-runtime/policy-engine/internal/pythonbridge/protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -71,14 +71,14 @@ _globals['_FORWARDRESPONSECHUNK_DYNAMICMETADATAENTRY']._serialized_options = b'8\001' _globals['_TERMINATERESPONSECHUNK_DYNAMICMETADATAENTRY']._loaded_options = None _globals['_TERMINATERESPONSECHUNK_DYNAMICMETADATAENTRY']._serialized_options = b'8\001' - _globals['_HEADERPROCESSINGMODE']._serialized_start=13009 - _globals['_HEADERPROCESSINGMODE']._serialized_end=13140 - _globals['_BODYPROCESSINGMODE']._serialized_start=13143 - _globals['_BODYPROCESSINGMODE']._serialized_end=13298 - _globals['_PHASE']._serialized_start=13301 - _globals['_PHASE']._serialized_end=13585 - _globals['_DROPHEADERACTIONTYPE']._serialized_start=13588 - _globals['_DROPHEADERACTIONTYPE']._serialized_end=13720 + _globals['_HEADERPROCESSINGMODE']._serialized_start=14328 + _globals['_HEADERPROCESSINGMODE']._serialized_end=14459 + _globals['_BODYPROCESSINGMODE']._serialized_start=14462 + _globals['_BODYPROCESSINGMODE']._serialized_end=14617 + _globals['_PHASE']._serialized_start=14620 + _globals['_PHASE']._serialized_end=14904 + _globals['_DROPHEADERACTIONTYPE']._serialized_start=14907 + _globals['_DROPHEADERACTIONTYPE']._serialized_end=15039 _globals['_STREAMREQUEST']._serialized_start=157 _globals['_STREAMREQUEST']._serialized_end=1194 _globals['_STREAMRESPONSE']._serialized_start=1197 @@ -111,112 +111,122 @@ _globals['_BODY']._serialized_end=3809 _globals['_STREAMBODY']._serialized_start=3811 _globals['_STREAMBODY']._serialized_end=3876 - _globals['_AUTHCONTEXT']._serialized_start=3879 - _globals['_AUTHCONTEXT']._serialized_end=4337 - _globals['_AUTHCONTEXT_SCOPESENTRY']._serialized_start=4241 - _globals['_AUTHCONTEXT_SCOPESENTRY']._serialized_end=4286 - _globals['_AUTHCONTEXT_PROPERTIESENTRY']._serialized_start=4288 - _globals['_AUTHCONTEXT_PROPERTIESENTRY']._serialized_end=4337 - _globals['_REQUESTHEADERCONTEXT']._serialized_start=4340 - _globals['_REQUESTHEADERCONTEXT']._serialized_end=4498 - _globals['_REQUESTCONTEXT']._serialized_start=4501 - _globals['_REQUESTCONTEXT']._serialized_end=4703 - _globals['_RESPONSEHEADERCONTEXT']._serialized_start=4706 - _globals['_RESPONSEHEADERCONTEXT']._serialized_end=4987 - _globals['_RESPONSECONTEXT']._serialized_start=4990 - _globals['_RESPONSECONTEXT']._serialized_end=5324 - _globals['_REQUESTSTREAMCONTEXT']._serialized_start=5327 - _globals['_REQUESTSTREAMCONTEXT']._serialized_end=5485 - _globals['_RESPONSESTREAMCONTEXT']._serialized_start=5488 - _globals['_RESPONSESTREAMCONTEXT']._serialized_end=5769 - _globals['_REQUESTHEADERSPAYLOAD']._serialized_start=5771 - _globals['_REQUESTHEADERSPAYLOAD']._serialized_end=5863 - _globals['_REQUESTBODYPAYLOAD']._serialized_start=5865 - _globals['_REQUESTBODYPAYLOAD']._serialized_end=5948 - _globals['_RESPONSEHEADERSPAYLOAD']._serialized_start=5950 - _globals['_RESPONSEHEADERSPAYLOAD']._serialized_end=6044 - _globals['_RESPONSEBODYPAYLOAD']._serialized_start=6046 - _globals['_RESPONSEBODYPAYLOAD']._serialized_end=6131 - _globals['_NEEDSMOREREQUESTDATAPAYLOAD']._serialized_start=6133 - _globals['_NEEDSMOREREQUESTDATAPAYLOAD']._serialized_end=6183 - _globals['_REQUESTCHUNKPAYLOAD']._serialized_start=6186 - _globals['_REQUESTCHUNKPAYLOAD']._serialized_end=6333 - _globals['_NEEDSMORERESPONSEDATAPAYLOAD']._serialized_start=6335 - _globals['_NEEDSMORERESPONSEDATAPAYLOAD']._serialized_end=6386 - _globals['_RESPONSECHUNKPAYLOAD']._serialized_start=6389 - _globals['_RESPONSECHUNKPAYLOAD']._serialized_end=6538 - _globals['_CANCELEXECUTIONPAYLOAD']._serialized_start=6540 - _globals['_CANCELEXECUTIONPAYLOAD']._serialized_end=6639 - _globals['_POLICYMETADATA']._serialized_start=6641 - _globals['_POLICYMETADATA']._serialized_end=6753 - _globals['_DROPHEADERACTION']._serialized_start=6755 - _globals['_DROPHEADERACTION']._serialized_end=6858 - _globals['_IMMEDIATERESPONSE']._serialized_start=6861 - _globals['_IMMEDIATERESPONSE']._serialized_end=7382 - _globals['_IMMEDIATERESPONSE_HEADERSENTRY']._serialized_start=7255 - _globals['_IMMEDIATERESPONSE_HEADERSENTRY']._serialized_end=7301 - _globals['_IMMEDIATERESPONSE_DYNAMICMETADATAENTRY']._serialized_start=7303 - _globals['_IMMEDIATERESPONSE_DYNAMICMETADATAENTRY']._serialized_end=7382 - _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS']._serialized_start=7385 - _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS']._serialized_end=8388 - _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS_HEADERSTOSETENTRY']._serialized_start=8153 - _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS_HEADERSTOSETENTRY']._serialized_end=8204 - _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS_QUERYPARAMETERSTOADDENTRY']._serialized_start=8206 - _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS_QUERYPARAMETERSTOADDENTRY']._serialized_end=8307 - _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_start=7303 - _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_end=7382 - _globals['_UPSTREAMREQUESTMODIFICATIONS']._serialized_start=8391 - _globals['_UPSTREAMREQUESTMODIFICATIONS']._serialized_end=9413 - _globals['_UPSTREAMREQUESTMODIFICATIONS_HEADERSTOSETENTRY']._serialized_start=8153 - _globals['_UPSTREAMREQUESTMODIFICATIONS_HEADERSTOSETENTRY']._serialized_end=8204 - _globals['_UPSTREAMREQUESTMODIFICATIONS_QUERYPARAMETERSTOADDENTRY']._serialized_start=8206 - _globals['_UPSTREAMREQUESTMODIFICATIONS_QUERYPARAMETERSTOADDENTRY']._serialized_end=8307 - _globals['_UPSTREAMREQUESTMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_start=7303 - _globals['_UPSTREAMREQUESTMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_end=7382 - _globals['_DOWNSTREAMRESPONSEHEADERMODIFICATIONS']._serialized_start=9416 - _globals['_DOWNSTREAMRESPONSEHEADERMODIFICATIONS']._serialized_end=9977 - _globals['_DOWNSTREAMRESPONSEHEADERMODIFICATIONS_HEADERSTOSETENTRY']._serialized_start=8153 - _globals['_DOWNSTREAMRESPONSEHEADERMODIFICATIONS_HEADERSTOSETENTRY']._serialized_end=8204 - _globals['_DOWNSTREAMRESPONSEHEADERMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_start=7303 - _globals['_DOWNSTREAMRESPONSEHEADERMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_end=7382 - _globals['_DOWNSTREAMRESPONSEMODIFICATIONS']._serialized_start=9980 - _globals['_DOWNSTREAMRESPONSEMODIFICATIONS']._serialized_end=10616 - _globals['_DOWNSTREAMRESPONSEMODIFICATIONS_HEADERSTOSETENTRY']._serialized_start=8153 - _globals['_DOWNSTREAMRESPONSEMODIFICATIONS_HEADERSTOSETENTRY']._serialized_end=8204 - _globals['_DOWNSTREAMRESPONSEMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_start=7303 - _globals['_DOWNSTREAMRESPONSEMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_end=7382 - _globals['_FORWARDREQUESTCHUNK']._serialized_start=10619 - _globals['_FORWARDREQUESTCHUNK']._serialized_end=10915 - _globals['_FORWARDREQUESTCHUNK_DYNAMICMETADATAENTRY']._serialized_start=7303 - _globals['_FORWARDREQUESTCHUNK_DYNAMICMETADATAENTRY']._serialized_end=7382 - _globals['_FORWARDRESPONSECHUNK']._serialized_start=10918 - _globals['_FORWARDRESPONSECHUNK']._serialized_end=11216 - _globals['_FORWARDRESPONSECHUNK_DYNAMICMETADATAENTRY']._serialized_start=7303 - _globals['_FORWARDRESPONSECHUNK_DYNAMICMETADATAENTRY']._serialized_end=7382 - _globals['_TERMINATERESPONSECHUNK']._serialized_start=11219 - _globals['_TERMINATERESPONSECHUNK']._serialized_end=11521 - _globals['_TERMINATERESPONSECHUNK_DYNAMICMETADATAENTRY']._serialized_start=7303 - _globals['_TERMINATERESPONSECHUNK_DYNAMICMETADATAENTRY']._serialized_end=7382 - _globals['_REQUESTHEADERACTIONPAYLOAD']._serialized_start=11524 - _globals['_REQUESTHEADERACTIONPAYLOAD']._serialized_end=11756 - _globals['_REQUESTACTIONPAYLOAD']._serialized_start=11759 - _globals['_REQUESTACTIONPAYLOAD']._serialized_end=11972 - _globals['_RESPONSEHEADERACTIONPAYLOAD']._serialized_start=11975 - _globals['_RESPONSEHEADERACTIONPAYLOAD']._serialized_end=12214 - _globals['_RESPONSEACTIONPAYLOAD']._serialized_start=12217 - _globals['_RESPONSEACTIONPAYLOAD']._serialized_end=12437 - _globals['_NEEDSMOREDECISIONPAYLOAD']._serialized_start=12439 - _globals['_NEEDSMOREDECISIONPAYLOAD']._serialized_end=12485 - _globals['_STREAMINGREQUESTACTIONPAYLOAD']._serialized_start=12487 - _globals['_STREAMINGREQUESTACTIONPAYLOAD']._serialized_end=12600 - _globals['_STREAMINGRESPONSEACTIONPAYLOAD']._serialized_start=12603 - _globals['_STREAMINGRESPONSEACTIONPAYLOAD']._serialized_end=12821 - _globals['_EXECUTIONERROR']._serialized_start=12823 - _globals['_EXECUTIONERROR']._serialized_end=12921 - _globals['_HEALTHCHECKREQUEST']._serialized_start=12923 - _globals['_HEALTHCHECKREQUEST']._serialized_end=12943 - _globals['_HEALTHCHECKRESPONSE']._serialized_start=12945 - _globals['_HEALTHCHECKRESPONSE']._serialized_end=13006 - _globals['_PYTHONEXECUTORSERVICE']._serialized_start=13723 - _globals['_PYTHONEXECUTORSERVICE']._serialized_end=14209 + _globals['_DOWNSTREAMREQUEST']._serialized_start=3878 + _globals['_DOWNSTREAMREQUEST']._serialized_end=3953 + _globals['_DOWNSTREAMCONTEXT']._serialized_start=3955 + _globals['_DOWNSTREAMCONTEXT']._serialized_end=4040 + _globals['_UPSTREAMREQUESTCONTEXT']._serialized_start=4042 + _globals['_UPSTREAMREQUESTCONTEXT']._serialized_end=4112 + _globals['_UPSTREAMRESPONSE']._serialized_start=4114 + _globals['_UPSTREAMRESPONSE']._serialized_end=4188 + _globals['_UPSTREAMRESPONSECONTEXT']._serialized_start=4191 + _globals['_UPSTREAMRESPONSECONTEXT']._serialized_end=4328 + _globals['_AUTHCONTEXT']._serialized_start=4331 + _globals['_AUTHCONTEXT']._serialized_end=4807 + _globals['_AUTHCONTEXT_SCOPESENTRY']._serialized_start=4711 + _globals['_AUTHCONTEXT_SCOPESENTRY']._serialized_end=4756 + _globals['_AUTHCONTEXT_PROPERTIESENTRY']._serialized_start=4758 + _globals['_AUTHCONTEXT_PROPERTIESENTRY']._serialized_end=4807 + _globals['_REQUESTHEADERCONTEXT']._serialized_start=4810 + _globals['_REQUESTHEADERCONTEXT']._serialized_end=5109 + _globals['_REQUESTCONTEXT']._serialized_start=5112 + _globals['_REQUESTCONTEXT']._serialized_end=5455 + _globals['_RESPONSEHEADERCONTEXT']._serialized_start=5458 + _globals['_RESPONSEHEADERCONTEXT']._serialized_end=5881 + _globals['_RESPONSECONTEXT']._serialized_start=5884 + _globals['_RESPONSECONTEXT']._serialized_end=6360 + _globals['_REQUESTSTREAMCONTEXT']._serialized_start=6363 + _globals['_REQUESTSTREAMCONTEXT']._serialized_end=6662 + _globals['_RESPONSESTREAMCONTEXT']._serialized_start=6665 + _globals['_RESPONSESTREAMCONTEXT']._serialized_end=7088 + _globals['_REQUESTHEADERSPAYLOAD']._serialized_start=7090 + _globals['_REQUESTHEADERSPAYLOAD']._serialized_end=7182 + _globals['_REQUESTBODYPAYLOAD']._serialized_start=7184 + _globals['_REQUESTBODYPAYLOAD']._serialized_end=7267 + _globals['_RESPONSEHEADERSPAYLOAD']._serialized_start=7269 + _globals['_RESPONSEHEADERSPAYLOAD']._serialized_end=7363 + _globals['_RESPONSEBODYPAYLOAD']._serialized_start=7365 + _globals['_RESPONSEBODYPAYLOAD']._serialized_end=7450 + _globals['_NEEDSMOREREQUESTDATAPAYLOAD']._serialized_start=7452 + _globals['_NEEDSMOREREQUESTDATAPAYLOAD']._serialized_end=7502 + _globals['_REQUESTCHUNKPAYLOAD']._serialized_start=7505 + _globals['_REQUESTCHUNKPAYLOAD']._serialized_end=7652 + _globals['_NEEDSMORERESPONSEDATAPAYLOAD']._serialized_start=7654 + _globals['_NEEDSMORERESPONSEDATAPAYLOAD']._serialized_end=7705 + _globals['_RESPONSECHUNKPAYLOAD']._serialized_start=7708 + _globals['_RESPONSECHUNKPAYLOAD']._serialized_end=7857 + _globals['_CANCELEXECUTIONPAYLOAD']._serialized_start=7859 + _globals['_CANCELEXECUTIONPAYLOAD']._serialized_end=7958 + _globals['_POLICYMETADATA']._serialized_start=7960 + _globals['_POLICYMETADATA']._serialized_end=8072 + _globals['_DROPHEADERACTION']._serialized_start=8074 + _globals['_DROPHEADERACTION']._serialized_end=8177 + _globals['_IMMEDIATERESPONSE']._serialized_start=8180 + _globals['_IMMEDIATERESPONSE']._serialized_end=8701 + _globals['_IMMEDIATERESPONSE_HEADERSENTRY']._serialized_start=8574 + _globals['_IMMEDIATERESPONSE_HEADERSENTRY']._serialized_end=8620 + _globals['_IMMEDIATERESPONSE_DYNAMICMETADATAENTRY']._serialized_start=8622 + _globals['_IMMEDIATERESPONSE_DYNAMICMETADATAENTRY']._serialized_end=8701 + _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS']._serialized_start=8704 + _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS']._serialized_end=9707 + _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS_HEADERSTOSETENTRY']._serialized_start=9472 + _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS_HEADERSTOSETENTRY']._serialized_end=9523 + _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS_QUERYPARAMETERSTOADDENTRY']._serialized_start=9525 + _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS_QUERYPARAMETERSTOADDENTRY']._serialized_end=9626 + _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_start=8622 + _globals['_UPSTREAMREQUESTHEADERMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_end=8701 + _globals['_UPSTREAMREQUESTMODIFICATIONS']._serialized_start=9710 + _globals['_UPSTREAMREQUESTMODIFICATIONS']._serialized_end=10732 + _globals['_UPSTREAMREQUESTMODIFICATIONS_HEADERSTOSETENTRY']._serialized_start=9472 + _globals['_UPSTREAMREQUESTMODIFICATIONS_HEADERSTOSETENTRY']._serialized_end=9523 + _globals['_UPSTREAMREQUESTMODIFICATIONS_QUERYPARAMETERSTOADDENTRY']._serialized_start=9525 + _globals['_UPSTREAMREQUESTMODIFICATIONS_QUERYPARAMETERSTOADDENTRY']._serialized_end=9626 + _globals['_UPSTREAMREQUESTMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_start=8622 + _globals['_UPSTREAMREQUESTMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_end=8701 + _globals['_DOWNSTREAMRESPONSEHEADERMODIFICATIONS']._serialized_start=10735 + _globals['_DOWNSTREAMRESPONSEHEADERMODIFICATIONS']._serialized_end=11296 + _globals['_DOWNSTREAMRESPONSEHEADERMODIFICATIONS_HEADERSTOSETENTRY']._serialized_start=9472 + _globals['_DOWNSTREAMRESPONSEHEADERMODIFICATIONS_HEADERSTOSETENTRY']._serialized_end=9523 + _globals['_DOWNSTREAMRESPONSEHEADERMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_start=8622 + _globals['_DOWNSTREAMRESPONSEHEADERMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_end=8701 + _globals['_DOWNSTREAMRESPONSEMODIFICATIONS']._serialized_start=11299 + _globals['_DOWNSTREAMRESPONSEMODIFICATIONS']._serialized_end=11935 + _globals['_DOWNSTREAMRESPONSEMODIFICATIONS_HEADERSTOSETENTRY']._serialized_start=9472 + _globals['_DOWNSTREAMRESPONSEMODIFICATIONS_HEADERSTOSETENTRY']._serialized_end=9523 + _globals['_DOWNSTREAMRESPONSEMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_start=8622 + _globals['_DOWNSTREAMRESPONSEMODIFICATIONS_DYNAMICMETADATAENTRY']._serialized_end=8701 + _globals['_FORWARDREQUESTCHUNK']._serialized_start=11938 + _globals['_FORWARDREQUESTCHUNK']._serialized_end=12234 + _globals['_FORWARDREQUESTCHUNK_DYNAMICMETADATAENTRY']._serialized_start=8622 + _globals['_FORWARDREQUESTCHUNK_DYNAMICMETADATAENTRY']._serialized_end=8701 + _globals['_FORWARDRESPONSECHUNK']._serialized_start=12237 + _globals['_FORWARDRESPONSECHUNK']._serialized_end=12535 + _globals['_FORWARDRESPONSECHUNK_DYNAMICMETADATAENTRY']._serialized_start=8622 + _globals['_FORWARDRESPONSECHUNK_DYNAMICMETADATAENTRY']._serialized_end=8701 + _globals['_TERMINATERESPONSECHUNK']._serialized_start=12538 + _globals['_TERMINATERESPONSECHUNK']._serialized_end=12840 + _globals['_TERMINATERESPONSECHUNK_DYNAMICMETADATAENTRY']._serialized_start=8622 + _globals['_TERMINATERESPONSECHUNK_DYNAMICMETADATAENTRY']._serialized_end=8701 + _globals['_REQUESTHEADERACTIONPAYLOAD']._serialized_start=12843 + _globals['_REQUESTHEADERACTIONPAYLOAD']._serialized_end=13075 + _globals['_REQUESTACTIONPAYLOAD']._serialized_start=13078 + _globals['_REQUESTACTIONPAYLOAD']._serialized_end=13291 + _globals['_RESPONSEHEADERACTIONPAYLOAD']._serialized_start=13294 + _globals['_RESPONSEHEADERACTIONPAYLOAD']._serialized_end=13533 + _globals['_RESPONSEACTIONPAYLOAD']._serialized_start=13536 + _globals['_RESPONSEACTIONPAYLOAD']._serialized_end=13756 + _globals['_NEEDSMOREDECISIONPAYLOAD']._serialized_start=13758 + _globals['_NEEDSMOREDECISIONPAYLOAD']._serialized_end=13804 + _globals['_STREAMINGREQUESTACTIONPAYLOAD']._serialized_start=13806 + _globals['_STREAMINGREQUESTACTIONPAYLOAD']._serialized_end=13919 + _globals['_STREAMINGRESPONSEACTIONPAYLOAD']._serialized_start=13922 + _globals['_STREAMINGRESPONSEACTIONPAYLOAD']._serialized_end=14140 + _globals['_EXECUTIONERROR']._serialized_start=14142 + _globals['_EXECUTIONERROR']._serialized_end=14240 + _globals['_HEALTHCHECKREQUEST']._serialized_start=14242 + _globals['_HEALTHCHECKREQUEST']._serialized_end=14262 + _globals['_HEALTHCHECKRESPONSE']._serialized_start=14264 + _globals['_HEALTHCHECKRESPONSE']._serialized_end=14325 + _globals['_PYTHONEXECUTORSERVICE']._serialized_start=15042 + _globals['_PYTHONEXECUTORSERVICE']._serialized_end=15528 # @@protoc_insertion_point(module_scope) diff --git a/gateway/gateway-runtime/python-executor/requirements.txt b/gateway/gateway-runtime/python-executor/requirements.txt index 59149b6a50..9a4afd8b96 100644 --- a/gateway/gateway-runtime/python-executor/requirements.txt +++ b/gateway/gateway-runtime/python-executor/requirements.txt @@ -1,4 +1,4 @@ # Python Executor base requirements grpcio>=1.59.0 protobuf>=4.24.0 -apip-sdk-core~=0.1.0 +apip-sdk-core~=0.2.0