From 14978e35982db01802ed361edab6e51f339e011a Mon Sep 17 00:00:00 2001 From: Renuka Fernando Date: Thu, 15 Jan 2026 14:37:39 +0530 Subject: [PATCH 1/6] Remove policy engine request_header_mode config --- gateway/configs/config.yaml | 4 ---- gateway/gateway-controller/pkg/config/config.go | 16 ---------------- gateway/gateway-controller/pkg/xds/translator.go | 14 ++++---------- .../gateway-operator/config/gateway_values.yaml | 1 - .../config/samples/api_v1_gateway.yaml | 4 ---- .../config/samples/gateway-custom-config.yaml | 4 ---- .../templates/gateway/gateway-config.yaml | 1 - kubernetes/helm/gateway-helm-chart/values.yaml | 4 ---- kubernetes/helm/operator-helm-chart/values.yaml | 4 ---- 9 files changed, 4 insertions(+), 48 deletions(-) diff --git a/gateway/configs/config.yaml b/gateway/configs/config.yaml index a5abc6579..df8e09426 100644 --- a/gateway/configs/config.yaml +++ b/gateway/configs/config.yaml @@ -156,10 +156,6 @@ gateway_controller: # Allow per-route override of ext_proc configuration allow_mode_override: true - # Request header processing mode: DEFAULT, SEND, or SKIP - # SEND: Forward request headers to policy engine for processing - request_header_mode: SEND - # Message timeout for policy engine processing (in milliseconds) message_timeout_ms: 60000 diff --git a/gateway/gateway-controller/pkg/config/config.go b/gateway/gateway-controller/pkg/config/config.go index f093bc6c7..6369dcb9f 100644 --- a/gateway/gateway-controller/pkg/config/config.go +++ b/gateway/gateway-controller/pkg/config/config.go @@ -256,7 +256,6 @@ type PolicyEngineConfig struct { FailureModeAllow bool `koanf:"failure_mode_allow"` RouteCacheAction string `koanf:"route_cache_action"` AllowModeOverride bool `koanf:"allow_mode_override"` - RequestHeaderMode string `koanf:"request_header_mode"` MessageTimeoutMs uint32 `koanf:"message_timeout_ms"` TLS PolicyEngineTLS `koanf:"tls"` // TLS configuration } @@ -454,7 +453,6 @@ func defaultConfig() *Config { FailureModeAllow: false, RouteCacheAction: "RETAIN", AllowModeOverride: true, - RequestHeaderMode: "SEND", MessageTimeoutMs: 250, TLS: PolicyEngineTLS{ Enabled: false, @@ -996,20 +994,6 @@ func (c *Config) validatePolicyEngineConfig() error { policyEngine.RouteCacheAction) } - // Validate request header mode - validHeaderModes := []string{"DEFAULT", "SEND", "SKIP"} - isValidMode := false - for _, mode := range validHeaderModes { - if policyEngine.RequestHeaderMode == mode { - isValidMode = true - break - } - } - if !isValidMode { - return fmt.Errorf("router.policy_engine.request_header_mode must be one of: DEFAULT, SEND, SKIP, got: %s", - policyEngine.RequestHeaderMode) - } - return nil } diff --git a/gateway/gateway-controller/pkg/xds/translator.go b/gateway/gateway-controller/pkg/xds/translator.go index 74d410e94..e14973a12 100644 --- a/gateway/gateway-controller/pkg/xds/translator.go +++ b/gateway/gateway-controller/pkg/xds/translator.go @@ -1832,15 +1832,6 @@ func (t *Translator) createExtProcFilter() (*hcm.HttpFilter, error) { routeCacheAction = extproc.ExternalProcessor_CLEAR } - // Convert request header mode string to enum - requestHeaderMode := extproc.ProcessingMode_DEFAULT - switch policyEngine.RequestHeaderMode { - case constants.ExtProcHeaderModeSend: - requestHeaderMode = extproc.ProcessingMode_SEND - case constants.ExtProcHeaderModeSkip: - requestHeaderMode = extproc.ProcessingMode_SKIP - } - // Create ext_proc configuration extProcConfig := &extproc.ExternalProcessor{ GrpcService: &core.GrpcService{ @@ -1856,7 +1847,10 @@ func (t *Translator) createExtProcFilter() (*hcm.HttpFilter, error) { AllowModeOverride: policyEngine.AllowModeOverride, RequestAttributes: []string{constants.ExtProcRequestAttributeRouteName, constants.ExtProcRequestAttributeRouteMetadata}, ProcessingMode: &extproc.ProcessingMode{ - RequestHeaderMode: requestHeaderMode, + RequestHeaderMode: extproc.ProcessingMode_SEND, + RequestBodyMode: extproc.ProcessingMode_FULL_DUPLEX_STREAMED, + ResponseHeaderMode: extproc.ProcessingMode_SEND, + ResponseBodyMode: extproc.ProcessingMode_FULL_DUPLEX_STREAMED, }, MessageTimeout: durationpb.New(time.Duration(policyEngine.MessageTimeoutMs) * time.Millisecond), MutationRules: &mutationrules.HeaderMutationRules{ diff --git a/kubernetes/gateway-operator/config/gateway_values.yaml b/kubernetes/gateway-operator/config/gateway_values.yaml index f10e0e96a..246639c3e 100644 --- a/kubernetes/gateway-operator/config/gateway_values.yaml +++ b/kubernetes/gateway-operator/config/gateway_values.yaml @@ -139,7 +139,6 @@ gateway: failure_mode_allow: false route_cache_action: RETAIN allow_mode_override: true - request_header_mode: SEND message_timeout_ms: 250 tls: enabled: false diff --git a/kubernetes/gateway-operator/config/samples/api_v1_gateway.yaml b/kubernetes/gateway-operator/config/samples/api_v1_gateway.yaml index 88ef2ed3c..6efd386d6 100644 --- a/kubernetes/gateway-operator/config/samples/api_v1_gateway.yaml +++ b/kubernetes/gateway-operator/config/samples/api_v1_gateway.yaml @@ -217,10 +217,6 @@ data: # Allow per-route override of ext_proc configuration allow_mode_override: true - # Request header processing mode: DEFAULT, SEND, or SKIP - # SEND: Forward request headers to policy engine for processing - request_header_mode: SEND - # Message timeout for policy engine processing (in milliseconds) message_timeout_ms: 60000 diff --git a/kubernetes/gateway-operator/config/samples/gateway-custom-config.yaml b/kubernetes/gateway-operator/config/samples/gateway-custom-config.yaml index 290b55530..8b2d6cdd8 100644 --- a/kubernetes/gateway-operator/config/samples/gateway-custom-config.yaml +++ b/kubernetes/gateway-operator/config/samples/gateway-custom-config.yaml @@ -191,10 +191,6 @@ data: # Allow per-route override of ext_proc configuration allow_mode_override: true - # Request header processing mode: DEFAULT, SEND, or SKIP - # SEND: Forward request headers to policy engine for processing - request_header_mode: SEND - # Message timeout for policy engine processing (in milliseconds) message_timeout_ms: 60000 diff --git a/kubernetes/helm/gateway-helm-chart/templates/gateway/gateway-config.yaml b/kubernetes/helm/gateway-helm-chart/templates/gateway/gateway-config.yaml index 53dba4829..34066ff7a 100644 --- a/kubernetes/helm/gateway-helm-chart/templates/gateway/gateway-config.yaml +++ b/kubernetes/helm/gateway-helm-chart/templates/gateway/gateway-config.yaml @@ -76,7 +76,6 @@ data: failure_mode_allow: {{ $gc.router.policy_engine.failure_mode_allow }} route_cache_action: {{ $gc.router.policy_engine.route_cache_action }} allow_mode_override: {{ $gc.router.policy_engine.allow_mode_override }} - request_header_mode: {{ $gc.router.policy_engine.request_header_mode }} message_timeout_ms: {{ $gc.router.policy_engine.message_timeout_ms }} tls: enabled: {{ $gc.router.policy_engine.tls.enabled }} diff --git a/kubernetes/helm/gateway-helm-chart/values.yaml b/kubernetes/helm/gateway-helm-chart/values.yaml index c7e72d1db..7fc43556b 100644 --- a/kubernetes/helm/gateway-helm-chart/values.yaml +++ b/kubernetes/helm/gateway-helm-chart/values.yaml @@ -193,10 +193,6 @@ gateway: # Allow per-route override of ext_proc configuration allow_mode_override: true - # Request header processing mode: DEFAULT, SEND, or SKIP - # SEND: Forward request headers to policy engine for processing - request_header_mode: SEND - # Message timeout for policy engine processing (in milliseconds) message_timeout_ms: 60000 diff --git a/kubernetes/helm/operator-helm-chart/values.yaml b/kubernetes/helm/operator-helm-chart/values.yaml index df4c79da2..b17de3a51 100644 --- a/kubernetes/helm/operator-helm-chart/values.yaml +++ b/kubernetes/helm/operator-helm-chart/values.yaml @@ -251,10 +251,6 @@ gateway: # Allow per-route override of ext_proc configuration allow_mode_override: true - # Request header processing mode: DEFAULT, SEND, or SKIP - # SEND: Forward request headers to policy engine for processing - request_header_mode: SEND - # Message timeout for policy engine processing (in milliseconds) message_timeout_ms: 60000 From 61c4757629c24b0def38c5d7278f9ba3d17968d7 Mon Sep 17 00:00:00 2001 From: Renuka Fernando Date: Wed, 21 Jan 2026 23:36:29 +0530 Subject: [PATCH 2/6] Standardized logging for policy developers --- cli/it/go.mod | 2 +- cli/it/go.sum | 3 +- gateway/it/go.mod | 7 +- gateway/it/go.sum | 10 +-- .../policies/api-key-auth/v0.1.0/apikey.go | 48 ++++++----- .../policies/basic-auth/v0.1.0/basicauth.go | 13 ++- .../v0.1.0/contentlengthguardrail.go | 21 +++-- gateway/policies/cors/v0.1.0/cors.go | 68 ++++++++------- gateway/policies/cors/v0.1.0/go.sum | 4 +- .../v0.1.0/jsonschemaguardrail.go | 23 +++-- gateway/policies/modify-headers/v0.1.0/go.sum | 4 +- .../modify-headers/v0.1.0/modifyheaders.go | 25 +++--- .../regex-guardrail/v0.1.0/regexguardrail.go | 23 +++-- gateway/policies/respond/v0.1.0/respond.go | 14 ++- gateway/policy-engine/go.sum | 85 ------------------- .../internal/registry/registry.go | 8 +- go.work.sum | 19 ++--- sdk/gateway/policy/v1alpha/interface.go | 7 +- sdk/go.mod | 7 +- sdk/go.sum | 10 +-- 20 files changed, 183 insertions(+), 218 deletions(-) diff --git a/cli/it/go.mod b/cli/it/go.mod index 96b2f0f15..bd5ebc796 100644 --- a/cli/it/go.mod +++ b/cli/it/go.mod @@ -17,7 +17,7 @@ require ( github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/rogpeppe/go-internal v1.13.1 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/spf13/pflag v1.0.10 // indirect github.com/stretchr/testify v1.11.1 // indirect ) diff --git a/cli/it/go.sum b/cli/it/go.sum index 3623ac1db..f0a3a7532 100644 --- a/cli/it/go.sum +++ b/cli/it/go.sum @@ -38,8 +38,7 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= diff --git a/gateway/it/go.mod b/gateway/it/go.mod index d4e71f0ed..1d838f770 100644 --- a/gateway/it/go.mod +++ b/gateway/it/go.mod @@ -136,10 +136,10 @@ require ( github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/prometheus/client_golang v1.22.0 // indirect + github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.62.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect github.com/secure-systems-lab/go-securesystemslib v0.6.0 // indirect @@ -181,6 +181,7 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect go.opentelemetry.io/otel/trace v1.39.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.46.0 // indirect golang.org/x/net v0.48.0 // indirect diff --git a/gateway/it/go.sum b/gateway/it/go.sum index 6cc81e259..1f18deb41 100644 --- a/gateway/it/go.sum +++ b/gateway/it/go.sum @@ -418,8 +418,7 @@ github.com/prometheus/client_golang v0.9.0-pre1.0.20180209125602-c332b6f63c06/go github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -428,14 +427,12 @@ github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvM github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -572,6 +569,7 @@ go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= diff --git a/gateway/policies/api-key-auth/v0.1.0/apikey.go b/gateway/policies/api-key-auth/v0.1.0/apikey.go index f9733749d..f9b9321c2 100644 --- a/gateway/policies/api-key-auth/v0.1.0/apikey.go +++ b/gateway/policies/api-key-auth/v0.1.0/apikey.go @@ -35,15 +35,18 @@ const ( // APIKeyPolicy implements API Key Authentication type APIKeyPolicy struct { + logger *slog.Logger } -var ins = &APIKeyPolicy{} - func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - return ins, nil + p := &APIKeyPolicy{ + logger: logger, + } + return p, nil } // Mode returns the processing mode for this policy @@ -58,7 +61,8 @@ func (p *APIKeyPolicy) Mode() policy.ProcessingMode { // OnRequest performs API Key Authentication func (p *APIKeyPolicy) OnRequest(ctx *policy.RequestContext, params map[string]interface{}) policy.RequestAction { - slog.Debug("API Key Auth Policy: OnRequest started", + log := policy.WithRequestID(p.logger, ctx.RequestID) + log.Debug("OnRequest started", "path", ctx.Path, "method", ctx.Method, "apiId", ctx.APIId, @@ -69,7 +73,7 @@ func (p *APIKeyPolicy) OnRequest(ctx *policy.RequestContext, params map[string]i // Get configuration parameters keyName, ok := params["key"].(string) if !ok || keyName == "" { - slog.Debug("API Key Auth Policy: Missing or invalid 'key' configuration", + log.Debug("Missing or invalid 'key' configuration", "keyName", keyName, "ok", ok, ) @@ -79,7 +83,7 @@ func (p *APIKeyPolicy) OnRequest(ctx *policy.RequestContext, params map[string]i location, ok := params["in"].(string) if !ok || location == "" { - slog.Debug("API Key Auth Policy: Missing or invalid 'in' configuration", + log.Debug("Missing or invalid 'in' configuration", "location", location, "ok", ok, ) @@ -94,7 +98,7 @@ func (p *APIKeyPolicy) OnRequest(ctx *policy.RequestContext, params map[string]i } } - slog.Debug("API Key Auth Policy: Configuration loaded", + log.Debug("Configuration loaded", "keyName", keyName, "location", location, "valuePrefix", valuePrefix, @@ -107,7 +111,7 @@ func (p *APIKeyPolicy) OnRequest(ctx *policy.RequestContext, params map[string]i // Check header (case-insensitive) if headerValues := ctx.Headers.Get(http.CanonicalHeaderKey(keyName)); len(headerValues) > 0 { providedKey = headerValues[0] - slog.Debug("API Key Auth Policy: Found API key in header", + log.Debug("Found API key in header", "headerName", keyName, "keyLength", len(providedKey), ) @@ -116,7 +120,7 @@ func (p *APIKeyPolicy) OnRequest(ctx *policy.RequestContext, params map[string]i // Extract query parameters from the full path providedKey = extractQueryParam(ctx.Path, keyName) if providedKey != "" { - slog.Debug("API Key Auth Policy: Found API key in query parameter", + log.Debug("Found API key in query parameter", "paramName", keyName, "keyLength", len(providedKey), ) @@ -125,7 +129,7 @@ func (p *APIKeyPolicy) OnRequest(ctx *policy.RequestContext, params map[string]i // If no API key provided if providedKey == "" { - slog.Debug("API Key Auth Policy: No API key found", + log.Debug("No API key found", "location", location, "keyName", keyName, ) @@ -137,7 +141,7 @@ func (p *APIKeyPolicy) OnRequest(ctx *policy.RequestContext, params map[string]i if valuePrefix != "" { originalLength := len(providedKey) providedKey = stripPrefix(providedKey, valuePrefix) - slog.Debug("API Key Auth Policy: Processed value prefix", + log.Debug("Processed value prefix", "prefix", valuePrefix, "originalLength", originalLength, "processedLength", len(providedKey), @@ -145,7 +149,7 @@ func (p *APIKeyPolicy) OnRequest(ctx *policy.RequestContext, params map[string]i // If after stripping prefix, the key is empty, treat as missing if providedKey == "" { - slog.Debug("API Key Auth Policy: API key became empty after prefix removal") + log.Debug("API key became empty after prefix removal") return p.handleAuthFailure(ctx, 401, "json", "Valid API key required", "missing API key") } @@ -158,7 +162,7 @@ func (p *APIKeyPolicy) OnRequest(ctx *policy.RequestContext, params map[string]i operationMethod := ctx.Method if apiId == "" || apiName == "" || apiVersion == "" || apiOperation == "" || operationMethod == "" { - slog.Debug("API Key Auth Policy: Missing API details for validation", + log.Debug("Missing API details for validation", "apiId", apiId, "apiName", apiName, "apiVersion", apiVersion, @@ -169,7 +173,7 @@ func (p *APIKeyPolicy) OnRequest(ctx *policy.RequestContext, params map[string]i "missing API details for validation") } - slog.Debug("API Key Auth Policy: Starting validation", + log.Debug("Starting validation", "apiId", apiId, "apiName", apiName, "apiVersion", apiVersion, @@ -181,26 +185,27 @@ func (p *APIKeyPolicy) OnRequest(ctx *policy.RequestContext, params map[string]i // API key was provided - validate it using external validation isValid, err := p.validateAPIKey(apiId, apiOperation, operationMethod, providedKey) if err != nil { - slog.Debug("API Key Auth Policy: Validation error", + log.Debug("Validation error", "error", err, ) return p.handleAuthFailure(ctx, 401, "json", "Valid API key required", "error validating API key") } if !isValid { - slog.Debug("API Key Auth Policy: Invalid API key") + log.Debug("Invalid API key") return p.handleAuthFailure(ctx, 401, "json", "Valid API key required", "invalid API key") } // Authentication successful - slog.Debug("API Key Auth Policy: Authentication successful") + log.Debug("Authentication successful") return p.handleAuthSuccess(ctx) } // handleAuthSuccess handles successful authentication func (p *APIKeyPolicy) handleAuthSuccess(ctx *policy.RequestContext) policy.RequestAction { - slog.Debug("API Key Auth Policy: handleAuthSuccess called", + log := policy.WithRequestID(p.logger, ctx.RequestID) + log.Debug("handleAuthSuccess called", "apiId", ctx.APIId, "apiName", ctx.APIName, "apiVersion", ctx.APIVersion, @@ -212,7 +217,7 @@ func (p *APIKeyPolicy) handleAuthSuccess(ctx *policy.RequestContext) policy.Requ ctx.Metadata[MetadataKeyAuthSuccess] = true ctx.Metadata[MetadataKeyAuthMethod] = "api-key" - slog.Debug("API Key Auth Policy: Authentication metadata set", + log.Debug("Authentication metadata set", "authSuccess", true, "authMethod", "api-key", ) @@ -229,7 +234,8 @@ func (p *APIKeyPolicy) OnResponse(_ctx *policy.ResponseContext, _params map[stri // handleAuthFailure handles authentication failure func (p *APIKeyPolicy) handleAuthFailure(ctx *policy.RequestContext, statusCode int, errorFormat, errorMessage, reason string) policy.RequestAction { - slog.Debug("API Key Auth Policy: handleAuthFailure called", + log := policy.WithRequestID(p.logger, ctx.RequestID) + log.Debug("handleAuthFailure called", "statusCode", statusCode, "errorFormat", errorFormat, "errorMessage", errorMessage, @@ -263,7 +269,7 @@ func (p *APIKeyPolicy) handleAuthFailure(ctx *policy.RequestContext, statusCode body = string(bodyBytes) } - slog.Debug("API Key Auth Policy: Returning immediate response", + log.Debug("Returning immediate response", "statusCode", statusCode, "contentType", headers["content-type"], "bodyLength", len(body), diff --git a/gateway/policies/basic-auth/v0.1.0/basicauth.go b/gateway/policies/basic-auth/v0.1.0/basicauth.go index bd569cc7a..4281f4726 100644 --- a/gateway/policies/basic-auth/v0.1.0/basicauth.go +++ b/gateway/policies/basic-auth/v0.1.0/basicauth.go @@ -3,6 +3,7 @@ package basicauth import ( "encoding/base64" "fmt" + "log/slog" "strings" policy "github.com/wso2/api-platform/sdk/gateway/policy/v1alpha" @@ -16,15 +17,19 @@ const ( ) // BasicAuthPolicy implements HTTP Basic Authentication -type BasicAuthPolicy struct{} - -var ins = &BasicAuthPolicy{} +type BasicAuthPolicy struct { + logger *slog.Logger +} func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - return ins, nil + p := &BasicAuthPolicy{ + logger: logger, + } + return p, nil } // Mode returns the processing mode for this policy diff --git a/gateway/policies/content-length-guardrail/v0.1.0/contentlengthguardrail.go b/gateway/policies/content-length-guardrail/v0.1.0/contentlengthguardrail.go index 603b6be4d..37677f0fa 100644 --- a/gateway/policies/content-length-guardrail/v0.1.0/contentlengthguardrail.go +++ b/gateway/policies/content-length-guardrail/v0.1.0/contentlengthguardrail.go @@ -21,6 +21,7 @@ var textCleanRegexCompiled = regexp.MustCompile(TextCleanRegex) // ContentLengthGuardrailPolicy implements content length validation type ContentLengthGuardrailPolicy struct { + logger *slog.Logger hasRequestParams bool hasResponseParams bool requestParams ContentLengthGuardrailPolicyParams @@ -38,8 +39,11 @@ type ContentLengthGuardrailPolicyParams struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - p := &ContentLengthGuardrailPolicy{} + p := &ContentLengthGuardrailPolicy{ + logger: logger, + } // Extract and parse request parameters if present if requestParamsRaw, ok := params["request"].(map[string]interface{}); ok { @@ -66,7 +70,7 @@ func GetPolicy( return nil, fmt.Errorf("at least one of 'request' or 'response' parameters must be provided") } - slog.Debug("ContentLengthGuardrail: Policy initialized", "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) + p.logger.Debug("Policy initialized", "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) return p, nil } @@ -182,7 +186,7 @@ func (p *ContentLengthGuardrailPolicy) OnRequest(ctx *policy.RequestContext, par if ctx.Body != nil { content = ctx.Body.Content } - return p.validatePayload(content, p.requestParams, false).(policy.RequestAction) + return p.validatePayload(content, p.requestParams, false, ctx.RequestID).(policy.RequestAction) } // OnResponse validates response body content length @@ -195,15 +199,16 @@ func (p *ContentLengthGuardrailPolicy) OnResponse(ctx *policy.ResponseContext, p if ctx.ResponseBody != nil { content = ctx.ResponseBody.Content } - return p.validatePayload(content, p.responseParams, true).(policy.ResponseAction) + return p.validatePayload(content, p.responseParams, true, ctx.RequestID).(policy.ResponseAction) } // validatePayload validates payload content length (request phase) -func (p *ContentLengthGuardrailPolicy) validatePayload(payload []byte, params ContentLengthGuardrailPolicyParams, isResponse bool) interface{} { +func (p *ContentLengthGuardrailPolicy) validatePayload(payload []byte, params ContentLengthGuardrailPolicyParams, isResponse bool, requestID string) interface{} { + log := policy.WithRequestID(p.logger, requestID) // Extract value using JSONPath extractedValue, err := utils.ExtractStringValueFromJsonpath(payload, params.JsonPath) if err != nil { - slog.Debug("ContentLengthGuardrail: Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) + log.Debug("Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) return p.buildErrorResponse("Error extracting value from JSONPath", err, isResponse, params.ShowAssessment, params.Min, params.Max) } @@ -225,7 +230,7 @@ func (p *ContentLengthGuardrailPolicy) validatePayload(payload []byte, params Co } if !validationPassed { - slog.Debug("ContentLengthGuardrail: Validation failed", "byteCount", byteCount, "min", params.Min, "max", params.Max, "invert", params.Invert, "isResponse", isResponse) + log.Debug("Validation failed", "byteCount", byteCount, "min", params.Min, "max", params.Max, "invert", params.Invert, "isResponse", isResponse) var reason string if params.Invert { reason = fmt.Sprintf("content length %d bytes is within the excluded range %d-%d bytes", byteCount, params.Min, params.Max) @@ -235,7 +240,7 @@ func (p *ContentLengthGuardrailPolicy) validatePayload(payload []byte, params Co return p.buildErrorResponse(reason, nil, isResponse, params.ShowAssessment, params.Min, params.Max) } - slog.Debug("ContentLengthGuardrail: Validation passed", "byteCount", byteCount, "min", params.Min, "max", params.Max, "isResponse", isResponse) + log.Debug("Validation passed", "byteCount", byteCount, "min", params.Min, "max", params.Max, "isResponse", isResponse) if isResponse { return policy.UpstreamResponseModifications{} } diff --git a/gateway/policies/cors/v0.1.0/cors.go b/gateway/policies/cors/v0.1.0/cors.go index 062d483a4..321b1ac6f 100644 --- a/gateway/policies/cors/v0.1.0/cors.go +++ b/gateway/policies/cors/v0.1.0/cors.go @@ -29,6 +29,7 @@ import ( ) type CorsPolicy struct { + logger *slog.Logger AllowedOrigins []string CompiledAllowedOrigins []*regexp.Regexp AllowedMethods []string @@ -42,18 +43,21 @@ type CorsPolicy struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]any, + logger *slog.Logger, ) (policy.Policy, error) { - slog.Debug("Cors Policy: GetPolicy called") - p := &CorsPolicy{} + logger.Debug("GetPolicy called") + p := &CorsPolicy{ + logger: logger, + } p.AllowedOrigins = getStringArrayParam(params, "allowedOrigins", []string{"*"}) if slices.Contains(p.AllowedOrigins, "*") { - slog.Debug("Ignoring other origins as wildcard is included") + p.logger.Debug("Ignoring other origins as wildcard is included") p.AllowedOrigins = []string{"*"} } p.AllowedMethods = getStringArrayParam(params, "allowedMethods", []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}) p.AllowedHeaders = getStringArrayParam(params, "allowedHeaders", []string{}) if slices.Contains(p.AllowedHeaders, "*") { - slog.Debug("Ignoring other headers as wildcard is included") + p.logger.Debug("Ignoring other headers as wildcard is included") p.AllowedHeaders = []string{"*"} } p.ExposedHeaders = getStringArrayParam(params, "exposedHeaders", nil) @@ -78,16 +82,16 @@ func GetPolicy( if p.AllowCredentials != nil && *p.AllowCredentials { // As per CORS spec, wildcard cannot be used with allow-credentials if len(p.AllowedOrigins) == 1 && p.AllowedOrigins[0] == "*" { - slog.Debug("Cannot have wildcard origin with allowCredentials set to true") + p.logger.Debug("Cannot have wildcard origin with allowCredentials set to true") return nil, fmt.Errorf("cannot have wildcard origin with allowCredentials set to true") } else if len(p.AllowedHeaders) == 1 && p.AllowedHeaders[0] == "*" { - slog.Debug("Cannot have wildcard headers with allowCredentials set to true") + p.logger.Debug("Cannot have wildcard headers with allowCredentials set to true") return nil, fmt.Errorf("cannot have wildcard headers with allowCredentials set to true") } else if len(p.AllowedMethods) == 1 && p.AllowedMethods[0] == "*" { - slog.Debug("Cannot have wildcard methods with allowCredentials set to true") + p.logger.Debug("Cannot have wildcard methods with allowCredentials set to true") return nil, fmt.Errorf("cannot have wildcard methods with allowCredentials set to true") } else if len(p.ExposedHeaders) == 1 && p.ExposedHeaders[0] == "*" { - slog.Debug("Cannot have wildcard exposed headers with allowCredentials set to true") + p.logger.Debug("Cannot have wildcard exposed headers with allowCredentials set to true") return nil, fmt.Errorf("cannot have wildcard exposed headers with allowCredentials set to true") } } @@ -107,7 +111,7 @@ func GetPolicy( } regex, err := regexp.Compile(origin) if err != nil { - slog.Debug("Invalid origin regex", "origin", origin, "error", err) + p.logger.Debug("Invalid origin regex", "origin", origin, "error", err) return nil, fmt.Errorf("invalid origin regex: %s", origin) } p.CompiledAllowedOrigins = append(p.CompiledAllowedOrigins, regex) @@ -126,17 +130,18 @@ func (p *CorsPolicy) Mode() policy.ProcessingMode { } func (p *CorsPolicy) OnRequest(ctx *policy.RequestContext, params map[string]any) policy.RequestAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) if strings.EqualFold(ctx.Method, "options") { - slog.Debug("CORS: Preflight request detected; handling preflight") + log.Debug("Preflight request detected; handling preflight") return p.handlePreflight(ctx) } else { // Non-preflight corsHeaders, ok := p.handleNonPreflight(ctx) if ok { - slog.Debug("CORS: Adding CORS headers to non-preflight request") + log.Debug("Adding CORS headers to non-preflight request") ctx.Metadata["cors_headers"] = corsHeaders } else { - slog.Debug("CORS: No CORS headers to add for non-preflight request") + log.Debug("No CORS headers to add for non-preflight request") } return nil } @@ -144,6 +149,7 @@ func (p *CorsPolicy) OnRequest(ctx *policy.RequestContext, params map[string]any // handlePreflight processes CORS preflight (OPTIONS) requests func (p *CorsPolicy) handlePreflight(ctx *policy.RequestContext) policy.RequestAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) requestHeaders := ctx.Headers origin := requestHeaders.Get("Origin") @@ -157,13 +163,13 @@ func (p *CorsPolicy) handlePreflight(ctx *policy.RequestContext) policy.RequestA originAllowed := false if len(p.AllowedOrigins) > 0 { if p.AllowedOrigins[0] == "*" { - slog.Debug("CORS: Allowing all origins") + log.Debug("Allowing all origins") headers["Access-Control-Allow-Origin"] = "*" originAllowed = true } else if len(origin) > 0 { for _, regex := range p.CompiledAllowedOrigins { if regex.MatchString(origin[0]) { - slog.Debug("CORS: Adding allowed origins") + log.Debug("Adding allowed origins") headers["Access-Control-Allow-Origin"] = origin[0] originAllowed = true break @@ -172,7 +178,7 @@ func (p *CorsPolicy) handlePreflight(ctx *policy.RequestContext) policy.RequestA } } if !originAllowed { - slog.Debug("CORS: Origin not allowed") + log.Debug("Origin not allowed") isCorsFailure = true } @@ -180,19 +186,19 @@ func (p *CorsPolicy) handlePreflight(ctx *policy.RequestContext) policy.RequestA methodAllowed := false if len(p.AllowedMethods) > 0 { if p.AllowedMethods[0] == "*" { - slog.Debug("CORS: Allowing all methods") + log.Debug("Allowing all methods") headers["Access-Control-Allow-Methods"] = "*" methodAllowed = true } else if len(requestedMethod) > 0 { if slices.Contains(p.AllowedMethods, requestedMethod[0]) { - slog.Debug("CORS: Adding allowed methods") + log.Debug("Adding allowed methods") headers["Access-Control-Allow-Methods"] = strings.Join(p.AllowedMethods, ",") methodAllowed = true } } } if !methodAllowed { - slog.Debug("CORS: Method not allowed") + log.Debug("Method not allowed") isCorsFailure = true } @@ -200,7 +206,7 @@ func (p *CorsPolicy) handlePreflight(ctx *policy.RequestContext) policy.RequestA headersAllowed := false if len(p.AllowedHeaders) > 0 { if p.AllowedHeaders[0] == "*" { - slog.Debug("CORS: Allowing all headers") + log.Debug("Allowing all headers") if len(requestedHeaders) > 0 { headers["Access-Control-Allow-Headers"] = requestedHeaders[0] } @@ -218,7 +224,7 @@ func (p *CorsPolicy) handlePreflight(ctx *policy.RequestContext) policy.RequestA } } if len(requestedList) == allowedCount { - slog.Debug("CORS: Adding allowed headers") + log.Debug("Adding allowed headers") headers["Access-Control-Allow-Headers"] = strings.Join(checkedHeaders, ",") headersAllowed = true } @@ -226,25 +232,25 @@ func (p *CorsPolicy) handlePreflight(ctx *policy.RequestContext) policy.RequestA } if !headersAllowed && len(requestedHeaders) > 0 { - slog.Debug("CORS: Headers not allowed") + log.Debug("Headers not allowed") isCorsFailure = true } if p.MaxAge != nil { - slog.Debug("CORS: Adding max age header") + log.Debug("Adding max age header") headers["Access-Control-Max-Age"] = fmt.Sprintf("%d", *p.MaxAge) } if p.AllowCredentials != nil { - slog.Debug("CORS: Adding allow credentials header") + log.Debug("Adding allow credentials header") headers["Access-Control-Allow-Credentials"] = fmt.Sprintf("%t", *p.AllowCredentials) } if isCorsFailure { - slog.Debug("CORS: Preflight request did not pass the conditions") + log.Debug("Preflight request did not pass the conditions") headers = make(map[string]string) if p.ForwardPreflight { - slog.Debug("CORS: Forwarding preflight request to upstream.") + log.Debug("Forwarding preflight request to upstream.") return policy.UpstreamRequestModifications{} } } @@ -257,19 +263,21 @@ func (p *CorsPolicy) handlePreflight(ctx *policy.RequestContext) policy.RequestA } func (p *CorsPolicy) OnResponse(ctx *policy.ResponseContext, params map[string]any) policy.ResponseAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) corsHeaders, ok := ctx.Metadata["cors_headers"].(map[string]string) if ok { - slog.Debug("CORS: Adding CORS headers to response") + log.Debug("Adding CORS headers to response") return policy.UpstreamResponseModifications{ SetHeaders: corsHeaders, } } - slog.Debug("CORS: No CORS headers to add to response") + log.Debug("No CORS headers to add to response") return nil } // handleNonPreflight adds CORS headers to actual (non-preflight) responses func (p *CorsPolicy) handleNonPreflight(ctx *policy.RequestContext) (map[string]string, bool) { + log := policy.WithRequestID(p.logger, ctx.RequestID) // Add CORS headers for actual requests headersToInclude := make(map[string]string) @@ -296,19 +304,19 @@ func (p *CorsPolicy) handleNonPreflight(ctx *policy.RequestContext) (map[string] } if !originAllowed { - slog.Debug("CORS: Origin not allowed for non-preflight request") + log.Debug("Origin not allowed for non-preflight request") return nil, false } // Expose headers to the client, if configured if len(p.ExposedHeaders) > 0 { - slog.Debug("CORS: Adding exposed headers") + log.Debug("Adding exposed headers") headersToInclude["Access-Control-Expose-Headers"] = strings.Join(p.ExposedHeaders, ",") } // Allow credentials if enabled if p.AllowCredentials != nil { - slog.Debug("CORS: Adding allow credentials header") + log.Debug("Adding allow credentials header") headersToInclude["Access-Control-Allow-Credentials"] = fmt.Sprintf("%t", *p.AllowCredentials) } diff --git a/gateway/policies/cors/v0.1.0/go.sum b/gateway/policies/cors/v0.1.0/go.sum index e705cd5f2..a4dd64395 100644 --- a/gateway/policies/cors/v0.1.0/go.sum +++ b/gateway/policies/cors/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:OmZv0Kltc/fOtgRdsMikhodQAWZG+lVjNPtOZxl/2OQ= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:byr46IKr+KyUuPT7hm/Si+KosOtLQt5tjMbHFhexQgM= +github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= +github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/json-schema-guardrail/v0.1.0/jsonschemaguardrail.go b/gateway/policies/json-schema-guardrail/v0.1.0/jsonschemaguardrail.go index 828196efa..1049b4abc 100644 --- a/gateway/policies/json-schema-guardrail/v0.1.0/jsonschemaguardrail.go +++ b/gateway/policies/json-schema-guardrail/v0.1.0/jsonschemaguardrail.go @@ -16,6 +16,7 @@ const ( // JSONSchemaGuardrailPolicy implements JSON schema validation type JSONSchemaGuardrailPolicy struct { + logger *slog.Logger hasRequestParams bool hasResponseParams bool requestParams JSONSchemaGuardrailPolicyParams @@ -32,8 +33,11 @@ type JSONSchemaGuardrailPolicyParams struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - p := &JSONSchemaGuardrailPolicy{} + p := &JSONSchemaGuardrailPolicy{ + logger: logger, + } // Extract and parse request parameters if present if requestParamsRaw, ok := params["request"].(map[string]interface{}); ok { @@ -60,7 +64,7 @@ func GetPolicy( return nil, fmt.Errorf("at least one of 'request' or 'response' parameters must be provided") } - slog.Debug("JSONSchemaGuardrail: Policy initialized", "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) + p.logger.Debug("Policy initialized", "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) return p, nil } @@ -139,7 +143,7 @@ func (p *JSONSchemaGuardrailPolicy) OnRequest(ctx *policy.RequestContext, params if ctx.Body != nil { content = ctx.Body.Content } - return p.validatePayload(content, p.requestParams, false).(policy.RequestAction) + return p.validatePayload(content, p.requestParams, false, ctx.RequestID).(policy.RequestAction) } // OnResponse validates response body against JSON schema @@ -152,11 +156,12 @@ func (p *JSONSchemaGuardrailPolicy) OnResponse(ctx *policy.ResponseContext, para if ctx.ResponseBody != nil { content = ctx.ResponseBody.Content } - return p.validatePayload(content, p.responseParams, true).(policy.ResponseAction) + return p.validatePayload(content, p.responseParams, true, ctx.RequestID).(policy.ResponseAction) } // validatePayload validates payload against JSON schema -func (p *JSONSchemaGuardrailPolicy) validatePayload(payload []byte, params JSONSchemaGuardrailPolicyParams, isResponse bool) interface{} { +func (p *JSONSchemaGuardrailPolicy) validatePayload(payload []byte, params JSONSchemaGuardrailPolicyParams, isResponse bool, requestID string) interface{} { + log := policy.WithRequestID(p.logger, requestID) // Parse schema schemaLoader := gojsonschema.NewStringLoader(params.Schema) @@ -165,7 +170,7 @@ func (p *JSONSchemaGuardrailPolicy) validatePayload(payload []byte, params JSONS if params.JsonPath != "" { extractedValue, err := extractValueFromJSONPathForSchema(payload, params.JsonPath) if err != nil { - slog.Debug("JSONSchemaGuardrail: Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) + log.Debug("Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) return p.buildErrorResponse("Error extracting value from JSONPath", err, isResponse, params.ShowAssessment, nil) } documentLoader = gojsonschema.NewBytesLoader(extractedValue) @@ -176,7 +181,7 @@ func (p *JSONSchemaGuardrailPolicy) validatePayload(payload []byte, params JSONS // Validate against schema result, err := gojsonschema.Validate(schemaLoader, documentLoader) if err != nil { - slog.Debug("JSONSchemaGuardrail: Error validating schema", "error", err, "isResponse", isResponse) + log.Debug("Error validating schema", "error", err, "isResponse", isResponse) return p.buildErrorResponse("Error validating schema", err, isResponse, params.ShowAssessment, nil) } @@ -189,7 +194,7 @@ func (p *JSONSchemaGuardrailPolicy) validatePayload(payload []byte, params JSONS } if !validationPassed { - slog.Debug("JSONSchemaGuardrail: Validation failed", "valid", result.Valid(), "invert", params.Invert, "errorCount", len(result.Errors()), "isResponse", isResponse) + log.Debug("Validation failed", "valid", result.Valid(), "invert", params.Invert, "errorCount", len(result.Errors()), "isResponse", isResponse) var reason string if params.Invert { reason = "JSON schema validation passed but invert is enabled" @@ -199,7 +204,7 @@ func (p *JSONSchemaGuardrailPolicy) validatePayload(payload []byte, params JSONS return p.buildErrorResponse(reason, nil, isResponse, params.ShowAssessment, result.Errors()) } - slog.Debug("JSONSchemaGuardrail: Validation passed", "invert", params.Invert, "isResponse", isResponse) + log.Debug("Validation passed", "invert", params.Invert, "isResponse", isResponse) if isResponse { return policy.UpstreamResponseModifications{} } diff --git a/gateway/policies/modify-headers/v0.1.0/go.sum b/gateway/policies/modify-headers/v0.1.0/go.sum index e705cd5f2..a4dd64395 100644 --- a/gateway/policies/modify-headers/v0.1.0/go.sum +++ b/gateway/policies/modify-headers/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:OmZv0Kltc/fOtgRdsMikhodQAWZG+lVjNPtOZxl/2OQ= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:byr46IKr+KyUuPT7hm/Si+KosOtLQt5tjMbHFhexQgM= +github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= +github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/modify-headers/v0.1.0/modifyheaders.go b/gateway/policies/modify-headers/v0.1.0/modifyheaders.go index b8f19d3e3..dc95bcdf7 100644 --- a/gateway/policies/modify-headers/v0.1.0/modifyheaders.go +++ b/gateway/policies/modify-headers/v0.1.0/modifyheaders.go @@ -2,6 +2,7 @@ package modifyheaders import ( "fmt" + "log/slog" "strings" policy "github.com/wso2/api-platform/sdk/gateway/policy/v1alpha" @@ -10,15 +11,6 @@ import ( // HeaderAction represents the action to perform on a header type HeaderAction string -var ins = &ModifyHeadersPolicy{} - -func GetPolicy( - metadata policy.PolicyMetadata, - params map[string]interface{}, -) (policy.Policy, error) { - return ins, nil -} - const ( ActionSet HeaderAction = "SET" ActionAppend HeaderAction = "APPEND" @@ -33,7 +25,20 @@ type HeaderModification struct { } // ModifyHeadersPolicy implements comprehensive header manipulation for both request and response -type ModifyHeadersPolicy struct{} +type ModifyHeadersPolicy struct { + logger *slog.Logger +} + +func GetPolicy( + metadata policy.PolicyMetadata, + params map[string]interface{}, + logger *slog.Logger, +) (policy.Policy, error) { + p := &ModifyHeadersPolicy{ + logger: logger, + } + return p, nil +} // Mode returns the processing mode for this policy func (p *ModifyHeadersPolicy) Mode() policy.ProcessingMode { diff --git a/gateway/policies/regex-guardrail/v0.1.0/regexguardrail.go b/gateway/policies/regex-guardrail/v0.1.0/regexguardrail.go index 49085e629..e4b725b26 100644 --- a/gateway/policies/regex-guardrail/v0.1.0/regexguardrail.go +++ b/gateway/policies/regex-guardrail/v0.1.0/regexguardrail.go @@ -16,6 +16,7 @@ const ( // RegexGuardrailPolicy implements regex-based content validation type RegexGuardrailPolicy struct { + logger *slog.Logger hasRequestParams bool hasResponseParams bool requestParams RegexGuardrailPolicyParams @@ -32,8 +33,11 @@ type RegexGuardrailPolicyParams struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - p := &RegexGuardrailPolicy{} + p := &RegexGuardrailPolicy{ + logger: logger, + } // Extract and parse request parameters if present if requestParamsRaw, ok := params["request"].(map[string]interface{}); ok { @@ -60,7 +64,7 @@ func GetPolicy( return nil, fmt.Errorf("at least one of 'request' or 'response' parameters must be provided") } - slog.Debug("RegexGuardrail: Policy initialized", "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) + p.logger.Debug("Policy initialized", "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) return p, nil } @@ -139,7 +143,7 @@ func (p *RegexGuardrailPolicy) OnRequest(ctx *policy.RequestContext, params map[ if ctx.Body != nil { content = ctx.Body.Content } - return p.validatePayload(content, p.requestParams, false).(policy.RequestAction) + return p.validatePayload(content, p.requestParams, false, ctx.RequestID).(policy.RequestAction) } // OnResponse validates response body against regex pattern @@ -152,11 +156,12 @@ func (p *RegexGuardrailPolicy) OnResponse(ctx *policy.ResponseContext, params ma if ctx.ResponseBody != nil { content = ctx.ResponseBody.Content } - return p.validatePayload(content, p.responseParams, true).(policy.ResponseAction) + return p.validatePayload(content, p.responseParams, true, ctx.RequestID).(policy.ResponseAction) } // validatePayload validates payload against regex pattern -func (p *RegexGuardrailPolicy) validatePayload(payload []byte, params RegexGuardrailPolicyParams, isResponse bool) interface{} { +func (p *RegexGuardrailPolicy) validatePayload(payload []byte, params RegexGuardrailPolicyParams, isResponse bool, requestID string) interface{} { + log := policy.WithRequestID(p.logger, requestID) // Nothing to validate (avoid blocking no-body requests / 204 responses) if len(payload) == 0 { if isResponse { @@ -167,14 +172,14 @@ func (p *RegexGuardrailPolicy) validatePayload(payload []byte, params RegexGuard // Extract value using JSONPath extractedValue, err := utils.ExtractStringValueFromJsonpath(payload, params.JsonPath) if err != nil { - slog.Debug("RegexGuardrail: Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) + log.Debug("Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) return p.buildErrorResponse("Error extracting value from JSONPath", err, isResponse, params.ShowAssessment) } // Compile regex pattern compiledRegex, err := regexp.Compile(params.Regex) if err != nil { - slog.Debug("RegexGuardrail: Invalid regex pattern", "regex", params.Regex, "error", err, "isResponse", isResponse) + log.Debug("Invalid regex pattern", "regex", params.Regex, "error", err, "isResponse", isResponse) return p.buildErrorResponse("Invalid regex pattern", err, isResponse, params.ShowAssessment) } matched := compiledRegex.MatchString(extractedValue) @@ -188,11 +193,11 @@ func (p *RegexGuardrailPolicy) validatePayload(payload []byte, params RegexGuard } if !validationPassed { - slog.Debug("RegexGuardrail: Validation failed", "regex", params.Regex, "matched", matched, "invert", params.Invert, "isResponse", isResponse) + log.Debug("Validation failed", "regex", params.Regex, "matched", matched, "invert", params.Invert, "isResponse", isResponse) return p.buildErrorResponse("Violated regular expression: "+params.Regex, nil, isResponse, params.ShowAssessment) } - slog.Debug("RegexGuardrail: Validation passed", "regex", params.Regex, "matched", matched, "invert", params.Invert, "isResponse", isResponse) + log.Debug("Validation passed", "regex", params.Regex, "matched", matched, "invert", params.Invert, "isResponse", isResponse) if isResponse { return policy.UpstreamResponseModifications{} diff --git a/gateway/policies/respond/v0.1.0/respond.go b/gateway/policies/respond/v0.1.0/respond.go index 6ef866b3c..e6691e2ee 100644 --- a/gateway/policies/respond/v0.1.0/respond.go +++ b/gateway/policies/respond/v0.1.0/respond.go @@ -1,20 +1,26 @@ package respond import ( + "log/slog" + policy "github.com/wso2/api-platform/sdk/gateway/policy/v1alpha" ) // RespondPolicy implements immediate response functionality // This policy terminates the request processing and returns an immediate response to the client -type RespondPolicy struct{} - -var ins = &RespondPolicy{} +type RespondPolicy struct { + logger *slog.Logger +} func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - return ins, nil + p := &RespondPolicy{ + logger: logger, + } + return p, nil } // Mode returns the processing mode for this policy diff --git a/gateway/policy-engine/go.sum b/gateway/policy-engine/go.sum index 1ae3f840e..679516589 100644 --- a/gateway/policy-engine/go.sum +++ b/gateway/policy-engine/go.sum @@ -1,148 +1,63 @@ cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= -cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= -github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= -github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= -github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g= -github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= -github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= -github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= -github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/cel-go v0.26.1 h1:iPbVVEdkhTX++hpe3lzSk7D3G3QSYqLGoHOcEio+UXQ= -github.com/google/cel-go v0.26.1/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= -github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/parsers/yaml v1.1.0 h1:3ltfm9ljprAHt4jxgeYLlFPmUaunuCgu1yILuTXRdM4= -github.com/knadh/koanf/parsers/yaml v1.1.0/go.mod h1:HHmcHXUrp9cOPcuC+2wrr44GTUB0EC+PyfN3HZD9tFg= github.com/knadh/koanf/providers/env v1.1.0 h1:U2VXPY0f+CsNDkvdsG8GcsnK4ah85WwWyJgef9oQMSc= -github.com/knadh/koanf/providers/env v1.1.0/go.mod h1:QhHHHZ87h9JxJAn2czdEl6pdkNnDh/JS1Vtsyt65hTY= github.com/knadh/koanf/providers/file v1.2.1 h1:bEWbtQwYrA+W2DtdBrQWyXqJaJSG3KrP3AESOJYp9wM= -github.com/knadh/koanf/providers/file v1.2.1/go.mod h1:bp1PM5f83Q+TOUu10J/0ApLBd9uIzg+n9UgthfY+nRA= github.com/knadh/koanf/v2 v2.3.0 h1:Qg076dDRFHvqnKG97ZEsi9TAg2/nFTa9hCdcSa1lvlM= -github.com/knadh/koanf/v2 v2.3.0/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= -github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moesif/moesifapi-go v1.1.5 h1:jL3iMSyG4DpT7OJppJQn8reGYifraPJiu5lAAvE/BGQ= -github.com/moesif/moesifapi-go v1.1.5/go.mod h1:wRGgVy0QeiCgnjFEiD13HD2Aa7reI8nZXtCnddNnZGs= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= -github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= -github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= -github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= -github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= -github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= -go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= -go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= -go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= -go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM= -golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2 h1:7LRqPCEdE4TP4/9psdaB7F2nhZFfBiGJomA5sojLWdU= -google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2 h1:2I6GHUeJ/4shcDpoUlLs/2WPnhg7yJwvXtqcMJt9liA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= -google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/gateway/policy-engine/internal/registry/registry.go b/gateway/policy-engine/internal/registry/registry.go index 0ae810eca..9f2b31f4d 100644 --- a/gateway/policy-engine/internal/registry/registry.go +++ b/gateway/policy-engine/internal/registry/registry.go @@ -20,6 +20,7 @@ package registry import ( "fmt" + "log/slog" "sync" policy "github.com/wso2/api-platform/sdk/gateway/policy/v1alpha" @@ -125,8 +126,11 @@ func (r *PolicyRegistry) CreateInstance( // Merge resolved initParams with runtime params (params override initParams) mergedParams := mergeParams(initParams, params) - // Call factory to create instance with merged params - instance, err := factory(metadata, mergedParams) + // Create logger with policy name + logger := slog.Default().With("policy", name) + + // Call factory to create instance with merged params and logger + instance, err := factory(metadata, mergedParams, logger) if err != nil { return nil, nil, fmt.Errorf("failed to create policy instance %s: %w", key, err) } diff --git a/go.work.sum b/go.work.sum index 2e509818c..eb20d5e03 100644 --- a/go.work.sum +++ b/go.work.sum @@ -986,6 +986,8 @@ github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHG github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0/go.mod h1:ccdDYaY5+gO+cbnQdFxEXqfy0RkoV25H3jLXUDNM3wg= github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= +github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= +github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= github.com/apache/arrow/go/v14 v14.0.2 h1:N8OkaJEOfI3mEZt07BIkvo4sC6XDbL+48MBPWO5IONw= github.com/apache/arrow/go/v14 v14.0.2/go.mod h1:u3fgh3EdgN/YQ8cVQRguVW3R+seMybFg8QBQ5LU+eBY= github.com/apache/arrow/go/v15 v15.0.2 h1:60IliRbiyTWCWjERBCkO1W4Qun9svcYoZrSLcyOsMLE= @@ -1112,7 +1114,6 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWs github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/chzyer/test v0.0.0-20210722231415-061457976a23 h1:dZ0/VyGgQdVGAss6Ju0dt5P0QltE0SFY5Woh6hbIfiQ= github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.16.0/go.mod h1:L7u2Blt2jMM/vLAVgjxluxtBKlz3/GWjB0dMOEngfwE= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -1176,7 +1177,6 @@ github.com/coreos/etcd v3.3.13+incompatible h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3 github.com/coreos/go-etcd v2.0.0+incompatible h1:bXhRBIXoTm9BYHS3gE0TtQuyNZyeEMux2sDi4oo5YOo= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= @@ -1352,7 +1352,6 @@ github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvSc github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= -github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/go-redis/redis v6.15.6+incompatible h1:H9evprGPLI8+ci7fxQx6WNZHJSb7be8FqJQRhdQZ5Sg= github.com/go-redis/redis v6.15.6+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= @@ -1374,7 +1373,6 @@ github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+ github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= @@ -1424,6 +1422,8 @@ github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386/go.mod h1:JDGc github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38 h1:y0Wmhvml7cGnzPa9nocn/fMraMH/lMDdeG+rkx4VgYY= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/cel-go v0.26.1 h1:iPbVVEdkhTX++hpe3lzSk7D3G3QSYqLGoHOcEio+UXQ= +github.com/google/cel-go v0.26.1/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -1652,9 +1652,7 @@ github.com/jolestar/go-commons-pool/v2 v2.1.2 h1:E+XGo58F23t7HtZiC/W6jzO2Ux2IccS github.com/jolestar/go-commons-pool/v2 v2.1.2/go.mod h1:r4NYccrkS5UqP1YQI1COyTZ9UjPJAAGTUxzcsK1kqhY= github.com/jordanlewis/gcassert v0.0.0-20250430164644-389ef753e22e h1:a+PGEeXb+exwBS3NboqXHyxarD9kaboBbrSp+7GuBuc= github.com/jordanlewis/gcassert v0.0.0-20250430164644-389ef753e22e/go.mod h1:ZybsQk6DWyN5t7An1MuPm1gtSZ1xDaTXS9ZjIOxvQrk= -github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= -github.com/jsimonetti/rtnetlink/v2 v2.0.1/go.mod h1:7MoNYNbb3UaDHtF8udiJo/RH6VsTKP1pqKLUTVCvToE= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= @@ -1765,9 +1763,7 @@ github.com/mattn/goveralls v0.0.2 h1:7eJB6EqsPhRVxvwEXGnqdO2sJI0PTsrWoTMXEk9/OQc github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw= github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA= -github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ= github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= github.com/mediocregopher/radix/v3 v3.4.2 h1:galbPBjIwmyREgwGCfQEN4X8lxbJnKBYurgz+VfcStA= @@ -1805,6 +1801,8 @@ github.com/moby/sys/mount v0.3.4 h1:yn5jq4STPztkkzSKpZkLcmjue+bZJ0u2AuQY1iNI1Ww= github.com/moby/sys/mount v0.3.4/go.mod h1:KcQJMbQdJHPlq5lcYT+/CjatWM4PuxKe+XLSVS4J6Os= github.com/moby/sys/reexec v0.1.0 h1:RrBi8e0EBTLEgfruBOFcxtElzRGTEUkeIFaVXgU7wok= github.com/moby/sys/reexec v0.1.0/go.mod h1:EqjBg8F3X7iZe5pU6nRZnYCMUTXoxsjiIfHup5wYIN8= +github.com/moesif/moesifapi-go v1.1.5 h1:jL3iMSyG4DpT7OJppJQn8reGYifraPJiu5lAAvE/BGQ= +github.com/moesif/moesifapi-go v1.1.5/go.mod h1:wRGgVy0QeiCgnjFEiD13HD2Aa7reI8nZXtCnddNnZGs= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/montanaflynn/stats v0.7.0 h1:r3y12KyNxj/Sb/iOE46ws+3mS1+MZca1wlHQFPsY/JU= github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= @@ -1936,7 +1934,6 @@ github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6po github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= @@ -1992,6 +1989,8 @@ github.com/stathat/consistent v1.0.0 h1:ZFJ1QTRn8npNBKW065raSZ8xfOqhpb8vLOkfp4Cc github.com/stathat/consistent v1.0.0/go.mod h1:uajTPbgSygZBJ+V+0mY7meZ8i0XAcZs7AQ6V121XSxw= github.com/stefanberger/go-pkcs11uri v0.0.0-20230803200340-78284954bff6 h1:pnnLyeX7o/5aX8qUQ69P/mLojDqwda8hFOCBTmP/6hw= github.com/stefanberger/go-pkcs11uri v0.0.0-20230803200340-78284954bff6/go.mod h1:39R/xuhNgVhi+K0/zst4TLrJrVmbm6LVgl4A0+ZFS5M= +github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= +github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs= github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -2102,7 +2101,6 @@ go.einride.tech/aip v0.68.1 h1:16/AfSxcQISGN5z9C5lM+0mLYXihrHbQ1onvYTr93aQ= go.einride.tech/aip v0.68.1/go.mod h1:XaFtaj4HuA3Zwk9xoBtTWgNubZ0ZZXv9BZJCkuKuWbg= go.einride.tech/aip v0.73.0/go.mod h1:Mj7rFbmXEgw0dq1dqJ7JGMvYCZZVxmGOR3S4ZcV5LvQ= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= @@ -2415,6 +2413,7 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= diff --git a/sdk/gateway/policy/v1alpha/interface.go b/sdk/gateway/policy/v1alpha/interface.go index dcfe50489..d2a439a66 100644 --- a/sdk/gateway/policy/v1alpha/interface.go +++ b/sdk/gateway/policy/v1alpha/interface.go @@ -1,5 +1,7 @@ package policyv1alpha +import "log/slog" + // PolicyMetadata contains metadata passed to GetPolicy for instance creation // This will be passed to the GetPolicy factory function to provide context about policy type PolicyMetadata struct { @@ -45,6 +47,7 @@ type Policy interface { // func GetPolicy( // metadata PolicyMetadata, // params map[string]interface{}, +// logger *slog.Logger, // ) (Policy, error) // // Parameters: @@ -52,6 +55,8 @@ type Policy interface { // - params: Merged parameters combining static config (from policy definition // with resolved ${config} references) and runtime parameters (from API // configuration). Runtime params override static config on key conflicts. +// - logger: Pre-configured logger with policy name as a structured field. +// Use this for all policy logging to ensure consistent format. // // Returns: // - Policy instance (can be singleton, cached, or per-route) @@ -60,7 +65,7 @@ type Policy interface { // The policy should perform all initialization, validation, and preprocessing // in GetPolicy. This includes parsing configuration, caching expensive operations, // and setting up any required state. -type PolicyFactory func(metadata PolicyMetadata, params map[string]interface{}) (Policy, error) +type PolicyFactory func(metadata PolicyMetadata, params map[string]interface{}, logger *slog.Logger) (Policy, error) // ProcessingMode declares a policy's processing requirements for each phase // Used by the kernel to optimize execution (skip unnecessary phases, buffer strategically) diff --git a/sdk/go.mod b/sdk/go.mod index 077f58ef7..fbe5cf801 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -59,10 +59,10 @@ require ( github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/prometheus/client_golang v1.22.0 // indirect + github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.62.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/samber/lo v1.27.0 // indirect github.com/shirou/gopsutil/v3 v3.23.12 // indirect @@ -105,6 +105,7 @@ require ( go.uber.org/automaxprocs v1.5.3 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/crypto v0.46.0 // indirect golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect golang.org/x/net v0.48.0 // indirect diff --git a/sdk/go.sum b/sdk/go.sum index f9dfac120..a7d991d28 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -418,8 +418,7 @@ github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDf github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -431,15 +430,13 @@ github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI= github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= @@ -624,6 +621,7 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= From 49045747796d1ab4d4d43837d5d26b1870299c0c Mon Sep 17 00:00:00 2001 From: Renuka Fernando Date: Wed, 21 Jan 2026 23:38:29 +0530 Subject: [PATCH 3/6] Update launch.json with system manifest file --- .vscode/launch.json | 1 + sdk/gateway/policy/v1alpha/logger.go | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 sdk/gateway/policy/v1alpha/logger.go diff --git a/.vscode/launch.json b/.vscode/launch.json index ea1f5cfb2..74e452c33 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -39,6 +39,7 @@ "program": "${workspaceFolder}/gateway/gateway-builder/cmd/builder", "args": [ "-manifest-lock", "${workspaceFolder}/gateway/policies/policy-manifest-lock.yaml", + "-system-manifest-lock", "${workspaceFolder}/gateway/system-policies/system-policy-manifest-lock.yaml", "-policy-engine-src", "${workspaceFolder}/gateway/policy-engine", "-out-dir", "${workspaceFolder}/gateway/gateway-builder/target/output", "-log-level", "debug", diff --git a/sdk/gateway/policy/v1alpha/logger.go b/sdk/gateway/policy/v1alpha/logger.go new file mode 100644 index 000000000..22ff0095b --- /dev/null +++ b/sdk/gateway/policy/v1alpha/logger.go @@ -0,0 +1,17 @@ +package policyv1alpha + +import "log/slog" + +// WithRequestID enriches a logger with a request ID for correlation. +// Use this in OnRequest and OnResponse methods to add request-specific context. +// +// Example: +// +// func (p *MyPolicy) OnRequest(ctx *RequestContext, params map[string]interface{}) RequestAction { +// log := policy.WithRequestID(p.logger, ctx.RequestID) +// log.Debug("Processing request", "path", ctx.Path) +// return RequestAction{} +// } +func WithRequestID(logger *slog.Logger, requestID string) *slog.Logger { + return logger.With("requestId", requestID) +} From 5b70c6e2b43862975f70fc3740bcfe53a73614f9 Mon Sep 17 00:00:00 2001 From: Renuka Fernando Date: Thu, 22 Jan 2026 12:21:47 +0530 Subject: [PATCH 4/6] Update policies to use the new standard logger --- .../gateway-controller/pkg/xds/translator.go | 10 +- gateway/it/go.mod | 28 +- gateway/it/go.sum | 42 +- .../policies/advanced-ratelimit/v0.1.0/go.mod | 2 +- .../advanced-ratelimit/v0.1.0/ratelimit.go | 72 +- gateway/policies/api-key-auth/v0.1.0/go.mod | 2 +- gateway/policies/api-key-auth/v0.1.0/go.sum | 4 +- .../v0.1.0/awsbedrockguardrail.go | 37 +- .../aws-bedrock-guardrail/v0.1.0/go.mod | 2 +- .../aws-bedrock-guardrail/v0.1.0/go.sum | 4 +- .../azurecontentsafetycontentmoderation.go | 29 +- .../v0.1.0/go.mod | 2 +- .../v0.1.0/go.sum | 4 +- gateway/policies/basic-auth/v0.1.0/go.mod | 2 +- gateway/policies/basic-auth/v0.1.0/go.sum | 4 +- .../basic-ratelimit/v0.1.0/basic_ratelimit.go | 5 +- .../policies/basic-ratelimit/v0.1.0/go.mod | 2 +- .../content-length-guardrail/v0.1.0/go.mod | 2 +- .../content-length-guardrail/v0.1.0/go.sum | 4 +- gateway/policies/cors/v0.1.0/go.mod | 2 +- gateway/policies/cors/v0.1.0/go.sum | 4 +- .../json-schema-guardrail/v0.1.0/go.mod | 2 +- .../json-schema-guardrail/v0.1.0/go.sum | 4 +- gateway/policies/jwt-auth/v0.1.0/go.mod | 2 +- gateway/policies/jwt-auth/v0.1.0/go.sum | 4 +- gateway/policies/jwt-auth/v0.1.0/jwtauth.go | 3 +- .../policies/jwt-auth/v0.1.0/jwtauth_test.go | 33 +- gateway/policies/mcp-auth/v0.1.0/go.mod | 2 +- gateway/policies/mcp-auth/v0.1.0/go.sum | 4 +- gateway/policies/mcp-auth/v0.1.0/mcp-auth.go | 5 +- .../policies/mcp-auth/v0.1.0/mcp-auth_test.go | 3 +- .../policies/mcp-authz/v0.1.0/mcp-authz.go | 5 +- .../policies/model-round-robin/v0.1.0/go.mod | 4 +- .../policies/model-round-robin/v0.1.0/go.sum | 4 +- .../model-round-robin/v0.1.0/roundrobin.go | 70 +- .../model-weighted-round-robin/v0.1.0/go.mod | 4 +- .../model-weighted-round-robin/v0.1.0/go.sum | 4 +- .../v0.1.0/weightedroundrobin.go | 70 +- gateway/policies/modify-headers/v0.1.0/go.mod | 2 +- gateway/policies/modify-headers/v0.1.0/go.sum | 4 +- .../policies/pii-masking-regex/v0.1.0/go.mod | 2 +- .../policies/pii-masking-regex/v0.1.0/go.sum | 4 +- .../v0.1.0/piimaskingregex.go | 17 +- .../policies/prompt-decorator/v0.1.0/go.mod | 2 +- .../policies/prompt-decorator/v0.1.0/go.sum | 4 +- .../v0.1.0/promptdecorator.go | 52 +- .../policies/prompt-template/v0.1.0/go.mod | 2 +- .../policies/prompt-template/v0.1.0/go.sum | 4 +- .../prompt-template/v0.1.0/prompttemplate.go | 22 +- .../policies/regex-guardrail/v0.1.0/go.mod | 2 +- .../policies/regex-guardrail/v0.1.0/go.sum | 4 +- gateway/policies/respond/v0.1.0/go.mod | 2 +- gateway/policies/respond/v0.1.0/go.sum | 4 +- gateway/policies/semantic-cache/v0.1.0/go.mod | 9 +- gateway/policies/semantic-cache/v0.1.0/go.sum | 18 +- .../semantic-cache/v0.1.0/semanticcache.go | 30 +- .../semantic-prompt-guard/v0.1.0/go.mod | 2 +- .../semantic-prompt-guard/v0.1.0/go.sum | 4 +- .../v0.1.0/semanticpromptguard.go | 42 +- .../sentence-count-guardrail/v0.1.0/go.mod | 2 +- .../sentence-count-guardrail/v0.1.0/go.sum | 4 +- .../v0.1.0/sentencecountguardrail.go | 22 +- gateway/policies/url-guardrail/v0.1.0/go.mod | 2 +- gateway/policies/url-guardrail/v0.1.0/go.sum | 4 +- .../url-guardrail/v0.1.0/urlguardrail.go | 24 +- .../word-count-guardrail/v0.1.0/go.mod | 2 +- .../word-count-guardrail/v0.1.0/go.sum | 4 +- .../v0.1.0/wordcountguardrail.go | 20 +- gateway/policy-engine/go.mod | 2 +- gateway/policy-engine/go.sum | 655 ++++++++++++++++++ .../count-letters/v1.0.0/go.mod | 2 +- .../count-letters/v1.0.0/go.sum | 4 +- .../uppercase-body/v1.0.0/go.mod | 2 +- .../uppercase-body/v1.0.0/go.sum | 4 +- .../analytics/v0.1.0/analytics.go | 1 + .../system-policies/analytics/v0.1.0/go.mod | 2 +- .../system-policies/analytics/v0.1.0/go.sum | 4 +- go.work.sum | 70 +- sdk/go.mod | 26 +- sdk/go.sum | 330 +-------- 80 files changed, 1194 insertions(+), 710 deletions(-) diff --git a/gateway/gateway-controller/pkg/xds/translator.go b/gateway/gateway-controller/pkg/xds/translator.go index e14973a12..7e2d07da6 100644 --- a/gateway/gateway-controller/pkg/xds/translator.go +++ b/gateway/gateway-controller/pkg/xds/translator.go @@ -1847,10 +1847,12 @@ func (t *Translator) createExtProcFilter() (*hcm.HttpFilter, error) { AllowModeOverride: policyEngine.AllowModeOverride, RequestAttributes: []string{constants.ExtProcRequestAttributeRouteName, constants.ExtProcRequestAttributeRouteMetadata}, ProcessingMode: &extproc.ProcessingMode{ - RequestHeaderMode: extproc.ProcessingMode_SEND, - RequestBodyMode: extproc.ProcessingMode_FULL_DUPLEX_STREAMED, - ResponseHeaderMode: extproc.ProcessingMode_SEND, - ResponseBodyMode: extproc.ProcessingMode_FULL_DUPLEX_STREAMED, + RequestHeaderMode: extproc.ProcessingMode_SEND, + RequestBodyMode: extproc.ProcessingMode_FULL_DUPLEX_STREAMED, + RequestTrailerMode: extproc.ProcessingMode_SEND, + ResponseHeaderMode: extproc.ProcessingMode_SEND, + ResponseBodyMode: extproc.ProcessingMode_FULL_DUPLEX_STREAMED, + ResponseTrailerMode: extproc.ProcessingMode_SEND, }, MessageTimeout: durationpb.New(time.Duration(policyEngine.MessageTimeoutMs) * time.Millisecond), MutationRules: &mutationrules.HeaderMutationRules{ diff --git a/gateway/it/go.mod b/gateway/it/go.mod index 1d838f770..472a58e9c 100644 --- a/gateway/it/go.mod +++ b/gateway/it/go.mod @@ -15,19 +15,19 @@ require ( github.com/Microsoft/go-winio v0.6.2 // indirect github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect - github.com/aws/aws-sdk-go-v2 v1.31.0 // indirect - github.com/aws/aws-sdk-go-v2/config v1.27.27 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.27 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 // indirect - github.com/aws/smithy-go v1.21.0 // indirect + github.com/aws/aws-sdk-go-v2 v1.36.3 // indirect + github.com/aws/aws-sdk-go-v2/config v1.29.9 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.62 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.25.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.29.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.33.17 // indirect + github.com/aws/smithy-go v1.22.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/buger/goterm v1.0.4 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect @@ -73,6 +73,7 @@ require ( github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.23.0 // indirect + github.com/go-sql-driver/mysql v1.4.1 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/gofrs/flock v0.12.1 // indirect github.com/gofrs/uuid v4.3.1+incompatible // indirect @@ -191,6 +192,7 @@ require ( golang.org/x/term v0.38.0 // indirect golang.org/x/text v0.32.0 // indirect golang.org/x/time v0.12.0 // indirect + google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2 // indirect google.golang.org/grpc v1.78.0 // indirect diff --git a/gateway/it/go.sum b/gateway/it/go.sum index 1f18deb41..07e42dcb4 100644 --- a/gateway/it/go.sum +++ b/gateway/it/go.sum @@ -25,32 +25,19 @@ github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aws/aws-sdk-go-v2 v1.31.0 h1:3V05LbxTSItI5kUqNwhJrrrY1BAXxXt0sN0l72QmG5U= -github.com/aws/aws-sdk-go-v2 v1.31.0/go.mod h1:ztolYtaEUtdpf9Wftr31CJfLVjOnD/CVRkKOOYgF8hA= -github.com/aws/aws-sdk-go-v2/config v1.27.27 h1:HdqgGt1OAP0HkEDDShEl0oSYa9ZZBSOmKpdpsDMdO90= -github.com/aws/aws-sdk-go-v2/config v1.27.27/go.mod h1:MVYamCg76dFNINkZFu4n4RjDixhVr51HLj4ErWzrVwg= -github.com/aws/aws-sdk-go-v2/credentials v1.17.27 h1:2raNba6gr2IfA0eqqiP2XiQ0UVOpGPgDSi0I9iAP+UI= -github.com/aws/aws-sdk-go-v2/credentials v1.17.27/go.mod h1:gniiwbGahQByxan6YjQUMcW4Aov6bLC3m+evgcoN4r4= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 h1:C/d03NAmh8C4BZXhuRNboF/DqhBkBCeDiJDcaqIT5pA= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14/go.mod h1:7I0Ju7p9mCIdlrfS+JCgqcYD0VXz/N4yozsox+0o078= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 h1:SoNJ4RlFEQEbtDcCEt+QG56MY4fm4W8rYirAmq+/DdU= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15/go.mod h1:U9ke74k1n2bf+RIgoX1SXFed1HLs51OgUSs+Ph0KJP8= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 h1:C6WHdGnTDIYETAm5iErQUiVNsclNx9qbJVPIt03B6bI= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15/go.mod h1:ZQLZqhcu+JhSrA9/NXRm8SkDvsycE+JkV3WGY41e+IM= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 h1:dT3MqvGhSoaIhRseqw2I0yH81l7wiR2vjs57O51EAm8= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3/go.mod h1:GlAeCkHwugxdHaueRr4nhPuY+WW+gR8UjlcqzPr1SPI= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 h1:HGErhhrxZlQ044RiM+WdoZxp0p+EGM62y3L6pwA4olE= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17/go.mod h1:RkZEx4l0EHYDJpWppMJ3nD9wZJAa8/0lq9aVC+r2UII= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 h1:BXx0ZIxvrJdSgSvKTZ+yRBeSqqgPM89VPlulEcl37tM= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.4/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrAaCYQR72t0wrSBfoesUE= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 h1:ZsDKRLXGWHk8WdtyYMoGNO7bTudrvuKpDKgMVRlepGE= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.3/go.mod h1:zwySh8fpFyXp9yOr/KVzxOl8SRqgf/IDw5aUt9UKFcQ= -github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= -github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= +github.com/aws/aws-sdk-go-v2 v1.36.3 h1:mJoei2CxPutQVxaATCzDUjcZEjVRdpsiiXi2o38yqWM= +github.com/aws/aws-sdk-go-v2/config v1.29.9 h1:Kg+fAYNaJeGXp1vmjtidss8O2uXIsXwaRqsQJKXVr+0= +github.com/aws/aws-sdk-go-v2/credentials v1.17.62 h1:fvtQY3zFzYJ9CfixuAQ96IxDrBajbBWGqjNTCa79ocU= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 h1:ZK5jHhnrioRkUNOc+hOgQKlUL5JeC3S6JgLxtQ+Rm0Q= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 h1:SZwFm17ZUNNg5Np0ioo/gq8Mn6u9w19Mri8DnJ15Jf0= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 h1:dM9/92u2F1JbDaGooxTq18wmmFzbJRfXfVfy96/1CXM= +github.com/aws/aws-sdk-go-v2/service/sso v1.25.1 h1:8JdC7Gr9NROg1Rusk25IcZeTO59zLxsKgE0gkh5O6h0= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.29.1 h1:KwuLovgQPcdjNMfFt9OhUd9a2OwcOKhxfvF4glTzLuA= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.17 h1:PZV5W8yk4OtH1JAuhV2PXwwO9v5G5Aoj+eMCn4T+1Kc= +github.com/aws/smithy-go v1.22.2 h1:6D9hW43xKFrRx/tXXfAlIZc4JI+yQe6snnWcQyxSyLQ= github.com/beorn7/perks v0.0.0-20150223135152-b965b613227f/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -197,8 +184,8 @@ github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= -github.com/go-sql-driver/mysql v1.3.0 h1:pgwjLi/dvffoP9aabwkT3AKpXQM93QARkjFhDDqC1UE= github.com/go-sql-driver/mysql v1.3.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= @@ -645,6 +632,7 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2 h1:7LRqPCEdE4TP4/9psdaB7F2nhZFfBiGJomA5sojLWdU= google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2 h1:2I6GHUeJ/4shcDpoUlLs/2WPnhg7yJwvXtqcMJt9liA= diff --git a/gateway/policies/advanced-ratelimit/v0.1.0/go.mod b/gateway/policies/advanced-ratelimit/v0.1.0/go.mod index d8192b6d9..cc4719227 100644 --- a/gateway/policies/advanced-ratelimit/v0.1.0/go.mod +++ b/gateway/policies/advanced-ratelimit/v0.1.0/go.mod @@ -5,7 +5,7 @@ go 1.25.1 require ( github.com/google/cel-go v0.26.1 github.com/redis/go-redis/v9 v9.17.2 - github.com/wso2/api-platform/sdk v0.3.1 + github.com/wso2/api-platform/sdk v0.3.3 ) require ( diff --git a/gateway/policies/advanced-ratelimit/v0.1.0/ratelimit.go b/gateway/policies/advanced-ratelimit/v0.1.0/ratelimit.go index ed212bb3a..d4797b6ea 100644 --- a/gateway/policies/advanced-ratelimit/v0.1.0/ratelimit.go +++ b/gateway/policies/advanced-ratelimit/v0.1.0/ratelimit.go @@ -51,6 +51,7 @@ type QuotaRuntime struct { // RateLimitPolicy defines the policy for rate limiting type RateLimitPolicy struct { + logger *slog.Logger quotas []QuotaRuntime // Per-quota configurations with independent limiters routeName string // From metadata, used as default key apiId string // From metadata, API identifier @@ -71,6 +72,7 @@ type RateLimitPolicy struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { // Store route name for default key routeName := metadata.RouteName @@ -175,7 +177,7 @@ func GetPolicy( if !redisFailOpen { return nil, fmt.Errorf("redis connection failed and failureMode=closed: %w", err) } - slog.Warn("Redis connection failed but failureMode=open", "error", err) + logger.Warn("Redis connection failed but failureMode=open", "error", err) } // Create a limiter per quota @@ -229,7 +231,7 @@ func GetPolicy( // Try to get cached limiter if cached, ok := memoryLimiterCache.Load(cacheKey); ok { q.Limiter = cached.(limiter.Limiter) - slog.Debug("Reusing cached memory limiter", + logger.Debug("Reusing cached memory limiter", "route", routeName, "apiName", apiName, "quota", q.Name, "cacheKey", cacheKey[:16]) } else { @@ -251,7 +253,7 @@ func GetPolicy( // Store in cache memoryLimiterCache.Store(cacheKey, rlLimiter) q.Limiter = rlLimiter - slog.Debug("Created and cached new memory limiter", + logger.Debug("Created and cached new memory limiter", "route", routeName, "apiName", apiName, "quota", q.Name, "cacheKey", cacheKey[:16]) } @@ -321,6 +323,8 @@ func (p *RateLimitPolicy) OnRequest( ctx *policy.RequestContext, params map[string]interface{}, ) policy.RequestAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) + var quotaResults []quotaResult var quotaKeys = make(map[string]string) // Store keys for response phase @@ -328,7 +332,7 @@ func (p *RateLimitPolicy) OnRequest( q := &p.quotas[i] // Extract rate limit key for this quota - key := p.extractQuotaKey(ctx, q) + key := p.extractQuotaKey(ctx, q, log) quotaName := q.Name if quotaName == "" { quotaName = fmt.Sprintf("quota-%d", i) @@ -342,7 +346,7 @@ func (p *RateLimitPolicy) OnRequest( // Extract cost from request (headers, metadata, or body) requestCost, extracted := q.CostExtractor.ExtractRequestCost(ctx) if !extracted { - slog.Debug("Request cost extraction failed, using default", + log.Debug("Request cost extraction failed, using default", "key", key, "quota", quotaName, "defaultCost", requestCost) } @@ -356,15 +360,15 @@ func (p *RateLimitPolicy) OnRequest( result, err := q.Limiter.AllowN(context.Background(), key, cost) if err != nil { if p.backend == "redis" && p.redisFailOpen { - slog.Warn("Rate limit check failed (fail-open)", "error", err, "quota", quotaName) + log.Warn("Rate limit check failed (fail-open)", "error", err, "quota", quotaName) continue } - slog.Error("Rate limit check failed (fail-closed)", "error", err, "quota", quotaName) + log.Error("Rate limit check failed (fail-closed)", "error", err, "quota", quotaName) return p.buildRateLimitResponse(nil, quotaName, quotaResults) } if !result.Allowed { - slog.Debug("Rate limit exceeded", "key", key, "cost", cost, "quota", quotaName) + log.Debug("Rate limit exceeded", "key", key, "cost", cost, "quota", quotaName) return p.buildRateLimitResponse(result, quotaName, quotaResults) } @@ -382,16 +386,16 @@ func (p *RateLimitPolicy) OnRequest( result, err := q.Limiter.AllowN(context.Background(), key, 0) if err != nil { if p.backend == "redis" && p.redisFailOpen { - slog.Warn("Rate limit pre-check failed (fail-open)", "error", err, "key", key, "quota", quotaName) + log.Warn("Rate limit pre-check failed (fail-open)", "error", err, "key", key, "quota", quotaName) continue } - slog.Error("Rate limit pre-check failed (fail-closed)", "error", err, "key", key, "quota", quotaName) + log.Error("Rate limit pre-check failed (fail-closed)", "error", err, "key", key, "quota", quotaName) return p.buildRateLimitResponse(nil, quotaName, quotaResults) } // If remaining <= 0, quota is exhausted - block the request if result != nil && result.Remaining <= 0 { - slog.Debug("Cost extraction mode: quota exhausted, blocking request", + log.Debug("Cost extraction mode: quota exhausted, blocking request", "key", key, "remaining", result.Remaining, "quota", quotaName) return p.buildRateLimitResponse(result, quotaName, quotaResults) } @@ -411,15 +415,15 @@ func (p *RateLimitPolicy) OnRequest( result, err := q.Limiter.AllowN(context.Background(), key, cost) if err != nil { if p.backend == "redis" && p.redisFailOpen { - slog.Warn("Rate limit check failed (fail-open)", "error", err, "quota", quotaName) + log.Warn("Rate limit check failed (fail-open)", "error", err, "quota", quotaName) continue } - slog.Error("Rate limit check failed (fail-closed)", "error", err, "quota", quotaName) + log.Error("Rate limit check failed (fail-closed)", "error", err, "quota", quotaName) return p.buildRateLimitResponse(nil, quotaName, quotaResults) } if !result.Allowed { - slog.Debug("Rate limit exceeded", "key", key, "quota", quotaName) + log.Debug("Rate limit exceeded", "key", key, "quota", quotaName) return p.buildRateLimitResponse(result, quotaName, quotaResults) } @@ -443,6 +447,8 @@ func (p *RateLimitPolicy) OnResponse( ctx *policy.ResponseContext, params map[string]interface{}, ) policy.ResponseAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) + // Retrieve stored keys for cost extraction quotaKeysRaw, hasKeys := ctx.Metadata[rateLimitKeysKey] quotaKeys := make(map[string]string) @@ -482,14 +488,14 @@ func (p *RateLimitPolicy) OnResponse( if q.CostExtractionEnabled && q.CostExtractor != nil && q.CostExtractor.HasResponsePhaseSources() { key := quotaKeys[quotaName] if key == "" { - slog.Warn("Rate limit key not found for cost extraction", "quota", quotaName) + log.Warn("Rate limit key not found for cost extraction", "quota", quotaName) continue } // Extract actual cost from response actualCost, extracted := q.CostExtractor.ExtractResponseCost(ctx) if !extracted { - slog.Debug("Cost extraction failed, using default", "key", key, "quota", quotaName, "defaultCost", actualCost) + log.Debug("Cost extraction failed, using default", "key", key, "quota", quotaName, "defaultCost", actualCost) } // Clamp cost to minimum of 0 (allow 0 cost for free operations) @@ -510,17 +516,17 @@ func (p *RateLimitPolicy) OnResponse( result, err := q.Limiter.AllowN(context.Background(), key, int64(actualCost)) if err != nil { if p.backend == "redis" && p.redisFailOpen { - slog.Warn("Post-response rate limit check failed (fail-open)", + log.Warn("Post-response rate limit check failed (fail-open)", "error", err, "key", key, "cost", actualCost, "quota", quotaName) continue } - slog.Error("Post-response rate limit check failed (fail-closed)", + log.Error("Post-response rate limit check failed (fail-closed)", "error", err, "key", key, "cost", actualCost, "quota", quotaName) continue } if result != nil && !result.Allowed { - slog.Warn("Rate limit exceeded post-response", + log.Warn("Rate limit exceeded post-response", "key", key, "cost", actualCost, "limit", result.Limit, "remaining", result.Remaining, "quota", quotaName) } @@ -574,26 +580,26 @@ func (p *RateLimitPolicy) getMostRestrictiveResult(results []*limiter.Result) *l } // extractQuotaKey builds the rate limit key from quota's key extraction components -func (p *RateLimitPolicy) extractQuotaKey(ctx *policy.RequestContext, q *QuotaRuntime) string { +func (p *RateLimitPolicy) extractQuotaKey(ctx *policy.RequestContext, q *QuotaRuntime, log *slog.Logger) string { if len(q.KeyExtraction) == 0 { return p.routeName } if len(q.KeyExtraction) == 1 { - return p.extractKeyComponent(ctx, q.KeyExtraction[0]) + return p.extractKeyComponent(ctx, q.KeyExtraction[0], log) } // Multiple components - join with ':' in the order specified parts := make([]string, 0, len(q.KeyExtraction)) for _, comp := range q.KeyExtraction { - part := p.extractKeyComponent(ctx, comp) + part := p.extractKeyComponent(ctx, comp, log) parts = append(parts, part) } return strings.Join(parts, ":") } // extractKeyComponent extracts a single component value -func (p *RateLimitPolicy) extractKeyComponent(ctx *policy.RequestContext, comp KeyComponent) string { +func (p *RateLimitPolicy) extractKeyComponent(ctx *policy.RequestContext, comp KeyComponent, log *slog.Logger) string { switch comp.Type { case "header": values := ctx.Headers.Get(strings.ToLower(comp.Key)) @@ -601,7 +607,7 @@ func (p *RateLimitPolicy) extractKeyComponent(ctx *policy.RequestContext, comp K return values[0] } placeholder := fmt.Sprintf("_missing_header_%s_", comp.Key) - slog.Warn("Header not found for rate limit key, using placeholder", "header", comp.Key, "type", comp.Type, "placeholder", placeholder) + log.Warn("Header not found for rate limit key, using placeholder", "header", comp.Key, "type", comp.Type, "placeholder", placeholder) return placeholder case "constant": @@ -614,24 +620,24 @@ func (p *RateLimitPolicy) extractKeyComponent(ctx *policy.RequestContext, comp K } } placeholder := fmt.Sprintf("_missing_metadata_%s_", comp.Key) - slog.Warn("Metadata key not found for rate limit key, using placeholder", "key", comp.Key, "type", comp.Type, "placeholder", placeholder) + log.Warn("Metadata key not found for rate limit key, using placeholder", "key", comp.Key, "type", comp.Type, "placeholder", placeholder) return placeholder case "ip": - return p.extractIPAddress(ctx) + return p.extractIPAddress(ctx, log) case "apiname": if ctx.APIName != "" { return ctx.APIName } - slog.Warn("APIName not available for rate limit key, using empty string") + log.Warn("APIName not available for rate limit key, using empty string") return "" case "apiversion": if ctx.APIVersion != "" { return ctx.APIVersion } - slog.Warn("APIVersion not available for rate limit key, using empty string") + log.Warn("APIVersion not available for rate limit key, using empty string") return "" case "routename": @@ -640,24 +646,24 @@ func (p *RateLimitPolicy) extractKeyComponent(ctx *policy.RequestContext, comp K case "cel": evaluator, err := GetCELEvaluator() if err != nil { - slog.Error("Failed to get CEL evaluator for key extraction", "error", err) + log.Error("Failed to get CEL evaluator for key extraction", "error", err) return "_cel_error_" } result, err := evaluator.EvaluateKeyExpression(comp.Expression, ctx, p.routeName) if err != nil { - slog.Warn("CEL key extraction failed, using placeholder", "expression", comp.Expression, "error", err) + log.Warn("CEL key extraction failed, using placeholder", "expression", comp.Expression, "error", err) return "_cel_eval_error_" } return result default: - slog.Warn("Unknown key component type, using empty string", "type", comp.Type) + log.Warn("Unknown key component type, using empty string", "type", comp.Type) return "" } } // extractIPAddress extracts client IP from headers -func (p *RateLimitPolicy) extractIPAddress(ctx *policy.RequestContext) string { +func (p *RateLimitPolicy) extractIPAddress(ctx *policy.RequestContext, log *slog.Logger) string { // Try X-Forwarded-For first (most common) if xff := ctx.Headers.Get("x-forwarded-for"); len(xff) > 0 && xff[0] != "" { // Take the first IP (client) @@ -675,7 +681,7 @@ func (p *RateLimitPolicy) extractIPAddress(ctx *policy.RequestContext) string { return xri[0] } - slog.Warn("Could not extract IP address for rate limit key, using 'unknown'") + log.Warn("Could not extract IP address for rate limit key, using 'unknown'") return "unknown" } diff --git a/gateway/policies/api-key-auth/v0.1.0/go.mod b/gateway/policies/api-key-auth/v0.1.0/go.mod index 558d74904..c6a3741d1 100644 --- a/gateway/policies/api-key-auth/v0.1.0/go.mod +++ b/gateway/policies/api-key-auth/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/api-key-auth go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.3 diff --git a/gateway/policies/api-key-auth/v0.1.0/go.sum b/gateway/policies/api-key-auth/v0.1.0/go.sum index a4dd64395..3a345ae92 100644 --- a/gateway/policies/api-key-auth/v0.1.0/go.sum +++ b/gateway/policies/api-key-auth/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/aws-bedrock-guardrail/v0.1.0/awsbedrockguardrail.go b/gateway/policies/aws-bedrock-guardrail/v0.1.0/awsbedrockguardrail.go index 35b0170c8..c66503c0d 100644 --- a/gateway/policies/aws-bedrock-guardrail/v0.1.0/awsbedrockguardrail.go +++ b/gateway/policies/aws-bedrock-guardrail/v0.1.0/awsbedrockguardrail.go @@ -30,6 +30,9 @@ var textCleanRegexCompiled = regexp.MustCompile(TextCleanRegex) // AWSBedrockGuardrailPolicy implements AWS Bedrock Guardrail validation type AWSBedrockGuardrailPolicy struct { + // Logger + logger *slog.Logger + // Static configuration from params region string guardrailID string @@ -58,6 +61,7 @@ type AWSBedrockGuardrailPolicyParams struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { // Validate and extract static configuration from params if err := validateAWSConfigParams(params); err != nil { @@ -65,6 +69,7 @@ func GetPolicy( } p := &AWSBedrockGuardrailPolicy{ + logger: logger, region: getStringParam(params, "region"), guardrailID: getStringParam(params, "guardrailID"), guardrailVersion: getStringParam(params, "guardrailVersion"), @@ -130,7 +135,7 @@ func GetPolicy( return nil, fmt.Errorf("at least one of 'request' or 'response' parameters must be provided") } - slog.Debug("AWSBedrockGuardrail: Policy initialized", "region", p.region, "guardrailID", p.guardrailID, "guardrailVersion", p.guardrailVersion, "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) + p.logger.Debug("Policy initialized", "region", p.region, "guardrailID", p.guardrailID, "guardrailVersion", p.guardrailVersion, "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) return p, nil } @@ -308,7 +313,7 @@ func (p *AWSBedrockGuardrailPolicy) OnRequest(ctx *policy.RequestContext, params if ctx.Body != nil { content = ctx.Body.Content } - return p.validatePayload(content, p.requestParams, false, ctx.Metadata).(policy.RequestAction) + return p.validatePayload(content, p.requestParams, false, ctx.Metadata, ctx.RequestID).(policy.RequestAction) } // OnResponse validates response body using AWS Bedrock Guardrail @@ -321,11 +326,13 @@ func (p *AWSBedrockGuardrailPolicy) OnResponse(ctx *policy.ResponseContext, para if ctx.ResponseBody != nil { content = ctx.ResponseBody.Content } - return p.validatePayload(content, p.responseParams, true, ctx.Metadata).(policy.ResponseAction) + return p.validatePayload(content, p.responseParams, true, ctx.Metadata, ctx.RequestID).(policy.ResponseAction) } // validatePayload validates payload against AWS Bedrock Guardrail -func (p *AWSBedrockGuardrailPolicy) validatePayload(payload []byte, params AWSBedrockGuardrailPolicyParams, isResponse bool, metadata map[string]interface{}) interface{} { +func (p *AWSBedrockGuardrailPolicy) validatePayload(payload []byte, params AWSBedrockGuardrailPolicyParams, isResponse bool, metadata map[string]interface{}, requestID string) interface{} { + log := policy.WithRequestID(p.logger, requestID) + // Transform response if redactPII is disabled and PIIs identified in request if !params.RedactPII && isResponse { if maskedPII, exists := metadata[MetadataKeyPIIEntities]; exists { @@ -352,13 +359,13 @@ func (p *AWSBedrockGuardrailPolicy) validatePayload(payload []byte, params AWSBe extractedValue, err := utils.ExtractStringValueFromJsonpath(payload, params.JsonPath) if err != nil { if params.PassthroughOnError { - slog.Debug("AWSBedrockGuardrail: JSONPath extraction error, passthrough enabled", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) + log.Debug("JSONPath extraction error, passthrough enabled", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) if isResponse { return policy.UpstreamResponseModifications{} } return policy.UpstreamRequestModifications{} } - slog.Debug("AWSBedrockGuardrail: Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) + log.Debug("Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) return p.buildErrorResponse("Error extracting value from JSONPath", err, isResponse, params.ShowAssessment, nil) } @@ -370,13 +377,13 @@ func (p *AWSBedrockGuardrailPolicy) validatePayload(payload []byte, params AWSBe awsCfg, err := p.loadAWSConfig(context.Background(), p.region) if err != nil { if params.PassthroughOnError { - slog.Debug("AWSBedrockGuardrail: AWS config error, passthrough enabled", "error", err, "isResponse", isResponse) + log.Debug("AWS config error, passthrough enabled", "error", err, "isResponse", isResponse) if isResponse { return policy.UpstreamResponseModifications{} } return policy.UpstreamRequestModifications{} } - slog.Debug("AWSBedrockGuardrail: Error loading AWS config", "error", err, "isResponse", isResponse) + log.Debug("Error loading AWS config", "error", err, "isResponse", isResponse) return p.buildErrorResponse("Error loading AWS config", err, isResponse, params.ShowAssessment, nil) } @@ -384,13 +391,13 @@ func (p *AWSBedrockGuardrailPolicy) validatePayload(payload []byte, params AWSBe output, err := p.applyBedrockGuardrail(context.Background(), awsCfg, p.guardrailID, p.guardrailVersion, extractedValue) if err != nil { if params.PassthroughOnError { - slog.Debug("AWSBedrockGuardrail: Guardrail API error, passthrough enabled", "error", err, "isResponse", isResponse) + log.Debug("Guardrail API error, passthrough enabled", "error", err, "isResponse", isResponse) if isResponse { return policy.UpstreamResponseModifications{} } return policy.UpstreamRequestModifications{} } - slog.Debug("AWSBedrockGuardrail: Error calling AWS Bedrock Guardrail", "error", err, "isResponse", isResponse) + log.Debug("Error calling AWS Bedrock Guardrail", "error", err, "isResponse", isResponse) return p.buildErrorResponse("Error calling AWS Bedrock Guardrail", err, isResponse, params.ShowAssessment, nil) } @@ -399,23 +406,23 @@ func (p *AWSBedrockGuardrailPolicy) validatePayload(payload []byte, params AWSBe violation, modifiedContent, err := p.evaluateGuardrailResponse(outputInterface, extractedValue, params.RedactPII, !isResponse, metadata) if err != nil { if params.PassthroughOnError { - slog.Debug("AWSBedrockGuardrail: Guardrail evaluation error, passthrough enabled", "error", err, "isResponse", isResponse) + log.Debug("Guardrail evaluation error, passthrough enabled", "error", err, "isResponse", isResponse) if isResponse { return policy.UpstreamResponseModifications{} } return policy.UpstreamRequestModifications{} } - slog.Debug("AWSBedrockGuardrail: Error evaluating guardrail response", "error", err, "isResponse", isResponse) + log.Debug("Error evaluating guardrail response", "error", err, "isResponse", isResponse) return p.buildErrorResponse("Error evaluating guardrail response", err, isResponse, params.ShowAssessment, output) } if violation { - slog.Debug("AWSBedrockGuardrail: Violation detected", "isResponse", isResponse) + log.Debug("Violation detected", "isResponse", isResponse) return p.buildErrorResponse("Violation of AWS Bedrock Guardrails detected", nil, isResponse, params.ShowAssessment, output) } if modifiedContent != "" && modifiedContent != extractedValue { - slog.Debug("AWSBedrockGuardrail: Content modified by guardrail", "isResponse", isResponse) + log.Debug("Content modified by guardrail", "isResponse", isResponse) } // If content was modified, update the payload @@ -431,7 +438,7 @@ func (p *AWSBedrockGuardrailPolicy) validatePayload(payload []byte, params AWSBe } } - slog.Debug("AWSBedrockGuardrail: Validation passed", "isResponse", isResponse) + log.Debug("Validation passed", "isResponse", isResponse) if isResponse { return policy.UpstreamResponseModifications{} } diff --git a/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.mod b/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.mod index e49b74c46..eb2a00556 100644 --- a/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.mod +++ b/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.mod @@ -8,7 +8,7 @@ require ( github.com/aws/aws-sdk-go-v2/credentials v1.17.16 github.com/aws/aws-sdk-go-v2/service/bedrockruntime v1.13.0 github.com/aws/aws-sdk-go-v2/service/sts v1.28.10 - github.com/wso2/api-platform/sdk v0.3.1 + github.com/wso2/api-platform/sdk v0.3.3 ) require ( diff --git a/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.sum b/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.sum index e33818693..99af84709 100644 --- a/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.sum +++ b/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.sum @@ -28,5 +28,5 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.28.10 h1:69tpbPED7jKPyzMcrwSvhWcJ9bP github.com/aws/aws-sdk-go-v2/service/sts v1.28.10/go.mod h1:0Aqn1MnEuitqfsCNyKsdKLhDUOr4txD/g19EfiUqgws= github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/azure-content-safety-content-moderation/v0.1.0/azurecontentsafetycontentmoderation.go b/gateway/policies/azure-content-safety-content-moderation/v0.1.0/azurecontentsafetycontentmoderation.go index 710a39a2d..3720f9b13 100644 --- a/gateway/policies/azure-content-safety-content-moderation/v0.1.0/azurecontentsafetycontentmoderation.go +++ b/gateway/policies/azure-content-safety-content-moderation/v0.1.0/azurecontentsafetycontentmoderation.go @@ -29,6 +29,9 @@ var textCleanRegexCompiled = regexp.MustCompile(TextCleanRegex) // AzureContentSafetyContentModerationPolicy implements Azure Content Safety content moderation type AzureContentSafetyContentModerationPolicy struct { + // Logger + logger *slog.Logger + // Static configuration from params endpoint string apiKey string @@ -56,6 +59,7 @@ type AzureContentSafetyPolicyParams struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { // Validate and extract static configuration from params if err := validateAzureConfigParams(params); err != nil { @@ -63,6 +67,7 @@ func GetPolicy( } p := &AzureContentSafetyContentModerationPolicy{ + logger: logger, endpoint: getStringParam(params, "azureContentSafetyEndpoint"), apiKey: getStringParam(params, "azureContentSafetyKey"), client: &http.Client{ @@ -95,7 +100,7 @@ func GetPolicy( return nil, fmt.Errorf("at least one of 'request' or 'response' parameters must be provided") } - slog.Debug("AzureContentSafety: Policy initialized", "endpoint", p.endpoint, "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) + p.logger.Debug("Policy initialized", "endpoint", p.endpoint, "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) return p, nil } @@ -251,7 +256,7 @@ func (p *AzureContentSafetyContentModerationPolicy) OnRequest(ctx *policy.Reques if ctx.Body != nil { content = ctx.Body.Content } - return p.validatePayload(content, p.requestParams, false).(policy.RequestAction) + return p.validatePayload(content, p.requestParams, false, ctx.RequestID).(policy.RequestAction) } // OnResponse validates response body content @@ -264,17 +269,19 @@ func (p *AzureContentSafetyContentModerationPolicy) OnResponse(ctx *policy.Respo if ctx.ResponseBody != nil { content = ctx.ResponseBody.Content } - return p.validatePayload(content, p.responseParams, true).(policy.ResponseAction) + return p.validatePayload(content, p.responseParams, true, ctx.RequestID).(policy.ResponseAction) } // validatePayload validates payload against Azure Content Safety -func (p *AzureContentSafetyContentModerationPolicy) validatePayload(payload []byte, params AzureContentSafetyPolicyParams, isResponse bool) interface{} { +func (p *AzureContentSafetyContentModerationPolicy) validatePayload(payload []byte, params AzureContentSafetyPolicyParams, isResponse bool, requestID string) interface{} { + log := policy.WithRequestID(p.logger, requestID) + // Build category thresholds from params categoryMap := p.buildCategoryMap(params) categories := p.getValidCategories(categoryMap) if len(categories) == 0 { - slog.Debug("AzureContentSafety: No valid categories configured, passing through", "isResponse", isResponse) + log.Debug("No valid categories configured, passing through", "isResponse", isResponse) // No valid categories, pass through if isResponse { return policy.UpstreamResponseModifications{} @@ -293,13 +300,13 @@ func (p *AzureContentSafetyContentModerationPolicy) validatePayload(payload []by extractedValue, err := utils.ExtractStringValueFromJsonpath(payload, params.JsonPath) if err != nil { if params.PassthroughOnError { - slog.Debug("AzureContentSafety: JSONPath extraction error, passthrough enabled", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) + log.Debug("JSONPath extraction error, passthrough enabled", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) if isResponse { return policy.UpstreamResponseModifications{} } return policy.UpstreamRequestModifications{} } - slog.Debug("AzureContentSafety: Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) + log.Debug("Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) return p.buildErrorResponse("Error extracting value from JSONPath", err, isResponse, params.ShowAssessment, nil, "") } @@ -311,13 +318,13 @@ func (p *AzureContentSafetyContentModerationPolicy) validatePayload(payload []by categoriesAnalysis, err := p.callAzureContentSafetyAPI(p.endpoint, p.apiKey, extractedValue, categories) if err != nil { if params.PassthroughOnError { - slog.Debug("AzureContentSafety: API call error, passthrough enabled", "error", err, "isResponse", isResponse) + log.Debug("API call error, passthrough enabled", "error", err, "isResponse", isResponse) if isResponse { return policy.UpstreamResponseModifications{} } return policy.UpstreamRequestModifications{} } - slog.Debug("AzureContentSafety: Error calling Azure Content Safety API", "error", err, "isResponse", isResponse) + log.Debug("Error calling Azure Content Safety API", "error", err, "isResponse", isResponse) return p.buildErrorResponse("Error calling Azure Content Safety API", err, isResponse, params.ShowAssessment, nil, "") } @@ -329,13 +336,13 @@ func (p *AzureContentSafetyContentModerationPolicy) validatePayload(payload []by threshold := categoryMap[category] if threshold >= 0 && severity >= threshold { - slog.Debug("AzureContentSafety: Violation detected", "category", category, "severity", severity, "threshold", threshold, "isResponse", isResponse) + log.Debug("Violation detected", "category", category, "severity", severity, "threshold", threshold, "isResponse", isResponse) // Violation detected return p.buildErrorResponse("Violation of Azure content safety content moderation detected", nil, isResponse, params.ShowAssessment, categoriesAnalysis, extractedValue) } } - slog.Debug("AzureContentSafety: Validation passed", "categoryCount", len(categoriesAnalysis), "isResponse", isResponse) + log.Debug("Validation passed", "categoryCount", len(categoriesAnalysis), "isResponse", isResponse) // No violations, continue if isResponse { diff --git a/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.mod b/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.mod index 9ba6bd86e..95db2aef6 100644 --- a/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.mod +++ b/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/azure-content-safety-content-moderation go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.3 diff --git a/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.sum b/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.sum index a4dd64395..3a345ae92 100644 --- a/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.sum +++ b/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/basic-auth/v0.1.0/go.mod b/gateway/policies/basic-auth/v0.1.0/go.mod index 21147a69a..86a8db055 100644 --- a/gateway/policies/basic-auth/v0.1.0/go.mod +++ b/gateway/policies/basic-auth/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/basic-auth go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.3 diff --git a/gateway/policies/basic-auth/v0.1.0/go.sum b/gateway/policies/basic-auth/v0.1.0/go.sum index a4dd64395..3a345ae92 100644 --- a/gateway/policies/basic-auth/v0.1.0/go.sum +++ b/gateway/policies/basic-auth/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/basic-ratelimit/v0.1.0/basic_ratelimit.go b/gateway/policies/basic-ratelimit/v0.1.0/basic_ratelimit.go index 5f51f0cab..7fb3a9ccf 100644 --- a/gateway/policies/basic-ratelimit/v0.1.0/basic_ratelimit.go +++ b/gateway/policies/basic-ratelimit/v0.1.0/basic_ratelimit.go @@ -19,6 +19,8 @@ package basicratelimit import ( + "log/slog" + ratelimit "github.com/policy-engine/policies/advanced-ratelimit" policy "github.com/wso2/api-platform/sdk/gateway/policy/v1alpha" ) @@ -36,12 +38,13 @@ type BasicRateLimitPolicy struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { // Transform simple limits to full ratelimit config rlParams := transformToRatelimitParams(params, metadata) // Create the delegate ratelimit policy - delegate, err := ratelimit.GetPolicy(metadata, rlParams) + delegate, err := ratelimit.GetPolicy(metadata, rlParams, logger) if err != nil { return nil, err } diff --git a/gateway/policies/basic-ratelimit/v0.1.0/go.mod b/gateway/policies/basic-ratelimit/v0.1.0/go.mod index 23a09b6de..22d0d36ee 100644 --- a/gateway/policies/basic-ratelimit/v0.1.0/go.mod +++ b/gateway/policies/basic-ratelimit/v0.1.0/go.mod @@ -4,7 +4,7 @@ go 1.25.1 require ( github.com/policy-engine/policies/advanced-ratelimit v0.1.0 - github.com/wso2/api-platform/sdk v0.3.1 + github.com/wso2/api-platform/sdk v0.3.3 ) require ( diff --git a/gateway/policies/content-length-guardrail/v0.1.0/go.mod b/gateway/policies/content-length-guardrail/v0.1.0/go.mod index d94f9eb20..ce679f176 100644 --- a/gateway/policies/content-length-guardrail/v0.1.0/go.mod +++ b/gateway/policies/content-length-guardrail/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/content-length-guardrail go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.3 diff --git a/gateway/policies/content-length-guardrail/v0.1.0/go.sum b/gateway/policies/content-length-guardrail/v0.1.0/go.sum index a4dd64395..3a345ae92 100644 --- a/gateway/policies/content-length-guardrail/v0.1.0/go.sum +++ b/gateway/policies/content-length-guardrail/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/cors/v0.1.0/go.mod b/gateway/policies/cors/v0.1.0/go.mod index 3fcad9dac..84e0a7027 100644 --- a/gateway/policies/cors/v0.1.0/go.mod +++ b/gateway/policies/cors/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/cors go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.3 diff --git a/gateway/policies/cors/v0.1.0/go.sum b/gateway/policies/cors/v0.1.0/go.sum index a4dd64395..3a345ae92 100644 --- a/gateway/policies/cors/v0.1.0/go.sum +++ b/gateway/policies/cors/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/json-schema-guardrail/v0.1.0/go.mod b/gateway/policies/json-schema-guardrail/v0.1.0/go.mod index 38a338cf8..ef01e1910 100644 --- a/gateway/policies/json-schema-guardrail/v0.1.0/go.mod +++ b/gateway/policies/json-schema-guardrail/v0.1.0/go.mod @@ -3,7 +3,7 @@ module github.com/policy-engine/policies/json-schema-guardrail go 1.25.1 require ( - github.com/wso2/api-platform/sdk v0.3.1 + github.com/wso2/api-platform/sdk v0.3.3 github.com/xeipuuv/gojsonschema v1.2.0 ) diff --git a/gateway/policies/json-schema-guardrail/v0.1.0/go.sum b/gateway/policies/json-schema-guardrail/v0.1.0/go.sum index d5fcfe4a4..e73f3e805 100644 --- a/gateway/policies/json-schema-guardrail/v0.1.0/go.sum +++ b/gateway/policies/json-schema-guardrail/v0.1.0/go.sum @@ -8,8 +8,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 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 v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= diff --git a/gateway/policies/jwt-auth/v0.1.0/go.mod b/gateway/policies/jwt-auth/v0.1.0/go.mod index 0f77f5909..f4d961306 100644 --- a/gateway/policies/jwt-auth/v0.1.0/go.mod +++ b/gateway/policies/jwt-auth/v0.1.0/go.mod @@ -4,5 +4,5 @@ go 1.25.1 require ( github.com/golang-jwt/jwt/v5 v5.2.2 - github.com/wso2/api-platform/sdk v0.3.1 + github.com/wso2/api-platform/sdk v0.3.2 ) diff --git a/gateway/policies/jwt-auth/v0.1.0/go.sum b/gateway/policies/jwt-auth/v0.1.0/go.sum index dd5720036..895ca7d90 100644 --- a/gateway/policies/jwt-auth/v0.1.0/go.sum +++ b/gateway/policies/jwt-auth/v0.1.0/go.sum @@ -1,4 +1,4 @@ github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.2 h1:PIUdy70Uv37ymu9Yq2vtGdjOvJBv4INL/Z7qMX6juJI= +github.com/wso2/api-platform/sdk v0.3.2/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/jwt-auth/v0.1.0/jwtauth.go b/gateway/policies/jwt-auth/v0.1.0/jwtauth.go index 1d8442a49..624b557b3 100644 --- a/gateway/policies/jwt-auth/v0.1.0/jwtauth.go +++ b/gateway/policies/jwt-auth/v0.1.0/jwtauth.go @@ -98,8 +98,9 @@ var ins = &JwtAuthPolicy{ func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - slog.Debug("JWT Auth Policy: GetPolicy called") + logger.Debug("GetPolicy called") return ins, nil } diff --git a/gateway/policies/jwt-auth/v0.1.0/jwtauth_test.go b/gateway/policies/jwt-auth/v0.1.0/jwtauth_test.go index 01d5c97e7..4f7865e3c 100644 --- a/gateway/policies/jwt-auth/v0.1.0/jwtauth_test.go +++ b/gateway/policies/jwt-auth/v0.1.0/jwtauth_test.go @@ -10,6 +10,7 @@ import ( "encoding/json" "encoding/pem" "fmt" + "log/slog" "math/big" "net" "net/http" @@ -78,7 +79,7 @@ func TestJWTAuthPolicy_ValidToken(t *testing.T) { }, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -135,7 +136,7 @@ func TestJWTAuthPolicy_MissingToken(t *testing.T) { }, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -180,7 +181,7 @@ func TestJWTAuthPolicy_InvalidTokenFormat(t *testing.T) { }, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -229,7 +230,7 @@ func TestJWTAuthPolicy_ExpiredToken(t *testing.T) { }, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -277,7 +278,7 @@ func TestJWTAuthPolicy_InvalidAudience(t *testing.T) { }, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -327,7 +328,7 @@ func TestJWTAuthPolicy_CustomClaims(t *testing.T) { }, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -377,7 +378,7 @@ func TestJWTAuthPolicy_InvalidCustomClaims(t *testing.T) { }, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -428,7 +429,7 @@ func TestJWTAuthPolicy_InvalidSignature(t *testing.T) { }, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -480,7 +481,7 @@ func TestJWTAuthPolicy_CustomHeaderPrefix(t *testing.T) { }, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -515,7 +516,7 @@ func TestJWTAuthPolicy_ErrorResponseFormatJSON(t *testing.T) { }, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -550,7 +551,7 @@ func TestJWTAuthPolicy_ErrorResponseFormatPlain(t *testing.T) { }, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -637,7 +638,7 @@ func TestJWTAuthPolicy_RemoteWithSelfSignedCert(t *testing.T) { "audiences": []interface{}{"api-audience"}, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -730,7 +731,7 @@ func TestJWTAuthPolicy_SkipTlsVerify_Success(t *testing.T) { "audiences": []interface{}{"api-audience"}, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -824,7 +825,7 @@ func TestJWTAuthPolicy_SkipTlsVerify_False_Fails(t *testing.T) { "jwksFetchRetryCount": 0, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -890,7 +891,7 @@ func TestJWTAuthPolicy_LocalInlineCertificate(t *testing.T) { "audiences": []interface{}{"api-audience"}, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } @@ -952,7 +953,7 @@ func TestJWTAuthPolicy_LocalCertificateFile(t *testing.T) { "audiences": []interface{}{"api-audience"}, } - p, err := GetPolicy(policy.PolicyMetadata{}, params) + p, err := GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) if err != nil { t.Fatalf("Failed to create policy: %v", err) } diff --git a/gateway/policies/mcp-auth/v0.1.0/go.mod b/gateway/policies/mcp-auth/v0.1.0/go.mod index dc21d7a0a..f85c07c73 100644 --- a/gateway/policies/mcp-auth/v0.1.0/go.mod +++ b/gateway/policies/mcp-auth/v0.1.0/go.mod @@ -2,7 +2,7 @@ module github.com/policy-engine/policies/mcp-authentication go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.2 require github.com/policy-engine/policies/jwt-auth v0.1.0 diff --git a/gateway/policies/mcp-auth/v0.1.0/go.sum b/gateway/policies/mcp-auth/v0.1.0/go.sum index dd5720036..895ca7d90 100644 --- a/gateway/policies/mcp-auth/v0.1.0/go.sum +++ b/gateway/policies/mcp-auth/v0.1.0/go.sum @@ -1,4 +1,4 @@ github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.2 h1:PIUdy70Uv37ymu9Yq2vtGdjOvJBv4INL/Z7qMX6juJI= +github.com/wso2/api-platform/sdk v0.3.2/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/mcp-auth/v0.1.0/mcp-auth.go b/gateway/policies/mcp-auth/v0.1.0/mcp-auth.go index f85084b8f..dd0e1eac7 100644 --- a/gateway/policies/mcp-auth/v0.1.0/mcp-auth.go +++ b/gateway/policies/mcp-auth/v0.1.0/mcp-auth.go @@ -51,8 +51,9 @@ var ins = &McpAuthPolicy{} func GetPolicy( metadata policy.PolicyMetadata, params map[string]any, + logger *slog.Logger, ) (policy.Policy, error) { - slog.Debug("MCP Auth Policy: GetPolicy called") + logger.Debug("GetPolicy called") return ins, nil } @@ -159,7 +160,7 @@ func (p *McpAuthPolicy) handleAuth(ctx *policy.RequestContext, params map[string } slog.Debug("MCP Auth Policy: Delegating authentication to JWT Auth Policy") - jwtPolicy, _ := jwtauth.GetPolicy(policy.PolicyMetadata{}, params) + jwtPolicy, _ := jwtauth.GetPolicy(policy.PolicyMetadata{}, params, slog.Default()) reqAction := jwtPolicy.OnRequest(ctx, params) if _, ok := reqAction.(policy.ImmediateResponse); ok { slog.Debug("MCP Auth Policy: Authentication failed in JWT Auth Policy, handling failure") diff --git a/gateway/policies/mcp-auth/v0.1.0/mcp-auth_test.go b/gateway/policies/mcp-auth/v0.1.0/mcp-auth_test.go index 084498109..06e6e218a 100644 --- a/gateway/policies/mcp-auth/v0.1.0/mcp-auth_test.go +++ b/gateway/policies/mcp-auth/v0.1.0/mcp-auth_test.go @@ -20,6 +20,7 @@ package mcpauthn import ( "encoding/json" + "log/slog" "strings" "testing" @@ -27,7 +28,7 @@ import ( ) func TestGetPolicy(t *testing.T) { - p, err := GetPolicy(policy.PolicyMetadata{}, nil) + p, err := GetPolicy(policy.PolicyMetadata{}, nil, slog.Default()) if err != nil { t.Errorf("GetPolicy returned error: %v", err) } diff --git a/gateway/policies/mcp-authz/v0.1.0/mcp-authz.go b/gateway/policies/mcp-authz/v0.1.0/mcp-authz.go index 893919517..052e14fa2 100644 --- a/gateway/policies/mcp-authz/v0.1.0/mcp-authz.go +++ b/gateway/policies/mcp-authz/v0.1.0/mcp-authz.go @@ -77,8 +77,9 @@ type McpAuthzPolicy struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]any, + logger *slog.Logger, ) (policy.Policy, error) { - slog.Debug("MCP Authorization Policy: GetPolicy called") + logger.Debug("GetPolicy called") p := &McpAuthzPolicy{} @@ -89,7 +90,7 @@ func GetPolicy( } p.Rules = rules - slog.Debug("MCP Authorization Policy: Parsed policy configuration", + logger.Debug("Parsed policy configuration", "rulesCount", len(p.Rules)) return p, nil diff --git a/gateway/policies/model-round-robin/v0.1.0/go.mod b/gateway/policies/model-round-robin/v0.1.0/go.mod index 69ac2d6ee..3cff78a6b 100644 --- a/gateway/policies/model-round-robin/v0.1.0/go.mod +++ b/gateway/policies/model-round-robin/v0.1.0/go.mod @@ -1,5 +1,5 @@ module github.com/policy-engine/policies/model-round-robin -go 1.23.0 +go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.3 diff --git a/gateway/policies/model-round-robin/v0.1.0/go.sum b/gateway/policies/model-round-robin/v0.1.0/go.sum index e705cd5f2..3a345ae92 100644 --- a/gateway/policies/model-round-robin/v0.1.0/go.sum +++ b/gateway/policies/model-round-robin/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:OmZv0Kltc/fOtgRdsMikhodQAWZG+lVjNPtOZxl/2OQ= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:byr46IKr+KyUuPT7hm/Si+KosOtLQt5tjMbHFhexQgM= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/model-round-robin/v0.1.0/roundrobin.go b/gateway/policies/model-round-robin/v0.1.0/roundrobin.go index 3b2e99cb1..ee2af8114 100644 --- a/gateway/policies/model-round-robin/v0.1.0/roundrobin.go +++ b/gateway/policies/model-round-robin/v0.1.0/roundrobin.go @@ -58,6 +58,7 @@ type RequestModelConfig struct { // ModelRoundRobinPolicy implements round-robin load balancing for AI models type ModelRoundRobinPolicy struct { + logger *slog.Logger currentIndex int mu sync.Mutex suspendedModels map[string]time.Time // Track suspended models @@ -67,6 +68,7 @@ type ModelRoundRobinPolicy struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { // Parse and validate parameters policyParams, err := parseParams(params) @@ -75,6 +77,7 @@ func GetPolicy( } p := &ModelRoundRobinPolicy{ + logger: logger, currentIndex: 0, suspendedModels: make(map[string]time.Time), params: policyParams, @@ -226,10 +229,12 @@ func (p *ModelRoundRobinPolicy) Mode() policy.ProcessingMode { // OnRequest processes the request and selects the next model in round-robin order func (p *ModelRoundRobinPolicy) OnRequest(ctx *policy.RequestContext, params map[string]interface{}) policy.RequestAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) + // Extract original model from request originalModel, err := p.extractModelFromRequest(ctx) if err != nil { - slog.Debug("ModelRoundRobin: Could not extract original model", "error", err) + log.Debug("Could not extract original model", "error", err) } // Store original model in metadata @@ -250,13 +255,15 @@ func (p *ModelRoundRobinPolicy) OnRequest(ctx *policy.RequestContext, params map ctx.Metadata[MetadataKeySelectedModel] = selectedModel.Model - slog.Debug("ModelRoundRobin: Selected model", "model", selectedModel.Model, "index", p.currentIndex) + log.Debug("Selected model", "model", selectedModel.Model, "index", p.currentIndex) - return p.modifyRequestModel(ctx, selectedModel.Model) + return p.modifyRequestModel(ctx, selectedModel.Model, ctx.RequestID) } // OnResponse handles response processing and suspension on error func (p *ModelRoundRobinPolicy) OnResponse(ctx *policy.ResponseContext, params map[string]interface{}) policy.ResponseAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) + // Check if response indicates an error that should trigger suspension if ctx.ResponseStatus >= 500 || ctx.ResponseStatus == 429 { selectedModel := "" @@ -271,7 +278,7 @@ func (p *ModelRoundRobinPolicy) OnResponse(ctx *policy.ResponseContext, params m p.mu.Lock() p.suspendedModels[selectedModel] = time.Now().Add(time.Duration(p.params.SuspendDuration) * time.Second) p.mu.Unlock() - slog.Debug("ModelRoundRobin: Suspended model", "model", selectedModel, "duration", p.params.SuspendDuration) + log.Debug("Suspended model", "model", selectedModel, "duration", p.params.SuspendDuration) } } @@ -420,27 +427,29 @@ func (p *ModelRoundRobinPolicy) extractModelFromPath(ctx *policy.RequestContext, } // modifyRequestModel modifies the request to replace the model field based on location -func (p *ModelRoundRobinPolicy) modifyRequestModel(ctx *policy.RequestContext, newModel string) policy.RequestAction { +func (p *ModelRoundRobinPolicy) modifyRequestModel(ctx *policy.RequestContext, newModel string, requestID string) policy.RequestAction { + log := policy.WithRequestID(p.logger, requestID) location := p.params.RequestModel.Location identifier := p.params.RequestModel.Identifier switch location { case "payload": - return p.modifyModelInPayload(ctx, newModel, identifier) + return p.modifyModelInPayload(ctx, newModel, identifier, requestID) case "header": - return p.modifyModelInHeader(ctx, newModel, identifier) + return p.modifyModelInHeader(ctx, newModel, identifier, requestID) case "queryParam": - return p.modifyModelInQueryParam(ctx, newModel, identifier) + return p.modifyModelInQueryParam(ctx, newModel, identifier, requestID) case "pathParam": - return p.modifyModelInPathParam(ctx, newModel, identifier) + return p.modifyModelInPathParam(ctx, newModel, identifier, requestID) default: - slog.Debug("ModelRoundRobin: Unsupported location", "location", location) + log.Debug("Unsupported location", "location", location) return policy.UpstreamRequestModifications{} } } // modifyModelInPayload modifies the model in request body using JSONPath -func (p *ModelRoundRobinPolicy) modifyModelInPayload(ctx *policy.RequestContext, newModel string, jsonPath string) policy.RequestAction { +func (p *ModelRoundRobinPolicy) modifyModelInPayload(ctx *policy.RequestContext, newModel string, jsonPath string, requestID string) policy.RequestAction { + log := policy.WithRequestID(p.logger, requestID) if ctx.Body == nil || ctx.Body.Content == nil { return policy.ImmediateResponse{ StatusCode: 400, @@ -452,7 +461,7 @@ func (p *ModelRoundRobinPolicy) modifyModelInPayload(ctx *policy.RequestContext, // Parse request body var payloadData map[string]interface{} if err := json.Unmarshal(ctx.Body.Content, &payloadData); err != nil { - slog.Error("ModelRoundRobin: Error unmarshaling request body", "error", err) + log.Error("Error unmarshaling request body", "error", err) return policy.ImmediateResponse{ StatusCode: 400, Headers: map[string]string{"Content-Type": "application/json"}, @@ -462,7 +471,7 @@ func (p *ModelRoundRobinPolicy) modifyModelInPayload(ctx *policy.RequestContext, // Update model in payload if err := utils.SetValueAtJSONPath(payloadData, jsonPath, newModel); err != nil { - slog.Error("ModelRoundRobin: Error setting model in request body", "jsonPath", jsonPath, "error", err) + log.Error("Error setting model in request body", "jsonPath", jsonPath, "error", err) return policy.ImmediateResponse{ StatusCode: 400, Headers: map[string]string{"Content-Type": "application/json"}, @@ -473,7 +482,7 @@ func (p *ModelRoundRobinPolicy) modifyModelInPayload(ctx *policy.RequestContext, // Marshal back to JSON updatedPayload, err := json.Marshal(payloadData) if err != nil { - slog.Error("ModelRoundRobin: Error marshaling updated request body", "error", err) + log.Error("Error marshaling updated request body", "error", err) return policy.ImmediateResponse{ StatusCode: 500, Headers: map[string]string{"Content-Type": "application/json"}, @@ -481,7 +490,7 @@ func (p *ModelRoundRobinPolicy) modifyModelInPayload(ctx *policy.RequestContext, } } - slog.Debug("ModelRoundRobin: Modified request model in payload", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "jsonPath", jsonPath) + log.Debug("Modified request model in payload", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "jsonPath", jsonPath) return policy.UpstreamRequestModifications{ Body: updatedPayload, @@ -489,8 +498,9 @@ func (p *ModelRoundRobinPolicy) modifyModelInPayload(ctx *policy.RequestContext, } // modifyModelInHeader modifies the model in request header -func (p *ModelRoundRobinPolicy) modifyModelInHeader(ctx *policy.RequestContext, newModel string, headerName string) policy.RequestAction { - slog.Debug("ModelRoundRobin: Modified request model in header", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "header", headerName) +func (p *ModelRoundRobinPolicy) modifyModelInHeader(ctx *policy.RequestContext, newModel string, headerName string, requestID string) policy.RequestAction { + log := policy.WithRequestID(p.logger, requestID) + log.Debug("Modified request model in header", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "header", headerName) return policy.UpstreamRequestModifications{ SetHeaders: map[string]string{headerName: newModel}, @@ -498,16 +508,17 @@ func (p *ModelRoundRobinPolicy) modifyModelInHeader(ctx *policy.RequestContext, } // modifyModelInQueryParam modifies the model in query parameter by updating the path -func (p *ModelRoundRobinPolicy) modifyModelInQueryParam(ctx *policy.RequestContext, newModel string, paramName string) policy.RequestAction { +func (p *ModelRoundRobinPolicy) modifyModelInQueryParam(ctx *policy.RequestContext, newModel string, paramName string, requestID string) policy.RequestAction { + log := policy.WithRequestID(p.logger, requestID) if ctx.Path == "" { - slog.Debug("ModelRoundRobin: Cannot modify query param, path is empty") + log.Debug("Cannot modify query param, path is empty") return policy.UpstreamRequestModifications{} } // Parse the URL-encoded path decodedPath, err := url.PathUnescape(ctx.Path) if err != nil { - slog.Debug("ModelRoundRobin: Error decoding path", "error", err) + log.Debug("Error decoding path", "error", err) return policy.UpstreamRequestModifications{} } @@ -520,7 +531,7 @@ func (p *ModelRoundRobinPolicy) modifyModelInQueryParam(ctx *policy.RequestConte // Parse existing query string queryValues, err = url.ParseQuery(parts[1]) if err != nil { - slog.Debug("ModelRoundRobin: Error parsing query string", "error", err) + log.Debug("Error parsing query string", "error", err) return policy.UpstreamRequestModifications{} } } else { @@ -537,7 +548,7 @@ func (p *ModelRoundRobinPolicy) modifyModelInQueryParam(ctx *policy.RequestConte updatedPath = pathBase + "?" + queryValues.Encode() } - slog.Debug("ModelRoundRobin: Modified request model in query param", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "param", paramName, "newPath", updatedPath) + log.Debug("Modified request model in query param", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "param", paramName, "newPath", updatedPath) // Set the :path pseudo-header to modify the path and query string // Envoy ext_proc requires path modifications via the :path header @@ -549,16 +560,17 @@ func (p *ModelRoundRobinPolicy) modifyModelInQueryParam(ctx *policy.RequestConte } // modifyModelInPathParam modifies the model in path parameter using regex replacement -func (p *ModelRoundRobinPolicy) modifyModelInPathParam(ctx *policy.RequestContext, newModel string, regexPattern string) policy.RequestAction { +func (p *ModelRoundRobinPolicy) modifyModelInPathParam(ctx *policy.RequestContext, newModel string, regexPattern string, requestID string) policy.RequestAction { + log := policy.WithRequestID(p.logger, requestID) if ctx.Path == "" { - slog.Debug("ModelRoundRobin: Cannot modify path param, path is empty") + log.Debug("Cannot modify path param, path is empty") return policy.UpstreamRequestModifications{} } // Parse the URL-encoded path decodedPath, err := url.PathUnescape(ctx.Path) if err != nil { - slog.Debug("ModelRoundRobin: Error decoding path", "error", err) + log.Debug("Error decoding path", "error", err) return policy.UpstreamRequestModifications{} } @@ -573,14 +585,14 @@ func (p *ModelRoundRobinPolicy) modifyModelInPathParam(ctx *policy.RequestContex // Compile regex pattern re, err := regexp.Compile(regexPattern) if err != nil { - slog.Debug("ModelRoundRobin: Invalid regex pattern", "pattern", regexPattern, "error", err) + log.Debug("Invalid regex pattern", "pattern", regexPattern, "error", err) return policy.UpstreamRequestModifications{} } // Find the match to verify it exists and get the match indices matchIndices := re.FindStringSubmatchIndex(pathWithoutQuery) if len(matchIndices) < 4 { - slog.Debug("ModelRoundRobin: Regex pattern did not match path or no capture group", "pattern", regexPattern, "path", pathWithoutQuery) + log.Debug("Regex pattern did not match path or no capture group", "pattern", regexPattern, "path", pathWithoutQuery) return policy.UpstreamRequestModifications{} } @@ -591,7 +603,7 @@ func (p *ModelRoundRobinPolicy) modifyModelInPathParam(ctx *policy.RequestContex captureEnd := matchIndices[3] if captureStart == -1 || captureEnd == -1 { - slog.Debug("ModelRoundRobin: No capture group found in regex pattern", "pattern", regexPattern) + log.Debug("No capture group found in regex pattern", "pattern", regexPattern) return policy.UpstreamRequestModifications{} } @@ -604,7 +616,7 @@ func (p *ModelRoundRobinPolicy) modifyModelInPathParam(ctx *policy.RequestContex updatedFullPath = updatedPath + "?" + queryString } - slog.Debug("ModelRoundRobin: Modified request model in path param", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "pattern", regexPattern, "originalPath", pathWithoutQuery, "newPath", updatedPath) + log.Debug("Modified request model in path param", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "pattern", regexPattern, "originalPath", pathWithoutQuery, "newPath", updatedPath) // Set the :path pseudo-header to modify the path // Envoy ext_proc requires path modifications via the :path header diff --git a/gateway/policies/model-weighted-round-robin/v0.1.0/go.mod b/gateway/policies/model-weighted-round-robin/v0.1.0/go.mod index 5f3e332f2..7768dbb67 100644 --- a/gateway/policies/model-weighted-round-robin/v0.1.0/go.mod +++ b/gateway/policies/model-weighted-round-robin/v0.1.0/go.mod @@ -1,5 +1,5 @@ module github.com/policy-engine/policies/model-weighted-round-robin -go 1.23.0 +go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.3 diff --git a/gateway/policies/model-weighted-round-robin/v0.1.0/go.sum b/gateway/policies/model-weighted-round-robin/v0.1.0/go.sum index e705cd5f2..3a345ae92 100644 --- a/gateway/policies/model-weighted-round-robin/v0.1.0/go.sum +++ b/gateway/policies/model-weighted-round-robin/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:OmZv0Kltc/fOtgRdsMikhodQAWZG+lVjNPtOZxl/2OQ= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:byr46IKr+KyUuPT7hm/Si+KosOtLQt5tjMbHFhexQgM= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/model-weighted-round-robin/v0.1.0/weightedroundrobin.go b/gateway/policies/model-weighted-round-robin/v0.1.0/weightedroundrobin.go index ce3b03d5a..634b33ee0 100644 --- a/gateway/policies/model-weighted-round-robin/v0.1.0/weightedroundrobin.go +++ b/gateway/policies/model-weighted-round-robin/v0.1.0/weightedroundrobin.go @@ -59,6 +59,7 @@ type RequestModelConfig struct { // ModelWeightedRoundRobinPolicy implements weighted round-robin load balancing for AI models type ModelWeightedRoundRobinPolicy struct { + logger *slog.Logger currentIndex int mu sync.Mutex suspendedModels map[string]time.Time // Track suspended models @@ -70,6 +71,7 @@ type ModelWeightedRoundRobinPolicy struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { // Parse and validate parameters policyParams, err := parseParams(params) @@ -87,6 +89,7 @@ func GetPolicy( } p := &ModelWeightedRoundRobinPolicy{ + logger: logger, currentIndex: 0, suspendedModels: make(map[string]time.Time), weightedSequence: buildWeightedSequence(weightedModels), @@ -256,10 +259,12 @@ func (p *ModelWeightedRoundRobinPolicy) Mode() policy.ProcessingMode { // OnRequest processes the request and selects a model based on weights func (p *ModelWeightedRoundRobinPolicy) OnRequest(ctx *policy.RequestContext, params map[string]interface{}) policy.RequestAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) + // Extract original model from request originalModel, err := p.extractModelFromRequest(ctx) if err != nil { - slog.Debug("ModelWeightedRoundRobin: Could not extract original model", "error", err) + log.Debug("Could not extract original model", "error", err) } // Store original model in metadata @@ -280,13 +285,15 @@ func (p *ModelWeightedRoundRobinPolicy) OnRequest(ctx *policy.RequestContext, pa ctx.Metadata[MetadataKeySelectedModel] = selectedModel.Model - slog.Debug("ModelWeightedRoundRobin: Selected model", "model", selectedModel.Model, "weight", selectedModel.Weight, "index", p.currentIndex) + log.Debug("Selected model", "model", selectedModel.Model, "weight", selectedModel.Weight, "index", p.currentIndex) - return p.modifyRequestModel(ctx, selectedModel.Model) + return p.modifyRequestModel(ctx, selectedModel.Model, ctx.RequestID) } // OnResponse handles response processing and suspension on error func (p *ModelWeightedRoundRobinPolicy) OnResponse(ctx *policy.ResponseContext, params map[string]interface{}) policy.ResponseAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) + // Check if response indicates an error that should trigger suspension if ctx.ResponseStatus >= 500 || ctx.ResponseStatus == 429 { selectedModel := "" @@ -301,7 +308,7 @@ func (p *ModelWeightedRoundRobinPolicy) OnResponse(ctx *policy.ResponseContext, p.mu.Lock() p.suspendedModels[selectedModel] = time.Now().Add(time.Duration(p.params.SuspendDuration) * time.Second) p.mu.Unlock() - slog.Debug("ModelWeightedRoundRobin: Suspended model", "model", selectedModel, "duration", p.params.SuspendDuration) + log.Debug("Suspended model", "model", selectedModel, "duration", p.params.SuspendDuration) } } @@ -485,27 +492,29 @@ func (p *ModelWeightedRoundRobinPolicy) extractModelFromPath(ctx *policy.Request } // modifyRequestModel modifies the request to replace the model field based on location -func (p *ModelWeightedRoundRobinPolicy) modifyRequestModel(ctx *policy.RequestContext, newModel string) policy.RequestAction { +func (p *ModelWeightedRoundRobinPolicy) modifyRequestModel(ctx *policy.RequestContext, newModel string, requestID string) policy.RequestAction { + log := policy.WithRequestID(p.logger, requestID) location := p.params.RequestModel.Location identifier := p.params.RequestModel.Identifier switch location { case "payload": - return p.modifyModelInPayload(ctx, newModel, identifier) + return p.modifyModelInPayload(ctx, newModel, identifier, requestID) case "header": - return p.modifyModelInHeader(ctx, newModel, identifier) + return p.modifyModelInHeader(ctx, newModel, identifier, requestID) case "queryParam": - return p.modifyModelInQueryParam(ctx, newModel, identifier) + return p.modifyModelInQueryParam(ctx, newModel, identifier, requestID) case "pathParam": - return p.modifyModelInPathParam(ctx, newModel, identifier) + return p.modifyModelInPathParam(ctx, newModel, identifier, requestID) default: - slog.Debug("ModelWeightedRoundRobin: Unsupported location", "location", location) + log.Debug("Unsupported location", "location", location) return policy.UpstreamRequestModifications{} } } // modifyModelInPayload modifies the model in request body using JSONPath -func (p *ModelWeightedRoundRobinPolicy) modifyModelInPayload(ctx *policy.RequestContext, newModel string, jsonPath string) policy.RequestAction { +func (p *ModelWeightedRoundRobinPolicy) modifyModelInPayload(ctx *policy.RequestContext, newModel string, jsonPath string, requestID string) policy.RequestAction { + log := policy.WithRequestID(p.logger, requestID) if ctx.Body == nil || ctx.Body.Content == nil { return policy.ImmediateResponse{ StatusCode: 400, @@ -517,7 +526,7 @@ func (p *ModelWeightedRoundRobinPolicy) modifyModelInPayload(ctx *policy.Request // Parse request body var payloadData map[string]interface{} if err := json.Unmarshal(ctx.Body.Content, &payloadData); err != nil { - slog.Debug("ModelWeightedRoundRobin: Error unmarshaling request body", "error", err) + log.Debug("Error unmarshaling request body", "error", err) return policy.ImmediateResponse{ StatusCode: 400, Headers: map[string]string{"Content-Type": "application/json"}, @@ -527,7 +536,7 @@ func (p *ModelWeightedRoundRobinPolicy) modifyModelInPayload(ctx *policy.Request // Update model in payload if err := utils.SetValueAtJSONPath(payloadData, jsonPath, newModel); err != nil { - slog.Debug("ModelWeightedRoundRobin: Error setting model in request body", "jsonPath", jsonPath, "error", err) + log.Debug("Error setting model in request body", "jsonPath", jsonPath, "error", err) return policy.ImmediateResponse{ StatusCode: 400, Headers: map[string]string{"Content-Type": "application/json"}, @@ -538,7 +547,7 @@ func (p *ModelWeightedRoundRobinPolicy) modifyModelInPayload(ctx *policy.Request // Marshal back to JSON updatedPayload, err := json.Marshal(payloadData) if err != nil { - slog.Debug("ModelWeightedRoundRobin: Error marshaling updated request body", "error", err) + log.Debug("Error marshaling updated request body", "error", err) return policy.ImmediateResponse{ StatusCode: 500, Headers: map[string]string{"Content-Type": "application/json"}, @@ -546,7 +555,7 @@ func (p *ModelWeightedRoundRobinPolicy) modifyModelInPayload(ctx *policy.Request } } - slog.Debug("ModelWeightedRoundRobin: Modified request model in payload", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "jsonPath", jsonPath) + log.Debug("Modified request model in payload", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "jsonPath", jsonPath) return policy.UpstreamRequestModifications{ Body: updatedPayload, @@ -554,8 +563,9 @@ func (p *ModelWeightedRoundRobinPolicy) modifyModelInPayload(ctx *policy.Request } // modifyModelInHeader modifies the model in request header -func (p *ModelWeightedRoundRobinPolicy) modifyModelInHeader(ctx *policy.RequestContext, newModel string, headerName string) policy.RequestAction { - slog.Debug("ModelWeightedRoundRobin: Modified request model in header", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "header", headerName) +func (p *ModelWeightedRoundRobinPolicy) modifyModelInHeader(ctx *policy.RequestContext, newModel string, headerName string, requestID string) policy.RequestAction { + log := policy.WithRequestID(p.logger, requestID) + log.Debug("Modified request model in header", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "header", headerName) return policy.UpstreamRequestModifications{ SetHeaders: map[string]string{headerName: newModel}, @@ -563,16 +573,17 @@ func (p *ModelWeightedRoundRobinPolicy) modifyModelInHeader(ctx *policy.RequestC } // modifyModelInQueryParam modifies the model in query parameter by updating the path -func (p *ModelWeightedRoundRobinPolicy) modifyModelInQueryParam(ctx *policy.RequestContext, newModel string, paramName string) policy.RequestAction { +func (p *ModelWeightedRoundRobinPolicy) modifyModelInQueryParam(ctx *policy.RequestContext, newModel string, paramName string, requestID string) policy.RequestAction { + log := policy.WithRequestID(p.logger, requestID) if ctx.Path == "" { - slog.Debug("ModelWeightedRoundRobin: Cannot modify query param, path is empty") + log.Debug("Cannot modify query param, path is empty") return policy.UpstreamRequestModifications{} } // Parse the URL-encoded path decodedPath, err := url.PathUnescape(ctx.Path) if err != nil { - slog.Debug("ModelWeightedRoundRobin: Error decoding path", "error", err) + log.Debug("Error decoding path", "error", err) return policy.UpstreamRequestModifications{} } @@ -585,7 +596,7 @@ func (p *ModelWeightedRoundRobinPolicy) modifyModelInQueryParam(ctx *policy.Requ // Parse existing query string queryValues, err = url.ParseQuery(parts[1]) if err != nil { - slog.Debug("ModelWeightedRoundRobin: Error parsing query string", "error", err) + log.Debug("Error parsing query string", "error", err) return policy.UpstreamRequestModifications{} } } else { @@ -602,7 +613,7 @@ func (p *ModelWeightedRoundRobinPolicy) modifyModelInQueryParam(ctx *policy.Requ updatedPath = pathBase + "?" + queryValues.Encode() } - slog.Debug("ModelWeightedRoundRobin: Modified request model in query param", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "param", paramName, "newPath", updatedPath) + log.Debug("Modified request model in query param", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "param", paramName, "newPath", updatedPath) // Set the :path pseudo-header to modify the path and query string // Envoy ext_proc requires path modifications via the :path header @@ -614,16 +625,17 @@ func (p *ModelWeightedRoundRobinPolicy) modifyModelInQueryParam(ctx *policy.Requ } // modifyModelInPathParam modifies the model in path parameter using regex replacement -func (p *ModelWeightedRoundRobinPolicy) modifyModelInPathParam(ctx *policy.RequestContext, newModel string, regexPattern string) policy.RequestAction { +func (p *ModelWeightedRoundRobinPolicy) modifyModelInPathParam(ctx *policy.RequestContext, newModel string, regexPattern string, requestID string) policy.RequestAction { + log := policy.WithRequestID(p.logger, requestID) if ctx.Path == "" { - slog.Debug("ModelWeightedRoundRobin: Cannot modify path param, path is empty") + log.Debug("Cannot modify path param, path is empty") return policy.UpstreamRequestModifications{} } // Parse the URL-encoded path decodedPath, err := url.PathUnescape(ctx.Path) if err != nil { - slog.Debug("ModelWeightedRoundRobin: Error decoding path", "error", err) + log.Debug("Error decoding path", "error", err) return policy.UpstreamRequestModifications{} } @@ -638,14 +650,14 @@ func (p *ModelWeightedRoundRobinPolicy) modifyModelInPathParam(ctx *policy.Reque // Compile regex pattern re, err := regexp.Compile(regexPattern) if err != nil { - slog.Debug("ModelWeightedRoundRobin: Invalid regex pattern", "pattern", regexPattern, "error", err) + log.Debug("Invalid regex pattern", "pattern", regexPattern, "error", err) return policy.UpstreamRequestModifications{} } // Find the match to verify it exists and get the match indices matchIndices := re.FindStringSubmatchIndex(pathWithoutQuery) if len(matchIndices) < 4 { - slog.Debug("ModelWeightedRoundRobin: Regex pattern did not match path or no capture group", "pattern", regexPattern, "path", pathWithoutQuery) + log.Debug("Regex pattern did not match path or no capture group", "pattern", regexPattern, "path", pathWithoutQuery) return policy.UpstreamRequestModifications{} } @@ -656,7 +668,7 @@ func (p *ModelWeightedRoundRobinPolicy) modifyModelInPathParam(ctx *policy.Reque captureEnd := matchIndices[3] if captureStart == -1 || captureEnd == -1 { - slog.Debug("ModelWeightedRoundRobin: No capture group found in regex pattern", "pattern", regexPattern) + log.Debug("No capture group found in regex pattern", "pattern", regexPattern) return policy.UpstreamRequestModifications{} } @@ -669,7 +681,7 @@ func (p *ModelWeightedRoundRobinPolicy) modifyModelInPathParam(ctx *policy.Reque updatedFullPath = updatedPath + "?" + queryString } - slog.Debug("ModelWeightedRoundRobin: Modified request model in path param", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "pattern", regexPattern, "originalPath", pathWithoutQuery, "newPath", updatedPath) + log.Debug("Modified request model in path param", "originalModel", ctx.Metadata[MetadataKeyOriginalModel], "newModel", newModel, "pattern", regexPattern, "originalPath", pathWithoutQuery, "newPath", updatedPath) // Set the :path pseudo-header to modify the path // Envoy ext_proc requires path modifications via the :path header diff --git a/gateway/policies/modify-headers/v0.1.0/go.mod b/gateway/policies/modify-headers/v0.1.0/go.mod index eae4e8a8b..5ffbe33d0 100644 --- a/gateway/policies/modify-headers/v0.1.0/go.mod +++ b/gateway/policies/modify-headers/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/modify-headers go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.3 diff --git a/gateway/policies/modify-headers/v0.1.0/go.sum b/gateway/policies/modify-headers/v0.1.0/go.sum index a4dd64395..3a345ae92 100644 --- a/gateway/policies/modify-headers/v0.1.0/go.sum +++ b/gateway/policies/modify-headers/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/pii-masking-regex/v0.1.0/go.mod b/gateway/policies/pii-masking-regex/v0.1.0/go.mod index 7921e712c..eed1c95ed 100644 --- a/gateway/policies/pii-masking-regex/v0.1.0/go.mod +++ b/gateway/policies/pii-masking-regex/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/pii-masking-regex go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.3 diff --git a/gateway/policies/pii-masking-regex/v0.1.0/go.sum b/gateway/policies/pii-masking-regex/v0.1.0/go.sum index a4dd64395..3a345ae92 100644 --- a/gateway/policies/pii-masking-regex/v0.1.0/go.sum +++ b/gateway/policies/pii-masking-regex/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/pii-masking-regex/v0.1.0/piimaskingregex.go b/gateway/policies/pii-masking-regex/v0.1.0/piimaskingregex.go index c6e255cbe..1073147a4 100644 --- a/gateway/policies/pii-masking-regex/v0.1.0/piimaskingregex.go +++ b/gateway/policies/pii-masking-regex/v0.1.0/piimaskingregex.go @@ -3,6 +3,7 @@ package piimaskingregex import ( "encoding/json" "fmt" + "log/slog" "regexp" "sort" "strings" @@ -22,6 +23,7 @@ var textCleanRegexCompiled = regexp.MustCompile(TextCleanRegex) // PIIMaskingRegexPolicy implements regex-based PII masking type PIIMaskingRegexPolicy struct { + logger *slog.Logger params PIIMaskingRegexPolicyParams } @@ -34,8 +36,11 @@ type PIIMaskingRegexPolicyParams struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - p := &PIIMaskingRegexPolicy{} + p := &PIIMaskingRegexPolicy{ + logger: logger, + } // Parse parameters (piiEntities is required) policyParams, err := parseParams(params, true) // true = piiEntities is required @@ -44,6 +49,8 @@ func GetPolicy( } p.params = policyParams + p.logger.Debug("Policy initialized", "piiEntityCount", len(p.params.PIIEntities), "redactPII", p.params.RedactPII) + return p, nil } @@ -146,6 +153,8 @@ func (p *PIIMaskingRegexPolicy) Mode() policy.ProcessingMode { // OnRequest masks PII in request body func (p *PIIMaskingRegexPolicy) OnRequest(ctx *policy.RequestContext, params map[string]interface{}) policy.RequestAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) + if len(p.params.PIIEntities) == 0 { // No PII entities configured, pass through return policy.UpstreamRequestModifications{} @@ -159,6 +168,7 @@ func (p *PIIMaskingRegexPolicy) OnRequest(ctx *policy.RequestContext, params map // Extract value using JSONPath extractedValue, err := utils.ExtractStringValueFromJsonpath(payload, p.params.JsonPath) if err != nil { + log.Debug("Error extracting value from JSONPath", "jsonPath", p.params.JsonPath, "error", err) return p.buildErrorResponse(fmt.Sprintf("error extracting value from JSONPath: %v", err)).(policy.RequestAction) } @@ -174,6 +184,7 @@ func (p *PIIMaskingRegexPolicy) OnRequest(ctx *policy.RequestContext, params map // Masking mode: replace with placeholders and store mappings modifiedContent, err = p.maskPIIFromContent(extractedValue, p.params.PIIEntities, ctx.Metadata) if err != nil { + log.Debug("Error masking PII", "error", err) return p.buildErrorResponse(fmt.Sprintf("error masking PII: %v", err)).(policy.RequestAction) } } @@ -181,6 +192,7 @@ func (p *PIIMaskingRegexPolicy) OnRequest(ctx *policy.RequestContext, params map // If content was modified, update the payload if modifiedContent != "" && modifiedContent != extractedValue { modifiedPayload := p.updatePayloadWithMaskedContent(payload, extractedValue, modifiedContent, p.params.JsonPath) + log.Debug("PII masked in request", "originalLength", len(extractedValue), "modifiedLength", len(modifiedContent)) return policy.UpstreamRequestModifications{ Body: modifiedPayload, } @@ -191,6 +203,8 @@ func (p *PIIMaskingRegexPolicy) OnRequest(ctx *policy.RequestContext, params map // OnResponse restores PII in response body (if redactPII is false) func (p *PIIMaskingRegexPolicy) OnResponse(ctx *policy.ResponseContext, params map[string]interface{}) policy.ResponseAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) + // If redactPII is true, no restoration needed if p.params.RedactPII { return policy.UpstreamResponseModifications{} @@ -215,6 +229,7 @@ func (p *PIIMaskingRegexPolicy) OnResponse(ctx *policy.ResponseContext, params m // Restore PII in response restoredContent := p.restorePIIInResponse(string(payload), maskedPIIMap) if restoredContent != string(payload) { + log.Debug("PII restored in response", "maskedCount", len(maskedPIIMap)) return policy.UpstreamResponseModifications{ Body: []byte(restoredContent), } diff --git a/gateway/policies/prompt-decorator/v0.1.0/go.mod b/gateway/policies/prompt-decorator/v0.1.0/go.mod index 91bd18117..0efb34560 100644 --- a/gateway/policies/prompt-decorator/v0.1.0/go.mod +++ b/gateway/policies/prompt-decorator/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/prompt-decorator go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.3 diff --git a/gateway/policies/prompt-decorator/v0.1.0/go.sum b/gateway/policies/prompt-decorator/v0.1.0/go.sum index a4dd64395..3a345ae92 100644 --- a/gateway/policies/prompt-decorator/v0.1.0/go.sum +++ b/gateway/policies/prompt-decorator/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/prompt-decorator/v0.1.0/promptdecorator.go b/gateway/policies/prompt-decorator/v0.1.0/promptdecorator.go index d7b3e87c1..af622095c 100644 --- a/gateway/policies/prompt-decorator/v0.1.0/promptdecorator.go +++ b/gateway/policies/prompt-decorator/v0.1.0/promptdecorator.go @@ -16,6 +16,7 @@ var arrayIndexRegex = regexp.MustCompile(`^([a-zA-Z0-9_]+)\[(-?\d+)\]$`) // PromptDecoratorPolicy implements prompt decoration by applying custom decorations type PromptDecoratorPolicy struct { + logger *slog.Logger params PromptDecoratorPolicyParams } @@ -40,8 +41,11 @@ type PromptDecoratorPolicyParams struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - p := &PromptDecoratorPolicy{} + p := &PromptDecoratorPolicy{ + logger: logger, + } // Parse parameters policyParams, err := parseParams(params) @@ -50,7 +54,7 @@ func GetPolicy( } p.params = policyParams - slog.Debug("PromptDecorator: Policy initialized", "jsonPath", p.params.JsonPath, "append", p.params.Append) + p.logger.Debug("Policy initialized", "jsonPath", p.params.JsonPath, "append", p.params.Append) return p, nil } @@ -155,6 +159,8 @@ func (p *PromptDecoratorPolicy) Mode() policy.ProcessingMode { // OnRequest decorates request body func (p *PromptDecoratorPolicy) OnRequest(ctx *policy.RequestContext, params map[string]interface{}) policy.RequestAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) + var content []byte if ctx.Body != nil { content = ctx.Body.Content @@ -168,14 +174,14 @@ func (p *PromptDecoratorPolicy) OnRequest(ctx *policy.RequestContext, params map // Parse JSON payload var payloadData map[string]interface{} if err := json.Unmarshal(content, &payloadData); err != nil { - slog.Debug("PromptDecorator: Error parsing JSON payload", "error", err) + log.Debug("Error parsing JSON payload", "error", err) return p.buildErrorResponse("Error parsing JSON payload", err) } // Extract value using JSONPath extractedValue, err := utils.ExtractValueFromJsonpath(payloadData, p.params.JsonPath) if err != nil { - slog.Debug("PromptDecorator: Error extracting value from JSONPath", "jsonPath", p.params.JsonPath, "error", err) + log.Debug("Error extracting value from JSONPath", "jsonPath", p.params.JsonPath, "error", err) return p.buildErrorResponse("Error extracting value from JSONPath", err) } @@ -214,9 +220,9 @@ func (p *PromptDecoratorPolicy) OnRequest(ctx *policy.RequestContext, params map updatedContent = decorationStr + " " + v } - slog.Debug("PromptDecorator: Applied string decoration", "jsonPath", p.params.JsonPath, "append", p.params.Append, "originalLength", len(v), "updatedLength", len(updatedContent)) + log.Debug("Applied string decoration", "jsonPath", p.params.JsonPath, "append", p.params.Append, "originalLength", len(v), "updatedLength", len(updatedContent)) // Update the content field - return p.updateStringAtPath(payloadData, p.params.JsonPath, updatedContent) + return p.updateStringAtPath(payloadData, p.params.JsonPath, updatedContent, ctx.RequestID) case []interface{}: // Decorating an array of messages (e.g., $.messages) @@ -231,7 +237,7 @@ func (p *PromptDecoratorPolicy) OnRequest(ctx *policy.RequestContext, params map elementType := fmt.Sprintf("%T", item) elementValue := fmt.Sprintf("%v", item) malformedEntries = append(malformedEntries, fmt.Sprintf("index %d: type=%s, value=%s", i, elementType, elementValue)) - slog.Debug("PromptDecorator: Non-map element detected in messages array", "jsonPath", p.params.JsonPath, "index", i, "type", elementType, "value", elementValue) + log.Debug("Non-map element detected in messages array", "jsonPath", p.params.JsonPath, "index", i, "type", elementType, "value", elementValue) } } @@ -244,7 +250,7 @@ func (p *PromptDecoratorPolicy) OnRequest(ctx *policy.RequestContext, params map // Create decoration messages from decoration config decorationMessages, err := p.createDecorationMessages() if err != nil { - slog.Debug("PromptDecorator: Error creating decoration messages", "error", err) + log.Debug("Error creating decoration messages", "error", err) return p.buildErrorResponse("Error creating decoration messages", err) } @@ -256,9 +262,9 @@ func (p *PromptDecoratorPolicy) OnRequest(ctx *policy.RequestContext, params map updatedMessages = append(decorationMessages, messages...) } - slog.Debug("PromptDecorator: Applied array decoration", "jsonPath", p.params.JsonPath, "append", p.params.Append, "originalCount", len(messages), "decorationCount", len(decorationMessages), "updatedCount", len(updatedMessages)) + log.Debug("Applied array decoration", "jsonPath", p.params.JsonPath, "append", p.params.Append, "originalCount", len(messages), "decorationCount", len(decorationMessages), "updatedCount", len(updatedMessages)) // Update the messages array - return p.updateArrayAtPath(payloadData, p.params.JsonPath, updatedMessages) + return p.updateArrayAtPath(payloadData, p.params.JsonPath, updatedMessages, ctx.RequestID) case []map[string]interface{}: // Already in the right format @@ -267,7 +273,7 @@ func (p *PromptDecoratorPolicy) OnRequest(ctx *policy.RequestContext, params map // Create decoration messages from decoration config decorationMessages, err := p.createDecorationMessages() if err != nil { - slog.Debug("PromptDecorator: Error creating decoration messages", "error", err) + log.Debug("Error creating decoration messages", "error", err) return p.buildErrorResponse("Error creating decoration messages", err) } @@ -279,12 +285,12 @@ func (p *PromptDecoratorPolicy) OnRequest(ctx *policy.RequestContext, params map updatedMessages = append(decorationMessages, messages...) } - slog.Debug("PromptDecorator: Applied array decoration", "jsonPath", p.params.JsonPath, "append", p.params.Append, "originalCount", len(messages), "decorationCount", len(decorationMessages), "updatedCount", len(updatedMessages)) + log.Debug("Applied array decoration", "jsonPath", p.params.JsonPath, "append", p.params.Append, "originalCount", len(messages), "decorationCount", len(decorationMessages), "updatedCount", len(updatedMessages)) // Update the messages array - return p.updateArrayAtPath(payloadData, p.params.JsonPath, updatedMessages) + return p.updateArrayAtPath(payloadData, p.params.JsonPath, updatedMessages, ctx.RequestID) default: - slog.Debug("PromptDecorator: Invalid extracted value type", "type", fmt.Sprintf("%T", extractedValue)) + log.Debug("Invalid extracted value type", "type", fmt.Sprintf("%T", extractedValue)) return p.buildErrorResponse("Extracted value must be a string or an array of message objects", fmt.Errorf("unexpected type: %T", extractedValue)) } } @@ -321,7 +327,8 @@ func (p *PromptDecoratorPolicy) createDecorationMessages() ([]map[string]interfa } // updateStringAtPath updates a string value at the given JSONPath -func (p *PromptDecoratorPolicy) updateStringAtPath(payloadData map[string]interface{}, jsonPath string, value string) policy.RequestAction { +func (p *PromptDecoratorPolicy) updateStringAtPath(payloadData map[string]interface{}, jsonPath string, value string, requestID string) policy.RequestAction { + log := policy.WithRequestID(p.logger, requestID) path := jsonPath if strings.HasPrefix(path, "$.") { path = strings.TrimPrefix(path, "$.") @@ -338,7 +345,7 @@ func (p *PromptDecoratorPolicy) updateStringAtPath(payloadData map[string]interf key := pathComponents[i] current = p.navigatePath(current, key) if current == nil { - slog.Debug("PromptDecorator: Error navigating JSONPath", "jsonPath", jsonPath, "key", key) + log.Debug("Error navigating JSONPath", "jsonPath", jsonPath, "key", key) return p.buildErrorResponse("Error navigating JSONPath", fmt.Errorf("key not found: %s", key)) } } @@ -346,13 +353,13 @@ func (p *PromptDecoratorPolicy) updateStringAtPath(payloadData map[string]interf // Update final key finalKey := pathComponents[len(pathComponents)-1] if err := p.setValueAtPath(current, finalKey, value); err != nil { - slog.Debug("PromptDecorator: Error updating JSONPath", "jsonPath", jsonPath, "error", err) + log.Debug("Error updating JSONPath", "jsonPath", jsonPath, "error", err) return p.buildErrorResponse("Error updating JSONPath", err) } updatedPayload, err := json.Marshal(payloadData) if err != nil { - slog.Debug("PromptDecorator: Error marshaling updated JSON payload", "error", err) + log.Debug("Error marshaling updated JSON payload", "error", err) return p.buildErrorResponse("Error marshaling updated JSON payload", err) } @@ -362,7 +369,8 @@ func (p *PromptDecoratorPolicy) updateStringAtPath(payloadData map[string]interf } // updateArrayAtPath updates an array value at the given JSONPath -func (p *PromptDecoratorPolicy) updateArrayAtPath(payloadData map[string]interface{}, jsonPath string, value []map[string]interface{}) policy.RequestAction { +func (p *PromptDecoratorPolicy) updateArrayAtPath(payloadData map[string]interface{}, jsonPath string, value []map[string]interface{}, requestID string) policy.RequestAction { + log := policy.WithRequestID(p.logger, requestID) path := jsonPath if strings.HasPrefix(path, "$.") { path = strings.TrimPrefix(path, "$.") @@ -379,7 +387,7 @@ func (p *PromptDecoratorPolicy) updateArrayAtPath(payloadData map[string]interfa key := pathComponents[i] current = p.navigatePath(current, key) if current == nil { - slog.Debug("PromptDecorator: Error navigating JSONPath", "jsonPath", jsonPath, "key", key) + log.Debug("Error navigating JSONPath", "jsonPath", jsonPath, "key", key) return p.buildErrorResponse("Error navigating JSONPath", fmt.Errorf("key not found: %s", key)) } } @@ -393,13 +401,13 @@ func (p *PromptDecoratorPolicy) updateArrayAtPath(payloadData map[string]interfa // Update final key finalKey := pathComponents[len(pathComponents)-1] if err := p.setValueAtPath(current, finalKey, valueInterface); err != nil { - slog.Debug("PromptDecorator: Error updating JSONPath", "jsonPath", jsonPath, "error", err) + log.Debug("Error updating JSONPath", "jsonPath", jsonPath, "error", err) return p.buildErrorResponse("Error updating JSONPath", err) } updatedPayload, err := json.Marshal(payloadData) if err != nil { - slog.Debug("PromptDecorator: Error marshaling updated JSON payload", "error", err) + log.Debug("Error marshaling updated JSON payload", "error", err) return p.buildErrorResponse("Error marshaling updated JSON payload", err) } diff --git a/gateway/policies/prompt-template/v0.1.0/go.mod b/gateway/policies/prompt-template/v0.1.0/go.mod index b9fe124fd..0f67ff569 100644 --- a/gateway/policies/prompt-template/v0.1.0/go.mod +++ b/gateway/policies/prompt-template/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/prompt-template go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.3 diff --git a/gateway/policies/prompt-template/v0.1.0/go.sum b/gateway/policies/prompt-template/v0.1.0/go.sum index a4dd64395..3a345ae92 100644 --- a/gateway/policies/prompt-template/v0.1.0/go.sum +++ b/gateway/policies/prompt-template/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/prompt-template/v0.1.0/prompttemplate.go b/gateway/policies/prompt-template/v0.1.0/prompttemplate.go index 0f8c01480..eebd98fb6 100644 --- a/gateway/policies/prompt-template/v0.1.0/prompttemplate.go +++ b/gateway/policies/prompt-template/v0.1.0/prompttemplate.go @@ -21,6 +21,7 @@ var ( // PromptTemplatePolicy implements prompt templating by applying custom templates type PromptTemplatePolicy struct { + logger *slog.Logger params PromptTemplatePolicyParams } @@ -38,11 +39,14 @@ type PromptTemplatePolicyParams struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - p := &PromptTemplatePolicy{} + p := &PromptTemplatePolicy{ + logger: logger, + } // Parse parameters - policyParams, err := parseParams(params) + policyParams, err := parseParams(params, logger) if err != nil { return nil, fmt.Errorf("invalid parameters: %w", err) } @@ -52,7 +56,7 @@ func GetPolicy( } // parseParams parses and validates parameters from map to struct -func parseParams(params map[string]interface{}) (PromptTemplatePolicyParams, error) { +func parseParams(params map[string]interface{}, logger *slog.Logger) (PromptTemplatePolicyParams, error) { var result PromptTemplatePolicyParams // Extract required promptTemplateConfig parameter promptTemplateConfigRaw, ok := params["promptTemplateConfig"] @@ -110,7 +114,7 @@ func parseParams(params map[string]interface{}) (PromptTemplatePolicyParams, err for name := range result.templates { templateNames = append(templateNames, name) } - slog.Debug("PromptTemplate: Policy initialized", "templateCount", len(result.templates), "templateNames", templateNames) + logger.Debug("Policy initialized", "templateCount", len(result.templates), "templateNames", templateNames) return result, nil } @@ -127,6 +131,8 @@ func (p *PromptTemplatePolicy) Mode() policy.ProcessingMode { // OnRequest applies template to request body func (p *PromptTemplatePolicy) OnRequest(ctx *policy.RequestContext, params map[string]interface{}) policy.RequestAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) + var content []byte if ctx.Body != nil { content = ctx.Body.Content @@ -143,7 +149,7 @@ func (p *PromptTemplatePolicy) OnRequest(ctx *policy.RequestContext, params map[ // Find all template://? patterns (query params are optional) matches := promptTemplateRegex.FindAllString(jsonContent, -1) if len(matches) > 0 { - slog.Debug("PromptTemplate: Found template patterns", "count", len(matches)) + log.Debug("Found template patterns", "count", len(matches)) } for _, matched := range matches { // Parse the matched string as a URI @@ -160,7 +166,7 @@ func (p *PromptTemplatePolicy) OnRequest(ctx *policy.RequestContext, params map[ // Look up template by name templatePrompt, exists := p.params.templates[templateName] if !exists { - slog.Debug("PromptTemplate: Template not found", "templateName", templateName) + log.Debug("Template not found", "templateName", templateName) // Template not found, return error return p.buildErrorResponse(fmt.Sprintf("Template '%s' not found", templateName), nil) } @@ -194,14 +200,14 @@ func (p *PromptTemplatePolicy) OnRequest(ctx *policy.RequestContext, params map[ // Escape the resolved prompt for JSON (add quotes and escape special chars) escapedPromptBytes, err := json.Marshal(resolvedPrompt) if err != nil { - slog.Debug("PromptTemplate: Error marshaling resolved prompt to JSON", "templateName", templateName, "error", err) + log.Debug("Error marshaling resolved prompt to JSON", "templateName", templateName, "error", err) // If marshaling fails, return error return p.buildErrorResponse("Error marshaling resolved prompt to JSON", err) } escapedPrompt := string(escapedPromptBytes) escapedPrompt = textCleanRegex.ReplaceAllString(escapedPrompt, "") - slog.Debug("PromptTemplate: Resolved template", "templateName", templateName, "paramCount", len(paramsMap), "resolvedLength", len(resolvedPrompt)) + log.Debug("Resolved template", "templateName", templateName, "paramCount", len(paramsMap), "resolvedLength", len(resolvedPrompt)) // Replace all occurrences of the matched template:// pattern with the resolved prompt updatedJsonContent = strings.ReplaceAll(updatedJsonContent, matched, escapedPrompt) } diff --git a/gateway/policies/regex-guardrail/v0.1.0/go.mod b/gateway/policies/regex-guardrail/v0.1.0/go.mod index 8de2523a2..4817d0abf 100644 --- a/gateway/policies/regex-guardrail/v0.1.0/go.mod +++ b/gateway/policies/regex-guardrail/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/regex-guardrail go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.3 diff --git a/gateway/policies/regex-guardrail/v0.1.0/go.sum b/gateway/policies/regex-guardrail/v0.1.0/go.sum index a4dd64395..3a345ae92 100644 --- a/gateway/policies/regex-guardrail/v0.1.0/go.sum +++ b/gateway/policies/regex-guardrail/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/respond/v0.1.0/go.mod b/gateway/policies/respond/v0.1.0/go.mod index ec0c2a3e4..6e47f849f 100644 --- a/gateway/policies/respond/v0.1.0/go.mod +++ b/gateway/policies/respond/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/respond go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.3 diff --git a/gateway/policies/respond/v0.1.0/go.sum b/gateway/policies/respond/v0.1.0/go.sum index a4dd64395..3a345ae92 100644 --- a/gateway/policies/respond/v0.1.0/go.sum +++ b/gateway/policies/respond/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/semantic-cache/v0.1.0/go.mod b/gateway/policies/semantic-cache/v0.1.0/go.mod index 235e7cfbe..51cdcf52d 100644 --- a/gateway/policies/semantic-cache/v0.1.0/go.mod +++ b/gateway/policies/semantic-cache/v0.1.0/go.mod @@ -4,7 +4,7 @@ go 1.25.1 require ( github.com/google/uuid v1.6.0 - github.com/wso2/api-platform/sdk v0.3.1 + github.com/wso2/api-platform/sdk v0.3.3 ) require ( @@ -58,10 +58,10 @@ require ( github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/prometheus/client_golang v1.22.0 // indirect + github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.62.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/redis/go-redis/v9 v9.8.0 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/samber/lo v1.27.0 // indirect @@ -105,6 +105,7 @@ require ( go.uber.org/automaxprocs v1.5.3 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/crypto v0.46.0 // indirect golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect golang.org/x/net v0.48.0 // indirect diff --git a/gateway/policies/semantic-cache/v0.1.0/go.sum b/gateway/policies/semantic-cache/v0.1.0/go.sum index 916243bdd..99c017b83 100644 --- a/gateway/policies/semantic-cache/v0.1.0/go.sum +++ b/gateway/policies/semantic-cache/v0.1.0/go.sum @@ -290,15 +290,15 @@ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI= github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= github.com/remeh/sizedwaitgroup v1.0.0 h1:VNGGFwNo/R5+MJBf6yrsr110p0m4/OX4S3DCy7Kyl5E= @@ -385,8 +385,8 @@ github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBn github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -454,6 +454,8 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= diff --git a/gateway/policies/semantic-cache/v0.1.0/semanticcache.go b/gateway/policies/semantic-cache/v0.1.0/semanticcache.go index 8a26c7cc2..59796bb95 100644 --- a/gateway/policies/semantic-cache/v0.1.0/semanticcache.go +++ b/gateway/policies/semantic-cache/v0.1.0/semanticcache.go @@ -41,6 +41,9 @@ const ( // SemanticCachePolicy implements semantic caching for LLM responses type SemanticCachePolicy struct { + // Logger + logger *slog.Logger + embeddingConfig embeddingproviders.EmbeddingProviderConfig vectorStoreConfig vectordbproviders.VectorDBProviderConfig embeddingProvider embeddingproviders.EmbeddingProvider @@ -53,8 +56,11 @@ type SemanticCachePolicy struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - p := &SemanticCachePolicy{} + p := &SemanticCachePolicy{ + logger: logger, + } // Parse and validate parameters if err := parseParams(params, p); err != nil { @@ -80,7 +86,7 @@ func GetPolicy( return nil, fmt.Errorf("failed to create vector store index: %w", err) } - slog.Debug("SemanticCache: Policy initialized", "embeddingProvider", embeddingProvider, "vectorStoreProvider", vectorStoreProvider, "similarityThreshold", p.threshold) + p.logger.Debug("Policy initialized", "embeddingProvider", embeddingProvider, "vectorStoreProvider", vectorStoreProvider, "similarityThreshold", p.threshold) return p, nil } @@ -309,6 +315,8 @@ func (p *SemanticCachePolicy) Mode() policy.ProcessingMode { // OnRequest handles request body processing for semantic caching func (p *SemanticCachePolicy) OnRequest(ctx *policy.RequestContext, params map[string]interface{}) policy.RequestAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) + var content []byte if ctx.Body != nil { content = ctx.Body.Content @@ -333,7 +341,7 @@ func (p *SemanticCachePolicy) OnRequest(ctx *policy.RequestContext, params map[s // Generate embedding embedding, err := p.embeddingProvider.GetEmbedding(textToEmbed) if err != nil { - slog.Debug("SemanticCache: Error generating embedding", "error", err) + log.Debug("Error generating embedding", "error", err) // Log error but don't block request return policy.UpstreamRequestModifications{} } @@ -360,7 +368,7 @@ func (p *SemanticCachePolicy) OnRequest(ctx *policy.RequestContext, params map[s cacheResponse, err := p.vectorStoreProvider.Retrieve(embedding, cacheFilter) if err != nil { - slog.Debug("SemanticCache: Cache retrieval error", "error", err, "apiID", apiID) + log.Debug("Cache retrieval error", "error", err, "apiID", apiID) // Cache miss or error - continue to upstream return policy.UpstreamRequestModifications{} } @@ -368,13 +376,13 @@ func (p *SemanticCachePolicy) OnRequest(ctx *policy.RequestContext, params map[s // Check if we got a valid cache response // Retrieve returns empty CacheResponse on no match or threshold not met if cacheResponse.ResponsePayload == nil || len(cacheResponse.ResponsePayload) == 0 { - slog.Debug("SemanticCache: Cache miss", "apiID", apiID, "threshold", p.threshold) + log.Debug("Cache miss", "apiID", apiID, "threshold", p.threshold) // Cache miss - continue to upstream return policy.UpstreamRequestModifications{} } // Cache hit - return cached response immediately - slog.Debug("SemanticCache: Cache hit", "apiID", apiID) + log.Debug("Cache hit", "apiID", apiID) responseBytes, err := json.Marshal(cacheResponse.ResponsePayload) if err != nil { return policy.UpstreamRequestModifications{} @@ -392,9 +400,11 @@ func (p *SemanticCachePolicy) OnRequest(ctx *policy.RequestContext, params map[s // OnResponse handles response body processing for semantic caching func (p *SemanticCachePolicy) OnResponse(ctx *policy.ResponseContext, params map[string]interface{}) policy.ResponseAction { + log := policy.WithRequestID(p.logger, ctx.RequestID) + // Only cache successful responses (200 status code) if ctx.ResponseStatus != 200 { - slog.Debug("SemanticCache: Skipping cache for non-200 response", "statusCode", ctx.ResponseStatus) + log.Debug("Skipping cache for non-200 response", "statusCode", ctx.ResponseStatus) return policy.UpstreamResponseModifications{} } @@ -410,7 +420,7 @@ func (p *SemanticCachePolicy) OnResponse(ctx *policy.ResponseContext, params map // Retrieve embedding from metadata (stored in request phase) embeddingStr, ok := ctx.Metadata[MetadataKeyEmbedding].(string) if !ok || embeddingStr == "" { - slog.Debug("SemanticCache: No embedding found in metadata, skipping cache storage") + log.Debug("No embedding found in metadata, skipping cache storage") return policy.UpstreamResponseModifications{} } @@ -446,12 +456,12 @@ func (p *SemanticCachePolicy) OnResponse(ctx *policy.ResponseContext, params map } if err := p.vectorStoreProvider.Store(embedding, cacheResponse, cacheFilter); err != nil { - slog.Debug("SemanticCache: Error storing in cache", "error", err, "apiID", apiID) + log.Debug("Error storing in cache", "error", err, "apiID", apiID) // Log error but don't modify response return policy.UpstreamResponseModifications{} } - slog.Debug("SemanticCache: Response cached successfully", "apiID", apiID) + log.Debug("Response cached successfully", "apiID", apiID) return policy.UpstreamResponseModifications{} } diff --git a/gateway/policies/semantic-prompt-guard/v0.1.0/go.mod b/gateway/policies/semantic-prompt-guard/v0.1.0/go.mod index c818f3392..5f03502ac 100644 --- a/gateway/policies/semantic-prompt-guard/v0.1.0/go.mod +++ b/gateway/policies/semantic-prompt-guard/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/semantic-prompt-guard go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.3 diff --git a/gateway/policies/semantic-prompt-guard/v0.1.0/go.sum b/gateway/policies/semantic-prompt-guard/v0.1.0/go.sum index a4dd64395..3a345ae92 100644 --- a/gateway/policies/semantic-prompt-guard/v0.1.0/go.sum +++ b/gateway/policies/semantic-prompt-guard/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= +github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/semantic-prompt-guard/v0.1.0/semanticpromptguard.go b/gateway/policies/semantic-prompt-guard/v0.1.0/semanticpromptguard.go index fbf5f0b19..f6573a979 100644 --- a/gateway/policies/semantic-prompt-guard/v0.1.0/semanticpromptguard.go +++ b/gateway/policies/semantic-prompt-guard/v0.1.0/semanticpromptguard.go @@ -38,6 +38,9 @@ type SemanticPromptGuardPolicyParams struct { // SemanticPromptGuardPolicy performs semantic similarity checks against allow/deny lists. type SemanticPromptGuardPolicy struct { + // Logger + logger *slog.Logger + embeddingProvider embeddingproviders.EmbeddingProvider embeddingConfig embeddingproviders.EmbeddingProviderConfig params SemanticPromptGuardPolicyParams @@ -46,8 +49,11 @@ type SemanticPromptGuardPolicy struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - p := &SemanticPromptGuardPolicy{} + p := &SemanticPromptGuardPolicy{ + logger: logger, + } // Parse and validate embedding provider configuration (from systemParameters) if err := parseEmbeddingConfig(params, p); err != nil { @@ -188,7 +194,7 @@ func parseParams(params map[string]interface{}, p *SemanticPromptGuardPolicy) (S return result, fmt.Errorf("at least one allowedPhrases or deniedPhrases entry is required") } - slog.Debug("SemanticPromptGuard: Loaded phrases", "allowedCount", len(allowedPhrases), "deniedCount", len(deniedPhrases)) + p.logger.Debug("Loaded phrases", "allowedCount", len(allowedPhrases), "deniedCount", len(deniedPhrases)) // Ensure embeddings for phrases that don't have them allowedPhrases, err = p.ensureEmbeddings(allowedPhrases) @@ -276,7 +282,7 @@ func (p *SemanticPromptGuardPolicy) ensureEmbeddings(phrases []PhraseEmbedding) } // Fetch all embeddings in a single batch call - slog.Debug("SemanticPromptGuard: Fetching embeddings", "phraseCount", len(textsToFetch)) + p.logger.Debug("Fetching embeddings", "phraseCount", len(textsToFetch)) embeddingsFloat32, err := p.embeddingProvider.GetEmbeddings(textsToFetch) if err != nil { return nil, fmt.Errorf("failed to get embeddings: %w", err) @@ -310,7 +316,7 @@ func (p *SemanticPromptGuardPolicy) OnRequest(ctx *policy.RequestContext, params if ctx.Body != nil { content = ctx.Body.Content } - return p.validatePayload(content, p.params).(policy.RequestAction) + return p.validatePayload(content, p.params, ctx.RequestID).(policy.RequestAction) } // OnResponse is not used by this policy (validation is request-only) @@ -319,7 +325,9 @@ func (p *SemanticPromptGuardPolicy) OnResponse(ctx *policy.ResponseContext, para } // validatePayload validates payload using semantic similarity -func (p *SemanticPromptGuardPolicy) validatePayload(payload []byte, params SemanticPromptGuardPolicyParams) interface{} { +func (p *SemanticPromptGuardPolicy) validatePayload(payload []byte, params SemanticPromptGuardPolicyParams, requestID string) interface{} { + log := policy.WithRequestID(p.logger, requestID) + // Extract prompt using JSONPath prompt, err := utils.ExtractStringValueFromJsonpath(payload, params.JsonPath) if err != nil { @@ -333,7 +341,7 @@ func (p *SemanticPromptGuardPolicy) validatePayload(payload []byte, params Seman // Get embedding using the provider promptEmbedding, err := p.embeddingProvider.GetEmbedding(prompt) if err != nil { - slog.Debug("SemanticPromptGuard: Error fetching prompt embedding", "error", err) + log.Debug("Error fetching prompt embedding", "error", err) return p.buildErrorResponse("Failed to generate embedding for prompt", err, params.ShowAssessment) } @@ -342,13 +350,13 @@ func (p *SemanticPromptGuardPolicy) validatePayload(payload []byte, params Seman // Only denied list: block if matches denied phrases, allow otherwise if similarity, phrase, err := maxSimilarity(promptEmbedding, params.DeniedPhrases); err == nil { if similarity >= params.DenySimilarityThreshold { - slog.Debug("SemanticPromptGuard: BLOCKED - prompt too similar to denied phrase", "phrase", phrase.Phrase, "similarity", similarity, "threshold", params.DenySimilarityThreshold) + log.Debug("BLOCKED - prompt too similar to denied phrase", "phrase", phrase.Phrase, "similarity", similarity, "threshold", params.DenySimilarityThreshold) reason := fmt.Sprintf("prompt is too similar to denied phrase '%s' (similarity=%.4f)", phrase.Phrase, similarity) return p.buildErrorResponse(reason, nil, params.ShowAssessment) } - slog.Debug("SemanticPromptGuard: ALLOWED - prompt does not match denied phrases", "maxSimilarity", similarity, "threshold", params.DenySimilarityThreshold) + log.Debug("ALLOWED - prompt does not match denied phrases", "maxSimilarity", similarity, "threshold", params.DenySimilarityThreshold) } else { - slog.Debug("SemanticPromptGuard: Error calculating similarity to denied phrases", "error", err) + log.Debug("Error calculating similarity to denied phrases", "error", err) return p.buildErrorResponse("Error calculating semantic similarity", err, params.ShowAssessment) } return policy.UpstreamRequestModifications{} @@ -356,39 +364,39 @@ func (p *SemanticPromptGuardPolicy) validatePayload(payload []byte, params Seman // Only allowed list: allow if matches allowed phrases, block otherwise allowedSimilarity, phrase, err := maxSimilarity(promptEmbedding, params.AllowedPhrases) if err != nil { - slog.Debug("SemanticPromptGuard: Error calculating similarity to allowed phrases", "error", err) + log.Debug("Error calculating similarity to allowed phrases", "error", err) return p.buildErrorResponse("Error calculating semantic similarity", err, params.ShowAssessment) } if allowedSimilarity >= params.AllowSimilarityThreshold { - slog.Debug("SemanticPromptGuard: ALLOWED - prompt matches allowed phrase", "phrase", phrase.Phrase, "similarity", allowedSimilarity, "threshold", params.AllowSimilarityThreshold) + log.Debug("ALLOWED - prompt matches allowed phrase", "phrase", phrase.Phrase, "similarity", allowedSimilarity, "threshold", params.AllowSimilarityThreshold) return policy.UpstreamRequestModifications{} } - slog.Debug("SemanticPromptGuard: BLOCKED - prompt does not match allowed phrases", "maxSimilarity", allowedSimilarity, "threshold", params.AllowSimilarityThreshold) + log.Debug("BLOCKED - prompt does not match allowed phrases", "maxSimilarity", allowedSimilarity, "threshold", params.AllowSimilarityThreshold) reason := fmt.Sprintf("prompt is not similar enough to allowed phrases (similarity=%.4f < threshold=%.4f)", allowedSimilarity, params.AllowSimilarityThreshold) return p.buildErrorResponse(reason, nil, params.ShowAssessment) } else { // Both allowed and denied lists are configured: check both if similarity, phrase, err := maxSimilarity(promptEmbedding, params.DeniedPhrases); err == nil { if similarity >= params.DenySimilarityThreshold { - slog.Debug("SemanticPromptGuard: BLOCKED - prompt too similar to denied phrase", "phrase", phrase.Phrase, "similarity", similarity, "threshold", params.DenySimilarityThreshold) + log.Debug("BLOCKED - prompt too similar to denied phrase", "phrase", phrase.Phrase, "similarity", similarity, "threshold", params.DenySimilarityThreshold) reason := fmt.Sprintf("prompt is too similar to denied phrase '%s' (similarity=%.4f)", phrase.Phrase, similarity) return p.buildErrorResponse(reason, nil, params.ShowAssessment) } } else { - slog.Debug("SemanticPromptGuard: Error calculating similarity to denied phrases", "error", err) + log.Debug("Error calculating similarity to denied phrases", "error", err) return p.buildErrorResponse("Error calculating semantic similarity", err, params.ShowAssessment) } allowedSimilarity, phrase, err := maxSimilarity(promptEmbedding, params.AllowedPhrases) if err != nil { - slog.Debug("SemanticPromptGuard: Error calculating similarity to allowed phrases", "error", err) + log.Debug("Error calculating similarity to allowed phrases", "error", err) return p.buildErrorResponse("Error calculating semantic similarity", err, params.ShowAssessment) } if allowedSimilarity >= params.AllowSimilarityThreshold { - slog.Debug("SemanticPromptGuard: ALLOWED - prompt matches allowed phrase", "phrase", phrase.Phrase, "similarity", allowedSimilarity, "threshold", params.AllowSimilarityThreshold) + log.Debug("ALLOWED - prompt matches allowed phrase", "phrase", phrase.Phrase, "similarity", allowedSimilarity, "threshold", params.AllowSimilarityThreshold) return policy.UpstreamRequestModifications{} } - slog.Debug("SemanticPromptGuard: BLOCKED - prompt does not match allowed phrases", "maxSimilarity", allowedSimilarity, "threshold", params.AllowSimilarityThreshold) + log.Debug("BLOCKED - prompt does not match allowed phrases", "maxSimilarity", allowedSimilarity, "threshold", params.AllowSimilarityThreshold) reason := fmt.Sprintf("prompt is not similar enough to allowed phrases (similarity=%.4f < threshold=%.4f)", allowedSimilarity, params.AllowSimilarityThreshold) return p.buildErrorResponse(reason, nil, params.ShowAssessment) } diff --git a/gateway/policies/sentence-count-guardrail/v0.1.0/go.mod b/gateway/policies/sentence-count-guardrail/v0.1.0/go.mod index d1798b06f..6e54e2167 100644 --- a/gateway/policies/sentence-count-guardrail/v0.1.0/go.mod +++ b/gateway/policies/sentence-count-guardrail/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/sentence-count-guardrail go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.2 diff --git a/gateway/policies/sentence-count-guardrail/v0.1.0/go.sum b/gateway/policies/sentence-count-guardrail/v0.1.0/go.sum index a4dd64395..8be116484 100644 --- a/gateway/policies/sentence-count-guardrail/v0.1.0/go.sum +++ b/gateway/policies/sentence-count-guardrail/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.2 h1:PIUdy70Uv37ymu9Yq2vtGdjOvJBv4INL/Z7qMX6juJI= +github.com/wso2/api-platform/sdk v0.3.2/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/sentence-count-guardrail/v0.1.0/sentencecountguardrail.go b/gateway/policies/sentence-count-guardrail/v0.1.0/sentencecountguardrail.go index 91a4a4fd9..0f26c7fa0 100644 --- a/gateway/policies/sentence-count-guardrail/v0.1.0/sentencecountguardrail.go +++ b/gateway/policies/sentence-count-guardrail/v0.1.0/sentencecountguardrail.go @@ -25,6 +25,7 @@ var ( // SentenceCountGuardrailPolicy implements sentence count validation type SentenceCountGuardrailPolicy struct { + logger *slog.Logger hasRequestParams bool hasResponseParams bool requestParams SentenceCountGuardrailPolicyParams @@ -42,8 +43,11 @@ type SentenceCountGuardrailPolicyParams struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - p := &SentenceCountGuardrailPolicy{} + p := &SentenceCountGuardrailPolicy{ + logger: logger, + } // Extract and parse request parameters if present if requestParamsRaw, ok := params["request"].(map[string]interface{}); ok { @@ -70,7 +74,7 @@ func GetPolicy( return nil, fmt.Errorf("at least one of 'request' or 'response' parameters must be provided") } - slog.Debug("SentenceCountGuardrail: Policy initialized", "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) + p.logger.Debug("Policy initialized", "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) return p, nil } @@ -186,7 +190,7 @@ func (p *SentenceCountGuardrailPolicy) OnRequest(ctx *policy.RequestContext, par if ctx.Body != nil { content = ctx.Body.Content } - return p.validatePayload(content, p.requestParams, false).(policy.RequestAction) + return p.validatePayload(content, p.requestParams, false, ctx.RequestID).(policy.RequestAction) } // OnResponse validates response body sentence count @@ -199,15 +203,17 @@ func (p *SentenceCountGuardrailPolicy) OnResponse(ctx *policy.ResponseContext, p if ctx.ResponseBody != nil { content = ctx.ResponseBody.Content } - return p.validatePayload(content, p.responseParams, true).(policy.ResponseAction) + return p.validatePayload(content, p.responseParams, true, ctx.RequestID).(policy.ResponseAction) } // validatePayload validates payload sentence count -func (p *SentenceCountGuardrailPolicy) validatePayload(payload []byte, params SentenceCountGuardrailPolicyParams, isResponse bool) interface{} { +func (p *SentenceCountGuardrailPolicy) validatePayload(payload []byte, params SentenceCountGuardrailPolicyParams, isResponse bool, requestID string) interface{} { + log := policy.WithRequestID(p.logger, requestID) + // Extract value using JSONPath extractedValue, err := utils.ExtractStringValueFromJsonpath(payload, params.JsonPath) if err != nil { - slog.Debug("SentenceCountGuardrail: Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) + log.Debug("Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) return p.buildErrorResponse("Error extracting value from JSONPath", err, isResponse, params.ShowAssessment, params.Min, params.Max) } @@ -235,7 +241,7 @@ func (p *SentenceCountGuardrailPolicy) validatePayload(payload []byte, params Se } if !validationPassed { - slog.Debug("SentenceCountGuardrail: Validation failed", "sentenceCount", sentenceCount, "min", params.Min, "max", params.Max, "invert", params.Invert, "isResponse", isResponse) + log.Debug("Validation failed", "sentenceCount", sentenceCount, "min", params.Min, "max", params.Max, "invert", params.Invert, "isResponse", isResponse) var reason string if params.Invert { reason = fmt.Sprintf("sentence count %d is within the excluded range %d-%d sentences", sentenceCount, params.Min, params.Max) @@ -245,7 +251,7 @@ func (p *SentenceCountGuardrailPolicy) validatePayload(payload []byte, params Se return p.buildErrorResponse(reason, nil, isResponse, params.ShowAssessment, params.Min, params.Max) } - slog.Debug("SentenceCountGuardrail: Validation passed", "sentenceCount", sentenceCount, "min", params.Min, "max", params.Max, "isResponse", isResponse) + log.Debug("Validation passed", "sentenceCount", sentenceCount, "min", params.Min, "max", params.Max, "isResponse", isResponse) if isResponse { return policy.UpstreamResponseModifications{} } diff --git a/gateway/policies/url-guardrail/v0.1.0/go.mod b/gateway/policies/url-guardrail/v0.1.0/go.mod index 30666aa08..f9400bf61 100644 --- a/gateway/policies/url-guardrail/v0.1.0/go.mod +++ b/gateway/policies/url-guardrail/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/url-guardrail go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.2 diff --git a/gateway/policies/url-guardrail/v0.1.0/go.sum b/gateway/policies/url-guardrail/v0.1.0/go.sum index a4dd64395..8be116484 100644 --- a/gateway/policies/url-guardrail/v0.1.0/go.sum +++ b/gateway/policies/url-guardrail/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.2 h1:PIUdy70Uv37ymu9Yq2vtGdjOvJBv4INL/Z7qMX6juJI= +github.com/wso2/api-platform/sdk v0.3.2/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/url-guardrail/v0.1.0/urlguardrail.go b/gateway/policies/url-guardrail/v0.1.0/urlguardrail.go index 4d553dcdd..c7eb5d907 100644 --- a/gateway/policies/url-guardrail/v0.1.0/urlguardrail.go +++ b/gateway/policies/url-guardrail/v0.1.0/urlguardrail.go @@ -31,6 +31,7 @@ var ( // URLGuardrailPolicy implements URL validation guardrail type URLGuardrailPolicy struct { + logger *slog.Logger hasRequestParams bool hasResponseParams bool requestParams URLGuardrailPolicyParams @@ -47,8 +48,11 @@ type URLGuardrailPolicyParams struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - p := &URLGuardrailPolicy{} + p := &URLGuardrailPolicy{ + logger: logger, + } // Extract and parse request parameters if present if requestParamsRaw, ok := params["request"].(map[string]interface{}); ok { @@ -75,7 +79,7 @@ func GetPolicy( return nil, fmt.Errorf("at least one of 'request' or 'response' parameters must be provided") } - slog.Debug("URLGuardrail: Policy initialized", "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) + p.logger.Debug("Policy initialized", "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) return p, nil } @@ -174,7 +178,7 @@ func (p *URLGuardrailPolicy) OnRequest(ctx *policy.RequestContext, params map[st if ctx.Body != nil { content = ctx.Body.Content } - return p.validatePayload(content, p.requestParams, false).(policy.RequestAction) + return p.validatePayload(content, p.requestParams, false, ctx.RequestID).(policy.RequestAction) } // OnResponse validates URLs in response body @@ -187,15 +191,17 @@ func (p *URLGuardrailPolicy) OnResponse(ctx *policy.ResponseContext, params map[ if ctx.ResponseBody != nil { content = ctx.ResponseBody.Content } - return p.validatePayload(content, p.responseParams, true).(policy.ResponseAction) + return p.validatePayload(content, p.responseParams, true, ctx.RequestID).(policy.ResponseAction) } // validatePayload validates URLs in payload -func (p *URLGuardrailPolicy) validatePayload(payload []byte, params URLGuardrailPolicyParams, isResponse bool) interface{} { +func (p *URLGuardrailPolicy) validatePayload(payload []byte, params URLGuardrailPolicyParams, isResponse bool, requestID string) interface{} { + log := policy.WithRequestID(p.logger, requestID) + // Extract value using JSONPath extractedValue, err := utils.ExtractStringValueFromJsonpath(payload, params.JsonPath) if err != nil { - slog.Debug("URLGuardrail: Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) + log.Debug("Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) return p.buildErrorResponse("Error extracting value from JSONPath", err, isResponse, params.ShowAssessment, []string{}) } @@ -206,7 +212,7 @@ func (p *URLGuardrailPolicy) validatePayload(payload []byte, params URLGuardrail // Extract URLs from the value urls := urlRegexCompiled.FindAllString(extractedValue, -1) if len(urls) > 0 { - slog.Debug("URLGuardrail: Found URLs to validate", "urlCount", len(urls), "onlyDNS", params.OnlyDNS, "isResponse", isResponse) + log.Debug("Found URLs to validate", "urlCount", len(urls), "onlyDNS", params.OnlyDNS, "isResponse", isResponse) } invalidURLs := make([]string, 0) @@ -224,12 +230,12 @@ func (p *URLGuardrailPolicy) validatePayload(payload []byte, params URLGuardrail } if len(invalidURLs) > 0 { - slog.Debug("URLGuardrail: Validation failed", "invalidURLCount", len(invalidURLs), "totalURLCount", len(urls), "isResponse", isResponse) + log.Debug("Validation failed", "invalidURLCount", len(invalidURLs), "totalURLCount", len(urls), "isResponse", isResponse) return p.buildErrorResponse("Violation of url validity detected", nil, isResponse, params.ShowAssessment, invalidURLs) } if len(urls) > 0 { - slog.Debug("URLGuardrail: Validation passed", "urlCount", len(urls), "isResponse", isResponse) + log.Debug("Validation passed", "urlCount", len(urls), "isResponse", isResponse) } if isResponse { diff --git a/gateway/policies/word-count-guardrail/v0.1.0/go.mod b/gateway/policies/word-count-guardrail/v0.1.0/go.mod index 58447a021..e3050b270 100644 --- a/gateway/policies/word-count-guardrail/v0.1.0/go.mod +++ b/gateway/policies/word-count-guardrail/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/word-count-guardrail go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.2 diff --git a/gateway/policies/word-count-guardrail/v0.1.0/go.sum b/gateway/policies/word-count-guardrail/v0.1.0/go.sum index a4dd64395..8be116484 100644 --- a/gateway/policies/word-count-guardrail/v0.1.0/go.sum +++ b/gateway/policies/word-count-guardrail/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.2 h1:PIUdy70Uv37ymu9Yq2vtGdjOvJBv4INL/Z7qMX6juJI= +github.com/wso2/api-platform/sdk v0.3.2/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= diff --git a/gateway/policies/word-count-guardrail/v0.1.0/wordcountguardrail.go b/gateway/policies/word-count-guardrail/v0.1.0/wordcountguardrail.go index 2f5c19260..1803e1b36 100644 --- a/gateway/policies/word-count-guardrail/v0.1.0/wordcountguardrail.go +++ b/gateway/policies/word-count-guardrail/v0.1.0/wordcountguardrail.go @@ -25,6 +25,7 @@ var ( // WordCountGuardrailPolicy implements word count validation type WordCountGuardrailPolicy struct { + logger *slog.Logger hasRequestParams bool hasResponseParams bool requestParams WordCountGuardrailPolicyParams @@ -42,8 +43,9 @@ type WordCountGuardrailPolicyParams struct { func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { - p := &WordCountGuardrailPolicy{} + p := &WordCountGuardrailPolicy{logger: logger} // Extract and parse request parameters if present if requestParamsRaw, ok := params["request"].(map[string]interface{}); ok { @@ -70,7 +72,7 @@ func GetPolicy( return nil, fmt.Errorf("at least one of 'request' or 'response' parameters must be provided") } - slog.Debug("WordCountGuardrail: Policy initialized", "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) + p.logger.Debug("Policy initialized", "hasRequestParams", p.hasRequestParams, "hasResponseParams", p.hasResponseParams) return p, nil } @@ -186,7 +188,7 @@ func (p *WordCountGuardrailPolicy) OnRequest(ctx *policy.RequestContext, params if ctx.Body != nil { content = ctx.Body.Content } - return p.validatePayload(content, p.requestParams, false).(policy.RequestAction) + return p.validatePayload(content, p.requestParams, false, ctx.RequestID).(policy.RequestAction) } // OnResponse validates response body word count @@ -199,15 +201,17 @@ func (p *WordCountGuardrailPolicy) OnResponse(ctx *policy.ResponseContext, param if ctx.ResponseBody != nil { content = ctx.ResponseBody.Content } - return p.validatePayload(content, p.responseParams, true).(policy.ResponseAction) + return p.validatePayload(content, p.responseParams, true, ctx.RequestID).(policy.ResponseAction) } // validatePayload validates payload word count -func (p *WordCountGuardrailPolicy) validatePayload(payload []byte, params WordCountGuardrailPolicyParams, isResponse bool) interface{} { +func (p *WordCountGuardrailPolicy) validatePayload(payload []byte, params WordCountGuardrailPolicyParams, isResponse bool, requestID string) interface{} { + log := policy.WithRequestID(p.logger, requestID) + // Extract value using JSONPath extractedValue, err := utils.ExtractStringValueFromJsonpath(payload, params.JsonPath) if err != nil { - slog.Debug("WordCountGuardrail: Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) + log.Debug("Error extracting value from JSONPath", "jsonPath", params.JsonPath, "error", err, "isResponse", isResponse) return p.buildErrorResponse("Error extracting value from JSONPath", err, isResponse, params.ShowAssessment, params.Min, params.Max) } @@ -235,7 +239,7 @@ func (p *WordCountGuardrailPolicy) validatePayload(payload []byte, params WordCo } if !validationPassed { - slog.Debug("WordCountGuardrail: Validation failed", "wordCount", wordCount, "min", params.Min, "max", params.Max, "invert", params.Invert, "isResponse", isResponse) + log.Debug("Validation failed", "wordCount", wordCount, "min", params.Min, "max", params.Max, "invert", params.Invert, "isResponse", isResponse) var reason string if params.Invert { reason = fmt.Sprintf("word count %d is within the excluded range %d-%d words", wordCount, params.Min, params.Max) @@ -245,7 +249,7 @@ func (p *WordCountGuardrailPolicy) validatePayload(payload []byte, params WordCo return p.buildErrorResponse(reason, nil, isResponse, params.ShowAssessment, params.Min, params.Max) } - slog.Debug("WordCountGuardrail: Validation passed", "wordCount", wordCount, "min", params.Min, "max", params.Max, "isResponse", isResponse) + log.Debug("Validation passed", "wordCount", wordCount, "min", params.Min, "max", params.Max, "isResponse", isResponse) if isResponse { return policy.UpstreamResponseModifications{} } diff --git a/gateway/policy-engine/go.mod b/gateway/policy-engine/go.mod index d9ec0bab9..d0b946395 100644 --- a/gateway/policy-engine/go.mod +++ b/gateway/policy-engine/go.mod @@ -13,7 +13,7 @@ require ( github.com/knadh/koanf/v2 v2.3.0 github.com/moesif/moesifapi-go v1.1.5 github.com/prometheus/client_golang v1.23.2 - github.com/wso2/api-platform/sdk v0.3.1 + github.com/wso2/api-platform/sdk v0.3.4 go.opentelemetry.io/otel v1.39.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 go.opentelemetry.io/otel/sdk v1.39.0 diff --git a/gateway/policy-engine/go.sum b/gateway/policy-engine/go.sum index 679516589..cecb4b70d 100644 --- a/gateway/policy-engine/go.sum +++ b/gateway/policy-engine/go.sum @@ -1,63 +1,718 @@ cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= +cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= +github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= +github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= +github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU= +github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= +github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= +github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/alecthomas/assert/v2 v2.10.0 h1:jjRCHsj6hBJhkmhznrCzoNpbA3zqy0fYiUcYZP/GkPY= +github.com/alecthomas/assert/v2 v2.10.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= +github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= +github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/aws/aws-sdk-go-v2 v1.36.3 h1:mJoei2CxPutQVxaATCzDUjcZEjVRdpsiiXi2o38yqWM= +github.com/aws/aws-sdk-go-v2 v1.36.3/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 h1:tW1/Rkad38LA15X4UQtjXZXNKsCgkshC3EbmcUmghTg= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3/go.mod h1:UbnqO+zjqk3uIt9yCACHJ9IVNhyhOCnYk8yA19SAWrM= +github.com/aws/aws-sdk-go-v2/config v1.29.9 h1:Kg+fAYNaJeGXp1vmjtidss8O2uXIsXwaRqsQJKXVr+0= +github.com/aws/aws-sdk-go-v2/config v1.29.9/go.mod h1:oU3jj2O53kgOU4TXq/yipt6ryiooYjlkqqVaZk7gY/U= +github.com/aws/aws-sdk-go-v2/credentials v1.17.62 h1:fvtQY3zFzYJ9CfixuAQ96IxDrBajbBWGqjNTCa79ocU= +github.com/aws/aws-sdk-go-v2/credentials v1.17.62/go.mod h1:ElETBxIQqcxej++Cs8GyPBbgMys5DgQPTwo7cUPDKt8= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 h1:ZK5jHhnrioRkUNOc+hOgQKlUL5JeC3S6JgLxtQ+Rm0Q= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34/go.mod h1:p4VfIceZokChbA9FzMbRGz5OV+lekcVtHlPKEO0gSZY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 h1:SZwFm17ZUNNg5Np0ioo/gq8Mn6u9w19Mri8DnJ15Jf0= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34/go.mod h1:dFZsC0BLo346mvKQLWmoJxT+Sjp+qcVR1tRVHQGOH9Q= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= +github.com/aws/aws-sdk-go-v2/service/bedrockruntime v1.13.0 h1:Y4iaOxOXZVOLE61k6dQfENVBnh5BQ8ZRscZ982aFWKo= +github.com/aws/aws-sdk-go-v2/service/bedrockruntime v1.13.0/go.mod h1:S2eXpv9EnR+BbRoHo1Eis6ht7m6NvvB5mdhfxim5VRo= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 h1:dM9/92u2F1JbDaGooxTq18wmmFzbJRfXfVfy96/1CXM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15/go.mod h1:SwFBy2vjtA0vZbjjaFtfN045boopadnoVPhu4Fv66vY= +github.com/aws/aws-sdk-go-v2/service/sso v1.25.1 h1:8JdC7Gr9NROg1Rusk25IcZeTO59zLxsKgE0gkh5O6h0= +github.com/aws/aws-sdk-go-v2/service/sso v1.25.1/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.29.1 h1:KwuLovgQPcdjNMfFt9OhUd9a2OwcOKhxfvF4glTzLuA= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.29.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.17 h1:PZV5W8yk4OtH1JAuhV2PXwwO9v5G5Aoj+eMCn4T+1Kc= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.17/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4= +github.com/aws/smithy-go v1.22.2 h1:6D9hW43xKFrRx/tXXfAlIZc4JI+yQe6snnWcQyxSyLQ= +github.com/aws/smithy-go v1.22.2/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= +github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= +github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= +github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= +github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= +github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cilium/ebpf v0.16.0 h1:+BiEnHL6Z7lXnlGUsXQPPAE7+kenAd4ES8MQ5min0Ok= +github.com/cilium/ebpf v0.16.0/go.mod h1:L7u2Blt2jMM/vLAVgjxluxtBKlz3/GWjB0dMOEngfwE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= +github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= +github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= +github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= +github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f h1:6jduT9Hfc0njg5jJ1DdKCFPdMBrp/mdZfCpa5h+WM74= +github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= +github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= +github.com/containerd/cgroups/v3 v3.0.5 h1:44na7Ud+VwyE7LIoJ8JTNQOa549a8543BmzaJHo6Bzo= +github.com/containerd/cgroups/v3 v3.0.5/go.mod h1:SA5DLYnXO8pTGYiAHXz94qvLQTKfVM5GEVisn4jpins= +github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= +github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g= +github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= +github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= +github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= +github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= +github.com/getsentry/sentry-go v0.12.0 h1:era7g0re5iY13bHSdN/xMkyV+5zZppjRVQhZrXCaEIk= +github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= +github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= +github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= +github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= +github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= +github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= +github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= +github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= +github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= +github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/cel-go v0.26.1 h1:iPbVVEdkhTX++hpe3lzSk7D3G3QSYqLGoHOcEio+UXQ= +github.com/google/cel-go v0.26.1/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= +github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= +github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= +github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= +github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= +github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= +github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= +github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= +github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA= +github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= +github.com/jsimonetti/rtnetlink/v2 v2.0.1 h1:xda7qaHDSVOsADNouv7ukSuicKZO7GgVUCXxpaIEIlM= +github.com/jsimonetti/rtnetlink/v2 v2.0.1/go.mod h1:7MoNYNbb3UaDHtF8udiJo/RH6VsTKP1pqKLUTVCvToE= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12 h1:9Nu54bhS/H/Kgo2/7xNSUuC5G28VR8ljfrLKU2G4IjU= +github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12/go.mod h1:TBzl5BIHNXfS9+C35ZyJaklL7mLDbgUkcgXzSLa8Tk0= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= +github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= +github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= +github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= +github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= +github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= +github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/parsers/yaml v1.1.0 h1:3ltfm9ljprAHt4jxgeYLlFPmUaunuCgu1yILuTXRdM4= +github.com/knadh/koanf/parsers/yaml v1.1.0/go.mod h1:HHmcHXUrp9cOPcuC+2wrr44GTUB0EC+PyfN3HZD9tFg= github.com/knadh/koanf/providers/env v1.1.0 h1:U2VXPY0f+CsNDkvdsG8GcsnK4ah85WwWyJgef9oQMSc= +github.com/knadh/koanf/providers/env v1.1.0/go.mod h1:QhHHHZ87h9JxJAn2czdEl6pdkNnDh/JS1Vtsyt65hTY= github.com/knadh/koanf/providers/file v1.2.1 h1:bEWbtQwYrA+W2DtdBrQWyXqJaJSG3KrP3AESOJYp9wM= +github.com/knadh/koanf/providers/file v1.2.1/go.mod h1:bp1PM5f83Q+TOUu10J/0ApLBd9uIzg+n9UgthfY+nRA= github.com/knadh/koanf/v2 v2.3.0 h1:Qg076dDRFHvqnKG97ZEsi9TAg2/nFTa9hCdcSa1lvlM= +github.com/knadh/koanf/v2 v2.3.0/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= +github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g= +github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw= +github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos= +github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ= +github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= +github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= +github.com/milvus-io/milvus-proto/go-api/v2 v2.6.8 h1:WTLaqxbwiMuAt0qnpMmnOGnkt7rnj00yrU0rlKnENmk= +github.com/milvus-io/milvus-proto/go-api/v2 v2.6.8/go.mod h1:/6UT4zZl6awVeXLeE7UGDWZvXj3IWkRsh3mqsn0DiAs= +github.com/milvus-io/milvus/client/v2 v2.6.2 h1:39egzRDkXZ8VlcdiPKc9JELTOCNuwD1m6MolWMFR8UI= +github.com/milvus-io/milvus/client/v2 v2.6.2/go.mod h1:4kA40vEX05JCPcTvJ0zR3bvqFzXfEUMqyzi8AoO/KYM= +github.com/milvus-io/milvus/pkg/v2 v2.6.8 h1:pdFb6BVx8Ek4Ioh7t5VWO6rhZgrFxlulaU1+eY6fqk0= +github.com/milvus-io/milvus/pkg/v2 v2.6.8/go.mod h1:jiC8w9PEhvpN6CkZnG1+hfL5sTmNCiY2HLl/h8d97cw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= +github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/moesif/moesifapi-go v1.1.5 h1:jL3iMSyG4DpT7OJppJQn8reGYifraPJiu5lAAvE/BGQ= +github.com/moesif/moesifapi-go v1.1.5/go.mod h1:wRGgVy0QeiCgnjFEiD13HD2Aa7reI8nZXtCnddNnZGs= +github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/opencontainers/runtime-spec v1.2.1 h1:S4k4ryNgEpxW1dzyqffOmhI1BHYcjzU8lpJfSlR0xww= +github.com/opencontainers/runtime-spec v1.2.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/panjf2000/ants/v2 v2.11.3 h1:AfI0ngBoXJmYOpDh9m516vjqoUu2sLrIVgppI9TZVpg= +github.com/panjf2000/ants/v2 v2.11.3/go.mod h1:8u92CYMUc6gyvTIw8Ru7Mt7+/ESnJahz5EVtqfrilek= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c h1:xpW9bvK+HuuTmyFqUwr+jcCvpVkK7sumiz+ko5H9eq4= +github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c/go.mod h1:X2r9ueLEUZgtx2cIogM0v4Zj5uvvzhuuiu7Pn8HzMPg= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/redis/go-redis/v9 v9.17.2 h1:P2EGsA4qVIM3Pp+aPocCJ7DguDHhqrXNhVcEp4ViluI= +github.com/redis/go-redis/v9 v9.17.2/go.mod h1:u410H11HMLoB+TP67dz8rL9s6QW2j76l0//kSOd3370= +github.com/remeh/sizedwaitgroup v1.0.0 h1:VNGGFwNo/R5+MJBf6yrsr110p0m4/OX4S3DCy7Kyl5E= +github.com/remeh/sizedwaitgroup v1.0.0/go.mod h1:3j2R4OIe/SeS6YDhICBy22RWjJC5eNCJ1V+9+NVNYlo= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samber/lo v1.27.0 h1:GOyDWxsblvqYobqsmUuMddPa2/mMzkKyojlXol4+LaQ= +github.com/samber/lo v1.27.0/go.mod h1:it33p9UtPMS7z72fP4gw/EIfQB2eI8ke7GR2wc6+Rhg= +github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4= +github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= +github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= +github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 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/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M= +github.com/thoas/go-funk v0.9.1/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= +github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= +github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/twpayne/go-geom v1.6.1 h1:iLE+Opv0Ihm/ABIcvQFGIiFBXd76oBIar9drAwHFhR4= +github.com/twpayne/go-geom v1.6.1/go.mod h1:Kr+Nly6BswFsKM5sd31YaoWS5PeDDH2NftJTK7Gd028= +github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= +github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= +github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= +go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= +go.etcd.io/etcd/api/v3 v3.5.23 h1:tQi/RaO6peOhmf0c11miU3RQIYPZmiL3UzG9V+f8g6k= +go.etcd.io/etcd/api/v3 v3.5.23/go.mod h1:QP4ZLWROP49Kk/vPLhudxYQcF4ndhMQ1gvJE4rCTAgc= +go.etcd.io/etcd/client/pkg/v3 v3.5.23 h1:RzwVV28JgOwGl5TUjA47s9IWxl5qQjM2VqSh8wjFFLM= +go.etcd.io/etcd/client/pkg/v3 v3.5.23/go.mod h1:IdIjxGUGNy+8HWeVlbBXDqmPqe+n8GsVGVYnccAEZ5o= +go.etcd.io/etcd/client/v2 v2.305.23 h1:lo6nsSHjp3tGsRLrzmM+neVSahXxbhxnfoatEdB6nao= +go.etcd.io/etcd/client/v2 v2.305.23/go.mod h1:Up9T9+5M3MMcCj/V0nDfadBERNMxIYf1tdycva1dXM4= +go.etcd.io/etcd/client/v3 v3.5.23 h1:WN7sypGG326sFP5jLkFqD3anf/k6NNlV5Hy/UxvTPvc= +go.etcd.io/etcd/client/v3 v3.5.23/go.mod h1:XTf1oMQi4ZzpXGFoPgvAqbY9JFmTFQqWI1SF4g+hV6o= +go.etcd.io/etcd/pkg/v3 v3.5.23 h1:q2skPu7VFC7oerL3MrFqImVACjAFWPlZMjHU0zll9x4= +go.etcd.io/etcd/pkg/v3 v3.5.23/go.mod h1:zUWlm5U4HgvDg+0PUWb8TgMF7ZrUiQA8aQq7FxE0WHo= +go.etcd.io/etcd/raft/v3 v3.5.23 h1:NhCdh4xz1VsrqHd2c+h6SLvhE95B1Hs7K+ESaAs6LLQ= +go.etcd.io/etcd/raft/v3 v3.5.23/go.mod h1:NJz9BGkhGvru47lIc1wL0QHsg5yvHTy6tUpEqM69ERM= +go.etcd.io/etcd/server/v3 v3.5.23 h1:2g1hz32pp1TYMI7xUyifR8gXOlUnTBCfixV+uJ8BqRU= +go.etcd.io/etcd/server/v3 v3.5.23/go.mod h1:sZwt/lLSwYQ/S5aAbzSQX2xNw1WA0Fo5noUCVxVYB4g= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= +go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= +go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= +golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM= +golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb h1:ITgPrl429bc6+2ZraNSzMDk3I95nmQln2fuPstKwFDE= +google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE= google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2 h1:7LRqPCEdE4TP4/9psdaB7F2nhZFfBiGJomA5sojLWdU= +google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2 h1:2I6GHUeJ/4shcDpoUlLs/2WPnhg7yJwvXtqcMJt9liA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= +gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= +k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/gateway/sample-policies/count-letters/v1.0.0/go.mod b/gateway/sample-policies/count-letters/v1.0.0/go.mod index d6508315c..4ac61611f 100644 --- a/gateway/sample-policies/count-letters/v1.0.0/go.mod +++ b/gateway/sample-policies/count-letters/v1.0.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/count-letters go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.2 diff --git a/gateway/sample-policies/count-letters/v1.0.0/go.sum b/gateway/sample-policies/count-letters/v1.0.0/go.sum index a4dd64395..5e1ad0fdf 100644 --- a/gateway/sample-policies/count-letters/v1.0.0/go.sum +++ b/gateway/sample-policies/count-letters/v1.0.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.4 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= +github.com/wso2/api-platform/sdk v0.3.4/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/sample-policies/uppercase-body/v1.0.0/go.mod b/gateway/sample-policies/uppercase-body/v1.0.0/go.mod index f55425bea..ef00b9d7f 100644 --- a/gateway/sample-policies/uppercase-body/v1.0.0/go.mod +++ b/gateway/sample-policies/uppercase-body/v1.0.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/uppercase-body go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.2 diff --git a/gateway/sample-policies/uppercase-body/v1.0.0/go.sum b/gateway/sample-policies/uppercase-body/v1.0.0/go.sum index a4dd64395..5e1ad0fdf 100644 --- a/gateway/sample-policies/uppercase-body/v1.0.0/go.sum +++ b/gateway/sample-policies/uppercase-body/v1.0.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.4 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= +github.com/wso2/api-platform/sdk v0.3.4/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/system-policies/analytics/v0.1.0/analytics.go b/gateway/system-policies/analytics/v0.1.0/analytics.go index 77e0ff299..dddb40977 100644 --- a/gateway/system-policies/analytics/v0.1.0/analytics.go +++ b/gateway/system-policies/analytics/v0.1.0/analytics.go @@ -62,6 +62,7 @@ var ins = &AnalyticsPolicy{} func GetPolicy( metadata policy.PolicyMetadata, params map[string]interface{}, + logger *slog.Logger, ) (policy.Policy, error) { return ins, nil } diff --git a/gateway/system-policies/analytics/v0.1.0/go.mod b/gateway/system-policies/analytics/v0.1.0/go.mod index efc3b0adb..66fa9907a 100644 --- a/gateway/system-policies/analytics/v0.1.0/go.mod +++ b/gateway/system-policies/analytics/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/system-policies/analytics go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.1 +require github.com/wso2/api-platform/sdk v0.3.2 diff --git a/gateway/system-policies/analytics/v0.1.0/go.sum b/gateway/system-policies/analytics/v0.1.0/go.sum index a4dd64395..5e1ad0fdf 100644 --- a/gateway/system-policies/analytics/v0.1.0/go.sum +++ b/gateway/system-policies/analytics/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.1 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= -github.com/wso2/api-platform/sdk v0.3.1/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= +github.com/wso2/api-platform/sdk v0.3.4 h1:Wr4n+xiJMOH1oqOMyGhiw9bTxCR97OTO5VZMPpp07lc= +github.com/wso2/api-platform/sdk v0.3.4/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/go.work.sum b/go.work.sum index eb20d5e03..2a0f3718f 100644 --- a/go.work.sum +++ b/go.work.sum @@ -972,6 +972,7 @@ github.com/alecthomas/participle/v2 v2.0.0/go.mod h1:rAKZdJldHu8084ojcWevWAL8KmE github.com/alecthomas/participle/v2 v2.1.0 h1:z7dElHRrOEEq45F2TG5cbQihMtNTv8vwldytDj7Wrz4= github.com/alecthomas/participle/v2 v2.1.0/go.mod h1:Y1+hAs8DHPmc3YUFzqllV+eSQ9ljPTk0ZkPMtEdAx2c= github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= @@ -986,8 +987,6 @@ github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHG github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0/go.mod h1:ccdDYaY5+gO+cbnQdFxEXqfy0RkoV25H3jLXUDNM3wg= github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= -github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= -github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= github.com/apache/arrow/go/v14 v14.0.2 h1:N8OkaJEOfI3mEZt07BIkvo4sC6XDbL+48MBPWO5IONw= github.com/apache/arrow/go/v14 v14.0.2/go.mod h1:u3fgh3EdgN/YQ8cVQRguVW3R+seMybFg8QBQ5LU+eBY= github.com/apache/arrow/go/v15 v15.0.2 h1:60IliRbiyTWCWjERBCkO1W4Qun9svcYoZrSLcyOsMLE= @@ -1017,33 +1016,13 @@ github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQ github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= -github.com/aws/aws-sdk-go-v2 v1.36.3 h1:mJoei2CxPutQVxaATCzDUjcZEjVRdpsiiXi2o38yqWM= -github.com/aws/aws-sdk-go-v2 v1.36.3/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 h1:tW1/Rkad38LA15X4UQtjXZXNKsCgkshC3EbmcUmghTg= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3/go.mod h1:UbnqO+zjqk3uIt9yCACHJ9IVNhyhOCnYk8yA19SAWrM= -github.com/aws/aws-sdk-go-v2/config v1.29.9 h1:Kg+fAYNaJeGXp1vmjtidss8O2uXIsXwaRqsQJKXVr+0= -github.com/aws/aws-sdk-go-v2/config v1.29.9/go.mod h1:oU3jj2O53kgOU4TXq/yipt6ryiooYjlkqqVaZk7gY/U= -github.com/aws/aws-sdk-go-v2/credentials v1.17.62 h1:fvtQY3zFzYJ9CfixuAQ96IxDrBajbBWGqjNTCa79ocU= -github.com/aws/aws-sdk-go-v2/credentials v1.17.62/go.mod h1:ElETBxIQqcxej++Cs8GyPBbgMys5DgQPTwo7cUPDKt8= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11/go.mod h1:SeSUYBLsMYFoRvHE0Tjvn7kbxaUhl75CJi1sbfhMxkU= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.8 h1:u1KOU1S15ufyZqmH/rA3POkiRH6EcDANHj2xHRzq+zc= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.8/go.mod h1:WPv2FRnkIOoDv/8j2gSUsI4qDc7392w5anFB/I89GZ8= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 h1:ZK5jHhnrioRkUNOc+hOgQKlUL5JeC3S6JgLxtQ+Rm0Q= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34/go.mod h1:p4VfIceZokChbA9FzMbRGz5OV+lekcVtHlPKEO0gSZY= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 h1:SZwFm17ZUNNg5Np0ioo/gq8Mn6u9w19Mri8DnJ15Jf0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34/go.mod h1:dFZsC0BLo346mvKQLWmoJxT+Sjp+qcVR1tRVHQGOH9Q= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.15 h1:Z5r7SycxmSllHYmaAZPpmN8GviDrSGhMS6bldqtXZPw= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.15/go.mod h1:CetW7bDE00QoGEmPUoZuRog07SGVAUVW6LFpNP0YfIg= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.17 h1:YPYe6ZmvUfDDDELqEKtAd6bo8zxhkm+XEFEzQisqUIE= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.17/go.mod h1:oBtcnYua/CgzCWYN7NZ5j7PotFDaFSUjCYVTtfyn7vw= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 h1:dM9/92u2F1JbDaGooxTq18wmmFzbJRfXfVfy96/1CXM= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15/go.mod h1:SwFBy2vjtA0vZbjjaFtfN045boopadnoVPhu4Fv66vY= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.15 h1:246A4lSTXWJw/rmlQI+TT2OcqeDMKBdyjEQrafMaQdA= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.15/go.mod h1:haVfg3761/WF7YPuJOER2MP0k4UAXyHaLclKXB6usDg= github.com/aws/aws-sdk-go-v2/service/s3 v1.58.2 h1:sZXIzO38GZOU+O0C+INqbH7C2yALwfMWpd64tONS/NE= @@ -1052,15 +1031,7 @@ github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.35.2 h1:vlYXbindmagyVA3RS github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.35.2/go.mod h1:yGhDiLKguA3iFJYxbrQkQiNzuy+ddxesSZYWVeeEH5Q= github.com/aws/aws-sdk-go-v2/service/ssm v1.57.2 h1:3//q1r7gW/kpiWiPfFILw+N81rangyyMJV6vrznFyvw= github.com/aws/aws-sdk-go-v2/service/ssm v1.57.2/go.mod h1:PUWUl5MDiYNQkUHN9Pyd9kgtA/YhbxnSnHP+yQqzrM8= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.1 h1:8JdC7Gr9NROg1Rusk25IcZeTO59zLxsKgE0gkh5O6h0= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.1/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.29.1 h1:KwuLovgQPcdjNMfFt9OhUd9a2OwcOKhxfvF4glTzLuA= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.29.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.17 h1:PZV5W8yk4OtH1JAuhV2PXwwO9v5G5Aoj+eMCn4T+1Kc= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.17/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4= github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= -github.com/aws/smithy-go v1.22.2 h1:6D9hW43xKFrRx/tXXfAlIZc4JI+yQe6snnWcQyxSyLQ= -github.com/aws/smithy-go v1.22.2/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible h1:Ppm0npCCsmuR9oQaBtRuZcmILVE74aXE+AmrJj8L2ns= @@ -1087,6 +1058,7 @@ github.com/campoy/embedmd v1.0.0/go.mod h1:oxyr9RCiSXg0M3VJ3ks0UGfp98BpSSGr0kpiX github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= @@ -1114,6 +1086,7 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWs github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/chzyer/test v0.0.0-20210722231415-061457976a23 h1:dZ0/VyGgQdVGAss6Ju0dt5P0QltE0SFY5Woh6hbIfiQ= github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.11.0/go.mod h1:WE7CZAnqOL2RouJ4f1uyNhqr2P4CCvXFIqdRDUgWsVs= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -1150,6 +1123,7 @@ github.com/containerd/accelerated-container-image v1.3.0 h1:sFbTgSuMboeKHa9f7MY1 github.com/containerd/accelerated-container-image v1.3.0/go.mod h1:EvKVWor6ZQNUyYp0MZm5hw4k21ropuz7EegM+m/Jb/Q= github.com/containerd/btrfs/v2 v2.0.0 h1:FN4wsx7KQrYoLXN7uLP0vBV4oVWHOIKDRQ1G2Z0oL5M= github.com/containerd/btrfs/v2 v2.0.0/go.mod h1:swkD/7j9HApWpzl8OHfrHNxppPd9l44DFZdF94BUj9k= +github.com/containerd/cgroups/v3 v3.0.3/go.mod h1:8HBe7V3aWGLFPd/k03swSIsGjZhHI2WzJmticMgVuz0= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/fuse-overlayfs-snapshotter/v2 v2.1.6 h1:gfW1JsN//B97zhsQ84Kkar7WJqod1fmWf8zKHmz+ieY= github.com/containerd/fuse-overlayfs-snapshotter/v2 v2.1.6/go.mod h1:Mau9LZ7ZnyKCIgcNT7sMG5fjaZ9YCOHU5RuolUikhBQ= @@ -1173,6 +1147,7 @@ github.com/containernetworking/plugins v1.7.1/go.mod h1:xuMdjuio+a1oVQsHKjr/mgzu github.com/containers/ocicrypt v1.2.1 h1:0qIOTT9DoYwcKmxSt8QJt+VzMY18onl9jUXsxpVhSmM= github.com/containers/ocicrypt v1.2.1/go.mod h1:aD0AAqfMp0MtwqWgHM1bUwe1anx0VazI108CRrSKINQ= github.com/coreos/bbolt v1.3.2 h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s= +github.com/coreos/etcd v3.3.10+incompatible h1:jFneRYjIvLMLhDLCzuTuU4rSJUjRplcJQ7pD7MnhC04= github.com/coreos/etcd v3.3.13+incompatible h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ= github.com/coreos/go-etcd v2.0.0+incompatible h1:bXhRBIXoTm9BYHS3gE0TtQuyNZyeEMux2sDi4oo5YOo= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= @@ -1278,6 +1253,8 @@ github.com/flosch/pongo2/v4 v4.0.2/go.mod h1:B5ObFANs/36VwxxlgKpdchIJHMvHB562PW+ github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= @@ -1333,6 +1310,7 @@ github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 h1:6zl3BbBhdnMkpSj2 github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-latex/latex v0.0.0-20230307184459-12ec69307ad9/go.mod h1:gWuR/CrFDDeVRFQwHPvsv9soJVB/iqymhuZQuJ3a9OM= github.com/go-latex/latex v0.0.0-20231108140139-5c1ce85aa4ea/go.mod h1:Y7Vld91/HRbTBm7JwoI7HejdDB0u+e9AUBO9MB7yuZk= +github.com/go-logfmt/logfmt v0.4.0 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA= github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= @@ -1355,7 +1333,6 @@ github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn github.com/go-redis/redis v6.15.6+incompatible h1:H9evprGPLI8+ci7fxQx6WNZHJSb7be8FqJQRhdQZ5Sg= github.com/go-redis/redis v6.15.6+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372/go.mod h1:evDBbvNR/KaVFZ2ZlDSOWWXIUKq0wCOEtzLxRM8SG3k= @@ -1399,6 +1376,7 @@ github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4er github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1 h1:G5FRp8JnTd7RQH5kemVNlMeyXQAztQ3mOWV95KxsXH8= github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= @@ -1420,10 +1398,6 @@ github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386 h1:EcQR3gusLHN46TAD+G+EbaaqJArt5vHhNpXAa12PQf4= github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38 h1:y0Wmhvml7cGnzPa9nocn/fMraMH/lMDdeG+rkx4VgYY= -github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= -github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/cel-go v0.26.1 h1:iPbVVEdkhTX++hpe3lzSk7D3G3QSYqLGoHOcEio+UXQ= -github.com/google/cel-go v0.26.1/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -1539,6 +1513,7 @@ github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grafana/pyroscope-go/godeltaprof v0.1.8 h1:iwOtYXeeVSAeYefJNaxDytgjKtUuKQbJqgAIjlnicKg= github.com/grafana/pyroscope-go/godeltaprof v0.1.8/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= @@ -1653,6 +1628,7 @@ github.com/jolestar/go-commons-pool/v2 v2.1.2/go.mod h1:r4NYccrkS5UqP1YQI1COyTZ9 github.com/jordanlewis/gcassert v0.0.0-20250430164644-389ef753e22e h1:a+PGEeXb+exwBS3NboqXHyxarD9kaboBbrSp+7GuBuc= github.com/jordanlewis/gcassert v0.0.0-20250430164644-389ef753e22e/go.mod h1:ZybsQk6DWyN5t7An1MuPm1gtSZ1xDaTXS9ZjIOxvQrk= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= @@ -1663,6 +1639,7 @@ github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 h1:UUHMLvzt/31azWTN/ifG github.com/juju/qthttptest v0.1.1 h1:JPju5P5CDMCy8jmBJV2wGLjDItUsx2KKL514EfOYueM= github.com/juju/qthttptest v0.1.1/go.mod h1:aTlAv8TYaflIiTDIQYzxnl1QdPjAg8Q8qJMErpKy6A4= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5 h1:PJr+ZMXIecYc1Ey2zucXdR73SMBtgjPgwa31099IMv0= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= @@ -1708,6 +1685,7 @@ github.com/knadh/koanf/parsers/yaml v0.1.0/go.mod h1:cvbUDC7AL23pImuQP0oRw/hPucc github.com/knadh/koanf/providers/env v1.0.0/go.mod h1:mzFyRZueYhb37oPmC1HAv/oGEEuyvJDA98r3XAa8Gak= github.com/knadh/koanf/providers/file v1.1.2/go.mod h1:/faSBcv2mxPVjFrXck95qeoyoZ5myJ6uxN8OOVNJJCI= github.com/knadh/koanf/v2 v2.1.2/go.mod h1:Gphfaen0q1Fc1HTgJgSTC4oRX9R2R5ErYMZJy8fLJBo= +github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -1772,6 +1750,7 @@ github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyex github.com/microcosm-cc/bluemonday v1.0.25 h1:4NEwSfiJ+Wva0VxN5B8OwMicaJvD8r9tlJWm9rtloEg= github.com/microcosm-cc/bluemonday v1.0.25/go.mod h1:ZIOjCQp1OrzBBPIJmfX4qDYFuhU02nx4bn030ixfHLE= github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA= +github.com/milvus-io/milvus-proto/go-api/v2 v2.6.8-0.20251223041313-25746c47c1a7/go.mod h1:/6UT4zZl6awVeXLeE7UGDWZvXj3IWkRsh3mqsn0DiAs= github.com/milvus-io/milvus/pkg/v2 v2.6.7-0.20251201120310-af64f2acba38/go.mod h1:ak5nlCCbtImG4/WWcI/csU5ht6EyF/9QQ/tmivMzF4c= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= @@ -1801,8 +1780,6 @@ github.com/moby/sys/mount v0.3.4 h1:yn5jq4STPztkkzSKpZkLcmjue+bZJ0u2AuQY1iNI1Ww= github.com/moby/sys/mount v0.3.4/go.mod h1:KcQJMbQdJHPlq5lcYT+/CjatWM4PuxKe+XLSVS4J6Os= github.com/moby/sys/reexec v0.1.0 h1:RrBi8e0EBTLEgfruBOFcxtElzRGTEUkeIFaVXgU7wok= github.com/moby/sys/reexec v0.1.0/go.mod h1:EqjBg8F3X7iZe5pU6nRZnYCMUTXoxsjiIfHup5wYIN8= -github.com/moesif/moesifapi-go v1.1.5 h1:jL3iMSyG4DpT7OJppJQn8reGYifraPJiu5lAAvE/BGQ= -github.com/moesif/moesifapi-go v1.1.5/go.mod h1:wRGgVy0QeiCgnjFEiD13HD2Aa7reI8nZXtCnddNnZGs= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/montanaflynn/stats v0.7.0 h1:r3y12KyNxj/Sb/iOE46ws+3mS1+MZca1wlHQFPsY/JU= github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= @@ -1811,6 +1788,7 @@ github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nats-io/jwt v0.3.0 h1:xdnzwFETV++jNc4W1mw//qFyJGb2ABOombmZJQS4+Qo= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= @@ -1844,6 +1822,7 @@ github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWEr github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/runc v0.1.1 h1:GlxAyO6x8rfZYN9Tt0Kti5a/cP41iuiO2yYT0IJGY8Y= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 h1:DmNGcqH3WDbV5k8OJ+esPWbqUOX5rMLR2PMvziDMJi0= github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626/go.mod h1:BRHJJd0E+cx42OybVYSgUvZmU0B8P9gZuRXlZUP7TKI= @@ -1906,6 +1885,7 @@ github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= @@ -1915,8 +1895,10 @@ github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOA github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA= github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= github.com/quasilyte/go-ruleguard/dsl v0.3.23 h1:lxjt5B6ZCiBeeNO8/oQsegE6fLeCzuMRoVWSkXC4uvY= @@ -1934,6 +1916,7 @@ github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6po github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= @@ -1989,8 +1972,6 @@ github.com/stathat/consistent v1.0.0 h1:ZFJ1QTRn8npNBKW065raSZ8xfOqhpb8vLOkfp4Cc github.com/stathat/consistent v1.0.0/go.mod h1:uajTPbgSygZBJ+V+0mY7meZ8i0XAcZs7AQ6V121XSxw= github.com/stefanberger/go-pkcs11uri v0.0.0-20230803200340-78284954bff6 h1:pnnLyeX7o/5aX8qUQ69P/mLojDqwda8hFOCBTmP/6hw= github.com/stefanberger/go-pkcs11uri v0.0.0-20230803200340-78284954bff6/go.mod h1:39R/xuhNgVhi+K0/zst4TLrJrVmbm6LVgl4A0+ZFS5M= -github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= -github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs= github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -2094,6 +2075,8 @@ github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= github.com/zilliztech/woodpecker v0.1.12 h1:GWq95o9FvwP/EvjedbDJlBwQPo/ZC9NxOmoSpeboznk= github.com/zilliztech/woodpecker v0.1.12/go.mod h1:xA7jPkUnnr5S4+LmQghrc/1hNU2kiU8KWZ93Uup2jks= +github.com/zilliztech/woodpecker v0.1.13 h1:aw4zj6jbZZS0YlARI1VTBrI4J5c+A8wwyoCDe6VkUZs= +github.com/zilliztech/woodpecker v0.1.13/go.mod h1:xA7jPkUnnr5S4+LmQghrc/1hNU2kiU8KWZ93Uup2jks= go.einride.tech/aip v0.66.0 h1:XfV+NQX6L7EOYK11yoHHFtndeaWh3KbD9/cN/6iWEt8= go.einride.tech/aip v0.66.0/go.mod h1:qAhMsfT7plxBX+Oy7Huol6YUvZ0ZzdUz26yZsQwfl1M= go.einride.tech/aip v0.67.1/go.mod h1:ZGX4/zKw8dcgzdLsrvpOOGxfxI2QSk12SlP7d6c0/XI= @@ -2101,6 +2084,7 @@ go.einride.tech/aip v0.68.1 h1:16/AfSxcQISGN5z9C5lM+0mLYXihrHbQ1onvYTr93aQ= go.einride.tech/aip v0.68.1/go.mod h1:XaFtaj4HuA3Zwk9xoBtTWgNubZ0ZZXv9BZJCkuKuWbg= go.einride.tech/aip v0.73.0/go.mod h1:Mj7rFbmXEgw0dq1dqJ7JGMvYCZZVxmGOR3S4ZcV5LvQ= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.12/go.mod h1:Gi2toLZr1jFkuReJm+yEPn7H8wk6ooptePtHYCbCS1g= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= @@ -2124,6 +2108,7 @@ go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVL go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k= go.opentelemetry.io/contrib/detectors/gcp v1.38.0 h1:ZoYbqX7OaA/TAikspPl3ozPI6iY6LiIY9I8cUfm+pJs= go.opentelemetry.io/contrib/detectors/gcp v1.38.0/go.mod h1:SU+iU7nu5ud4oCb3LQOhIZ3nRLj6FNVrKgtflbaf2ts= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0/go.mod h1:Ct6zzQEuGK3WpJs2n4dn+wfJYzd/+hNnxMRTWjGn30M= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.48.0/go.mod h1:tIKj3DbO8N9Y2xo52og3irLsPI4GW02DSMtrVgNMgxg= @@ -2131,6 +2116,7 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.4 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0/go.mod h1:BMsdeOxN04K0L5FNUBfjFdvwWGNe/rkmSwH4Aelu/X0= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0/go.mod h1:HDBUsEjOuRC0EzKZ1bSaRGZWUBAzo+MhAcUUORSr4D0= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= @@ -2263,6 +2249,7 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.20.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -2413,7 +2400,6 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -2721,6 +2707,7 @@ golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -2933,7 +2920,6 @@ google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3 google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= @@ -2967,6 +2953,7 @@ google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210226172003-ab064af71705 h1:PYBmACG+YEv8uQPW0r1kJj8tR+gkF0UWq7iFdUezwEw= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20220503193339-ba3ae3f07e29/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto v0.0.0-20250122153221-138b5a5a4fd4/go.mod h1:qbZzneIOXSq+KFAFut9krLfRLZiFLzZL5u2t8SV83EE= @@ -3325,6 +3312,7 @@ gotest.tools v0.0.0-20181223230014-1083505acf35/go.mod h1:R//lfYlUuTOTfblYI3lGoA gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc h1:/hemPrYIhOhy8zYrNj+069zDB68us2sMGsfkFJO0iZs= honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= diff --git a/sdk/go.mod b/sdk/go.mod index fbe5cf801..153958376 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -5,9 +5,9 @@ go 1.25.1 require ( github.com/goccy/go-json v0.10.5 github.com/google/uuid v1.6.0 - github.com/milvus-io/milvus/client/v2 v2.6.1 - github.com/milvus-io/milvus/pkg/v2 v2.6.7 - github.com/redis/go-redis/v9 v9.8.0 + github.com/milvus-io/milvus/client/v2 v2.6.2 + github.com/milvus-io/milvus/pkg/v2 v2.6.8 + github.com/redis/go-redis/v9 v9.17.2 ) require ( @@ -28,7 +28,6 @@ require ( github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/getsentry/sentry-go v0.12.0 // indirect github.com/go-logr/logr v1.4.3 // indirect @@ -36,8 +35,9 @@ require ( github.com/go-ole/go-ole v1.2.6 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang-jwt/jwt/v4 v4.5.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/btree v1.1.2 // indirect + github.com/google/btree v1.1.3 // indirect github.com/gorilla/websocket v1.5.3 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect @@ -49,7 +49,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/mdlayher/socket v0.5.1 // indirect - github.com/milvus-io/milvus-proto/go-api/v2 v2.6.7 // indirect + github.com/milvus-io/milvus-proto/go-api/v2 v2.6.8 // indirect github.com/moby/sys/userns v0.1.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect @@ -85,13 +85,13 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.etcd.io/bbolt v1.4.3 // indirect - go.etcd.io/etcd/api/v3 v3.5.5 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.5.5 // indirect - go.etcd.io/etcd/client/v2 v2.305.5 // indirect - go.etcd.io/etcd/client/v3 v3.5.5 // indirect - go.etcd.io/etcd/pkg/v3 v3.5.5 // indirect - go.etcd.io/etcd/raft/v3 v3.5.5 // indirect - go.etcd.io/etcd/server/v3 v3.5.5 // indirect + go.etcd.io/etcd/api/v3 v3.5.23 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.23 // indirect + go.etcd.io/etcd/client/v2 v2.305.23 // indirect + go.etcd.io/etcd/client/v3 v3.5.23 // indirect + go.etcd.io/etcd/pkg/v3 v3.5.23 // indirect + go.etcd.io/etcd/raft/v3 v3.5.23 // indirect + go.etcd.io/etcd/server/v3 v3.5.23 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect go.opentelemetry.io/otel v1.39.0 // indirect diff --git a/sdk/go.sum b/sdk/go.sum index a7d991d28..84effc250 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -1,64 +1,34 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU= github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= github.com/alecthomas/assert/v2 v2.10.0 h1:jjRCHsj6hBJhkmhznrCzoNpbA3zqy0fYiUcYZP/GkPY= github.com/alecthomas/assert/v2 v2.10.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= -github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cilium/ebpf v0.16.0 h1:+BiEnHL6Z7lXnlGUsXQPPAE7+kenAd4ES8MQ5min0Ok= @@ -66,15 +36,10 @@ github.com/cilium/ebpf v0.16.0/go.mod h1:L7u2Blt2jMM/vLAVgjxluxtBKlz3/GWjB0dMOEn github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f h1:6jduT9Hfc0njg5jJ1DdKCFPdMBrp/mdZfCpa5h+WM74= github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= @@ -84,32 +49,23 @@ github.com/containerd/cgroups/v3 v3.0.5 h1:44na7Ud+VwyE7LIoJ8JTNQOa549a8543BmzaJ github.com/containerd/cgroups/v3 v3.0.5/go.mod h1:SA5DLYnXO8pTGYiAHXz94qvLQTKfVM5GEVisn4jpins= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -119,24 +75,17 @@ github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZi github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= -github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/getsentry/sentry-go v0.12.0 h1:era7g0re5iY13bHSdN/xMkyV+5zZppjRVQhZrXCaEIk= github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -145,13 +94,8 @@ github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/ github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -173,20 +117,15 @@ github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= +github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -198,24 +137,18 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -226,51 +159,23 @@ github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -282,33 +187,23 @@ github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/ github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA= github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jsimonetti/rtnetlink/v2 v2.0.1 h1:xda7qaHDSVOsADNouv7ukSuicKZO7GgVUCXxpaIEIlM= github.com/jsimonetti/rtnetlink/v2 v2.0.1/go.mod h1:7MoNYNbb3UaDHtF8udiJo/RH6VsTKP1pqKLUTVCvToE= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12 h1:9Nu54bhS/H/Kgo2/7xNSUuC5G28VR8ljfrLKU2G4IjU= github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12/go.mod h1:TBzl5BIHNXfS9+C35ZyJaklL7mLDbgUkcgXzSLa8Tk0= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= @@ -317,7 +212,6 @@ github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zt github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= @@ -334,39 +228,28 @@ github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g= github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw= github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos= github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ= github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/milvus-io/milvus-proto/go-api/v2 v2.6.7 h1:RJtZbkS5zKNIXxsqjGBUZc2SbnI4MGq+TfOfc8tJsuM= -github.com/milvus-io/milvus-proto/go-api/v2 v2.6.7/go.mod h1:/6UT4zZl6awVeXLeE7UGDWZvXj3IWkRsh3mqsn0DiAs= -github.com/milvus-io/milvus/client/v2 v2.6.1 h1:JGV+2JoZypc0ORnVj41ZWLdz9EpBGcwXCliIFXFW1f4= -github.com/milvus-io/milvus/client/v2 v2.6.1/go.mod h1:MnickP646pUKhfOS4JQD3uMUukDXhJKpdTXk467MXuU= -github.com/milvus-io/milvus/pkg/v2 v2.6.7 h1:9UBQsytc4KxOzq2eeohzK4+/sRFoh6AjWjOYessu/40= -github.com/milvus-io/milvus/pkg/v2 v2.6.7/go.mod h1:wfZeV+HkH8lSeYC6smDKCpAdR1YHfQKHiOr0bvMPNH8= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/milvus-io/milvus-proto/go-api/v2 v2.6.8 h1:WTLaqxbwiMuAt0qnpMmnOGnkt7rnj00yrU0rlKnENmk= +github.com/milvus-io/milvus-proto/go-api/v2 v2.6.8/go.mod h1:/6UT4zZl6awVeXLeE7UGDWZvXj3IWkRsh3mqsn0DiAs= +github.com/milvus-io/milvus/client/v2 v2.6.2 h1:39egzRDkXZ8VlcdiPKc9JELTOCNuwD1m6MolWMFR8UI= +github.com/milvus-io/milvus/client/v2 v2.6.2/go.mod h1:4kA40vEX05JCPcTvJ0zR3bvqFzXfEUMqyzi8AoO/KYM= +github.com/milvus-io/milvus/pkg/v2 v2.6.8 h1:pdFb6BVx8Ek4Ioh7t5VWO6rhZgrFxlulaU1+eY6fqk0= +github.com/milvus-io/milvus/pkg/v2 v2.6.8/go.mod h1:jiC8w9PEhvpN6CkZnG1+hfL5sTmNCiY2HLl/h8d97cw= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= @@ -380,13 +263,10 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= @@ -395,69 +275,45 @@ github.com/opencontainers/runtime-spec v1.2.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/panjf2000/ants/v2 v2.11.3 h1:AfI0ngBoXJmYOpDh9m516vjqoUu2sLrIVgppI9TZVpg= github.com/panjf2000/ants/v2 v2.11.3/go.mod h1:8u92CYMUc6gyvTIw8Ru7Mt7+/ESnJahz5EVtqfrilek= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c h1:xpW9bvK+HuuTmyFqUwr+jcCvpVkK7sumiz+ko5H9eq4= github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c/go.mod h1:X2r9ueLEUZgtx2cIogM0v4Zj5uvvzhuuiu7Pn8HzMPg= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI= -github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/redis/go-redis/v9 v9.17.2 h1:P2EGsA4qVIM3Pp+aPocCJ7DguDHhqrXNhVcEp4ViluI= +github.com/redis/go-redis/v9 v9.17.2/go.mod h1:u410H11HMLoB+TP67dz8rL9s6QW2j76l0//kSOd3370= github.com/remeh/sizedwaitgroup v1.0.0 h1:VNGGFwNo/R5+MJBf6yrsr110p0m4/OX4S3DCy7Kyl5E= github.com/remeh/sizedwaitgroup v1.0.0/go.mod h1:3j2R4OIe/SeS6YDhICBy22RWjJC5eNCJ1V+9+NVNYlo= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/samber/lo v1.27.0 h1:GOyDWxsblvqYobqsmUuMddPa2/mMzkKyojlXol4+LaQ= github.com/samber/lo v1.27.0/go.mod h1:it33p9UtPMS7z72fP4gw/EIfQB2eI8ke7GR2wc6+Rhg= github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4= github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= @@ -466,18 +322,13 @@ github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= @@ -485,14 +336,11 @@ github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -509,7 +357,6 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 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/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M= github.com/thoas/go-funk v0.9.1/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= @@ -522,7 +369,6 @@ github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFA github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/twpayne/go-geom v1.6.1 h1:iLE+Opv0Ihm/ABIcvQFGIiFBXd76oBIar9drAwHFhR4= @@ -557,56 +403,43 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= -go.etcd.io/etcd/api/v3 v3.5.5 h1:BX4JIbQ7hl7+jL+g+2j5UAr0o1bctCm6/Ct+ArBGkf0= -go.etcd.io/etcd/api/v3 v3.5.5/go.mod h1:KFtNaxGDw4Yx/BA4iPPwevUTAuqcsPxzyX8PHydchN8= -go.etcd.io/etcd/client/pkg/v3 v3.5.5 h1:9S0JUVvmrVl7wCF39iTQthdaaNIiAaQbmK75ogO6GU8= -go.etcd.io/etcd/client/pkg/v3 v3.5.5/go.mod h1:ggrwbk069qxpKPq8/FKkQ3Xq9y39kbFR4LnKszpRXeQ= -go.etcd.io/etcd/client/v2 v2.305.5 h1:DktRP60//JJpnPC0VBymAN/7V71GHMdjDCBt4ZPXDjI= -go.etcd.io/etcd/client/v2 v2.305.5/go.mod h1:zQjKllfqfBVyVStbt4FaosoX2iYd8fV/GRy/PbowgP4= -go.etcd.io/etcd/client/v3 v3.5.5 h1:q++2WTJbUgpQu4B6hCuT7VkdwaTP7Qz6Daak3WzbrlI= -go.etcd.io/etcd/client/v3 v3.5.5/go.mod h1:aApjR4WGlSumpnJ2kloS75h6aHUmAyaPLjHMxpc7E7c= -go.etcd.io/etcd/pkg/v3 v3.5.5 h1:Ablg7T7OkR+AeeeU32kdVhw/AGDsitkKPl7aW73ssjU= -go.etcd.io/etcd/pkg/v3 v3.5.5/go.mod h1:6ksYFxttiUGzC2uxyqiyOEvhAiD0tuIqSZkX3TyPdaE= -go.etcd.io/etcd/raft/v3 v3.5.5 h1:Ibz6XyZ60OYyRopu73lLM/P+qco3YtlZMOhnXNS051I= -go.etcd.io/etcd/raft/v3 v3.5.5/go.mod h1:76TA48q03g1y1VpTue92jZLr9lIHKUNcYdZOOGyx8rI= -go.etcd.io/etcd/server/v3 v3.5.5 h1:jNjYm/9s+f9A9r6+SC4RvNaz6AqixpOvhrFdT0PvIj0= -go.etcd.io/etcd/server/v3 v3.5.5/go.mod h1:rZ95vDw/jrvsbj9XpTqPrTAB9/kzchVdhRirySPkUBc= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.etcd.io/etcd/api/v3 v3.5.23 h1:tQi/RaO6peOhmf0c11miU3RQIYPZmiL3UzG9V+f8g6k= +go.etcd.io/etcd/api/v3 v3.5.23/go.mod h1:QP4ZLWROP49Kk/vPLhudxYQcF4ndhMQ1gvJE4rCTAgc= +go.etcd.io/etcd/client/pkg/v3 v3.5.23 h1:RzwVV28JgOwGl5TUjA47s9IWxl5qQjM2VqSh8wjFFLM= +go.etcd.io/etcd/client/pkg/v3 v3.5.23/go.mod h1:IdIjxGUGNy+8HWeVlbBXDqmPqe+n8GsVGVYnccAEZ5o= +go.etcd.io/etcd/client/v2 v2.305.23 h1:lo6nsSHjp3tGsRLrzmM+neVSahXxbhxnfoatEdB6nao= +go.etcd.io/etcd/client/v2 v2.305.23/go.mod h1:Up9T9+5M3MMcCj/V0nDfadBERNMxIYf1tdycva1dXM4= +go.etcd.io/etcd/client/v3 v3.5.23 h1:WN7sypGG326sFP5jLkFqD3anf/k6NNlV5Hy/UxvTPvc= +go.etcd.io/etcd/client/v3 v3.5.23/go.mod h1:XTf1oMQi4ZzpXGFoPgvAqbY9JFmTFQqWI1SF4g+hV6o= +go.etcd.io/etcd/pkg/v3 v3.5.23 h1:q2skPu7VFC7oerL3MrFqImVACjAFWPlZMjHU0zll9x4= +go.etcd.io/etcd/pkg/v3 v3.5.23/go.mod h1:zUWlm5U4HgvDg+0PUWb8TgMF7ZrUiQA8aQq7FxE0WHo= +go.etcd.io/etcd/raft/v3 v3.5.23 h1:NhCdh4xz1VsrqHd2c+h6SLvhE95B1Hs7K+ESaAs6LLQ= +go.etcd.io/etcd/raft/v3 v3.5.23/go.mod h1:NJz9BGkhGvru47lIc1wL0QHsg5yvHTy6tUpEqM69ERM= +go.etcd.io/etcd/server/v3 v3.5.23 h1:2g1hz32pp1TYMI7xUyifR8gXOlUnTBCfixV+uJ8BqRU= +go.etcd.io/etcd/server/v3 v3.5.23/go.mod h1:sZwt/lLSwYQ/S5aAbzSQX2xNw1WA0Fo5noUCVxVYB4g= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0/go.mod h1:E5NNboN0UqSAki0Atn9kVwaN7I+l25gGxDqBueo/74E= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= -go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU= go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1/go.mod h1:Kv8liBeVNFkkkbilbgWRpV+wWuu+H5xdOT6HAgd30iw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1/go.mod h1:xOvWoTOrQjxjW61xtOmD/WKGRYb/P4NzRo3bs65U6Rk= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.0.1/go.mod h1:HrdXne+BiwsOHYYkBE5ysIcv2bvdZstxzmCQhxTcZkI= go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.0.1/go.mod h1:5g4i4fKLaX2BQpSBsxw8YYcgKpMMSW3x7ZTuYBr3sUk= go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.9.0/go.mod h1:1vKfU9rv61e9EVGthD1zNvUbiwPcimSsOPU9brfSHJg= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= @@ -614,50 +447,30 @@ go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnw go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM= golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -665,36 +478,26 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -703,48 +506,29 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -758,7 +542,6 @@ golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -766,38 +549,21 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -805,29 +571,14 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb h1:ITgPrl429bc6+2ZraNSzMDk3I95nmQln2fuPstKwFDE= google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE= @@ -837,18 +588,12 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -862,10 +607,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -877,22 +620,14 @@ gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8 gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -901,13 +636,8 @@ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= From 275685e25b7659d445f1dd7cebcf6e40e66db2e4 Mon Sep 17 00:00:00 2001 From: Renuka Fernando Date: Thu, 22 Jan 2026 16:42:37 +0530 Subject: [PATCH 5/6] Add ensure logger func --- sdk/gateway/policy/v1alpha/logger.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/sdk/gateway/policy/v1alpha/logger.go b/sdk/gateway/policy/v1alpha/logger.go index 22ff0095b..312b503c5 100644 --- a/sdk/gateway/policy/v1alpha/logger.go +++ b/sdk/gateway/policy/v1alpha/logger.go @@ -2,8 +2,27 @@ package policyv1alpha import "log/slog" +// EnsureLogger returns the provided logger if non-nil, otherwise returns slog.Default(). +// Use this in GetPolicy to ensure the policy's logger field is never nil. +// +// Example: +// +// func GetPolicy(metadata PolicyMetadata, params map[string]interface{}, logger *slog.Logger) (Policy, error) { +// p := &MyPolicy{ +// logger: policy.EnsureLogger(logger), +// } +// return p, nil +// } +func EnsureLogger(logger *slog.Logger) *slog.Logger { + if logger == nil { + return slog.Default() + } + return logger +} + // WithRequestID enriches a logger with a request ID for correlation. // Use this in OnRequest and OnResponse methods to add request-specific context. +// If logger is nil, it uses slog.Default() to ensure safe operation. // // Example: // @@ -13,5 +32,8 @@ import "log/slog" // return RequestAction{} // } func WithRequestID(logger *slog.Logger, requestID string) *slog.Logger { + if logger == nil { + logger = slog.Default() + } return logger.With("requestId", requestID) } From 8441c2fdd4f00a3c083535fab1d5e349fe6fcde1 Mon Sep 17 00:00:00 2001 From: Renuka Fernando Date: Thu, 22 Jan 2026 16:45:29 +0530 Subject: [PATCH 6/6] Update sdk version in all policies --- gateway/policies/advanced-ratelimit/v0.1.0/go.mod | 2 +- gateway/policies/advanced-ratelimit/v0.1.0/ratelimit.go | 1 + gateway/policies/api-key-auth/v0.1.0/apikey.go | 2 +- gateway/policies/api-key-auth/v0.1.0/go.mod | 2 +- gateway/policies/api-key-auth/v0.1.0/go.sum | 4 ++-- .../aws-bedrock-guardrail/v0.1.0/awsbedrockguardrail.go | 2 +- gateway/policies/aws-bedrock-guardrail/v0.1.0/go.mod | 2 +- gateway/policies/aws-bedrock-guardrail/v0.1.0/go.sum | 4 ++-- .../v0.1.0/azurecontentsafetycontentmoderation.go | 2 +- .../azure-content-safety-content-moderation/v0.1.0/go.mod | 2 +- .../azure-content-safety-content-moderation/v0.1.0/go.sum | 4 ++-- gateway/policies/basic-auth/v0.1.0/basicauth.go | 2 +- gateway/policies/basic-auth/v0.1.0/go.mod | 2 +- gateway/policies/basic-auth/v0.1.0/go.sum | 4 ++-- gateway/policies/basic-ratelimit/v0.1.0/go.mod | 2 +- .../content-length-guardrail/v0.1.0/contentlengthguardrail.go | 2 +- gateway/policies/content-length-guardrail/v0.1.0/go.mod | 2 +- gateway/policies/content-length-guardrail/v0.1.0/go.sum | 4 ++-- gateway/policies/cors/v0.1.0/cors.go | 1 + gateway/policies/cors/v0.1.0/go.mod | 2 +- gateway/policies/cors/v0.1.0/go.sum | 4 ++-- gateway/policies/json-schema-guardrail/v0.1.0/go.mod | 2 +- gateway/policies/json-schema-guardrail/v0.1.0/go.sum | 4 ++-- .../json-schema-guardrail/v0.1.0/jsonschemaguardrail.go | 2 +- gateway/policies/jwt-auth/v0.1.0/go.mod | 2 +- gateway/policies/jwt-auth/v0.1.0/go.sum | 4 ++-- gateway/policies/jwt-auth/v0.1.0/jwtauth.go | 2 +- gateway/policies/mcp-auth/v0.1.0/go.mod | 2 +- gateway/policies/mcp-auth/v0.1.0/go.sum | 4 ++-- gateway/policies/mcp-auth/v0.1.0/mcp-auth.go | 2 +- gateway/policies/mcp-authz/v0.1.0/mcp-authz.go | 1 + gateway/policies/model-round-robin/v0.1.0/go.mod | 2 +- gateway/policies/model-round-robin/v0.1.0/go.sum | 4 ++-- gateway/policies/model-round-robin/v0.1.0/roundrobin.go | 2 +- gateway/policies/model-weighted-round-robin/v0.1.0/go.mod | 2 +- gateway/policies/model-weighted-round-robin/v0.1.0/go.sum | 4 ++-- .../model-weighted-round-robin/v0.1.0/weightedroundrobin.go | 2 +- gateway/policies/modify-headers/v0.1.0/go.mod | 2 +- gateway/policies/modify-headers/v0.1.0/go.sum | 4 ++-- gateway/policies/modify-headers/v0.1.0/modifyheaders.go | 2 +- gateway/policies/pii-masking-regex/v0.1.0/go.mod | 2 +- gateway/policies/pii-masking-regex/v0.1.0/go.sum | 4 ++-- gateway/policies/pii-masking-regex/v0.1.0/piimaskingregex.go | 2 +- gateway/policies/prompt-decorator/v0.1.0/go.mod | 2 +- gateway/policies/prompt-decorator/v0.1.0/go.sum | 4 ++-- gateway/policies/prompt-decorator/v0.1.0/promptdecorator.go | 2 +- gateway/policies/prompt-template/v0.1.0/go.mod | 2 +- gateway/policies/prompt-template/v0.1.0/go.sum | 4 ++-- gateway/policies/prompt-template/v0.1.0/prompttemplate.go | 2 +- gateway/policies/regex-guardrail/v0.1.0/go.mod | 2 +- gateway/policies/regex-guardrail/v0.1.0/go.sum | 4 ++-- gateway/policies/regex-guardrail/v0.1.0/regexguardrail.go | 2 +- gateway/policies/respond/v0.1.0/go.mod | 2 +- gateway/policies/respond/v0.1.0/go.sum | 4 ++-- gateway/policies/respond/v0.1.0/respond.go | 2 +- gateway/policies/semantic-cache/v0.1.0/go.mod | 2 +- gateway/policies/semantic-cache/v0.1.0/go.sum | 4 ++-- gateway/policies/semantic-cache/v0.1.0/semanticcache.go | 2 +- gateway/policies/semantic-prompt-guard/v0.1.0/go.mod | 2 +- gateway/policies/semantic-prompt-guard/v0.1.0/go.sum | 4 ++-- .../semantic-prompt-guard/v0.1.0/semanticpromptguard.go | 2 +- gateway/policies/sentence-count-guardrail/v0.1.0/go.mod | 2 +- gateway/policies/sentence-count-guardrail/v0.1.0/go.sum | 4 ++-- .../sentence-count-guardrail/v0.1.0/sentencecountguardrail.go | 2 +- gateway/policies/url-guardrail/v0.1.0/go.mod | 2 +- gateway/policies/url-guardrail/v0.1.0/go.sum | 4 ++-- gateway/policies/url-guardrail/v0.1.0/urlguardrail.go | 2 +- gateway/policies/word-count-guardrail/v0.1.0/go.mod | 2 +- gateway/policies/word-count-guardrail/v0.1.0/go.sum | 4 ++-- .../word-count-guardrail/v0.1.0/wordcountguardrail.go | 2 +- gateway/policy-engine/go.mod | 2 +- gateway/sample-policies/count-letters/v1.0.0/go.mod | 2 +- gateway/sample-policies/uppercase-body/v1.0.0/go.mod | 2 +- gateway/system-policies/analytics/v0.1.0/go.mod | 2 +- 74 files changed, 96 insertions(+), 93 deletions(-) diff --git a/gateway/policies/advanced-ratelimit/v0.1.0/go.mod b/gateway/policies/advanced-ratelimit/v0.1.0/go.mod index cc4719227..6049bbd9f 100644 --- a/gateway/policies/advanced-ratelimit/v0.1.0/go.mod +++ b/gateway/policies/advanced-ratelimit/v0.1.0/go.mod @@ -5,7 +5,7 @@ go 1.25.1 require ( github.com/google/cel-go v0.26.1 github.com/redis/go-redis/v9 v9.17.2 - github.com/wso2/api-platform/sdk v0.3.3 + github.com/wso2/api-platform/sdk v0.3.5 ) require ( diff --git a/gateway/policies/advanced-ratelimit/v0.1.0/ratelimit.go b/gateway/policies/advanced-ratelimit/v0.1.0/ratelimit.go index d4797b6ea..b11d79e8e 100644 --- a/gateway/policies/advanced-ratelimit/v0.1.0/ratelimit.go +++ b/gateway/policies/advanced-ratelimit/v0.1.0/ratelimit.go @@ -262,6 +262,7 @@ func GetPolicy( // Return configured policy instance return &RateLimitPolicy{ + logger: policy.EnsureLogger(logger), quotas: quotas, routeName: routeName, apiId: apiId, diff --git a/gateway/policies/api-key-auth/v0.1.0/apikey.go b/gateway/policies/api-key-auth/v0.1.0/apikey.go index f9b9321c2..608ef23cb 100644 --- a/gateway/policies/api-key-auth/v0.1.0/apikey.go +++ b/gateway/policies/api-key-auth/v0.1.0/apikey.go @@ -44,7 +44,7 @@ func GetPolicy( logger *slog.Logger, ) (policy.Policy, error) { p := &APIKeyPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), } return p, nil } diff --git a/gateway/policies/api-key-auth/v0.1.0/go.mod b/gateway/policies/api-key-auth/v0.1.0/go.mod index c6a3741d1..1b12b6e8b 100644 --- a/gateway/policies/api-key-auth/v0.1.0/go.mod +++ b/gateway/policies/api-key-auth/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/api-key-auth go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.3 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/api-key-auth/v0.1.0/go.sum b/gateway/policies/api-key-auth/v0.1.0/go.sum index 3a345ae92..d9fd8aede 100644 --- a/gateway/policies/api-key-auth/v0.1.0/go.sum +++ b/gateway/policies/api-key-auth/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/aws-bedrock-guardrail/v0.1.0/awsbedrockguardrail.go b/gateway/policies/aws-bedrock-guardrail/v0.1.0/awsbedrockguardrail.go index c66503c0d..a24a5a5ce 100644 --- a/gateway/policies/aws-bedrock-guardrail/v0.1.0/awsbedrockguardrail.go +++ b/gateway/policies/aws-bedrock-guardrail/v0.1.0/awsbedrockguardrail.go @@ -69,7 +69,7 @@ func GetPolicy( } p := &AWSBedrockGuardrailPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), region: getStringParam(params, "region"), guardrailID: getStringParam(params, "guardrailID"), guardrailVersion: getStringParam(params, "guardrailVersion"), diff --git a/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.mod b/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.mod index eb2a00556..543e1f793 100644 --- a/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.mod +++ b/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.mod @@ -8,7 +8,7 @@ require ( github.com/aws/aws-sdk-go-v2/credentials v1.17.16 github.com/aws/aws-sdk-go-v2/service/bedrockruntime v1.13.0 github.com/aws/aws-sdk-go-v2/service/sts v1.28.10 - github.com/wso2/api-platform/sdk v0.3.3 + github.com/wso2/api-platform/sdk v0.3.5 ) require ( diff --git a/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.sum b/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.sum index 99af84709..2ddb7b0f6 100644 --- a/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.sum +++ b/gateway/policies/aws-bedrock-guardrail/v0.1.0/go.sum @@ -28,5 +28,5 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.28.10 h1:69tpbPED7jKPyzMcrwSvhWcJ9bP github.com/aws/aws-sdk-go-v2/service/sts v1.28.10/go.mod h1:0Aqn1MnEuitqfsCNyKsdKLhDUOr4txD/g19EfiUqgws= github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/azure-content-safety-content-moderation/v0.1.0/azurecontentsafetycontentmoderation.go b/gateway/policies/azure-content-safety-content-moderation/v0.1.0/azurecontentsafetycontentmoderation.go index 3720f9b13..0c3da3a05 100644 --- a/gateway/policies/azure-content-safety-content-moderation/v0.1.0/azurecontentsafetycontentmoderation.go +++ b/gateway/policies/azure-content-safety-content-moderation/v0.1.0/azurecontentsafetycontentmoderation.go @@ -67,7 +67,7 @@ func GetPolicy( } p := &AzureContentSafetyContentModerationPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), endpoint: getStringParam(params, "azureContentSafetyEndpoint"), apiKey: getStringParam(params, "azureContentSafetyKey"), client: &http.Client{ diff --git a/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.mod b/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.mod index 95db2aef6..ae4b40d06 100644 --- a/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.mod +++ b/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/azure-content-safety-content-moderation go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.3 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.sum b/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.sum index 3a345ae92..d9fd8aede 100644 --- a/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.sum +++ b/gateway/policies/azure-content-safety-content-moderation/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/basic-auth/v0.1.0/basicauth.go b/gateway/policies/basic-auth/v0.1.0/basicauth.go index 4281f4726..0c79438d6 100644 --- a/gateway/policies/basic-auth/v0.1.0/basicauth.go +++ b/gateway/policies/basic-auth/v0.1.0/basicauth.go @@ -27,7 +27,7 @@ func GetPolicy( logger *slog.Logger, ) (policy.Policy, error) { p := &BasicAuthPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), } return p, nil } diff --git a/gateway/policies/basic-auth/v0.1.0/go.mod b/gateway/policies/basic-auth/v0.1.0/go.mod index 86a8db055..72d7a53d7 100644 --- a/gateway/policies/basic-auth/v0.1.0/go.mod +++ b/gateway/policies/basic-auth/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/basic-auth go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.3 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/basic-auth/v0.1.0/go.sum b/gateway/policies/basic-auth/v0.1.0/go.sum index 3a345ae92..d9fd8aede 100644 --- a/gateway/policies/basic-auth/v0.1.0/go.sum +++ b/gateway/policies/basic-auth/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/basic-ratelimit/v0.1.0/go.mod b/gateway/policies/basic-ratelimit/v0.1.0/go.mod index 22d0d36ee..e1bdbd785 100644 --- a/gateway/policies/basic-ratelimit/v0.1.0/go.mod +++ b/gateway/policies/basic-ratelimit/v0.1.0/go.mod @@ -4,7 +4,7 @@ go 1.25.1 require ( github.com/policy-engine/policies/advanced-ratelimit v0.1.0 - github.com/wso2/api-platform/sdk v0.3.3 + github.com/wso2/api-platform/sdk v0.3.5 ) require ( diff --git a/gateway/policies/content-length-guardrail/v0.1.0/contentlengthguardrail.go b/gateway/policies/content-length-guardrail/v0.1.0/contentlengthguardrail.go index 37677f0fa..6c8fdc6f5 100644 --- a/gateway/policies/content-length-guardrail/v0.1.0/contentlengthguardrail.go +++ b/gateway/policies/content-length-guardrail/v0.1.0/contentlengthguardrail.go @@ -42,7 +42,7 @@ func GetPolicy( logger *slog.Logger, ) (policy.Policy, error) { p := &ContentLengthGuardrailPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), } // Extract and parse request parameters if present diff --git a/gateway/policies/content-length-guardrail/v0.1.0/go.mod b/gateway/policies/content-length-guardrail/v0.1.0/go.mod index ce679f176..28c2a67aa 100644 --- a/gateway/policies/content-length-guardrail/v0.1.0/go.mod +++ b/gateway/policies/content-length-guardrail/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/content-length-guardrail go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.3 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/content-length-guardrail/v0.1.0/go.sum b/gateway/policies/content-length-guardrail/v0.1.0/go.sum index 3a345ae92..d9fd8aede 100644 --- a/gateway/policies/content-length-guardrail/v0.1.0/go.sum +++ b/gateway/policies/content-length-guardrail/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/cors/v0.1.0/cors.go b/gateway/policies/cors/v0.1.0/cors.go index 321b1ac6f..98a6df8a1 100644 --- a/gateway/policies/cors/v0.1.0/cors.go +++ b/gateway/policies/cors/v0.1.0/cors.go @@ -45,6 +45,7 @@ func GetPolicy( params map[string]any, logger *slog.Logger, ) (policy.Policy, error) { + logger = policy.EnsureLogger(logger) logger.Debug("GetPolicy called") p := &CorsPolicy{ logger: logger, diff --git a/gateway/policies/cors/v0.1.0/go.mod b/gateway/policies/cors/v0.1.0/go.mod index 84e0a7027..2c3eea34e 100644 --- a/gateway/policies/cors/v0.1.0/go.mod +++ b/gateway/policies/cors/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/cors go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.3 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/cors/v0.1.0/go.sum b/gateway/policies/cors/v0.1.0/go.sum index 3a345ae92..d9fd8aede 100644 --- a/gateway/policies/cors/v0.1.0/go.sum +++ b/gateway/policies/cors/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/json-schema-guardrail/v0.1.0/go.mod b/gateway/policies/json-schema-guardrail/v0.1.0/go.mod index ef01e1910..54a18f88b 100644 --- a/gateway/policies/json-schema-guardrail/v0.1.0/go.mod +++ b/gateway/policies/json-schema-guardrail/v0.1.0/go.mod @@ -3,7 +3,7 @@ module github.com/policy-engine/policies/json-schema-guardrail go 1.25.1 require ( - github.com/wso2/api-platform/sdk v0.3.3 + github.com/wso2/api-platform/sdk v0.3.5 github.com/xeipuuv/gojsonschema v1.2.0 ) diff --git a/gateway/policies/json-schema-guardrail/v0.1.0/go.sum b/gateway/policies/json-schema-guardrail/v0.1.0/go.sum index e73f3e805..033f4da78 100644 --- a/gateway/policies/json-schema-guardrail/v0.1.0/go.sum +++ b/gateway/policies/json-schema-guardrail/v0.1.0/go.sum @@ -8,8 +8,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 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 v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= diff --git a/gateway/policies/json-schema-guardrail/v0.1.0/jsonschemaguardrail.go b/gateway/policies/json-schema-guardrail/v0.1.0/jsonschemaguardrail.go index 1049b4abc..4a2735b30 100644 --- a/gateway/policies/json-schema-guardrail/v0.1.0/jsonschemaguardrail.go +++ b/gateway/policies/json-schema-guardrail/v0.1.0/jsonschemaguardrail.go @@ -36,7 +36,7 @@ func GetPolicy( logger *slog.Logger, ) (policy.Policy, error) { p := &JSONSchemaGuardrailPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), } // Extract and parse request parameters if present diff --git a/gateway/policies/jwt-auth/v0.1.0/go.mod b/gateway/policies/jwt-auth/v0.1.0/go.mod index f4d961306..045b92269 100644 --- a/gateway/policies/jwt-auth/v0.1.0/go.mod +++ b/gateway/policies/jwt-auth/v0.1.0/go.mod @@ -4,5 +4,5 @@ go 1.25.1 require ( github.com/golang-jwt/jwt/v5 v5.2.2 - github.com/wso2/api-platform/sdk v0.3.2 + github.com/wso2/api-platform/sdk v0.3.5 ) diff --git a/gateway/policies/jwt-auth/v0.1.0/go.sum b/gateway/policies/jwt-auth/v0.1.0/go.sum index 895ca7d90..30352965c 100644 --- a/gateway/policies/jwt-auth/v0.1.0/go.sum +++ b/gateway/policies/jwt-auth/v0.1.0/go.sum @@ -1,4 +1,4 @@ github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= -github.com/wso2/api-platform/sdk v0.3.2 h1:PIUdy70Uv37ymu9Yq2vtGdjOvJBv4INL/Z7qMX6juJI= -github.com/wso2/api-platform/sdk v0.3.2/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/jwt-auth/v0.1.0/jwtauth.go b/gateway/policies/jwt-auth/v0.1.0/jwtauth.go index 624b557b3..7c654214b 100644 --- a/gateway/policies/jwt-auth/v0.1.0/jwtauth.go +++ b/gateway/policies/jwt-auth/v0.1.0/jwtauth.go @@ -100,7 +100,7 @@ func GetPolicy( params map[string]interface{}, logger *slog.Logger, ) (policy.Policy, error) { - logger.Debug("GetPolicy called") + policy.EnsureLogger(logger).Debug("GetPolicy called") return ins, nil } diff --git a/gateway/policies/mcp-auth/v0.1.0/go.mod b/gateway/policies/mcp-auth/v0.1.0/go.mod index f85c07c73..28973c847 100644 --- a/gateway/policies/mcp-auth/v0.1.0/go.mod +++ b/gateway/policies/mcp-auth/v0.1.0/go.mod @@ -2,7 +2,7 @@ module github.com/policy-engine/policies/mcp-authentication go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.2 +require github.com/wso2/api-platform/sdk v0.3.5 require github.com/policy-engine/policies/jwt-auth v0.1.0 diff --git a/gateway/policies/mcp-auth/v0.1.0/go.sum b/gateway/policies/mcp-auth/v0.1.0/go.sum index 895ca7d90..30352965c 100644 --- a/gateway/policies/mcp-auth/v0.1.0/go.sum +++ b/gateway/policies/mcp-auth/v0.1.0/go.sum @@ -1,4 +1,4 @@ github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= -github.com/wso2/api-platform/sdk v0.3.2 h1:PIUdy70Uv37ymu9Yq2vtGdjOvJBv4INL/Z7qMX6juJI= -github.com/wso2/api-platform/sdk v0.3.2/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/mcp-auth/v0.1.0/mcp-auth.go b/gateway/policies/mcp-auth/v0.1.0/mcp-auth.go index dd0e1eac7..4ed561304 100644 --- a/gateway/policies/mcp-auth/v0.1.0/mcp-auth.go +++ b/gateway/policies/mcp-auth/v0.1.0/mcp-auth.go @@ -53,7 +53,7 @@ func GetPolicy( params map[string]any, logger *slog.Logger, ) (policy.Policy, error) { - logger.Debug("GetPolicy called") + policy.EnsureLogger(logger).Debug("GetPolicy called") return ins, nil } diff --git a/gateway/policies/mcp-authz/v0.1.0/mcp-authz.go b/gateway/policies/mcp-authz/v0.1.0/mcp-authz.go index 052e14fa2..940d4c2a4 100644 --- a/gateway/policies/mcp-authz/v0.1.0/mcp-authz.go +++ b/gateway/policies/mcp-authz/v0.1.0/mcp-authz.go @@ -79,6 +79,7 @@ func GetPolicy( params map[string]any, logger *slog.Logger, ) (policy.Policy, error) { + logger = policy.EnsureLogger(logger) logger.Debug("GetPolicy called") p := &McpAuthzPolicy{} diff --git a/gateway/policies/model-round-robin/v0.1.0/go.mod b/gateway/policies/model-round-robin/v0.1.0/go.mod index 3cff78a6b..def45eec9 100644 --- a/gateway/policies/model-round-robin/v0.1.0/go.mod +++ b/gateway/policies/model-round-robin/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/model-round-robin go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.3 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/model-round-robin/v0.1.0/go.sum b/gateway/policies/model-round-robin/v0.1.0/go.sum index 3a345ae92..d9fd8aede 100644 --- a/gateway/policies/model-round-robin/v0.1.0/go.sum +++ b/gateway/policies/model-round-robin/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/model-round-robin/v0.1.0/roundrobin.go b/gateway/policies/model-round-robin/v0.1.0/roundrobin.go index ee2af8114..0cf563af5 100644 --- a/gateway/policies/model-round-robin/v0.1.0/roundrobin.go +++ b/gateway/policies/model-round-robin/v0.1.0/roundrobin.go @@ -77,7 +77,7 @@ func GetPolicy( } p := &ModelRoundRobinPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), currentIndex: 0, suspendedModels: make(map[string]time.Time), params: policyParams, diff --git a/gateway/policies/model-weighted-round-robin/v0.1.0/go.mod b/gateway/policies/model-weighted-round-robin/v0.1.0/go.mod index 7768dbb67..448a0fd55 100644 --- a/gateway/policies/model-weighted-round-robin/v0.1.0/go.mod +++ b/gateway/policies/model-weighted-round-robin/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/model-weighted-round-robin go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.3 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/model-weighted-round-robin/v0.1.0/go.sum b/gateway/policies/model-weighted-round-robin/v0.1.0/go.sum index 3a345ae92..d9fd8aede 100644 --- a/gateway/policies/model-weighted-round-robin/v0.1.0/go.sum +++ b/gateway/policies/model-weighted-round-robin/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/model-weighted-round-robin/v0.1.0/weightedroundrobin.go b/gateway/policies/model-weighted-round-robin/v0.1.0/weightedroundrobin.go index 634b33ee0..cf145358c 100644 --- a/gateway/policies/model-weighted-round-robin/v0.1.0/weightedroundrobin.go +++ b/gateway/policies/model-weighted-round-robin/v0.1.0/weightedroundrobin.go @@ -89,7 +89,7 @@ func GetPolicy( } p := &ModelWeightedRoundRobinPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), currentIndex: 0, suspendedModels: make(map[string]time.Time), weightedSequence: buildWeightedSequence(weightedModels), diff --git a/gateway/policies/modify-headers/v0.1.0/go.mod b/gateway/policies/modify-headers/v0.1.0/go.mod index 5ffbe33d0..dec55be88 100644 --- a/gateway/policies/modify-headers/v0.1.0/go.mod +++ b/gateway/policies/modify-headers/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/modify-headers go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.3 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/modify-headers/v0.1.0/go.sum b/gateway/policies/modify-headers/v0.1.0/go.sum index 3a345ae92..d9fd8aede 100644 --- a/gateway/policies/modify-headers/v0.1.0/go.sum +++ b/gateway/policies/modify-headers/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/modify-headers/v0.1.0/modifyheaders.go b/gateway/policies/modify-headers/v0.1.0/modifyheaders.go index dc95bcdf7..69c78fa76 100644 --- a/gateway/policies/modify-headers/v0.1.0/modifyheaders.go +++ b/gateway/policies/modify-headers/v0.1.0/modifyheaders.go @@ -35,7 +35,7 @@ func GetPolicy( logger *slog.Logger, ) (policy.Policy, error) { p := &ModifyHeadersPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), } return p, nil } diff --git a/gateway/policies/pii-masking-regex/v0.1.0/go.mod b/gateway/policies/pii-masking-regex/v0.1.0/go.mod index eed1c95ed..43a526f84 100644 --- a/gateway/policies/pii-masking-regex/v0.1.0/go.mod +++ b/gateway/policies/pii-masking-regex/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/pii-masking-regex go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.3 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/pii-masking-regex/v0.1.0/go.sum b/gateway/policies/pii-masking-regex/v0.1.0/go.sum index 3a345ae92..d9fd8aede 100644 --- a/gateway/policies/pii-masking-regex/v0.1.0/go.sum +++ b/gateway/policies/pii-masking-regex/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/pii-masking-regex/v0.1.0/piimaskingregex.go b/gateway/policies/pii-masking-regex/v0.1.0/piimaskingregex.go index 1073147a4..4c7c07539 100644 --- a/gateway/policies/pii-masking-regex/v0.1.0/piimaskingregex.go +++ b/gateway/policies/pii-masking-regex/v0.1.0/piimaskingregex.go @@ -39,7 +39,7 @@ func GetPolicy( logger *slog.Logger, ) (policy.Policy, error) { p := &PIIMaskingRegexPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), } // Parse parameters (piiEntities is required) diff --git a/gateway/policies/prompt-decorator/v0.1.0/go.mod b/gateway/policies/prompt-decorator/v0.1.0/go.mod index 0efb34560..de6fe997b 100644 --- a/gateway/policies/prompt-decorator/v0.1.0/go.mod +++ b/gateway/policies/prompt-decorator/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/prompt-decorator go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.3 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/prompt-decorator/v0.1.0/go.sum b/gateway/policies/prompt-decorator/v0.1.0/go.sum index 3a345ae92..d9fd8aede 100644 --- a/gateway/policies/prompt-decorator/v0.1.0/go.sum +++ b/gateway/policies/prompt-decorator/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/prompt-decorator/v0.1.0/promptdecorator.go b/gateway/policies/prompt-decorator/v0.1.0/promptdecorator.go index af622095c..34402b38a 100644 --- a/gateway/policies/prompt-decorator/v0.1.0/promptdecorator.go +++ b/gateway/policies/prompt-decorator/v0.1.0/promptdecorator.go @@ -44,7 +44,7 @@ func GetPolicy( logger *slog.Logger, ) (policy.Policy, error) { p := &PromptDecoratorPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), } // Parse parameters diff --git a/gateway/policies/prompt-template/v0.1.0/go.mod b/gateway/policies/prompt-template/v0.1.0/go.mod index 0f67ff569..a9a53d4b3 100644 --- a/gateway/policies/prompt-template/v0.1.0/go.mod +++ b/gateway/policies/prompt-template/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/prompt-template go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.3 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/prompt-template/v0.1.0/go.sum b/gateway/policies/prompt-template/v0.1.0/go.sum index 3a345ae92..d9fd8aede 100644 --- a/gateway/policies/prompt-template/v0.1.0/go.sum +++ b/gateway/policies/prompt-template/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/prompt-template/v0.1.0/prompttemplate.go b/gateway/policies/prompt-template/v0.1.0/prompttemplate.go index eebd98fb6..d60a49ba0 100644 --- a/gateway/policies/prompt-template/v0.1.0/prompttemplate.go +++ b/gateway/policies/prompt-template/v0.1.0/prompttemplate.go @@ -42,7 +42,7 @@ func GetPolicy( logger *slog.Logger, ) (policy.Policy, error) { p := &PromptTemplatePolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), } // Parse parameters diff --git a/gateway/policies/regex-guardrail/v0.1.0/go.mod b/gateway/policies/regex-guardrail/v0.1.0/go.mod index 4817d0abf..7eb174ea0 100644 --- a/gateway/policies/regex-guardrail/v0.1.0/go.mod +++ b/gateway/policies/regex-guardrail/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/regex-guardrail go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.3 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/regex-guardrail/v0.1.0/go.sum b/gateway/policies/regex-guardrail/v0.1.0/go.sum index 3a345ae92..d9fd8aede 100644 --- a/gateway/policies/regex-guardrail/v0.1.0/go.sum +++ b/gateway/policies/regex-guardrail/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/regex-guardrail/v0.1.0/regexguardrail.go b/gateway/policies/regex-guardrail/v0.1.0/regexguardrail.go index e4b725b26..b841d4d59 100644 --- a/gateway/policies/regex-guardrail/v0.1.0/regexguardrail.go +++ b/gateway/policies/regex-guardrail/v0.1.0/regexguardrail.go @@ -36,7 +36,7 @@ func GetPolicy( logger *slog.Logger, ) (policy.Policy, error) { p := &RegexGuardrailPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), } // Extract and parse request parameters if present diff --git a/gateway/policies/respond/v0.1.0/go.mod b/gateway/policies/respond/v0.1.0/go.mod index 6e47f849f..4c2d98d10 100644 --- a/gateway/policies/respond/v0.1.0/go.mod +++ b/gateway/policies/respond/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/respond go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.3 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/respond/v0.1.0/go.sum b/gateway/policies/respond/v0.1.0/go.sum index 3a345ae92..d9fd8aede 100644 --- a/gateway/policies/respond/v0.1.0/go.sum +++ b/gateway/policies/respond/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/respond/v0.1.0/respond.go b/gateway/policies/respond/v0.1.0/respond.go index e6691e2ee..00500ae7f 100644 --- a/gateway/policies/respond/v0.1.0/respond.go +++ b/gateway/policies/respond/v0.1.0/respond.go @@ -18,7 +18,7 @@ func GetPolicy( logger *slog.Logger, ) (policy.Policy, error) { p := &RespondPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), } return p, nil } diff --git a/gateway/policies/semantic-cache/v0.1.0/go.mod b/gateway/policies/semantic-cache/v0.1.0/go.mod index 51cdcf52d..7e813e97a 100644 --- a/gateway/policies/semantic-cache/v0.1.0/go.mod +++ b/gateway/policies/semantic-cache/v0.1.0/go.mod @@ -4,7 +4,7 @@ go 1.25.1 require ( github.com/google/uuid v1.6.0 - github.com/wso2/api-platform/sdk v0.3.3 + github.com/wso2/api-platform/sdk v0.3.5 ) require ( diff --git a/gateway/policies/semantic-cache/v0.1.0/go.sum b/gateway/policies/semantic-cache/v0.1.0/go.sum index 99c017b83..511180fe0 100644 --- a/gateway/policies/semantic-cache/v0.1.0/go.sum +++ b/gateway/policies/semantic-cache/v0.1.0/go.sum @@ -385,8 +385,8 @@ github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBn github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= diff --git a/gateway/policies/semantic-cache/v0.1.0/semanticcache.go b/gateway/policies/semantic-cache/v0.1.0/semanticcache.go index 59796bb95..e04bf68ac 100644 --- a/gateway/policies/semantic-cache/v0.1.0/semanticcache.go +++ b/gateway/policies/semantic-cache/v0.1.0/semanticcache.go @@ -59,7 +59,7 @@ func GetPolicy( logger *slog.Logger, ) (policy.Policy, error) { p := &SemanticCachePolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), } // Parse and validate parameters diff --git a/gateway/policies/semantic-prompt-guard/v0.1.0/go.mod b/gateway/policies/semantic-prompt-guard/v0.1.0/go.mod index 5f03502ac..c237e0d70 100644 --- a/gateway/policies/semantic-prompt-guard/v0.1.0/go.mod +++ b/gateway/policies/semantic-prompt-guard/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/semantic-prompt-guard go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.3 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/semantic-prompt-guard/v0.1.0/go.sum b/gateway/policies/semantic-prompt-guard/v0.1.0/go.sum index 3a345ae92..d9fd8aede 100644 --- a/gateway/policies/semantic-prompt-guard/v0.1.0/go.sum +++ b/gateway/policies/semantic-prompt-guard/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.3 h1:8Wcxap4HpOaUMDqU16Rf4e6dhrrog+8taF5RkkpLwog= -github.com/wso2/api-platform/sdk v0.3.3/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/semantic-prompt-guard/v0.1.0/semanticpromptguard.go b/gateway/policies/semantic-prompt-guard/v0.1.0/semanticpromptguard.go index f6573a979..a87f206db 100644 --- a/gateway/policies/semantic-prompt-guard/v0.1.0/semanticpromptguard.go +++ b/gateway/policies/semantic-prompt-guard/v0.1.0/semanticpromptguard.go @@ -52,7 +52,7 @@ func GetPolicy( logger *slog.Logger, ) (policy.Policy, error) { p := &SemanticPromptGuardPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), } // Parse and validate embedding provider configuration (from systemParameters) diff --git a/gateway/policies/sentence-count-guardrail/v0.1.0/go.mod b/gateway/policies/sentence-count-guardrail/v0.1.0/go.mod index 6e54e2167..604da026d 100644 --- a/gateway/policies/sentence-count-guardrail/v0.1.0/go.mod +++ b/gateway/policies/sentence-count-guardrail/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/sentence-count-guardrail go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.2 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/sentence-count-guardrail/v0.1.0/go.sum b/gateway/policies/sentence-count-guardrail/v0.1.0/go.sum index 8be116484..d9fd8aede 100644 --- a/gateway/policies/sentence-count-guardrail/v0.1.0/go.sum +++ b/gateway/policies/sentence-count-guardrail/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.2 h1:PIUdy70Uv37ymu9Yq2vtGdjOvJBv4INL/Z7qMX6juJI= -github.com/wso2/api-platform/sdk v0.3.2/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/sentence-count-guardrail/v0.1.0/sentencecountguardrail.go b/gateway/policies/sentence-count-guardrail/v0.1.0/sentencecountguardrail.go index 0f26c7fa0..3449cf4b4 100644 --- a/gateway/policies/sentence-count-guardrail/v0.1.0/sentencecountguardrail.go +++ b/gateway/policies/sentence-count-guardrail/v0.1.0/sentencecountguardrail.go @@ -46,7 +46,7 @@ func GetPolicy( logger *slog.Logger, ) (policy.Policy, error) { p := &SentenceCountGuardrailPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), } // Extract and parse request parameters if present diff --git a/gateway/policies/url-guardrail/v0.1.0/go.mod b/gateway/policies/url-guardrail/v0.1.0/go.mod index f9400bf61..9d0a4ba05 100644 --- a/gateway/policies/url-guardrail/v0.1.0/go.mod +++ b/gateway/policies/url-guardrail/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/url-guardrail go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.2 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/url-guardrail/v0.1.0/go.sum b/gateway/policies/url-guardrail/v0.1.0/go.sum index 8be116484..d9fd8aede 100644 --- a/gateway/policies/url-guardrail/v0.1.0/go.sum +++ b/gateway/policies/url-guardrail/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.2 h1:PIUdy70Uv37ymu9Yq2vtGdjOvJBv4INL/Z7qMX6juJI= -github.com/wso2/api-platform/sdk v0.3.2/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/url-guardrail/v0.1.0/urlguardrail.go b/gateway/policies/url-guardrail/v0.1.0/urlguardrail.go index c7eb5d907..c04a73f0c 100644 --- a/gateway/policies/url-guardrail/v0.1.0/urlguardrail.go +++ b/gateway/policies/url-guardrail/v0.1.0/urlguardrail.go @@ -51,7 +51,7 @@ func GetPolicy( logger *slog.Logger, ) (policy.Policy, error) { p := &URLGuardrailPolicy{ - logger: logger, + logger: policy.EnsureLogger(logger), } // Extract and parse request parameters if present diff --git a/gateway/policies/word-count-guardrail/v0.1.0/go.mod b/gateway/policies/word-count-guardrail/v0.1.0/go.mod index e3050b270..9c18b3b5f 100644 --- a/gateway/policies/word-count-guardrail/v0.1.0/go.mod +++ b/gateway/policies/word-count-guardrail/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/word-count-guardrail go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.2 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/policies/word-count-guardrail/v0.1.0/go.sum b/gateway/policies/word-count-guardrail/v0.1.0/go.sum index 8be116484..d9fd8aede 100644 --- a/gateway/policies/word-count-guardrail/v0.1.0/go.sum +++ b/gateway/policies/word-count-guardrail/v0.1.0/go.sum @@ -1,2 +1,2 @@ -github.com/wso2/api-platform/sdk v0.3.2 h1:PIUdy70Uv37ymu9Yq2vtGdjOvJBv4INL/Z7qMX6juJI= -github.com/wso2/api-platform/sdk v0.3.2/go.mod h1:GbBGK6kratc9fXW4iOvtYftMihmHwDYwmBD0B/yDoKY= +github.com/wso2/api-platform/sdk v0.3.5 h1:rE9IwEBt8POh194CoVRCeUQDN1OeaR0+JQpypojNz2k= +github.com/wso2/api-platform/sdk v0.3.5/go.mod h1:amQIiBlKZEeFFbDhYzIOj47ADc5mDPMNzhR40SByqB8= diff --git a/gateway/policies/word-count-guardrail/v0.1.0/wordcountguardrail.go b/gateway/policies/word-count-guardrail/v0.1.0/wordcountguardrail.go index 1803e1b36..6492c84ec 100644 --- a/gateway/policies/word-count-guardrail/v0.1.0/wordcountguardrail.go +++ b/gateway/policies/word-count-guardrail/v0.1.0/wordcountguardrail.go @@ -45,7 +45,7 @@ func GetPolicy( params map[string]interface{}, logger *slog.Logger, ) (policy.Policy, error) { - p := &WordCountGuardrailPolicy{logger: logger} + p := &WordCountGuardrailPolicy{logger: policy.EnsureLogger(logger)} // Extract and parse request parameters if present if requestParamsRaw, ok := params["request"].(map[string]interface{}); ok { diff --git a/gateway/policy-engine/go.mod b/gateway/policy-engine/go.mod index d0b946395..c3a517348 100644 --- a/gateway/policy-engine/go.mod +++ b/gateway/policy-engine/go.mod @@ -13,7 +13,7 @@ require ( github.com/knadh/koanf/v2 v2.3.0 github.com/moesif/moesifapi-go v1.1.5 github.com/prometheus/client_golang v1.23.2 - github.com/wso2/api-platform/sdk v0.3.4 + github.com/wso2/api-platform/sdk v0.3.5 go.opentelemetry.io/otel v1.39.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 go.opentelemetry.io/otel/sdk v1.39.0 diff --git a/gateway/sample-policies/count-letters/v1.0.0/go.mod b/gateway/sample-policies/count-letters/v1.0.0/go.mod index 4ac61611f..fe702bdef 100644 --- a/gateway/sample-policies/count-letters/v1.0.0/go.mod +++ b/gateway/sample-policies/count-letters/v1.0.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/count-letters go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.2 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/sample-policies/uppercase-body/v1.0.0/go.mod b/gateway/sample-policies/uppercase-body/v1.0.0/go.mod index ef00b9d7f..b166e539d 100644 --- a/gateway/sample-policies/uppercase-body/v1.0.0/go.mod +++ b/gateway/sample-policies/uppercase-body/v1.0.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/policies/uppercase-body go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.2 +require github.com/wso2/api-platform/sdk v0.3.5 diff --git a/gateway/system-policies/analytics/v0.1.0/go.mod b/gateway/system-policies/analytics/v0.1.0/go.mod index 66fa9907a..e95801457 100644 --- a/gateway/system-policies/analytics/v0.1.0/go.mod +++ b/gateway/system-policies/analytics/v0.1.0/go.mod @@ -2,4 +2,4 @@ module github.com/policy-engine/system-policies/analytics go 1.25.1 -require github.com/wso2/api-platform/sdk v0.3.2 +require github.com/wso2/api-platform/sdk v0.3.5