diff --git a/.codespellrc b/.codespellrc
new file mode 100644
index 00000000000..f8d004ea3d0
--- /dev/null
+++ b/.codespellrc
@@ -0,0 +1,6 @@
+[codespell]
+skip = .git,*.pb,*.pdf,*.svg,go.sum,go.mod,*requirements.txt,gen,monodocs-environment.lock.yaml,*.lock,*.lock.yaml,*.swagger.json
+check-hidden = true
+# Ignore camelCase and PascalCase identifiers (common in Go code)
+ignore-regex = \b[a-z]+[A-Z]\w*\b|\b[A-Z][a-z]+[A-Z]\w*\b
+ignore-words-list = astroid,bootup,decorder,fo,lightyear,nd,notin,ser,te
diff --git a/.github/codespell-ignored-words b/.github/codespell-ignored-words
deleted file mode 100644
index 2947204bddc..00000000000
--- a/.github/codespell-ignored-words
+++ /dev/null
@@ -1,11 +0,0 @@
-ThirdParty
-bootup
-crate
-fo
-lightyear
-nd
-notin
-querys
-ser
-te
-updAt
diff --git a/.github/dco.yml b/.github/dco.yml
new file mode 100644
index 00000000000..1c082c96a96
--- /dev/null
+++ b/.github/dco.yml
@@ -0,0 +1,5 @@
+require:
+ members: false
+allowRemediationCommits:
+ individual: true
+ thirdParty: true
diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml
index 83b397bc529..3e69c8e3e33 100644
--- a/.github/workflows/codespell.yml
+++ b/.github/workflows/codespell.yml
@@ -22,8 +22,6 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
+ # Configuration is in .codespellrc
- name: Codespell
uses: codespell-project/actions-codespell@v2
- with:
- skip: "*.pb,monodocs-environment.lock.yaml,.git,*.pdf,*.svg,go.sum,go.mod,*requirements.txt,gen"
- ignore_words_file: .github/codespell-ignored-words
diff --git a/.github/workflows/single-binary.yml b/.github/workflows/single-binary.yml
index 2ee0d1acb75..7d4f191ac2d 100644
--- a/.github/workflows/single-binary.yml
+++ b/.github/workflows/single-binary.yml
@@ -22,8 +22,9 @@ jobs:
with:
go-version-file: go.mod
- name: golangci-lint
- uses: golangci/golangci-lint-action@v3
+ uses: golangci/golangci-lint-action@v9
with:
+ version: v2.11.4
working-directory: docker/sandbox-bundled/bootstrap
- name: Check formatting
working-directory: docker/sandbox-bundled/bootstrap
diff --git a/.github/workflows/validate-helm-charts.yaml b/.github/workflows/validate-helm-charts.yaml
index 1bf450a8586..9917acbdb28 100644
--- a/.github/workflows/validate-helm-charts.yaml
+++ b/.github/workflows/validate-helm-charts.yaml
@@ -53,8 +53,8 @@ jobs:
--chart-repos spark-operator=https://kubeflow.github.io/spark-operator \
--chart-repos dask=https://helm.dask.org \
--chart-repos bitnami=https://charts.bitnami.com/bitnami \
- --chart-repos twuni=https://helm.twun.io \
- --chart-repos kubernetes-dashboard=https://kubernetes.github.io/dashboard
+ --chart-repos twuni=https://twuni.github.io/docker-registry.helm \
+ --chart-repos kubernetes-dashboard=https://kubernetes-retired.github.io/dashboard
validate-manifests:
needs:
diff --git a/.gitignore b/.gitignore
index 80120c50958..6c603f1de4f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,3 +39,7 @@ docs/_src
docs/_projects
docs/tests
empty-config.yaml
+.claude/
+flyteidl2/
+gen/
+.kube/
diff --git a/CHANGELOG/CHANGELOG-v1.16.0.md b/CHANGELOG/CHANGELOG-v1.16.0.md
new file mode 100644
index 00000000000..74db1e2a87b
--- /dev/null
+++ b/CHANGELOG/CHANGELOG-v1.16.0.md
@@ -0,0 +1,75 @@
+# Flyte 1.16.0
+
+## Added
+
+- Agent/Connector Functionality: Renamed agent to connector ([#6400](https://github.com/flyteorg/flyte/pull/6400)) with improved task retry support in Flyte Connectors ([#6486](https://github.com/flyteorg/flyte/pull/6486))
+- Storage Configuration: Support for configuring storage from secrets to avoid exposing sensitive information ([#6419](https://github.com/flyteorg/flyte/pull/6419))
+- Deployment Annotations: Configurable deployment annotations in Helm charts ([#6385](https://github.com/flyteorg/flyte/pull/6385))
+- Pod Customization: Support for affinity & topologySpreadConstraints in webhook component ([#6431](https://github.com/flyteorg/flyte/pull/6431)), and configurable rollout strategy ([#6447](https://github.com/flyteorg/flyte/pull/6447))
+- Labels and Annotations: Apply labels and annotations set via task decorator to pods and CR objects ([#6421](https://github.com/flyteorg/flyte/pull/6421))
+- GRPC Configuration: MaxConcurrentStreams setting for flyteadmin grpc server ([#6448](https://github.com/flyteorg/flyte/pull/6448))
+- ArrayNode Configuration: max-delta-timestamp configuration option for FlytePropeller ArrayNode ([#6453](https://github.com/flyteorg/flyte/pull/6453))
+- Cloud Events: NATS support as cloud events sender ([#6507](https://github.com/flyteorg/flyte/pull/6507))
+- Signal Handling: SignalWatcher functionality in Copilot ([#6501](https://github.com/flyteorg/flyte/pull/6501))
+- Workflow Control: Workflow concurrency control feature ([#6475](https://github.com/flyteorg/flyte/pull/6475))
+- Monitoring: Service monitor support for flyte scheduler ([#6558](https://github.com/flyteorg/flyte/pull/6558)) and datacatalog ([#6571](https://github.com/flyteorg/flyte/pull/6571))
+- OpenTelemetry: OTEL configuration support in helm chart ([#6543](https://github.com/flyteorg/flyte/pull/6543))
+- Scaling: HPA (Horizontal Pod Autoscaler) support for flyte admin ([#6615](https://github.com/flyteorg/flyte/pull/6615)) and datacatalog ([#6616](https://github.com/flyteorg/flyte/pull/6616))
+- RBAC: Option to configure RBAC rules as namespace scoped ([#6534](https://github.com/flyteorg/flyte/pull/6534))
+- Pre-init Containers: preInitContainers value support in Flyte-Binary charts ([#6559](https://github.com/flyteorg/flyte/pull/6559))
+- Task Configuration: Task config support in flytectl config file ([#6538](https://github.com/flyteorg/flyte/pull/6538))
+- Probes: Overrides for flyteadmin readiness and liveness probes ([#6484](https://github.com/flyteorg/flyte/pull/6484))
+- Bug Reporting: Version details to bug report template ([#6479](https://github.com/flyteorg/flyte/pull/6479))
+- Documentation: Kafka version field clarification in cloud events ([#6502](https://github.com/flyteorg/flyte/pull/6502))
+
+## Changed
+
+- Container Naming: Renamed container_image to image for improved UX ([#6211](https://github.com/flyteorg/flyte/pull/6211))
+- Default Configuration: flyte-core now defaults propeller rawoutput-prefix to use storage.bucketName ([#6433](https://github.com/flyteorg/flyte/pull/6433))
+- Log Context: Updated IDL with log context ([#6443](https://github.com/flyteorg/flyte/pull/6443))
+- Error Handling: Treat kubelet NodeAffinity status.reason as retryable system error ([#6461](https://github.com/flyteorg/flyte/pull/6461))
+- Code Refactoring: Multiple refactoring improvements including replacing HasPrefix+TrimPrefix with CutPrefix ([#6456](https://github.com/flyteorg/flyte/pull/6456)), making createMsgChan private ([#6467](https://github.com/flyteorg/flyte/pull/6467)), and adjusting CoPilot init and Pod status logic ([#6523](https://github.com/flyteorg/flyte/pull/6523))
+- Go Version: Upgraded to Go 1.23 ([#6249](https://github.com/flyteorg/flyte/pull/6249))
+- Repository Updates: Updated multiple repositories to use mockery ([#6477](https://github.com/flyteorg/flyte/pull/6477), [#6607](https://github.com/flyteorg/flyte/pull/6607), [#6608](https://github.com/flyteorg/flyte/pull/6608))
+- CoPilot Improvements: Better folder handling ([#6620](https://github.com/flyteorg/flyte/pull/6620)) and multi-part blob support ([#6617](https://github.com/flyteorg/flyte/pull/6617))
+- Service Account: Set service account in base ray pod spec, allow override by pod template ([#6514](https://github.com/flyteorg/flyte/pull/6514))
+- Ray Job: Set name max length for rayJob plugin ([#6611](https://github.com/flyteorg/flyte/pull/6611))
+- Container Logs: Allow using container name in kubeflow plugin log links ([#6524](https://github.com/flyteorg/flyte/pull/6524))
+ Fixed
+- GitHub Actions: Updated and fixed "stale" GitHub Action ([#6449](https://github.com/flyteorg/flyte/pull/6449)) and PR stale comments ([#6458](https://github.com/flyteorg/flyte/pull/6458))
+- NodeShutdown: Updated DemystifyFailure to respect NodeShutdown ([#6452](https://github.com/flyteorg/flyte/pull/6452))
+- Connector Discovery: Resolved conflicts between agent auto discovery and explicit task type mapping ([#6464](https://github.com/flyteorg/flyte/pull/6464))
+- Release Scripts: Fixed release script for beta versions ([#6489](https://github.com/flyteorg/flyte/pull/6489)) and corrected file paths in release workflows ([#6487](https://github.com/flyteorg/flyte/pull/6487))
+- Resource Management: Fixed PodTemplate resource state pollution between workflow runs ([#6530](https://github.com/flyteorg/flyte/pull/6530)) and compile-time podTemplate resources override issues ([#6483](https://github.com/flyteorg/flyte/pull/6483))
+- Workflow Processing: Fixed workflow equality check ([#6521](https://github.com/flyteorg/flyte/pull/6521)) and enqueue correct work item in node execution context ([#6526](https://github.com/flyteorg/flyte/pull/6526))
+- Grafana Dashboards: Fixed Grafana dashboard queries for dynamic workflow metrics ([#6546](https://github.com/flyteorg/flyte/pull/6546))
+- Scheduler: Fixed invalid cron date schedule creating infinite loop in flytescheduler ([#6555](https://github.com/flyteorg/flyte/pull/6555))
+- Plugin Safety: Made plugin metric registration thread safe ([#6532](https://github.com/flyteorg/flyte/pull/6532))
+- Server Shutdown: Fixed flyteadmin not shutting down servers gracefully ([#6289](https://github.com/flyteorg/flyte/pull/6289))
+- Strict Mode: Disabled strict mode in flytectl ([#6619](https://github.com/flyteorg/flyte/pull/6619))
+
+## Removed
+
+- CI/CD: Removed docs job from GitHub actions workflow ([#6432](https://github.com/flyteorg/flyte/pull/6432))
+- Helm Cleanup: Cleaned up helm template since metrics path is not configurable ([#6444](https://github.com/flyteorg/flyte/pull/6444))
+- Legacy Plugins: Deleted hive plugin ([#6580](https://github.com/flyteorg/flyte/pull/6580)) and cleaned up flyteplugins ([#6515](https://github.com/flyteorg/flyte/pull/6515))
+- Annotations: Removed projectcontour annotations from helm charts by default ([#6564](https://github.com/flyteorg/flyte/pull/6564)) and primary pod annotation from raw container task ([#6618](https://github.com/flyteorg/flyte/pull/6618))
+- JWT: Removed usage of golang-jwt v3 ([#6596](https://github.com/flyteorg/flyte/pull/6596))
+
+## Security
+
+- Permissions: Removed SYS_PTRACE and sharenamespace settings for improved security ([#6509](https://github.com/flyteorg/flyte/pull/6509))
+
+## Dependencies
+
+- Dependency Updates: Multiple security and maintenance updates including:
+ golang.org/x/net updates ([#6338](https://github.com/flyteorg/flyte/pull/6338), [#6418](https://github.com/flyteorg/flyte/pull/6418), [#6587](https://github.com/flyteorg/flyte/pull/6587), [#6588](https://github.com/flyteorg/flyte/pull/6588), [#6589](https://github.com/flyteorg/flyte/pull/6589), [#6591](https://github.com/flyteorg/flyte/pull/6591), [#6593](https://github.com/flyteorg/flyte/pull/6593))
+ golang.org/x/oauth2 updates ([#6535](https://github.com/flyteorg/flyte/pull/6535), [#6594](https://github.com/flyteorg/flyte/pull/6594), [#6595](https://github.com/flyteorg/flyte/pull/6595), [#6597](https://github.com/flyteorg/flyte/pull/6597), [#6598](https://github.com/flyteorg/flyte/pull/6598), [#6599](https://github.com/flyteorg/flyte/pull/6599), [#6601](https://github.com/flyteorg/flyte/pull/6601))
+- mapstructure updates ([#6512](https://github.com/flyteorg/flyte/pull/6512), [#6575](https://github.com/flyteorg/flyte/pull/6575))
+- Docker and crypto updates ([#6573](https://github.com/flyteorg/flyte/pull/6573), [#6414](https://github.com/flyteorg/flyte/pull/6414))
+
+## Contributors
+
+Special thanks to new contributors: @ppeerttu ([#6385](https://github.com/flyteorg/flyte/pull/6385)), @studystill ([#6456](https://github.com/flyteorg/flyte/pull/6456)), @daadc ([#6502](https://github.com/flyteorg/flyte/pull/6502)), @mattiadevivo ([#6507](https://github.com/flyteorg/flyte/pull/6507)), @gopherorg ([#6511](https://github.com/flyteorg/flyte/pull/6511)), @jingchanglu ([#6528](https://github.com/flyteorg/flyte/pull/6528)), @diranged ([#6534](https://github.com/flyteorg/flyte/pull/6534)), @thomasjhuang ([#6475](https://github.com/flyteorg/flyte/pull/6475)), and @hylje ([#6559](https://github.com/flyteorg/flyte/pull/6559)), along with all returning contributors who made this release possible.
+
+Full Changelog: https://github.com/flyteorg/flyte/compare/v1.15.3...v1.16.0
diff --git a/CHANGELOG/CHANGELOG-v1.16.1.md b/CHANGELOG/CHANGELOG-v1.16.1.md
new file mode 100644
index 00000000000..26111007601
--- /dev/null
+++ b/CHANGELOG/CHANGELOG-v1.16.1.md
@@ -0,0 +1,7 @@
+# Flyte 1.16.1
+
+## Changed
+
+- Fix OTEL config map in Helm Chart ([#6624](https://github.com/flyteorg/flyte/pull/6624))
+
+Full Changelog: https://github.com/flyteorg/flyte/compare/v1.16.0...v1.16.1
diff --git a/CHANGELOG/CHANGELOG-v1.16.2.md b/CHANGELOG/CHANGELOG-v1.16.2.md
new file mode 100644
index 00000000000..1f1ef6c6865
--- /dev/null
+++ b/CHANGELOG/CHANGELOG-v1.16.2.md
@@ -0,0 +1,38 @@
+# Flyte 1.16.2
+
+## Added
+
+- Added support for configuring horizontal pod autoscaling for flyte admin in flyte-core helm chart ([#6625](https://github.com/flyteorg/flyte/pull/6625))
+- Added support for typing.Union in flytecopilot / container tasks ([#6674](https://github.com/flyteorg/flyte/pull/6674))
+
+## Changed
+
+- Only return connector/agent plugins if enabled ([#6644](https://github.com/flyteorg/flyte/pull/6644))
+- Support downloading old versions of flytectl by install.sh ([#6668](https://github.com/flyteorg/flyte/pull/6668))
+- Improve datacatalog query performance with composite index on tags table ([#6672](https://github.com/flyteorg/flyte/pull/6672))
+- Handle child node timeouts in conditional branch nodes ([#6678](https://github.com/flyteorg/flyte/pull/6678))
+- Fix auto refresh cache iteration bug causing parent workflows to get stuck in a running state ([#6725](https://github.com/flyteorg/flyte/pull/6725))
+
+## Removed
+
+- Removed unused node selector functions and legacy environment variables ([#6614](https://github.com/flyteorg/flyte/pull/6614))
+- Remove unused DefaultWorkflowActiveDeadline config ([#6688](https://github.com/flyteorg/flyte/pull/6688))
+
+## Dependencies / Security
+
+- Bump urllib3 from 2.2.3 to 2.5.0 in /flytectl/docs ([#6728](https://github.com/flyteorg/flyte/pull/6728))
+- Bump requests from 2.32.3 to 2.32.4 in /flytectl/docs ([#6727](https://github.com/flyteorg/flyte/pull/6727))
+
+## Housekeeping
+
+- Removed unused replace directives ([#6638](https://github.com/flyteorg/flyte/pull/6638))
+- Removed use of deprecated pod phase ([#6640](https://github.com/flyteorg/flyte/pull/6640))
+- Executor code cleanup ([#6629](https://github.com/flyteorg/flyte/pull/6629))
+- Updated docker images to use Bitnami legacy repo ([#6631](https://github.com/flyteorg/flyte/pull/6631))
+- Updated helm charts to use new twun.io helm repo ([#6726](https://github.com/flyteorg/flyte/pull/6726))
+
+## Contributors
+
+Special thanks to new contributors: @hefeiyun ([#6629](https://github.com/flyteorg/flyte/pull/6629)), @ihvol-freenome ([#6672](https://github.com/flyteorg/flyte/pull/6672)), @Sally-Yang-Jing-Ou ([#6725](https://github.com/flyteorg/flyte/pull/6725)), along with all returning contributors who made this release possible.
+
+Full Changelog: https://github.com/flyteorg/flyte/compare/v1.16.1...v1.16.2
diff --git a/CHANGELOG/CHANGELOG-v1.16.3.md b/CHANGELOG/CHANGELOG-v1.16.3.md
new file mode 100644
index 00000000000..366af33a10f
--- /dev/null
+++ b/CHANGELOG/CHANGELOG-v1.16.3.md
@@ -0,0 +1,36 @@
+# Flyte 1.16.3
+
+## Added
+
+- Add start- and end-time log link template vars to Ray plugin ([#6751](https://github.com/flyteorg/flyte/pull/6751))
+- Add metric to track how long nodes are stuck blocked by max parallelism being reached ([#6737](https://github.com/flyteorg/flyte/pull/6737))
+
+## Changed
+
+- Update Flyte to Go 1.24 ([#6603](https://github.com/flyteorg/flyte/pull/6603))
+
+## Fixed
+
+- Upstream array node fixes + update mockery ([#6763](https://github.com/flyteorg/flyte/pull/6763))
+- Handle etcd request too large error ([#6752](https://github.com/flyteorg/flyte/pull/6752))
+- Immediately fail if plugin.BuildResource fails instead of retrying until system retry budget is exhausted ([#6740](https://github.com/flyteorg/flyte/pull/6740))
+- Avoid merging pod template twice if template container name matches task container name ([#6733](https://github.com/flyteorg/flyte/pull/6733))
+
+## Dependencies / Security
+
+- Update x/crypto to v0.45.0 to fix security warnings ([#6774](https://github.com/flyteorg/flyte/pull/6774))
+- Bump golang.org/x/crypto from 0.36.0 to 0.45.0 in /datacatalog ([#6764](https://github.com/flyteorg/flyte/pull/6764))
+- Bump golang.org/x/crypto from 0.36.0 to 0.45.0 in /flyteadmin ([#6770](https://github.com/flyteorg/flyte/pull/6770))
+- Pin neoeinstein-prost to v0.4.0 ([#6773](https://github.com/flyteorg/flyte/pull/6773))
+- Bump stow to latest ([#6741](https://github.com/flyteorg/flyte/pull/6741))
+
+## Housekeeping
+
+- Update Flyte Components ([#8e488c4b6](https://github.com/flyteorg/flyte/commit/8e488c4b6))
+- Update docs version ([#424d7775f](https://github.com/flyteorg/flyte/commit/424d7775f))
+
+## Contributors
+
+Thanks to all the contributors who made this release possible: @fg91 ([#6733](https://github.com/flyteorg/flyte/pull/6733), [#6740](https://github.com/flyteorg/flyte/pull/6740), [#6751](https://github.com/flyteorg/flyte/pull/6751)), @Sovietaced ([#6603](https://github.com/flyteorg/flyte/pull/6603), [#6773](https://github.com/flyteorg/flyte/pull/6773), [#6774](https://github.com/flyteorg/flyte/pull/6774)).
+
+Full Changelog: https://github.com/flyteorg/flyte/compare/v1.16.2...v1.16.3
\ No newline at end of file
diff --git a/CHANGELOG/CHANGELOG-v1.16.4.md b/CHANGELOG/CHANGELOG-v1.16.4.md
new file mode 100644
index 00000000000..9056c280881
--- /dev/null
+++ b/CHANGELOG/CHANGELOG-v1.16.4.md
@@ -0,0 +1,27 @@
+# Flyte 1.16.4
+
+## What's Changed
+* Bump flyteidl 1 to python 3.13 by @wild-endeavor in https://github.com/flyteorg/flyte/pull/6782
+* Remove unused replace directives and have boilerplate use local flytestdlib by @Sovietaced in https://github.com/flyteorg/flyte/pull/6785
+* Bump urllib3 from 2.5.0 to 2.6.0 in /flytectl/docs by @dependabot[bot] in https://github.com/flyteorg/flyte/pull/6788
+* refactor: omit unnecessary reassignment by @rifeplight in https://github.com/flyteorg/flyte/pull/6768
+* [Feat] add user annotations to k8s objects by @ttitsworth-lila in https://github.com/flyteorg/flyte/pull/6710
+* chore: execute goimports to format the code by @findfluctuate in https://github.com/flyteorg/flyte/pull/6801
+* Fix issue with assertions with time zones by @Sovietaced in https://github.com/flyteorg/flyte/pull/6812
+* [FlyteCTL] only get v1 sandbox image by @machichima in https://github.com/flyteorg/flyte/pull/6834
+* Unpin k8s client library version by @Sovietaced in https://github.com/flyteorg/flyte/pull/6835
+* Unpin controller runtime dependency by @Sovietaced in https://github.com/flyteorg/flyte/pull/6843
+* Fix: Correctly handle malformed dynamic workflows to avoid 'failed + succeeded + running' Schroedinger state by @fg91 in https://github.com/flyteorg/flyte/pull/6854
+* fixed: Remove print that breaks json output by @honnix in https://github.com/flyteorg/flyte/pull/6872
+* Add test to decode access token from cookie values by @pmahindrakar-oss in https://github.com/flyteorg/flyte/pull/6883
+* Update Kubernetes Dashboard URL to retired GitHub repository by @kevinliao852 in https://github.com/flyteorg/flyte/pull/6882
+* Support flag in ray plugin config to optionally disable ingress for Ray cluster by @mickjermsurawong-openai in https://github.com/flyteorg/flyte/pull/6905
+* Prevent panic when retry attempt value in map task gets larger than bitarray was allocated for by @fg91 in https://github.com/flyteorg/flyte/pull/6802
+
+## New Contributors
+* @rifeplight made their first contribution in https://github.com/flyteorg/flyte/pull/6768
+* @ttitsworth-lila made their first contribution in https://github.com/flyteorg/flyte/pull/6710
+* @findfluctuate made their first contribution in https://github.com/flyteorg/flyte/pull/6801
+* @mickjermsurawong-openai made their first contribution in https://github.com/flyteorg/flyte/pull/6905
+
+**Full Changelog**: https://github.com/flyteorg/flyte/compare/v1.16.3...v1.16.4
diff --git a/CHANGELOG/CHANGELOG-v1.16.5.md b/CHANGELOG/CHANGELOG-v1.16.5.md
new file mode 100644
index 00000000000..048379e780a
--- /dev/null
+++ b/CHANGELOG/CHANGELOG-v1.16.5.md
@@ -0,0 +1,16 @@
+# Flyte 1.16.5
+
+## What's Changed
+* Fix: Prevent dropping of empty string args when constructing RayJob entrypoint by @fg91 in https://github.com/flyteorg/flyte/pull/6947
+* don't reuse parent wf state for array node subnodes by @pvditt in https://github.com/flyteorg/flyte/pull/6929
+* Feat: Make RayCluster head node ingress optional by @fg91 in https://github.com/flyteorg/flyte/pull/6852
+* Flyte 2 update by @kumare3 in https://github.com/flyteorg/flyte/pull/6961
+* Add RBAC support for cross-namespace secret reading by @rohitrsh in https://github.com/flyteorg/flyte/pull/6919
+* set run_all_sub_nodes for array node idl by @pvditt in https://github.com/flyteorg/flyte/pull/6966
+* Add Config struct with DisableConfigEndpoint option to profutils profiling server. Register config section under "prof" key with pflags generation and conditionally skip the /config HTTP handler when disabled. by @EngHabu in https://github.com/flyteorg/flyte/pull/7016
+* Modernize codespell config: move from inline workflow to .codespellrc by @yarikoptic in https://github.com/flyteorg/flyte/pull/7104
+
+## New Contributors
+* @rohitrsh made their first contribution in https://github.com/flyteorg/flyte/pull/6919
+
+**Full Changelog**: https://github.com/flyteorg/flyte/compare/v1.16.4...v1.16.5
diff --git a/CHANGELOG/CHANGELOG-v1.16.6.md b/CHANGELOG/CHANGELOG-v1.16.6.md
new file mode 100644
index 00000000000..f2120439ea8
--- /dev/null
+++ b/CHANGELOG/CHANGELOG-v1.16.6.md
@@ -0,0 +1,34 @@
+# Flyte 1.16.6
+
+## Added
+
+- docs: add comment about passwordPath usage in helm chart ([#6895](https://github.com/flyteorg/flyte/pull/6895))
+
+## Changed
+
+- Use retryable failure for failed Ray job deployments ([#7153](https://github.com/flyteorg/flyte/pull/7153))
+- Fix copilot TerminationGracePeriodSeconds set to nanoseconds instead of seconds ([#7183](https://github.com/flyteorg/flyte/pull/7183))
+- Fix: Correctly set 'child data dir/output dir' in branch handler's Abort and Finalize ([#7117](https://github.com/flyteorg/flyte/pull/7117))
+- Fix: Make flytectl hydrate pod template spec in task node overrides ([#7096](https://github.com/flyteorg/flyte/pull/7096))
+- fix(sandbox-bundled): Use a yaml string for FLYTE_PLATFORM_INSECURE ([#7079](https://github.com/flyteorg/flyte/pull/7079))
+- Fix: Allow toggling dynamic log links for Ray, Dask, Spark plugins ([#7193](https://github.com/flyteorg/flyte/pull/7193))
+- Fix type error for suspended kubeflow jobs ([#7241](https://github.com/flyteorg/flyte/pull/7241))
+
+## Dependencies / Security
+
+- Bump pygments from 2.18.0 to 2.20.0 in /flytectl/docs ([#7118](https://github.com/flyteorg/flyte/pull/7118))
+- Bump requests from 2.32.4 to 2.33.0 in /flytectl/docs ([#7095](https://github.com/flyteorg/flyte/pull/7095))
+- Bump github.com/go-jose/go-jose/v3 from 3.0.4 to 3.0.5 ([#7149](https://github.com/flyteorg/flyte/pull/7149))
+- Upgrade viper to v1.21.0 and fix case-sensitive key handling ([#7013](https://github.com/flyteorg/flyte/pull/7013))
+- Update to Go 1.25 ([#7201](https://github.com/flyteorg/flyte/pull/7201))
+- Bump the go_modules group across 10 directories with 3 updates ([#7216](https://github.com/flyteorg/flyte/pull/7216))
+- Bump the go_modules group across 5 directories with 2 updates ([#7228](https://github.com/flyteorg/flyte/pull/7228))
+- Bump the go_modules group across 4 directories with 1 update ([#7256](https://github.com/flyteorg/flyte/pull/7256))
+- Bump urllib3 from 2.6.0 to 2.6.3 in /flytectl/docs ([#6849](https://github.com/flyteorg/flyte/pull/6849))
+
+## New Contributors
+* @spwoodcock made their first contribution in https://github.com/flyteorg/flyte/pull/6895
+* @strigazi made their first contribution in https://github.com/flyteorg/flyte/pull/7241
+* @bergman made their first contribution in https://github.com/flyteorg/flyte/pull/7183
+
+**Full Changelog**: https://github.com/flyteorg/flyte/compare/v1.16.5...v1.16.6
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 62daf171f27..81ec703dee9 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,15 +1,124 @@
# Contributing to Flyte
-For information related to contributing to Flyte, please check out the [Contributing to Flyte](https://docs.flyte.org/en/latest/community/contribute/index.html) section of the documentation.
-
-## Recommendation Order (For Beginners)
-* Setup dev environment
-* Read the following and run at least 5 examples. Pay close attention to the generated outputs, the Graph view, task
- logs, etc. Repeat with as many examples as you need to have an initial understanding of what an execution looks like:
- * https://docs.flyte.org/en/latest/user_guide/introduction.html
- * https://docs.flyte.org/en/latest/flytesnacks/userguide.html
-* Finish reading the [Concepts](https://docs.flyte.org/en/latest/user_guide/concepts/main_concepts/index.html)
-* Finish reading the [Control Plane](https://docs.flyte.org/en/latest/user_guide/concepts/control_plane/index.html)
-* Finish reading the [Component Architecture](https://docs.flyte.org/en/latest/user_guide/concepts/component_architecture/index.html)
-* Choose 2 good first issues from the following and start solving them with the knowledge you have read.
-* Familiar with using [ImageSpec to push images to localhost for development](https://docs.flyte.org/en/latest/user_guide/customizing_dependencies/imagespec.html#image-spec-example)
+First off, thanks for taking the time to contribute! ❤️
+
+All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for the team and smooth out the experience for all involved. The community looks forward to your contributions. 🎉
+
+If you don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about:
+
+- Star the project
+- Post on X or Linkedin about Flyte `#flyte
+- Mention the project at local meetups and tell your friends/colleagues
+
+## Table of Contents
+
+- [Code of Conduct](#code-of-conduct)
+- [I Have a Question](#i-have-a-question)
+- [I Want To Contribute](#i-want-to-contribute)
+ - [Code Contributors](#code-contributors)
+ - [Recommendation Order (For Beginners)](#recommendation-order-for-beginners)
+ - [Reporting Bugs](#reporting-bugs)
+ - [Feature Requests](#feature-requests)
+ - [Improving The Documentation](#improving-the-documentation)
+ - [Improving The Design](#improving-the-design)
+ - [Publish a Blog Post or Case Study](#publish-a-blog-post-or-case-study)
+ - [Commit Messages](#commit-messages)
+- [Pull requests](#pull-requests)
+- [Contributor Ladder](#contributor-ladder)
+
+## Code of Conduct
+
+This project and everyone participating in it is governed by the [Code of Conduct](https://github.com/flyteorg/flyte/blob/master/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior
+to [security@union.ai](mailto:security@union.ai).
+
+## I Have a Question
+
+If you need clarification after reading this document, we encourage you to join our [slack](https://slack.flyte.org/) workspace and join channels [#flyte-support](https://flyte-org.slack.com/archives/CP2HDHKE1) and [#contribute](https://flyte-org.slack.com/archives/C04NJPLRWUX) channel.
+
+## I Want To Contribute
+
+### Code Contributors
+
+We’re excited that you’re interested in contributing code to Flyte! Before you start, please take a look at our [Quickstart](https://www.union.ai/docs/v2/flyte/user-guide/quickstart/) docs, it includes setup instructions, build steps, and details on running your first workflow locally.
+
+#### Recommendation Order (For Beginners)
+
+- Finish reading [Core Concepts](https://www.union.ai/docs/v2/flyte/user-guide/core-concepts/)
+- Finish reading [Connecting a Cluster](https://www.union.ai/docs/v2/flyte/user-guide/connecting-to-a-cluster/)
+- Finish reading [Projects and Domain](https://www.union.ai/docs/v2/flyte/user-guide/projects-and-domains/)
+- Finish reading [From Flyte 1 to Flyte 2](https://www.union.ai/docs/v2/flyte/user-guide/flyte-2/)
+
+### Reporting Bugs
+
+Please use our issues templates that provide hints on what information we need to help you.
+
+> You must never report security related issues, vulnerabilities or bugs including sensitive information to the issue tracker, or elsewhere in public. Instead sensitive bugs must be sent by email to [security@union.ai](mailto:security@union.ai) or use the Report a security vulnerability issue template.
+
+### Feature Requests
+
+Suggest an idea for the project by using the [Issues template](https://github.com/flyteorg/flyte/issues) and choose your desired option and kindly provide as much context as you can about what you're running into. Do not open issues for questions or support, instead join our [slack workspace](https://slack.flyte.org/) and ask there.
+
+Unsure if your contribution is “small”, “large” or whether it fits into the project's goal? Kindly start a quick [discussion](https://github.com/flyteorg/flyte/discussions) on github.
+
+### Improving The Documentation
+
+If you notice outdated information or areas that could be clarified, kindly start a discussion in the [contribute](https://flyte-org.slack.com/archives/C04NJPLRWUX) channel on slack. For more information, please checkout [Contributing to documentation](https://www.union.ai/docs/v2/flyte/community/#contributing-to-documentation).
+
+### Improving The Design
+
+Design contributions are welcome! To ensure smooth collaboration, please use the UI Feature Request Template when opening a design-related issue. This helps us gather the right context (such as wireframes, mockups, or visual references) and maintain a consistent design language across the project. Feedback and iterations are highly encouraged, design is always a shared process.
+
+### Publish a Blog Post or Case Study
+
+We love hearing how people use or extend Flyte in their own projects. If you’ve written about your experience, we’re happy to review it! To share your work, please start a discussion in the [#contribute](https://flyte-org.slack.com/archives/C04NJPLRWUX) channel on slack, summarizing your post or case study, with a link to the full content.
+
+### Commit Messages
+
+Writing clear and consistent commit messages helps maintainers understand the purpose of your changes. A good commit message should:
+
+- Be written in the present tense (e.g., Add new feature, not Added new feature)
+
+- Be short (50 characters or less for the summary line)
+
+- Include additional context in the body if needed
+
+- Reference related issue numbers (e.g., Fixes `#123)
+
+- Keep each commit focused on one logical change
+
+## Pull Requests
+
+When you’re ready to contribute your changes, follow these steps to create a clear and reviewable pull request:
+
+- Push your changes to your fork:
+
+ ```bash
+ git push origin your-branch-name
+ ```
+
+- Open a Pull Request against the main Flyte Code repository.
+
+- Select "Compare across forks" and choose your fork and branch.
+
+- Fill out the PR template with:
+
+- A clear description of your changes
+
+ - Any related issues (e.g., “changed `#123”).
+
+ - Testing steps or screenshots (if applicable)
+
+ - Notes for reviewers, if special attention is needed.
+
+For more context, kindly read the official [Before Submitting Your PR](https://www.union.ai/docs/v1/flyte/community/contributing-code/#before-submitting-your-pr) docs.
+
+## Contributor Ladder
+
+The Flyte Contributor Ladder is a key resource for understanding how to grow within Flyte, outlining expectations, responsibilities, and progression across roles. It helps create transparency, recognize contributions, and ensure a sustainable and inclusive path for community members to deepen their impact. [Read more](https://github.com/flyteorg/community/blob/main/GOVERNANCE.md#community-roles-and-path-to-maintainership).
+
+
+Your contributions, big or small help make Flyte better for everyone!🫶
+
+## References
+
+This document was adapted from [https://contributing.md](https://contributing.md/)!
diff --git a/Dockerfile b/Dockerfile
index ead022d0364..e60000b763e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,7 +2,7 @@ ARG FLYTECONSOLE_VERSION=latest
FROM ghcr.io/flyteorg/flyteconsole:${FLYTECONSOLE_VERSION} AS flyteconsole
-FROM --platform=${BUILDPLATFORM} golang:1.22-bookworm AS flytebuilder
+FROM --platform=${BUILDPLATFORM} golang:1.26-bookworm AS flytebuilder
ARG TARGETARCH
ENV GOARCH="${TARGETARCH}"
diff --git a/Dockerfile.datacatalog b/Dockerfile.datacatalog
index 80f683a40f2..eb2b5e6719e 100644
--- a/Dockerfile.datacatalog
+++ b/Dockerfile.datacatalog
@@ -3,7 +3,7 @@
#
# TO OPT OUT OF UPDATES, SEE https://github.com/flyteorg/boilerplate/blob/master/Readme.rst
-FROM --platform=${BUILDPLATFORM} golang:1.22-alpine3.18 AS builder
+FROM --platform=${BUILDPLATFORM} golang:1.26-alpine3.23 AS builder
ARG TARGETARCH
diff --git a/Dockerfile.flyteadmin b/Dockerfile.flyteadmin
index 9e33229959a..b089b093fbc 100644
--- a/Dockerfile.flyteadmin
+++ b/Dockerfile.flyteadmin
@@ -3,7 +3,7 @@
#
# TO OPT OUT OF UPDATES, SEE https://github.com/lyft/boilerplate/blob/master/Readme.rst
-FROM --platform=${BUILDPLATFORM} golang:1.22-alpine3.18 AS builder
+FROM --platform=${BUILDPLATFORM} golang:1.26-alpine3.23 AS builder
ARG TARGETARCH
ENV GOARCH="${TARGETARCH}"
diff --git a/Dockerfile.flytecopilot b/Dockerfile.flytecopilot
index 66e1d2c295d..23f8e8d5cbf 100644
--- a/Dockerfile.flytecopilot
+++ b/Dockerfile.flytecopilot
@@ -3,7 +3,7 @@
#
# TO OPT OUT OF UPDATES, SEE https://github.com/lyft/boilerplate/blob/master/Readme.rst
-FROM --platform=${BUILDPLATFORM} golang:1.22-alpine3.18 AS builder
+FROM --platform=${BUILDPLATFORM} golang:1.26-alpine3.23 AS builder
ARG TARGETARCH
diff --git a/Dockerfile.flytepropeller b/Dockerfile.flytepropeller
index 4963a530a48..17a8f074225 100644
--- a/Dockerfile.flytepropeller
+++ b/Dockerfile.flytepropeller
@@ -4,7 +4,7 @@
# TO OPT OUT OF UPDATES, SEE https://github.com/lyft/boilerplate/blob/master/Readme.rst
-FROM --platform=${BUILDPLATFORM} golang:1.22-alpine3.18 AS builder
+FROM --platform=${BUILDPLATFORM} golang:1.26-alpine3.23 AS builder
ARG TARGETARCH
diff --git a/Dockerfile.flytescheduler b/Dockerfile.flytescheduler
index a7119d0d9b5..fb6b0f500b3 100644
--- a/Dockerfile.flytescheduler
+++ b/Dockerfile.flytescheduler
@@ -4,7 +4,7 @@
# TO OPT OUT OF UPDATES, SEE https://github.com/lyft/boilerplate/blob/master/Readme.rst
-FROM --platform=${BUILDPLATFORM} golang:1.22-alpine3.18 AS builder
+FROM --platform=${BUILDPLATFORM} golang:1.26-alpine3.23 AS builder
ARG TARGETARCH
diff --git a/README.md b/README.md
index ae0072c490c..eabd49739f3 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,14 @@
+> [!IMPORTANT]
+> ## Looking for Flyte 2?
+>
+> - **⭐️ Flyte 2 Devbox is now available!** Check out the guide [here](https://www.union.ai/docs/v2/flyte/user-guide/run-modes/running-devbox/)
+> - **Use Flyte 2 locally?** Head to **[flyte-sdk](https://github.com/flyteorg/flyte-sdk)** — the new Python SDK for Flyte 2.
+> - **Want to contribute to the Flyte 2 distributed backend?** See the **[`main` branch](https://github.com/flyteorg/flyte/tree/main)** of this repo.
+>
+> **The README below is for Flyte 1.x.**
+
+---
+
@@ -109,7 +120,7 @@ Go to the [Deployment guide](https://docs.flyte.org/en/latest/deployment/deploym
🧬 **Data lineage**: Track the movement and transformation of data throughout the lifecycle of your data and ML workflows.
📊 **Map tasks**: Achieve parallel code execution with minimal configuration using [map tasks](https://docs.flyte.org/en/latest/user_guide/advanced_composition/map_tasks.html).
🌎 **Multi-tenancy**: Multiple users can share the same platform while maintaining their own distinct data and configurations.
-🌟 **Dynamic workflows**: [Build flexible and adaptable workflows](https://docs.flyte.org/en/latest/user_guide/advanced_composition/dynamic_workflows.html) that can change and evolve as needed, making it easier to respond to changing requirements.
+🌟 **Dynamic workflows**: [Build flexible and adaptable workflows](https://www.union.ai/docs/v1/flyte/user-guide/core-concepts/workflows/dynamic-workflows) that can change and evolve as needed, making it easier to respond to changing requirements.
⏯️ [Wait](https://docs.flyte.org/en/latest/user_guide/advanced_composition/waiting_for_external_inputs.html) for **external inputs** before proceeding with the execution.
🌳 **Branching**: [Selectively execute branches](https://docs.flyte.org/en/latest/user_guide/advanced_composition/conditionals.html) of your workflow based on static or dynamic data produced by other tasks or input data.
📈 **Data visualization**: Visualize data, monitor models and view training history through plots.
@@ -157,7 +168,7 @@ There are many ways to get involved in Flyte, including:
### We :heart: our contributors
-[](https://github.com/katrogan)[](https://github.com/lyft-metaservice-3)[](https://github.com/matthewphsmith)[](https://github.com/EngHabu)[](https://github.com/goreleaserbot)[](https://github.com/hamersaw)[](https://github.com/yindia)[](https://github.com/flyte-bot)[](https://github.com/honnix)[](https://github.com/anandswaminathan)[](https://github.com/wild-endeavor)[](https://github.com/pingsutw)[](https://github.com/eapolinario)[](https://github.com/bnsblue)[](https://github.com/iaroslav-ciupin)[](https://github.com/kumare3)[](https://github.com/samhita-alla)[](https://github.com/Antaxify)[](https://github.com/pmahindrakar-oss)[](https://github.com/brucearctor)[](https://github.com/alexlipa91)[](https://github.com/mayitbeegh)[](https://github.com/MorpheusXAUT)[](https://github.com/gvashishtha)[](https://github.com/ckiosidis)[](https://github.com/aliabbasjaffri)[](https://github.com/Future-Outlier)[](https://github.com/andrewwdye)[](https://github.com/ariefrahmansyah)[](https://github.com/jeevb)[](https://github.com/jonathanburns)[](https://github.com/lu4nm3)[](https://github.com/lyft-metaservice-2)[](https://github.com/squiishyy)[](https://github.com/supreeth7)[](https://github.com/schottra)[](https://github.com/pvditt)[](https://github.com/veggiemonk)[](https://github.com/2uasimojo)[](https://github.com/cosmicBboy)[](https://github.com/migueltol22)[](https://github.com/ByronHsu)[](https://github.com/kosigz-lyft)[](https://github.com/yk-x-25)[](https://github.com/yubofredwang)[](https://github.com/surindersinghp)[](https://github.com/SmritiSatyanV)[](https://github.com/slai)[](https://github.com/milton0825)[](https://github.com/tnsetting)[](https://github.com/jerempy)[](https://github.com/bstadlbauer)[](https://github.com/akhurana001)[](https://github.com/vsbus)[](https://github.com/maximsmol)[](https://github.com/kennyworkman)[](https://github.com/igorvalko)[](https://github.com/hanzo)[](https://github.com/kanterov)[](https://github.com/fg91)[](https://github.com/chanadian)[](https://github.com/catalinii)[](https://github.com/chetcode)[](https://github.com/regadas)[](https://github.com/nicholasjng)[](https://github.com/akumor)[](https://github.com/flixr)[](https://github.com/edwinyyyu)[](https://github.com/clairemcginty)[](https://github.com/goyalankit)[](https://github.com/akashkatipally)[](https://github.com/aybidi)[](https://github.com/thomasjpfan)[](https://github.com/apps/dependabot)[](https://github.com/Mecoli1219)[](https://github.com/troychiu)[](https://github.com/snyk-bot)[](https://github.com/JiangJiaWei1103)[](https://github.com/austin362667)[](https://github.com/mao3267)[](https://github.com/MortalHappiness)[](https://github.com/dansola)[](https://github.com/Tom-Newton)[](https://github.com/arbaobao)[](https://github.com/fiedlerNr9)[](https://github.com/derwiki)[](https://github.com/granthamtaylor)[](https://github.com/jasonlai1218)[](https://github.com/pryce-turner)[](https://github.com/machichima)[](https://github.com/th0114nd)[](https://github.com/ppiegaze)[](https://github.com/novahow)[](https://github.com/ChungYujoyce)[](https://github.com/AlekhyaSasi)[](https://github.com/asottile)[](https://github.com/Yicheng-Lu-llll)[](https://github.com/redartera)[](https://github.com/ggydush)[](https://github.com/hhcs9527)[](https://github.com/SandraGH5)[](https://github.com/sbrunk)[](https://github.com/ysysys3074)[](https://github.com/ddl-rliu)[](https://github.com/sonjaer)[](https://github.com/otarabai)[](https://github.com/noahjax)[](https://github.com/neverett)[](https://github.com/ringohoffman)[](https://github.com/chaohengstudent)[](https://github.com/bgedik)[](https://github.com/AdrianoKF)[](https://github.com/rdeaton-freenome)[](https://github.com/amitani)[](https://github.com/davidlin20dev)[](https://github.com/wayner0628)[](https://github.com/JackUrb)[](https://github.com/max-hoffman)[](https://github.com/pimdh)[](https://github.com/fellhorn)[](https://github.com/fediazgon)[](https://github.com/Sovietaced)[](https://github.com/ljstrnadiii)[](https://github.com/peridotml)[](https://github.com/rahul-theorem)[](https://github.com/RichhLi)[](https://github.com/taieeuu)[](https://github.com/ryankarlos)[](https://github.com/RRap0so)[](https://github.com/RobertoRRW)[](https://github.com/bimtauer)[](https://github.com/PudgyPigeon)[](https://github.com/vincent0426)[](https://github.com/esadler-hbo)[](https://github.com/ggydush-fn)[](https://github.com/kiliangojek)[](https://github.com/pbrogan12)[](https://github.com/bethebunny)[](https://github.com/andresgomezfrr)[](https://github.com/cameronraysmith)[](https://github.com/blaketastic2)[](https://github.com/dennisobrien)[](https://github.com/dylanspag-lmco)[](https://github.com/hfurkanvural)[](https://github.com/helenzhangyc)[](https://github.com/Ln11211)[](https://github.com/aeioulisa)[](https://github.com/michaels-lyft)[](https://github.com/murilommen)[](https://github.com/neilisaur)[](https://github.com/nelsonjr)[](https://github.com/rambrus)[](https://github.com/RobinKa)[](https://github.com/rubenbarragan)[](https://github.com/shuyingliang)[](https://github.com/sugatoray)[](https://github.com/sushrut111)[](https://github.com/Tat-V)[](https://github.com/TeoZosa)[](https://github.com/ThomVett)[](https://github.com/datability-io)[](https://github.com/techytushar)[](https://github.com/RRK1000)[](https://github.com/101rakibulhasan)[](https://github.com/RaghavMangla)[](https://github.com/quinten-flwls)[](https://github.com/Qiwen-Yu)[](https://github.com/400Ping)[](https://github.com/patrick-kidger)[](https://github.com/tekumara)[](https://github.com/Nan2018)[](https://github.com/MinuraPunchihewa)[](https://github.com/myz540)[](https://github.com/wirthual)[](https://github.com/Terryhung)[](https://github.com/stef-stripe)[](https://github.com/mg515)[](https://github.com/mcloney-ddm)[](https://github.com/martinlyra)[](https://github.com/joe-polin)[](https://github.com/ericwudayi)[](https://github.com/demmerichs)[](https://github.com/pradithya)[](https://github.com/ajsalow)[](https://github.com/adrianloy)[](https://github.com/palchicz)[](https://github.com/yundai424)[](https://github.com/yini7777)[](https://github.com/XinEDprob)[](https://github.com/lowc1012)[](https://github.com/WebOfNakedFancies)[](https://github.com/vvasavada-fn)[](https://github.com/va6996)[](https://github.com/devictr)[](https://github.com/varshaparthay)[](https://github.com/vchowdhary)[](https://github.com/UmerAhmad)[](https://github.com/ttitsworth-lila)[](https://github.com/deepyaman)[](https://github.com/DavidMertz)[](https://github.com/davidmirror-ops)[](https://github.com/danpf)[](https://github.com/DanBrunkow)[](https://github.com/cjidboon94)[](https://github.com/chinghongfang)[](https://github.com/supercharleszhu)[](https://github.com/CalvinLeather)[](https://github.com/bryan-hunted)[](https://github.com/bryanwweber)[](https://github.com/bcvanmeurs)[](https://github.com/benoistlaurent)[](https://github.com/lordnodd)[](https://github.com/ArthurBook)[](https://github.com/wckdman)[](https://github.com/arpitbhardwaj)[](https://github.com/apatel-fn)[](https://github.com/asahalyft)[](https://github.com/andrei-trandafir)[](https://github.com/popojk)[](https://github.com/convexquad)[](https://github.com/aalavian)[](https://github.com/aditya7302)[](https://github.com/mhotan)[](https://github.com/NotMatthewGriffin)[](https://github.com/Mathis-Z)[](https://github.com/matheusMoreno)[](https://github.com/bz38)[](https://github.com/madhur-tandon)[](https://github.com/mdjong1)[](https://github.com/LunarMarathon)[](https://github.com/knordstrom-muon)[](https://github.com/julianStreibel)[](https://github.com/jcugat)[](https://github.com/jbrambleDC)[](https://github.com/JasonZhu1313)[](https://github.com/frsann)[](https://github.com/franco-bocci)[](https://github.com/felixmulder)[](https://github.com/ddl-ebrown)[](https://github.com/YmirKhang)[](https://github.com/elibixby)[](https://github.com/douenergy)[](https://github.com/ddhirajkumar)[](https://github.com/charlie0220)[](https://github.com/stephen37)[](https://github.com/ursucarina)[](https://github.com/anrusina)[](https://github.com/service-github-lyft-semantic-release)[](https://github.com/jsonporter)[](https://github.com/govalt)[](https://github.com/james-union)[](https://github.com/olga-union)[](https://github.com/Pianist038801)[](https://github.com/eugenejahn)[](https://github.com/4nalog)[](https://github.com/FrankFlitton)[](https://github.com/apTalya)[](https://github.com/lyonlu13)[](https://github.com/xwk1246)[](https://github.com/trutx)[](https://github.com/mruoss)[](https://github.com/K-Kumar-01)[](https://github.com/HiromuHota)[](https://github.com/Professional0321)[](https://github.com/aviaviavi)[](https://github.com/jimbobby5)[](https://github.com/sisco0)[](https://github.com/live-wire)[](https://github.com/daniel-shuy)[](https://github.com/alexapdev)[](https://github.com/narape)[](https://github.com/manuelrombach)[](https://github.com/lupasarin)[](https://github.com/haoyuez)[](https://github.com/skiptomyliu)[](https://github.com/10sharmashivam)[](https://github.com/3t8)[](https://github.com/zeryx)[](https://github.com/oyevtushok)[](https://github.com/rachfop)[](https://github.com/tjKairos)[](https://github.com/Soot3)[](https://github.com/hebiao064)[](https://github.com/sumana-2705)[](https://github.com/trishitapingolia)[](https://github.com/Smartmind12)[](https://github.com/huxuan)[](https://github.com/DenChenn)[](https://github.com/privatedumbo)[](https://github.com/arturdryomov)[](https://github.com/ChickenTarm)[](https://github.com/cdreetz)[](https://github.com/felixwang9817)[](https://github.com/xshen8888)[](https://github.com/juandiegopalomino)[](https://github.com/kanyesthaker)[](https://github.com/marc-union)[](https://github.com/michaeltinsley)[](https://github.com/stolarczyk)[](https://github.com/mucahitkantepe)[](https://github.com/georgesnelling)[](https://github.com/kamaleybov)[](https://github.com/dschaller)[](https://github.com/dav009)[](https://github.com/agiron123)[](https://github.com/peterghaddad)[](https://github.com/cpaulik)[](https://github.com/zychen5186)[](https://github.com/Murdock9803)[](https://github.com/yongchand)[](https://github.com/vraiyaninv)[](https://github.com/suravshrestha)[](https://github.com/noobkid2411)[](https://github.com/rodrigobaron)[](https://github.com/nicklofaso)[](https://github.com/idivyanshbansal)[](https://github.com/mishmanners)[](https://github.com/davidxia)[](https://github.com/hoyajigi)[](https://github.com/MrKrishnaAgarwal)[](https://github.com/dwo)[](https://github.com/pranshustuff)[](https://github.com/peterxcli)[](https://github.com/NitinAgg)[](https://github.com/marrrcin)[](https://github.com/samuel-sujith)[](https://github.com/SKalt)[](https://github.com/ilikedata)[](https://github.com/asoundarya96)[](https://github.com/ttanay)[](https://github.com/robert-ulbrich-mercedes-benz)[](https://github.com/sighingnow)[](https://github.com/HuangTing-Yao)[](https://github.com/orf)[](https://github.com/trevormcguire)[](https://github.com/vijaysaravana)[](https://github.com/vglocus)[](https://github.com/Dlougach)[](https://github.com/yarikoptic)[](https://github.com/uschi2000)[](https://github.com/ronaldosaheki)[](https://github.com/GRomR1)[](https://github.com/SZL741023)[](https://github.com/Sennuno)[](https://github.com/shahwarcodes)[](https://github.com/sshardool)[](https://github.com/shengyu7697)[](https://github.com/shihgianlee)[](https://github.com/Virtual4087)[](https://github.com/shreyas44)[](https://github.com/siiddhantt)[](https://github.com/SophieTech88)[](https://github.com/ongkong)[](https://github.com/ketian-indeed)[](https://github.com/leorleor)[](https://github.com/loselarry)[](https://github.com/luckyarthur)[](https://github.com/mthemis-provenir)[](https://github.com/moose007)[](https://github.com/omahs)[](https://github.com/rustco)[](https://github.com/sanjaychouhan-adf)[](https://github.com/sjtucoder)[](https://github.com/ssen85)[](https://github.com/studystill)[](https://github.com/v01dXYZ)[](https://github.com/vlada-dudr)[](https://github.com/wanderer163)[](https://github.com/0yukali0)[](https://github.com/chmod77)[](https://github.com/dashangcun)[](https://github.com/desihsu)[](https://github.com/evenevent)[](https://github.com/fsz285)[](https://github.com/gdabisias)[](https://github.com/gigi-at-zymergen)[](https://github.com/hampusrosvall)[](https://github.com/hitarth01)[](https://github.com/jcourteau)[](https://github.com/jkhales)[](https://github.com/jw0515)[](https://github.com/brndnblck)[](https://github.com/kinow)[](https://github.com/ctso)[](https://github.com/cratiu222)[](https://github.com/CtfChan)[](https://github.com/Daeruin)[](https://github.com/dyu-bot)[](https://github.com/nnsW3)[](https://github.com/Juneezee)[](https://github.com/EraYaN)[](https://github.com/fvde)[](https://github.com/punkerpunker)[](https://github.com/abhijeet007rocks8)[](https://github.com/adarsh-jha-dev)[](https://github.com/blindaks)[](https://github.com/mounesi)[](https://github.com/aminmaghsodi)[](https://github.com/eanakhl)[](https://github.com/adinin)[](https://github.com/ALMerrill)[](https://github.com/ap0calypse8)[](https://github.com/anton-malakhov)[](https://github.com/mouuff)[](https://github.com/Ash0807)[](https://github.com/bra-fsn)[](https://github.com/avan-sh)[](https://github.com/guyarad)[](https://github.com/HansBambel)[](https://github.com/kazesberger)[](https://github.com/lauralindy)[](https://github.com/lsena)[](https://github.com/mark-thm)[](https://github.com/mwaylonis)[](https://github.com/maximevtush)[](https://github.com/nishantwrp)[](https://github.com/ossareh)[](https://github.com/ppeerttu)[](https://github.com/paravatha)[](https://github.com/guy4261)[](https://github.com/Lundez)[](https://github.com/hasukmistry)[](https://github.com/HeetVekariya)[](https://github.com/rokrokss)[](https://github.com/goodgravy)[](https://github.com/jamestwebber)[](https://github.com/jsong336)[](https://github.com/jeremydonahue)[](https://github.com/jonasdebeukelaer)[](https://github.com/jmcarp)[](https://github.com/radiantly)[](https://github.com/Jeinhaus)[](https://github.com/kylewaynebenson)[](https://github.com/Gui11aum3)[](https://github.com/JakeNeyer)[](https://github.com/aliavni)[](https://github.com/RustedBones)[](https://github.com/pablocasares)[](https://github.com/andyczerwonka)[](https://github.com/jschuchart-spot)[](https://github.com/rscarvalho)[](https://github.com/marschall)[](https://github.com/stormy-ua)[](https://github.com/evdokim)[](https://github.com/AndersonReyes)[](https://github.com/acet)[](https://github.com/gdungca-fn)[](https://github.com/Abdullahi-Ahmed)[](https://github.com/amaleelhamri)[](https://github.com/pradyunsg)[](https://github.com/apps/pre-commit-ci)[](https://github.com/jdknight)[](https://github.com/kmike)[](https://github.com/hugovk)[](https://github.com/sirosen)[](https://github.com/humitos)[](https://github.com/bastimeyer)[](https://github.com/asmeurer)[](https://github.com/drewyh)[](https://github.com/polyzen)[](https://github.com/dvarrazzo)[](https://github.com/dbitouze)[](https://github.com/idryzhov)[](https://github.com/pauloxnet)[](https://github.com/ichard26)[](https://github.com/sethmlarson)[](https://github.com/graingert)[](https://github.com/stonecharioteer)[](https://github.com/yeraydiazdiaz)[](https://github.com/eviau-sat)[](https://github.com/rozsasarpi)[](https://github.com/estan)[](https://github.com/pseudomuto)[](https://github.com/htdvisser)[](https://github.com/jacobtolar)[](https://github.com/ezimanyi)[](https://github.com/hmacias-avaya)[](https://github.com/lpabon)[](https://github.com/ArcEye)[](https://github.com/mingrammer)[](https://github.com/aschrijver)[](https://github.com/panzerfahrer)[](https://github.com/glasser)[](https://github.com/murph0)[](https://github.com/zetaron)[](https://github.com/sunfmin)[](https://github.com/guozheng)[](https://github.com/suusan2go)[](https://github.com/mhaberler)[](https://github.com/dreampuf)[](https://github.com/UnicodingUnicorn)[](https://github.com/philiptzou)[](https://github.com/timabell)[](https://github.com/adzenith)[](https://github.com/jasonhancock)[](https://github.com/matryer)[](https://github.com/piotrrojek)[](https://github.com/jasonsattler)[](https://github.com/sbward)[](https://github.com/Pisush)[](https://github.com/tamalsaha)[](https://github.com/marianina8)[](https://github.com/naysayer)[](https://github.com/darwayne)[](https://github.com/ernesto-jimenez)[](https://github.com/jsteenb2)[](https://github.com/AgrimPrasad)[](https://github.com/dahernan)[](https://github.com/jtarchie)[](https://github.com/jdtobe)[](https://github.com/alrs)[](https://github.com/tkent)[](https://github.com/urisimchoni)[](https://github.com/Xercoy)[](https://github.com/marbergq)[](https://github.com/anothrNick)[](https://github.com/fermoya)[](https://github.com/sbe-arg)[](https://github.com/PeerXu)[](https://github.com/reececomo)[](https://github.com/dmerrick)[](https://github.com/andrewcole)[](https://github.com/phish108)[](https://github.com/endrjuskr)[](https://github.com/sjauld)[](https://github.com/vq-ambiata)[](https://github.com/tomsolem)[](https://github.com/117)[](https://github.com/lovromazgon)[](https://github.com/gukoff)[](https://github.com/bevans-HD)[](https://github.com/zero-below)[](https://github.com/okozachenko1203)[](https://github.com/cuttingedge1109)[](https://github.com/pellared)[](https://github.com/pavyarov)[](https://github.com/OskarStark)[](https://github.com/JeremyLWright)[](https://github.com/ivanpk)[](https://github.com/fabricepipart)[](https://github.com/imdanielsp)[](https://github.com/zsedem)[](https://github.com/adam-berrio)[](https://github.com/asford)[](https://github.com/bmcconeghy)[](https://github.com/conda-forge-admin)[](https://github.com/regro-cf-autotick-bot)[](https://github.com/apps/conda-forge-curator)[](https://github.com/apps/github-actions)[](https://github.com/conda-forge-linter)[](https://github.com/pheianox)[](https://github.com/emirlej)[](https://github.com/gaga5lala)[](https://github.com/divyank000)[](https://github.com/rmalla1)
+[](https://github.com/katrogan)[](https://github.com/lyft-metaservice-3)[](https://github.com/matthewphsmith)[](https://github.com/EngHabu)[](https://github.com/goreleaserbot)[](https://github.com/hamersaw)[](https://github.com/yindia)[](https://github.com/flyte-bot)[](https://github.com/honnix)[](https://github.com/anandswaminathan)[](https://github.com/wild-endeavor)[](https://github.com/pingsutw)[](https://github.com/eapolinario)[](https://github.com/bnsblue)[](https://github.com/iaroslav-ciupin)[](https://github.com/kumare3)[](https://github.com/samhita-alla)[](https://github.com/Antaxify)[](https://github.com/pmahindrakar-oss)[](https://github.com/brucearctor)[](https://github.com/alexlipa91)[](https://github.com/mayitbeegh)[](https://github.com/MorpheusXAUT)[](https://github.com/gvashishtha)[](https://github.com/ckiosidis)[](https://github.com/aliabbasjaffri)[](https://github.com/Future-Outlier)[](https://github.com/andrewwdye)[](https://github.com/ariefrahmansyah)[](https://github.com/jeevb)[](https://github.com/jonathanburns)[](https://github.com/lu4nm3)[](https://github.com/lyft-metaservice-2)[](https://github.com/squiishyy)[](https://github.com/supreeth7)[](https://github.com/schottra)[](https://github.com/pvditt)[](https://github.com/veggiemonk)[](https://github.com/2uasimojo)[](https://github.com/cosmicBboy)[](https://github.com/migueltol22)[](https://github.com/ByronHsu)[](https://github.com/kosigz-lyft)[](https://github.com/yktechstash)[](https://github.com/yubofredwang)[](https://github.com/surindersinghp)[](https://github.com/SmritiSatyanV)[](https://github.com/slai)[](https://github.com/milton0825)[](https://github.com/tnsetting)[](https://github.com/jerempy)[](https://github.com/bstadlbauer)[](https://github.com/akhurana001)[](https://github.com/vsbus)[](https://github.com/maximsmol)[](https://github.com/kennyworkman)[](https://github.com/igorvalko)[](https://github.com/hanzo)[](https://github.com/kanterov)[](https://github.com/fg91)[](https://github.com/chanadian)[](https://github.com/catalinii)[](https://github.com/chetcode)[](https://github.com/regadas)[](https://github.com/nicholasjng)[](https://github.com/akumor)[](https://github.com/flixr)[](https://github.com/edwinyyyu)[](https://github.com/clairemcginty)[](https://github.com/goyalankit)[](https://github.com/akashkatipally)[](https://github.com/aybidi)[](https://github.com/thomasjpfan)[](https://github.com/apps/dependabot)[](https://github.com/Mecoli1219)[](https://github.com/troychiu)[](https://github.com/snyk-bot)[](https://github.com/JiangJiaWei1103)[](https://github.com/machichima)[](https://github.com/mao3267)[](https://github.com/austin362667)[](https://github.com/dansola)[](https://github.com/arbaobao)[](https://github.com/MortalHappiness)[](https://github.com/Tom-Newton)[](https://github.com/fiedlerNr9)[](https://github.com/derwiki)[](https://github.com/granthamtaylor)[](https://github.com/jasonlai1218)[](https://github.com/pryce-turner)[](https://github.com/th0114nd)[](https://github.com/redartera)[](https://github.com/ppiegaze)[](https://github.com/novahow)[](https://github.com/ChungYujoyce)[](https://github.com/AlekhyaSasi)[](https://github.com/asottile)[](https://github.com/Yicheng-Lu-llll)[](https://github.com/ggydush)[](https://github.com/otarabai)[](https://github.com/hhcs9527)[](https://github.com/SandraGH5)[](https://github.com/sbrunk)[](https://github.com/taieeuu)[](https://github.com/ysysys3074)[](https://github.com/ddl-rliu)[](https://github.com/amitani)[](https://github.com/sonjaer)[](https://github.com/noahjax)[](https://github.com/neverett)[](https://github.com/Sovietaced)[](https://github.com/chaohengstudent)[](https://github.com/BarryWu0812)[](https://github.com/bgedik)[](https://github.com/rdeaton-freenome)[](https://github.com/davidlin20dev)[](https://github.com/wayner0628)[](https://github.com/JackUrb)[](https://github.com/max-hoffman)[](https://github.com/pimdh)[](https://github.com/AdrianoKF)[](https://github.com/popojk)[](https://github.com/fellhorn)[](https://github.com/fediazgon)[](https://github.com/ljstrnadiii)[](https://github.com/peridotml)[](https://github.com/rahul-theorem)[](https://github.com/ryankarlos)[](https://github.com/RichhLi)[](https://github.com/RRap0so)[](https://github.com/bimtauer)[](https://github.com/PudgyPigeon)[](https://github.com/vincent0426)[](https://github.com/esadler-hbo)[](https://github.com/ggydush-fn)[](https://github.com/kiliangojek)[](https://github.com/pbrogan12)[](https://github.com/bethebunny)[](https://github.com/andresgomezfrr)[](https://github.com/blaketastic2)[](https://github.com/cameronraysmith)[](https://github.com/dennisobrien)[](https://github.com/dylanspag-lmco)[](https://github.com/hfurkanvural)[](https://github.com/helenzhangyc)[](https://github.com/Ln11211)[](https://github.com/aeioulisa)[](https://github.com/michaels-lyft)[](https://github.com/murilommen)[](https://github.com/neilisaur)[](https://github.com/nelsonjr)[](https://github.com/rambrus)[](https://github.com/RobinKa)[](https://github.com/rubenbarragan)[](https://github.com/shuyingliang)[](https://github.com/sugatoray)[](https://github.com/sushrut111)[](https://github.com/Tat-V)[](https://github.com/TeoZosa)[](https://github.com/ThomVett)[](https://github.com/datability-io)[](https://github.com/techytushar)[](https://github.com/wirthual)[](https://github.com/RRK1000)[](https://github.com/101rakibulhasan)[](https://github.com/RaghavMangla)[](https://github.com/quinten-flwls)[](https://github.com/Qiwen-Yu)[](https://github.com/400Ping)[](https://github.com/patrick-kidger)[](https://github.com/tekumara)[](https://github.com/Nan2018)[](https://github.com/MinuraPunchihewa)[](https://github.com/myz540)[](https://github.com/Terryhung)[](https://github.com/stef-stripe)[](https://github.com/mg515)[](https://github.com/mcloney-ddm)[](https://github.com/martinlyra)[](https://github.com/joe-polin)[](https://github.com/ericwudayi)[](https://github.com/demmerichs)[](https://github.com/pradithya)[](https://github.com/ajsalow)[](https://github.com/adrianloy)[](https://github.com/ZhouGongZiBBS)[](https://github.com/palchicz)[](https://github.com/yundai424)[](https://github.com/yini7777)[](https://github.com/XinEDprob)[](https://github.com/lowc1012)[](https://github.com/WebOfNakedFancies)[](https://github.com/vvasavada-fn)[](https://github.com/va6996)[](https://github.com/devictr)[](https://github.com/varshaparthay)[](https://github.com/vchowdhary)[](https://github.com/UmerAhmad)[](https://github.com/ttitsworth-lila)[](https://github.com/deepyaman)[](https://github.com/DavidMertz)[](https://github.com/davidmirror-ops)[](https://github.com/danpf)[](https://github.com/DanBrunkow)[](https://github.com/clint-stripe)[](https://github.com/chinghongfang)[](https://github.com/supercharleszhu)[](https://github.com/CalvinLeather)[](https://github.com/bryan-hunted)[](https://github.com/bryanwweber)[](https://github.com/bcvanmeurs)[](https://github.com/benoistlaurent)[](https://github.com/lordnodd)[](https://github.com/ArthurBook)[](https://github.com/wckdman)[](https://github.com/arpitbhardwaj)[](https://github.com/apatel-fn)[](https://github.com/asahalyft)[](https://github.com/andrei-trandafir)[](https://github.com/convexquad)[](https://github.com/aalavian)[](https://github.com/aditya7302)[](https://github.com/mhotan)[](https://github.com/NotMatthewGriffin)[](https://github.com/Mathis-Z)[](https://github.com/matheusMoreno)[](https://github.com/bz38)[](https://github.com/Ziemin)[](https://github.com/madhur-tandon)[](https://github.com/mdjong1)[](https://github.com/LunarMarathon)[](https://github.com/knordstrom-muon)[](https://github.com/julianStreibel)[](https://github.com/jcugat)[](https://github.com/jbrambleDC)[](https://github.com/JasonZhu1313)[](https://github.com/frsann)[](https://github.com/franco-bocci)[](https://github.com/felixmulder)[](https://github.com/ddl-ebrown)[](https://github.com/YmirKhang)[](https://github.com/elibixby)[](https://github.com/douenergy)[](https://github.com/ddhirajkumar)[](https://github.com/charlie0220)[](https://github.com/stephen37)[](https://github.com/ursucarina)[](https://github.com/anrusina)[](https://github.com/service-github-lyft-semantic-release)[](https://github.com/jsonporter)[](https://github.com/govalt)[](https://github.com/james-union)[](https://github.com/olga-union)[](https://github.com/Pianist038801)[](https://github.com/eugenejahn)[](https://github.com/cloud-shannon)[](https://github.com/FrankFlitton)[](https://github.com/apTalya)[](https://github.com/lyonlu13)[](https://github.com/xwk1246)[](https://github.com/trutx)[](https://github.com/mruoss)[](https://github.com/K-Kumar-01)[](https://github.com/HiromuHota)[](https://github.com/Professional0321)[](https://github.com/bharat-patel85)[](https://github.com/aviaviavi)[](https://github.com/jimbobby5)[](https://github.com/sisco0)[](https://github.com/live-wire)[](https://github.com/daniel-shuy)[](https://github.com/alexapdev)[](https://github.com/narape)[](https://github.com/manuelrombach)[](https://github.com/lupasarin)[](https://github.com/haoyuez)[](https://github.com/skiptomyliu)[](https://github.com/10sharmashivam)[](https://github.com/3t8)[](https://github.com/zeryx)[](https://github.com/oyevtushok)[](https://github.com/rachfop)[](https://github.com/tjKairos)[](https://github.com/Soot3)[](https://github.com/hebiao064)[](https://github.com/sumana-2705)[](https://github.com/trishitapingolia)[](https://github.com/Smartmind12)[](https://github.com/huxuan)[](https://github.com/DenChenn)[](https://github.com/privatedumbo)[](https://github.com/arturdryomov)[](https://github.com/ChickenTarm)[](https://github.com/cdreetz)[](https://github.com/felixwang9817)[](https://github.com/xshen8888)[](https://github.com/juandiegopalomino)[](https://github.com/kanyesthaker)[](https://github.com/marc-union)[](https://github.com/michaeltinsley)[](https://github.com/stolarczyk)[](https://github.com/mucahitkantepe)[](https://github.com/georgesnelling)[](https://github.com/kamaleybov)[](https://github.com/dschaller)[](https://github.com/dav009)[](https://github.com/agiron123)[](https://github.com/peterghaddad)[](https://github.com/cpaulik)[](https://github.com/punkerpunker)[](https://github.com/zychen5186)[](https://github.com/Murdock9803)[](https://github.com/suravshrestha)[](https://github.com/noobkid2411)[](https://github.com/rodrigobaron)[](https://github.com/dwo)[](https://github.com/vraiyaninv)[](https://github.com/yongchand)[](https://github.com/mishmanners)[](https://github.com/idivyanshbansal)[](https://github.com/nicklofaso)[](https://github.com/davidxia)[](https://github.com/hoyajigi)[](https://github.com/MrKrishnaAgarwal)[](https://github.com/pranshustuff)[](https://github.com/peterxcli)[](https://github.com/NitinAgg)[](https://github.com/marrrcin)[](https://github.com/ilikedata)[](https://github.com/ttanay)[](https://github.com/samuel-sujith)[](https://github.com/sighingnow)[](https://github.com/thomasjhuang)[](https://github.com/SKalt)[](https://github.com/HuangTing-Yao)[](https://github.com/orf)[](https://github.com/trevormcguire)[](https://github.com/vijaysaravana)[](https://github.com/vglocus)[](https://github.com/Dlougach)[](https://github.com/yarikoptic)[](https://github.com/ongkong)[](https://github.com/robert-ulbrich-mercedes-benz)[](https://github.com/uschi2000)[](https://github.com/ronaldosaheki)[](https://github.com/GRomR1)[](https://github.com/SZL741023)[](https://github.com/Sennuno)[](https://github.com/shahwarcodes)[](https://github.com/sshardool)[](https://github.com/shengyu7697)[](https://github.com/shihgianlee)[](https://github.com/Virtual4087)[](https://github.com/shreyas44)[](https://github.com/siiddhantt)[](https://github.com/SophieTech88)[](https://github.com/asoundarya96)[](https://github.com/ketian-indeed)[](https://github.com/leorleor)[](https://github.com/loselarry)[](https://github.com/luckyarthur)[](https://github.com/mthemis-provenir)[](https://github.com/moose007)[](https://github.com/omahs)[](https://github.com/rustco)[](https://github.com/sanjaychouhan-adf)[](https://github.com/sjtucoder)[](https://github.com/ssen85)[](https://github.com/studystill)[](https://github.com/v01dXYZ)[](https://github.com/vlada-dudr)[](https://github.com/wanderer163)[](https://github.com/jingchanglu)[](https://github.com/0yukali0)[](https://github.com/chmod77)[](https://github.com/dashangcun)[](https://github.com/desihsu)[](https://github.com/evenevent)[](https://github.com/fsz285)[](https://github.com/gdabisias)[](https://github.com/gigi-at-zymergen)[](https://github.com/gopherorg)[](https://github.com/hampusrosvall)[](https://github.com/hefeiyun)[](https://github.com/hitarth01)[](https://github.com/jcourteau)[](https://github.com/jkhales)[](https://github.com/jw0515)[](https://github.com/brndnblck)[](https://github.com/kinow)[](https://github.com/ctso)[](https://github.com/cratiu222)[](https://github.com/CtfChan)[](https://github.com/daadc)[](https://github.com/Daeruin)[](https://github.com/dyu-bot)[](https://github.com/nnsW3)[](https://github.com/Juneezee)[](https://github.com/EraYaN)[](https://github.com/fvde)[](https://github.com/guyarad)[](https://github.com/guy4261)[](https://github.com/abhijeet007rocks8)[](https://github.com/adarsh-jha-dev)[](https://github.com/blindaks)[](https://github.com/mounesi)[](https://github.com/aminmaghsodi)[](https://github.com/eanakhl)[](https://github.com/adinin)[](https://github.com/ALMerrill)[](https://github.com/ap0calypse8)[](https://github.com/anton-malakhov)[](https://github.com/mouuff)[](https://github.com/Ash0807)[](https://github.com/bra-fsn)[](https://github.com/avan-sh)[](https://github.com/Lundez)[](https://github.com/HansBambel)[](https://github.com/kazesberger)[](https://github.com/lauralindy)[](https://github.com/hylje)[](https://github.com/lsena)[](https://github.com/mark-thm)[](https://github.com/mwaylonis)[](https://github.com/diranged)[](https://github.com/mattiadevivo)[](https://github.com/maximevtush)[](https://github.com/nishantwrp)[](https://github.com/ossareh)[](https://github.com/ppeerttu)[](https://github.com/paravatha)[](https://github.com/hasukmistry)[](https://github.com/HeetVekariya)[](https://github.com/rokrokss)[](https://github.com/eltociear)[](https://github.com/goodgravy)[](https://github.com/jamestwebber)[](https://github.com/jsong336)[](https://github.com/jeremydonahue)[](https://github.com/jonasdebeukelaer)[](https://github.com/jmcarp)[](https://github.com/radiantly)[](https://github.com/kylewaynebenson)[](https://github.com/Gui11aum3)[](https://github.com/JakeNeyer)[](https://github.com/aliavni)[](https://github.com/RustedBones)[](https://github.com/pablocasares)[](https://github.com/andyczerwonka)[](https://github.com/jschuchart-spot)[](https://github.com/rscarvalho)[](https://github.com/marschall)[](https://github.com/stormy-ua)[](https://github.com/evdokim)[](https://github.com/AndersonReyes)[](https://github.com/acet)[](https://github.com/gdungca-fn)[](https://github.com/Abdullahi-Ahmed)[](https://github.com/amaleelhamri)[](https://github.com/pradyunsg)[](https://github.com/apps/pre-commit-ci)[](https://github.com/jdknight)[](https://github.com/kmike)[](https://github.com/hugovk)[](https://github.com/sirosen)[](https://github.com/humitos)[](https://github.com/bastimeyer)[](https://github.com/asmeurer)[](https://github.com/drewyh)[](https://github.com/polyzen)[](https://github.com/dvarrazzo)[](https://github.com/dbitouze)[](https://github.com/idryzhov)[](https://github.com/pauloxnet)[](https://github.com/ichard26)[](https://github.com/sethmlarson)[](https://github.com/graingert)[](https://github.com/stonecharioteer)[](https://github.com/yeraydiazdiaz)[](https://github.com/eviau-sat)[](https://github.com/rozsasarpi)[](https://github.com/estan)[](https://github.com/pseudomuto)[](https://github.com/htdvisser)[](https://github.com/jacobtolar)[](https://github.com/ezimanyi)[](https://github.com/hmacias-avaya)[](https://github.com/lpabon)[](https://github.com/ArcEye)[](https://github.com/mingrammer)[](https://github.com/aschrijver)[](https://github.com/panzerfahrer)[](https://github.com/glasser)[](https://github.com/murph0)[](https://github.com/zetaron)[](https://github.com/sunfmin)[](https://github.com/guozheng)[](https://github.com/nagytech)[](https://github.com/suusan2go)[](https://github.com/mhaberler)[](https://github.com/dreampuf)[](https://github.com/UnicodingUnicorn)[](https://github.com/philiptzou)[](https://github.com/timabell)[](https://github.com/adzenith)[](https://github.com/jasonhancock)[](https://github.com/matryer)[](https://github.com/piotrrojek)[](https://github.com/jasonsattler)[](https://github.com/sbward)[](https://github.com/Pisush)[](https://github.com/tamalsaha)[](https://github.com/marianina8)[](https://github.com/naysayer)[](https://github.com/darwayne)[](https://github.com/ernesto-jimenez)[](https://github.com/jsteenb2)[](https://github.com/AgrimPrasad)[](https://github.com/dahernan)[](https://github.com/jtarchie)[](https://github.com/jdtobe)[](https://github.com/alrs)[](https://github.com/tkent)[](https://github.com/urisimchoni)[](https://github.com/Xercoy)[](https://github.com/marbergq)[](https://github.com/anothrNick)[](https://github.com/fermoya)[](https://github.com/sbe-arg)[](https://github.com/PeerXu)[](https://github.com/reececomo)[](https://github.com/dmerrick)[](https://github.com/andrewcole)[](https://github.com/phish108)[](https://github.com/endrjuskr)[](https://github.com/sjauld)[](https://github.com/vq-ambiata)[](https://github.com/tomsolem)[](https://github.com/117)[](https://github.com/lovromazgon)[](https://github.com/gukoff)[](https://github.com/bevans-HD)[](https://github.com/zero-below)[](https://github.com/okozachenko1203)[](https://github.com/cuttingedge1109)[](https://github.com/pellared)[](https://github.com/pavyarov)[](https://github.com/OskarStark)[](https://github.com/JeremyLWright)[](https://github.com/ivanpk)[](https://github.com/fabricepipart)[](https://github.com/imdanielsp)[](https://github.com/zsedem)[](https://github.com/asford)[](https://github.com/bmcconeghy)[](https://github.com/conda-forge-admin)[](https://github.com/regro-cf-autotick-bot)[](https://github.com/apps/conda-forge-curator)[](https://github.com/apps/github-actions)[](https://github.com/conda-forge-linter)[](https://github.com/rmalla1)[](https://github.com/divyank000)[](https://github.com/tylertitsworth)[](https://github.com/gaga5lala)[](https://github.com/emirlej)[](https://github.com/pheianox)[](https://github.com/chrismatteson)[](https://github.com/jpvotta)
## License
diff --git a/boilerplate/flyte/golang_support_tools/go.mod b/boilerplate/flyte/golang_support_tools/go.mod
index 83099f0ee5b..266abfea3ff 100644
--- a/boilerplate/flyte/golang_support_tools/go.mod
+++ b/boilerplate/flyte/golang_support_tools/go.mod
@@ -1,91 +1,118 @@
module github.com/flyteorg/boilerplate
-go 1.22.1
+go 1.26.0
require (
github.com/alvaroloes/enumer v1.1.2
- github.com/flyteorg/flyte/flytestdlib v1.11.0
- github.com/golangci/golangci-lint v1.61.0
+ github.com/flyteorg/flyte/flytestdlib v0.0.0-00010101000000-000000000000
+ github.com/golangci/golangci-lint/v2 v2.11.4
github.com/pseudomuto/protoc-gen-doc v1.4.1
- github.com/vektra/mockery/v2 v2.40.3
+ github.com/vektra/mockery/v2 v2.53.5
)
require (
- 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect
- 4d63.com/gochecknoglobals v0.2.1 // indirect
- cloud.google.com/go v0.115.1 // indirect
- cloud.google.com/go/auth v0.9.3 // indirect
- cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
- cloud.google.com/go/compute/metadata v0.5.0 // indirect
- cloud.google.com/go/iam v1.2.0 // indirect
- cloud.google.com/go/storage v1.43.0 // indirect
- github.com/4meepo/tagalign v1.3.4 // indirect
- github.com/Abirdcfly/dupword v0.1.1 // indirect
- github.com/Antonboom/errname v0.1.13 // indirect
- github.com/Antonboom/nilnil v0.1.9 // indirect
- github.com/Antonboom/testifylint v1.4.3 // indirect
+ 4d63.com/gocheckcompilerdirectives v1.3.0 // indirect
+ 4d63.com/gochecknoglobals v0.2.2 // indirect
+ cel.dev/expr v0.25.1 // indirect
+ cloud.google.com/go v0.121.2 // indirect
+ cloud.google.com/go/auth v0.16.5 // indirect
+ cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
+ cloud.google.com/go/compute/metadata v0.9.0 // indirect
+ cloud.google.com/go/iam v1.5.2 // indirect
+ cloud.google.com/go/monitoring v1.24.2 // indirect
+ cloud.google.com/go/storage v1.53.0 // indirect
+ codeberg.org/chavacava/garif v0.2.0 // indirect
+ codeberg.org/polyfloyd/go-errorlint v1.9.0 // indirect
+ dev.gaijin.team/go/exhaustruct/v4 v4.0.0 // indirect
+ dev.gaijin.team/go/golib v0.6.0 // indirect
+ github.com/4meepo/tagalign v1.4.3 // indirect
+ github.com/Abirdcfly/dupword v0.1.7 // indirect
+ github.com/AdminBenni/iota-mixing v1.0.0 // indirect
+ github.com/AlwxSin/noinlineerr v1.0.5 // indirect
+ github.com/Antonboom/errname v1.1.1 // indirect
+ github.com/Antonboom/nilnil v1.1.1 // indirect
+ github.com/Antonboom/testifylint v1.6.4 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
- github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect
- github.com/Crocmagnon/fatcontext v0.5.2 // indirect
- github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect
- github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 // indirect
+ github.com/BurntSushi/toml v1.6.0 // indirect
+ github.com/Djarvur/go-err113 v0.1.1 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 // indirect
github.com/Masterminds/semver v1.5.0 // indirect
- github.com/Masterminds/semver/v3 v3.3.0 // indirect
+ github.com/Masterminds/semver/v3 v3.4.0 // indirect
github.com/Masterminds/sprig v2.15.0+incompatible // indirect
- github.com/OpenPeeDeeP/depguard/v2 v2.2.0 // indirect
- github.com/alecthomas/go-check-sumtype v0.1.4 // indirect
- github.com/alexkohler/nakedret/v2 v2.0.4 // indirect
- github.com/alexkohler/prealloc v1.0.0 // indirect
+ github.com/MirrexOne/unqueryvet v1.5.4 // indirect
+ github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect
+ github.com/alecthomas/chroma/v2 v2.23.1 // indirect
+ github.com/alecthomas/go-check-sumtype v0.3.1 // indirect
+ github.com/alexkohler/nakedret/v2 v2.0.6 // indirect
+ github.com/alexkohler/prealloc v1.1.0 // indirect
+ github.com/alfatraining/structtag v1.0.0 // indirect
github.com/alingse/asasalint v0.0.11 // indirect
+ github.com/alingse/nilnesserr v0.2.0 // indirect
github.com/aokoli/goutils v1.0.1 // indirect
- github.com/ashanbrown/forbidigo v1.6.0 // indirect
- github.com/ashanbrown/makezero v1.1.1 // indirect
- github.com/aws/aws-sdk-go v1.44.2 // indirect
+ github.com/ashanbrown/forbidigo/v2 v2.3.0 // indirect
+ github.com/ashanbrown/makezero/v2 v2.1.0 // indirect
+ github.com/aws/aws-sdk-go v1.47.11 // indirect
+ github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
- github.com/bkielbasa/cyclop v1.2.1 // indirect
+ github.com/bkielbasa/cyclop v1.2.3 // indirect
github.com/blizzy78/varnamelen v0.8.0 // indirect
- github.com/bombsimon/wsl/v4 v4.4.1 // indirect
- github.com/breml/bidichk v0.2.7 // indirect
- github.com/breml/errchkjson v0.3.6 // indirect
- github.com/butuzov/ireturn v0.3.0 // indirect
- github.com/butuzov/mirror v1.2.0 // indirect
- github.com/catenacyber/perfsprint v0.7.1 // indirect
- github.com/ccojocar/zxcvbn-go v1.0.2 // indirect
+ github.com/bombsimon/wsl/v4 v4.7.0 // indirect
+ github.com/bombsimon/wsl/v5 v5.6.0 // indirect
+ github.com/breml/bidichk v0.3.3 // indirect
+ github.com/breml/errchkjson v0.4.1 // indirect
+ github.com/butuzov/ireturn v0.4.0 // indirect
+ github.com/butuzov/mirror v1.3.0 // indirect
+ github.com/catenacyber/perfsprint v0.10.1 // indirect
+ github.com/ccojocar/zxcvbn-go v1.0.4 // indirect
+ github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
- github.com/charithe/durationcheck v0.0.10 // indirect
- github.com/chavacava/garif v0.1.0 // indirect
+ github.com/charithe/durationcheck v0.0.11 // indirect
+ github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect
+ github.com/charmbracelet/lipgloss v1.1.0 // indirect
+ github.com/charmbracelet/x/ansi v0.10.1 // indirect
+ github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect
+ github.com/charmbracelet/x/term v0.2.1 // indirect
github.com/chigopher/pathlib v0.19.1 // indirect
- github.com/ckaznocha/intrange v0.2.0 // indirect
+ github.com/ckaznocha/intrange v0.3.1 // indirect
+ github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect
github.com/coocood/freecache v1.1.1 // indirect
- github.com/curioswitch/go-reassign v0.2.0 // indirect
- github.com/daixiang0/gci v0.13.5 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
+ github.com/curioswitch/go-reassign v0.3.0 // indirect
+ github.com/daixiang0/gci v0.13.7 // indirect
+ github.com/dave/dst v0.27.3 // indirect
+ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/denis-tingaikin/go-header v0.5.0 // indirect
- github.com/emicklei/go-restful/v3 v3.9.0 // indirect
- github.com/envoyproxy/protoc-gen-validate v1.0.4 // indirect
+ github.com/dlclark/regexp2 v1.11.5 // indirect
+ github.com/emicklei/go-restful/v3 v3.12.2 // indirect
+ github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect
+ github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect
github.com/ernesto-jimenez/gogen v0.0.0-20180125220232-d7d4131e6607 // indirect
github.com/ettle/strcase v0.2.0 // indirect
- github.com/evanphx/json-patch/v5 v5.6.0 // indirect
- github.com/fatih/color v1.17.0 // indirect
+ github.com/evanphx/json-patch/v5 v5.9.11 // indirect
+ github.com/fatih/color v1.19.0 // indirect
github.com/fatih/structtag v1.2.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/firefart/nonamedreturns v1.0.5 // indirect
- github.com/flyteorg/stow v0.3.10 // indirect
- github.com/fsnotify/fsnotify v1.6.0 // indirect
+ github.com/firefart/nonamedreturns v1.0.6 // indirect
+ github.com/flyteorg/stow v0.3.12 // indirect
+ github.com/fsnotify/fsnotify v1.9.0 // indirect
+ github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/fzipp/gocyclo v0.6.0 // indirect
github.com/ghodss/yaml v1.0.0 // indirect
- github.com/ghostiam/protogetter v0.3.6 // indirect
- github.com/go-critic/go-critic v0.11.4 // indirect
- github.com/go-logr/logr v1.4.2 // indirect
+ github.com/ghostiam/protogetter v0.3.20 // indirect
+ github.com/go-critic/go-critic v0.14.3 // indirect
+ github.com/go-jose/go-jose/v4 v4.1.4 // indirect
+ github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
- github.com/go-openapi/jsonpointer v0.19.6 // indirect
+ github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.20.2 // indirect
- github.com/go-openapi/swag v0.22.3 // indirect
+ github.com/go-openapi/swag v0.23.0 // indirect
github.com/go-toolsmith/astcast v1.1.0 // indirect
github.com/go-toolsmith/astcopy v1.1.0 // indirect
github.com/go-toolsmith/astequal v1.2.0 // indirect
@@ -93,192 +120,213 @@ require (
github.com/go-toolsmith/astp v1.1.0 // indirect
github.com/go-toolsmith/strparse v1.1.0 // indirect
github.com/go-toolsmith/typep v1.1.0 // indirect
- github.com/go-viper/mapstructure/v2 v2.3.0 // indirect
- github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect
+ github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
+ github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect
github.com/gobwas/glob v0.2.3 // indirect
- github.com/gofrs/flock v0.12.1 // indirect
+ github.com/godoc-lint/godoc-lint v0.11.2 // indirect
+ github.com/gofrs/flock v0.13.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
- github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.4 // indirect
- github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect
- github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9 // indirect
- github.com/golangci/misspell v0.6.0 // indirect
- github.com/golangci/modinfo v0.3.4 // indirect
- github.com/golangci/plugin-module-register v0.1.1 // indirect
- github.com/golangci/revgrep v0.5.3 // indirect
- github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect
- github.com/google/gnostic-models v0.6.8 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
- github.com/google/s2a-go v0.1.8 // indirect
+ github.com/golangci/asciicheck v0.5.0 // indirect
+ github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect
+ github.com/golangci/go-printf-func-name v0.1.1 // indirect
+ github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect
+ github.com/golangci/golines v0.15.0 // indirect
+ github.com/golangci/misspell v0.8.0 // indirect
+ github.com/golangci/plugin-module-register v0.1.2 // indirect
+ github.com/golangci/revgrep v0.8.0 // indirect
+ github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e // indirect
+ github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e // indirect
+ github.com/google/gnostic-models v0.7.0 // indirect
+ github.com/google/go-cmp v0.7.0 // indirect
+ github.com/google/s2a-go v0.1.9 // indirect
github.com/google/uuid v1.6.0 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.3.3 // indirect
- github.com/googleapis/gax-go/v2 v2.13.0 // indirect
- github.com/gordonklaus/ineffassign v0.1.0 // indirect
+ github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect
+ github.com/googleapis/gax-go/v2 v2.15.0 // indirect
+ github.com/gordonklaus/ineffassign v0.2.0 // indirect
github.com/gostaticanalysis/analysisutil v0.7.1 // indirect
- github.com/gostaticanalysis/comment v1.4.2 // indirect
- github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect
- github.com/gostaticanalysis/nilerr v0.1.1 // indirect
- github.com/hashicorp/go-version v1.7.0 // indirect
- github.com/hashicorp/hcl v1.0.0 // indirect
+ github.com/gostaticanalysis/comment v1.5.0 // indirect
+ github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect
+ github.com/gostaticanalysis/nilerr v0.1.2 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect
+ github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect
+ github.com/hashicorp/go-version v1.8.0 // indirect
+ github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/hexops/gotextdiff v1.0.3 // indirect
github.com/huandu/xstrings v1.4.0 // indirect
github.com/iancoleman/strcase v0.3.0 // indirect
github.com/imdario/mergo v0.3.6 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
- github.com/jgautheron/goconst v1.7.1 // indirect
+ github.com/jgautheron/goconst v1.8.2 // indirect
github.com/jingyugao/rowserrcheck v1.1.1 // indirect
- github.com/jinzhu/copier v0.3.5 // indirect
- github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect
- github.com/jjti/go-spancheck v0.6.2 // indirect
+ github.com/jinzhu/copier v0.4.0 // indirect
+ github.com/jjti/go-spancheck v0.6.5 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
- github.com/julz/importas v0.1.0 // indirect
- github.com/karamaru-alpha/copyloopvar v1.1.0 // indirect
- github.com/kisielk/errcheck v1.7.0 // indirect
- github.com/kkHAIKE/contextcheck v1.1.5 // indirect
- github.com/kulti/thelper v0.6.3 // indirect
- github.com/kunwardeep/paralleltest v1.0.10 // indirect
+ github.com/julz/importas v0.2.0 // indirect
+ github.com/karamaru-alpha/copyloopvar v1.2.2 // indirect
+ github.com/kisielk/errcheck v1.10.0 // indirect
+ github.com/kkHAIKE/contextcheck v1.1.6 // indirect
+ github.com/kulti/thelper v0.7.1 // indirect
+ github.com/kunwardeep/paralleltest v1.0.15 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
- github.com/kyoh86/exportloopref v0.1.11 // indirect
- github.com/lasiar/canonicalheader v1.1.1 // indirect
- github.com/ldez/gomoddirectives v0.2.4 // indirect
- github.com/ldez/tagliatelle v0.5.0 // indirect
+ github.com/lasiar/canonicalheader v1.1.2 // indirect
+ github.com/ldez/exptostd v0.4.5 // indirect
+ github.com/ldez/gomoddirectives v0.8.0 // indirect
+ github.com/ldez/grignotin v0.10.1 // indirect
+ github.com/ldez/structtags v0.6.1 // indirect
+ github.com/ldez/tagliatelle v0.7.2 // indirect
+ github.com/ldez/usetesting v0.5.0 // indirect
github.com/leonklingele/grouper v1.1.2 // indirect
- github.com/lufeee/execinquery v1.2.1 // indirect
- github.com/macabu/inamedparam v0.1.3 // indirect
- github.com/magiconair/properties v1.8.7 // indirect
+ github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
+ github.com/macabu/inamedparam v0.2.0 // indirect
+ github.com/magiconair/properties v1.8.9 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
- github.com/maratori/testableexamples v1.0.0 // indirect
- github.com/maratori/testpackage v1.1.1 // indirect
- github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect
- github.com/mattn/go-colorable v0.1.13 // indirect
+ github.com/manuelarte/embeddedstructfieldcheck v0.4.0 // indirect
+ github.com/manuelarte/funcorder v0.5.0 // indirect
+ github.com/maratori/testableexamples v1.0.1 // indirect
+ github.com/maratori/testpackage v1.1.2 // indirect
+ github.com/matoous/godox v1.1.0 // indirect
+ github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
- github.com/mattn/go-runewidth v0.0.9 // indirect
- github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
- github.com/mgechev/revive v1.3.9 // indirect
+ github.com/mattn/go-runewidth v0.0.16 // indirect
+ github.com/mgechev/revive v1.15.0 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/moricho/tparallel v0.3.2 // indirect
+ github.com/muesli/termenv v0.16.0 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007 // indirect
github.com/nakabonne/nestif v0.3.1 // indirect
github.com/ncw/swift v1.0.53 // indirect
github.com/nishanths/exhaustive v0.12.0 // indirect
github.com/nishanths/predeclared v0.2.2 // indirect
- github.com/nunnatsa/ginkgolinter v0.16.2 // indirect
- github.com/olekukonko/tablewriter v0.0.5 // indirect
+ github.com/nunnatsa/ginkgolinter v0.23.0 // indirect
github.com/pascaldekloe/name v0.0.0-20180628100202-0fd16699aae1 // indirect
- github.com/pelletier/go-toml/v2 v2.2.3 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/pkg/errors v0.9.1 // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/polyfloyd/go-errorlint v1.6.0 // indirect
- github.com/prometheus/client_golang v1.16.0 // indirect
- github.com/prometheus/client_model v0.4.0 // indirect
- github.com/prometheus/common v0.44.0 // indirect
- github.com/prometheus/procfs v0.10.1 // indirect
+ 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/prometheus/client_golang v1.22.0 // 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/pseudomuto/protokit v0.2.0 // indirect
- github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect
- github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect
+ github.com/quasilyte/go-ruleguard v0.4.5 // indirect
+ github.com/quasilyte/go-ruleguard/dsl v0.3.23 // indirect
github.com/quasilyte/gogrep v0.5.0 // indirect
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect
- github.com/rs/zerolog v1.29.0 // indirect
- github.com/ryancurrah/gomodguard v1.3.5 // indirect
- github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect
- github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect
- github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect
+ github.com/raeperd/recvcheck v0.2.0 // indirect
+ github.com/rivo/uniseg v0.4.7 // indirect
+ github.com/rogpeppe/go-internal v1.14.1 // indirect
+ github.com/rs/zerolog v1.33.0 // indirect
+ github.com/ryancurrah/gomodguard v1.4.1 // indirect
+ github.com/ryanrolds/sqlclosecheck v0.6.0 // indirect
+ github.com/sagikazarmark/locafero v0.11.0 // indirect
+ github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect
+ github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect
github.com/sashamelentyev/interfacebloat v1.1.0 // indirect
- github.com/sashamelentyev/usestdlibvars v1.27.0 // indirect
- github.com/securego/gosec/v2 v2.21.2 // indirect
- github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect
- github.com/sirupsen/logrus v1.9.3 // indirect
+ github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect
+ github.com/securego/gosec/v2 v2.24.8-0.20260309165252-619ce2117e08 // indirect
+ github.com/sirupsen/logrus v1.9.4 // indirect
github.com/sivchari/containedctx v1.0.3 // indirect
- github.com/sivchari/tenv v1.10.0 // indirect
- github.com/sonatard/noctx v0.0.2 // indirect
+ github.com/sonatard/noctx v0.5.1 // indirect
+ github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
github.com/sourcegraph/go-diff v0.7.0 // indirect
- github.com/spf13/afero v1.11.0 // indirect
- github.com/spf13/cast v1.5.0 // indirect
- github.com/spf13/cobra v1.8.1 // indirect
- github.com/spf13/jwalterweatherman v1.1.0 // indirect
- github.com/spf13/pflag v1.0.5 // indirect
- github.com/spf13/viper v1.15.0 // indirect
+ github.com/spf13/afero v1.15.0 // indirect
+ github.com/spf13/cast v1.10.0 // indirect
+ github.com/spf13/cobra v1.10.2 // indirect
+ github.com/spf13/pflag v1.0.10 // indirect
+ github.com/spf13/viper v1.21.0 // indirect
+ github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect
github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect
- github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect
+ github.com/stbenjam/no-sprintf-host-port v0.3.1 // indirect
github.com/stretchr/objx v0.5.2 // indirect
- github.com/stretchr/testify v1.9.0 // indirect
- github.com/subosito/gotenv v1.4.2 // indirect
- github.com/tdakkota/asciicheck v0.2.0 // indirect
- github.com/tetafro/godot v1.4.17 // indirect
- github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 // indirect
- github.com/timonwong/loggercheck v0.9.4 // indirect
- github.com/tomarrell/wrapcheck/v2 v2.9.0 // indirect
+ github.com/stretchr/testify v1.11.1 // indirect
+ github.com/subosito/gotenv v1.6.0 // indirect
+ github.com/tetafro/godot v1.5.4 // indirect
+ github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 // indirect
+ github.com/timonwong/loggercheck v0.11.0 // indirect
+ github.com/tomarrell/wrapcheck/v2 v2.12.0 // indirect
github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect
- github.com/ultraware/funlen v0.1.0 // indirect
- github.com/ultraware/whitespace v0.1.1 // indirect
- github.com/uudashr/gocognit v1.1.3 // indirect
- github.com/xen0n/gosmopolitan v1.2.2 // indirect
+ github.com/ultraware/funlen v0.2.0 // indirect
+ github.com/ultraware/whitespace v0.2.0 // indirect
+ github.com/uudashr/gocognit v1.2.1 // indirect
+ github.com/uudashr/iface v1.4.1 // indirect
+ github.com/x448/float16 v0.8.4 // indirect
+ github.com/xen0n/gosmopolitan v1.3.0 // indirect
+ github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
github.com/yagipy/maintidx v1.0.0 // indirect
github.com/yeya24/promlinter v0.3.0 // indirect
github.com/ykadowak/zerologlint v0.1.5 // indirect
gitlab.com/bosi/decorder v0.4.2 // indirect
- go-simpler.org/musttag v0.12.2 // indirect
- go-simpler.org/sloglint v0.7.2 // indirect
- go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect
- go.opentelemetry.io/otel v1.29.0 // indirect
+ go-simpler.org/musttag v0.14.0 // indirect
+ go-simpler.org/sloglint v0.11.1 // indirect
+ go.augendre.info/arangolint v0.4.0 // indirect
+ go.augendre.info/fatcontext v0.9.0 // indirect
+ go.opentelemetry.io/auto/sdk v1.2.1 // indirect
+ go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
+ go.opentelemetry.io/otel v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
- go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.19.0 // indirect
- go.opentelemetry.io/otel/metric v1.29.0 // indirect
- go.opentelemetry.io/otel/sdk v1.28.0 // indirect
- go.opentelemetry.io/otel/trace v1.29.0 // indirect
- go.uber.org/automaxprocs v1.5.3 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect
+ go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 // indirect
+ go.opentelemetry.io/otel/metric v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect
+ go.opentelemetry.io/otel/trace v1.43.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.10.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
- go.uber.org/zap v1.25.0 // indirect
- golang.org/x/crypto v0.31.0 // indirect
- golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e // indirect
- golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f // indirect
- golang.org/x/mod v0.21.0 // indirect
- golang.org/x/net v0.33.0 // indirect
- golang.org/x/oauth2 v0.22.0 // indirect
- golang.org/x/sync v0.10.0 // indirect
- golang.org/x/sys v0.28.0 // indirect
- golang.org/x/term v0.27.0 // indirect
- golang.org/x/text v0.21.0 // indirect
- golang.org/x/time v0.6.0 // indirect
- golang.org/x/tools v0.24.0 // indirect
- google.golang.org/api v0.196.0 // indirect
- google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
- google.golang.org/grpc v1.66.0 // indirect
- google.golang.org/protobuf v1.34.2 // indirect
+ go.uber.org/zap v1.27.0 // indirect
+ go.yaml.in/yaml/v2 v2.4.2 // indirect
+ go.yaml.in/yaml/v3 v3.0.4 // indirect
+ golang.org/x/crypto v0.49.0 // indirect
+ golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect
+ golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358 // indirect
+ golang.org/x/mod v0.34.0 // indirect
+ golang.org/x/net v0.52.0 // indirect
+ golang.org/x/oauth2 v0.35.0 // indirect
+ golang.org/x/sync v0.20.0 // indirect
+ golang.org/x/sys v0.42.0 // indirect
+ golang.org/x/term v0.41.0 // indirect
+ golang.org/x/text v0.35.0 // indirect
+ golang.org/x/time v0.12.0 // indirect
+ golang.org/x/tools v0.43.0 // indirect
+ google.golang.org/api v0.239.0 // indirect
+ google.golang.org/genproto v0.0.0-20250603155806-513f23925822 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ google.golang.org/grpc v1.80.0 // indirect
+ google.golang.org/protobuf v1.36.11 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
- gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- honnef.co/go/tools v0.5.1 // indirect
- k8s.io/api v0.28.2 // indirect
- k8s.io/apimachinery v0.28.2 // indirect
- k8s.io/client-go v0.28.1 // indirect
- k8s.io/klog/v2 v2.100.1 // indirect
- k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect
- k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 // indirect
- mvdan.cc/gofumpt v0.7.0 // indirect
- mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect
- sigs.k8s.io/controller-runtime v0.0.0-00010101000000-000000000000 // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
- sigs.k8s.io/yaml v1.3.0 // indirect
+ honnef.co/go/tools v0.7.0 // indirect
+ k8s.io/api v0.34.1 // indirect
+ k8s.io/apimachinery v0.34.1 // indirect
+ k8s.io/client-go v0.34.1 // indirect
+ k8s.io/klog/v2 v2.130.1 // indirect
+ k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
+ k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect
+ mvdan.cc/gofumpt v0.9.2 // indirect
+ mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15 // indirect
+ sigs.k8s.io/controller-runtime v0.16.6 // indirect
+ sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
+ sigs.k8s.io/randfill v1.0.0 // indirect
+ sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
+ sigs.k8s.io/yaml v1.6.0 // indirect
)
replace (
+ github.com/flyteorg/flyte/flytestdlib => ../../../flytestdlib
github.com/pseudomuto/protoc-gen-doc => github.com/flyteorg/protoc-gen-doc v1.4.2
- sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.16.2
)
diff --git a/boilerplate/flyte/golang_support_tools/go.sum b/boilerplate/flyte/golang_support_tools/go.sum
index 14ccb22c672..d61da627983 100644
--- a/boilerplate/flyte/golang_support_tools/go.sum
+++ b/boilerplate/flyte/golang_support_tools/go.sum
@@ -1,32 +1,51 @@
-4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA=
-4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs=
-4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc=
-4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU=
-cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ=
-cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc=
-cloud.google.com/go/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U=
-cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk=
-cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
-cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
-cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY=
-cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY=
-cloud.google.com/go/iam v1.2.0 h1:kZKMKVNk/IsSSc/udOb83K0hL/Yh/Gcqpz+oAkoIFN8=
-cloud.google.com/go/iam v1.2.0/go.mod h1:zITGuWgsLZxd8OwAlX+eMFgZDXzBm7icj1PVTYG766Q=
-cloud.google.com/go/longrunning v0.6.0 h1:mM1ZmaNsQsnb+5n1DNPeL0KwQd9jQRqSqSDEkBZr+aI=
-cloud.google.com/go/longrunning v0.6.0/go.mod h1:uHzSZqW89h7/pasCWNYdUpwGz3PcVWhrWupreVPYLts=
-cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs=
-cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0=
-github.com/4meepo/tagalign v1.3.4 h1:P51VcvBnf04YkHzjfclN6BbsopfJR5rxs1n+5zHt+w8=
-github.com/4meepo/tagalign v1.3.4/go.mod h1:M+pnkHH2vG8+qhE5bVc/zeP7HS/j910Fwa9TUSyZVI0=
-github.com/Abirdcfly/dupword v0.1.1 h1:Bsxe0fIw6OwBtXMIncaTxCLHYO5BB+3mcsR5E8VXloY=
-github.com/Abirdcfly/dupword v0.1.1/go.mod h1:B49AcJdTYYkpd4HjgAcutNGG9HZ2JWwKunH9Y2BA6sM=
-github.com/Antonboom/errname v0.1.13 h1:JHICqsewj/fNckzrfVSe+T33svwQxmjC+1ntDsHOVvM=
-github.com/Antonboom/errname v0.1.13/go.mod h1:uWyefRYRN54lBg6HseYCFhs6Qjcy41Y3Jl/dVhA87Ns=
-github.com/Antonboom/nilnil v0.1.9 h1:eKFMejSxPSA9eLSensFmjW2XTgTwJMjZ8hUHtV4s/SQ=
-github.com/Antonboom/nilnil v0.1.9/go.mod h1:iGe2rYwCq5/Me1khrysB4nwI7swQvjclR8/YRPl5ihQ=
-github.com/Antonboom/testifylint v1.4.3 h1:ohMt6AHuHgttaQ1xb6SSnxCeK4/rnK7KKzbvs7DmEck=
-github.com/Antonboom/testifylint v1.4.3/go.mod h1:+8Q9+AOLsz5ZiQiiYujJKs9mNz398+M6UgslP4qgJLA=
+4d63.com/gocheckcompilerdirectives v1.3.0 h1:Ew5y5CtcAAQeTVKUVFrE7EwHMrTO6BggtEj8BZSjZ3A=
+4d63.com/gocheckcompilerdirectives v1.3.0/go.mod h1:ofsJ4zx2QAuIP/NO/NAh1ig6R1Fb18/GI7RVMwz7kAY=
+4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU=
+4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0=
+cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
+cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
+cloud.google.com/go v0.121.2 h1:v2qQpN6Dx9x2NmwrqlesOt3Ys4ol5/lFZ6Mg1B7OJCg=
+cloud.google.com/go v0.121.2/go.mod h1:nRFlrHq39MNVWu+zESP2PosMWA0ryJw8KUBZ2iZpxbw=
+cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI=
+cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ=
+cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
+cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
+cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
+cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
+cloud.google.com/go/iam v1.5.2 h1:qgFRAGEmd8z6dJ/qyEchAuL9jpswyODjA2lS+w234g8=
+cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE=
+cloud.google.com/go/logging v1.13.0 h1:7j0HgAp0B94o1YRDqiqm26w4q1rDMH7XNRU34lJXHYc=
+cloud.google.com/go/logging v1.13.0/go.mod h1:36CoKh6KA/M0PbhPKMq6/qety2DCAErbhXT62TuXALA=
+cloud.google.com/go/longrunning v0.6.7 h1:IGtfDWHhQCgCjwQjV9iiLnUta9LBCo8R9QmAFsS/PrE=
+cloud.google.com/go/longrunning v0.6.7/go.mod h1:EAFV3IZAKmM56TyiE6VAP3VoTzhZzySwI/YI1s/nRsY=
+cloud.google.com/go/monitoring v1.24.2 h1:5OTsoJ1dXYIiMiuL+sYscLc9BumrL3CarVLL7dd7lHM=
+cloud.google.com/go/monitoring v1.24.2/go.mod h1:x7yzPWcgDRnPEv3sI+jJGBkwl5qINf+6qY4eq0I9B4U=
+cloud.google.com/go/storage v1.53.0 h1:gg0ERZwL17pJ+Cz3cD2qS60w1WMDnwcm5YPAIQBHUAw=
+cloud.google.com/go/storage v1.53.0/go.mod h1:7/eO2a/srr9ImZW9k5uufcNahT2+fPb8w5it1i5boaA=
+cloud.google.com/go/trace v1.11.6 h1:2O2zjPzqPYAHrn3OKl029qlqG6W8ZdYaOWRyr8NgMT4=
+cloud.google.com/go/trace v1.11.6/go.mod h1:GA855OeDEBiBMzcckLPE2kDunIpC72N+Pq8WFieFjnI=
+codeberg.org/chavacava/garif v0.2.0 h1:F0tVjhYbuOCnvNcU3YSpO6b3Waw6Bimy4K0mM8y6MfY=
+codeberg.org/chavacava/garif v0.2.0/go.mod h1:P2BPbVbT4QcvLZrORc2T29szK3xEOlnl0GiPTJmEqBQ=
+codeberg.org/polyfloyd/go-errorlint v1.9.0 h1:VkdEEmA1VBpH6ecQoMR4LdphVI3fA4RrCh2an7YmodI=
+codeberg.org/polyfloyd/go-errorlint v1.9.0/go.mod h1:GPRRu2LzVijNn4YkrZYJfatQIdS+TrcK8rL5Xs24qw8=
+dev.gaijin.team/go/exhaustruct/v4 v4.0.0 h1:873r7aNneqoBB3IaFIzhvt2RFYTuHgmMjoKfwODoI1Y=
+dev.gaijin.team/go/exhaustruct/v4 v4.0.0/go.mod h1:aZ/k2o4Y05aMJtiux15x8iXaumE88YdiB0Ai4fXOzPI=
+dev.gaijin.team/go/golib v0.6.0 h1:v6nnznFTs4bppib/NyU1PQxobwDHwCXXl15P7DV5Zgo=
+dev.gaijin.team/go/golib v0.6.0/go.mod h1:uY1mShx8Z/aNHWDyAkZTkX+uCi5PdX7KsG1eDQa2AVE=
+github.com/4meepo/tagalign v1.4.3 h1:Bnu7jGWwbfpAie2vyl63Zup5KuRv21olsPIha53BJr8=
+github.com/4meepo/tagalign v1.4.3/go.mod h1:00WwRjiuSbrRJnSVeGWPLp2epS5Q/l4UEy0apLLS37c=
+github.com/Abirdcfly/dupword v0.1.7 h1:2j8sInznrje4I0CMisSL6ipEBkeJUJAmK1/lfoNGWrQ=
+github.com/Abirdcfly/dupword v0.1.7/go.mod h1:K0DkBeOebJ4VyOICFdppB23Q0YMOgVafM0zYW0n9lF4=
+github.com/AdminBenni/iota-mixing v1.0.0 h1:Os6lpjG2dp/AE5fYBPAA1zfa2qMdCAWwPMCgpwKq7wo=
+github.com/AdminBenni/iota-mixing v1.0.0/go.mod h1:i4+tpAaB+qMVIV9OK3m4/DAynOd5bQFaOu+2AhtBCNY=
+github.com/AlwxSin/noinlineerr v1.0.5 h1:RUjt63wk1AYWTXtVXbSqemlbVTb23JOSRiNsshj7TbY=
+github.com/AlwxSin/noinlineerr v1.0.5/go.mod h1:+QgkkoYrMH7RHvcdxdlI7vYYEdgeoFOVjU9sUhw/rQc=
+github.com/Antonboom/errname v1.1.1 h1:bllB7mlIbTVzO9jmSWVWLjxTEbGBVQ1Ff/ClQgtPw9Q=
+github.com/Antonboom/errname v1.1.1/go.mod h1:gjhe24xoxXp0ScLtHzjiXp0Exi1RFLKJb0bVBtWKCWQ=
+github.com/Antonboom/nilnil v1.1.1 h1:9Mdr6BYd8WHCDngQnNVV0b554xyisFioEKi30sksufQ=
+github.com/Antonboom/nilnil v1.1.1/go.mod h1:yCyAmSw3doopbOWhJlVci+HuyNRuHJKIv6V2oYQa8II=
+github.com/Antonboom/testifylint v1.6.4 h1:gs9fUEy+egzxkEbq9P4cpcMB6/G0DYdMeiFS87UiqmQ=
+github.com/Antonboom/testifylint v1.6.4/go.mod h1:YO33FROXX2OoUfwjz8g+gUxQXio5i9qpVy7nXGbxDD4=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc=
@@ -39,157 +58,195 @@ github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0 h1:Be6KInmFEKV81c0pO
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0/go.mod h1:WCPBHsOXfBVnivScjs2ypRfimjEW0qPVLGgJkZlrIOA=
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
-github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs=
-github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
-github.com/Crocmagnon/fatcontext v0.5.2 h1:vhSEg8Gqng8awhPju2w7MKHqMlg4/NI+gSDHtR3xgwA=
-github.com/Crocmagnon/fatcontext v0.5.2/go.mod h1:87XhRMaInHP44Q7Tlc7jkgKKB7kZAOPiDkFMdKCC+74=
-github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM=
-github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=
-github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 h1:/fTUt5vmbkAcMBt4YQiuC23cV0kEsN1MVMNqeOW43cU=
-github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0/go.mod h1:ONJg5sxcbsdQQ4pOW8TGdTidT2TMAUy/2Xhr8mrYaao=
+github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk=
+github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
+github.com/Djarvur/go-err113 v0.1.1 h1:eHfopDqXRwAi+YmCUas75ZE0+hoBHJ2GQNLYRSxao4g=
+github.com/Djarvur/go-err113 v0.1.1/go.mod h1:IaWJdYFLg76t2ihfflPZnM1LIQszWOsFDh2hhhAVF6k=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 h1:fYE9p3esPxA/C0rQ0AHhP0drtPXDRhaWiwg1DPqO7IU=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0/go.mod h1:BnBReJLvVYx2CS/UHOgVz2BXKXD9wsQPxZug20nZhd0=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0 h1:OqVGm6Ei3x5+yZmSJG1Mh2NwHvpVmZ08CB5qJhT9Nuk=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0/go.mod h1:SZiPHWGOOk3bl8tkevxkoiwPgsIl6CwrWcbwjfHZpdM=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 h1:6/0iUd0xrnX7qt+mLNRwg5c0PGv8wpE8K90ryANQwMI=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0/go.mod h1:otE2jQekW/PqXk1Awf5lmfokJx4uwuqcj1ab5SpGeW0=
github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
-github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0=
-github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
+github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
+github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
github.com/Masterminds/sprig v2.15.0+incompatible h1:0gSxPGWS9PAr7U2NsQ2YQg6juRDINkUyuvbb4b2Xm8w=
github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
+github.com/MirrexOne/unqueryvet v1.5.4 h1:38QOxShO7JmMWT+eCdDMbcUgGCOeJphVkzzRgyLJgsQ=
+github.com/MirrexOne/unqueryvet v1.5.4/go.mod h1:fs9Zq6eh1LRIhsDIsxf9PONVUjYdFHdtkHIgZdJnyPU=
github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJPdp74zmpA=
-github.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ=
-github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk=
-github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ=
-github.com/alecthomas/go-check-sumtype v0.1.4 h1:WCvlB3l5Vq5dZQTFmodqL2g68uHiSwwlWcT5a2FGK0c=
-github.com/alecthomas/go-check-sumtype v0.1.4/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ=
-github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk=
-github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
-github.com/alexkohler/nakedret/v2 v2.0.4 h1:yZuKmjqGi0pSmjGpOC016LtPJysIL0WEUiaXW5SUnNg=
-github.com/alexkohler/nakedret/v2 v2.0.4/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU=
-github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw=
-github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE=
+github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4=
+github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo=
+github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
+github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
+github.com/alecthomas/chroma/v2 v2.23.1 h1:nv2AVZdTyClGbVQkIzlDm/rnhk1E9bU9nXwmZ/Vk/iY=
+github.com/alecthomas/chroma/v2 v2.23.1/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o=
+github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU=
+github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E=
+github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs=
+github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
+github.com/alexkohler/nakedret/v2 v2.0.6 h1:ME3Qef1/KIKr3kWX3nti3hhgNxw6aqN5pZmQiFSsuzQ=
+github.com/alexkohler/nakedret/v2 v2.0.6/go.mod h1:l3RKju/IzOMQHmsEvXwkqMDzHHvurNQfAgE1eVmT40Q=
+github.com/alexkohler/prealloc v1.1.0 h1:cKGRBqlXw5iyQGLYhrXrDlcHxugXpTq4tQ5c91wkf8M=
+github.com/alexkohler/prealloc v1.1.0/go.mod h1:fT39Jge3bQrfA7nPMDngUfvUbQGQeJyGQnR+913SCig=
+github.com/alfatraining/structtag v1.0.0 h1:2qmcUqNcCoyVJ0up879K614L9PazjBSFruTB0GOFjCc=
+github.com/alfatraining/structtag v1.0.0/go.mod h1:p3Xi5SwzTi+Ryj64DqjLWz7XurHxbGsq6y3ubePJPus=
github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw=
github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I=
+github.com/alingse/nilnesserr v0.2.0 h1:raLem5KG7EFVb4UIDAXgrv3N2JIaffeKNtcEXkEWd/w=
+github.com/alingse/nilnesserr v0.2.0/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg=
github.com/alvaroloes/enumer v1.1.2 h1:5khqHB33TZy1GWCO/lZwcroBFh7u+0j40T83VUbfAMY=
github.com/alvaroloes/enumer v1.1.2/go.mod h1:FxrjvuXoDAx9isTJrv4c+T410zFi0DtXIT0m65DJ+Wo=
github.com/aokoli/goutils v1.0.1 h1:7fpzNGoJ3VA8qcrm++XEE1QUe0mIwNeLa02Nwq7RDkg=
github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ=
-github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY=
-github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU=
-github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s=
-github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI=
-github.com/aws/aws-sdk-go v1.44.2 h1:5VBk5r06bgxgRKVaUtm1/4NT/rtrnH2E4cnAYv5zgQc=
-github.com/aws/aws-sdk-go v1.44.2/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
-github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=
-github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
+github.com/ashanbrown/forbidigo/v2 v2.3.0 h1:OZZDOchCgsX5gvToVtEBoV2UWbFfI6RKQTir2UZzSxo=
+github.com/ashanbrown/forbidigo/v2 v2.3.0/go.mod h1:5p6VmsG5/1xx3E785W9fouMxIOkvY2rRV9nMdWadd6c=
+github.com/ashanbrown/makezero/v2 v2.1.0 h1:snuKYMbqosNokUKm+R6/+vOPs8yVAi46La7Ck6QYSaE=
+github.com/ashanbrown/makezero/v2 v2.1.0/go.mod h1:aEGT/9q3S8DHeE57C88z2a6xydvgx8J5hgXIGWgo0MY=
+github.com/aws/aws-sdk-go v1.47.11 h1:Dol+MA+hQblbnXUI3Vk9qvoekU6O1uDEuAItezjiWNQ=
+github.com/aws/aws-sdk-go v1.47.11/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
+github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
+github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
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/bkielbasa/cyclop v1.2.1 h1:AeF71HZDob1P2/pRm1so9cd1alZnrpyc4q2uP2l0gJY=
-github.com/bkielbasa/cyclop v1.2.1/go.mod h1:K/dT/M0FPAiYjBgQGau7tz+3TMh4FWAEqlMhzFWCrgM=
+github.com/bkielbasa/cyclop v1.2.3 h1:faIVMIGDIANuGPWH031CZJTi2ymOQBULs9H21HSMa5w=
+github.com/bkielbasa/cyclop v1.2.3/go.mod h1:kHTwA9Q0uZqOADdupvcFJQtp/ksSnytRMe8ztxG8Fuo=
github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M=
github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k=
-github.com/bombsimon/wsl/v4 v4.4.1 h1:jfUaCkN+aUpobrMO24zwyAMwMAV5eSziCkOKEauOLdw=
-github.com/bombsimon/wsl/v4 v4.4.1/go.mod h1:Xu/kDxGZTofQcDGCtQe9KCzhHphIe0fDuyWTxER9Feo=
-github.com/breml/bidichk v0.2.7 h1:dAkKQPLl/Qrk7hnP6P+E0xOodrq8Us7+U0o4UBOAlQY=
-github.com/breml/bidichk v0.2.7/go.mod h1:YodjipAGI9fGcYM7II6wFvGhdMYsC5pHDlGzqvEW3tQ=
-github.com/breml/errchkjson v0.3.6 h1:VLhVkqSBH96AvXEyclMR37rZslRrY2kcyq+31HCsVrA=
-github.com/breml/errchkjson v0.3.6/go.mod h1:jhSDoFheAF2RSDOlCfhHO9KqhZgAYLyvHe7bRCX8f/U=
-github.com/butuzov/ireturn v0.3.0 h1:hTjMqWw3y5JC3kpnC5vXmFJAWI/m31jaCYQqzkS6PL0=
-github.com/butuzov/ireturn v0.3.0/go.mod h1:A09nIiwiqzN/IoVo9ogpa0Hzi9fex1kd9PSD6edP5ZA=
-github.com/butuzov/mirror v1.2.0 h1:9YVK1qIjNspaqWutSv8gsge2e/Xpq1eqEkslEUHy5cs=
-github.com/butuzov/mirror v1.2.0/go.mod h1:DqZZDtzm42wIAIyHXeN8W/qb1EPlb9Qn/if9icBOpdQ=
-github.com/catenacyber/perfsprint v0.7.1 h1:PGW5G/Kxn+YrN04cRAZKC+ZuvlVwolYMrIyyTJ/rMmc=
-github.com/catenacyber/perfsprint v0.7.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50=
-github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg=
-github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60=
-github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/bombsimon/wsl/v4 v4.7.0 h1:1Ilm9JBPRczjyUs6hvOPKvd7VL1Q++PL8M0SXBDf+jQ=
+github.com/bombsimon/wsl/v4 v4.7.0/go.mod h1:uV/+6BkffuzSAVYD+yGyld1AChO7/EuLrCF/8xTiapg=
+github.com/bombsimon/wsl/v5 v5.6.0 h1:4z+/sBqC5vUmSp1O0mS+czxwH9+LKXtCWtHH9rZGQL8=
+github.com/bombsimon/wsl/v5 v5.6.0/go.mod h1:Uqt2EfrMj2NV8UGoN1f1Y3m0NpUVCsUdrNCdet+8LvU=
+github.com/breml/bidichk v0.3.3 h1:WSM67ztRusf1sMoqH6/c4OBCUlRVTKq+CbSeo0R17sE=
+github.com/breml/bidichk v0.3.3/go.mod h1:ISbsut8OnjB367j5NseXEGGgO/th206dVa427kR8YTE=
+github.com/breml/errchkjson v0.4.1 h1:keFSS8D7A2T0haP9kzZTi7o26r7kE3vymjZNeNDRDwg=
+github.com/breml/errchkjson v0.4.1/go.mod h1:a23OvR6Qvcl7DG/Z4o0el6BRAjKnaReoPQFciAl9U3s=
+github.com/butuzov/ireturn v0.4.0 h1:+s76bF/PfeKEdbG8b54aCocxXmi0wvYdOVsWxVO7n8E=
+github.com/butuzov/ireturn v0.4.0/go.mod h1:ghI0FrCmap8pDWZwfPisFD1vEc56VKH4NpQUxDHta70=
+github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc=
+github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI=
+github.com/catenacyber/perfsprint v0.10.1 h1:u7Riei30bk46XsG8nknMhKLXG9BcXz3+3tl/WpKm0PQ=
+github.com/catenacyber/perfsprint v0.10.1/go.mod h1:DJTGsi/Zufpuus6XPGJyKOTMELe347o6akPvWG9Zcsc=
+github.com/ccojocar/zxcvbn-go v1.0.4 h1:FWnCIRMXPj43ukfX000kvBZvV6raSxakYr1nzyNrUcc=
+github.com/ccojocar/zxcvbn-go v1.0.4/go.mod h1:3GxGX+rHmueTUMvm5ium7irpyjmm7ikxYFOSJB21Das=
+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/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
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/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4=
-github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ=
-github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc=
-github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww=
+github.com/charithe/durationcheck v0.0.11 h1:g1/EX1eIiKS57NTWsYtHDZ/APfeXKhye1DidBcABctk=
+github.com/charithe/durationcheck v0.0.11/go.mod h1:x5iZaixRNl8ctbM+3B2RrPG5t856TxRyVQEnbIEM2X4=
+github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
+github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk=
+github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
+github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
+github.com/charmbracelet/x/ansi v0.10.1 h1:rL3Koar5XvX0pHGfovN03f5cxLbCF2YvLeyz7D2jVDQ=
+github.com/charmbracelet/x/ansi v0.10.1/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE=
+github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8=
+github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
+github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
+github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927 h1:SKI1/fuSdodxmNNyVBR8d7X/HuLnRpvvFO0AgyQk764=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
github.com/chigopher/pathlib v0.19.1 h1:RoLlUJc0CqBGwq239cilyhxPNLXTK+HXoASGyGznx5A=
github.com/chigopher/pathlib v0.19.1/go.mod h1:tzC1dZLW8o33UQpWkNkhvPwL5n4yyFRFm/jL1YGWFvY=
-github.com/ckaznocha/intrange v0.2.0 h1:FykcZuJ8BD7oX93YbO1UY9oZtkRbp+1/kJcDjkefYLs=
-github.com/ckaznocha/intrange v0.2.0/go.mod h1:r5I7nUlAAG56xmkOpw4XVr16BXhwYTUdcuRFeevn1oE=
-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/ckaznocha/intrange v0.3.1 h1:j1onQyXvHUsPWujDH6WIjhyH26gkRt/txNlV7LspvJs=
+github.com/ckaznocha/intrange v0.3.1/go.mod h1:QVepyz1AkUoFQkpEqksSYpNpUo3c5W7nWh/s6SHIJJk=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
github.com/coocood/freecache v1.1.1 h1:uukNF7QKCZEdZ9gAV7WQzvh0SbjwdMF6m3x3rxEkaPc=
github.com/coocood/freecache v1.1.1/go.mod h1:OKrEjkGVoxZhyWAJoeFi5BMLUJm2Tit0kpGkIr7NGYY=
-github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
-github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo=
-github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc=
-github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c=
-github.com/daixiang0/gci v0.13.5/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk=
+github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs=
+github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88=
+github.com/daixiang0/gci v0.13.7 h1:+0bG5eK9vlI08J+J/NWGbWPTNiXPG4WhNLJOkSxWITQ=
+github.com/daixiang0/gci v0.13.7/go.mod h1:812WVN6JLFY9S6Tv76twqmNqevN0pa3SX3nih0brVzQ=
+github.com/dave/dst v0.27.3 h1:P1HPoMza3cMEquVf9kKy8yXsFirry4zEnWOdYPOoIzY=
+github.com/dave/dst v0.27.3/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEyc=
+github.com/dave/jennifer v1.7.1 h1:B4jJJDHelWcDhlRQxWeo0Npa/pYKBLrirAQoTN45txo=
+github.com/dave/jennifer v1.7.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc=
github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/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/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8=
github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY=
-github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE=
-github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
-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/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ=
+github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
+github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU=
+github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
+github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=
+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/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=
+github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=
github.com/envoyproxy/protoc-gen-validate v0.3.0-java/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
-github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
+github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=
+github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
github.com/ernesto-jimenez/gogen v0.0.0-20180125220232-d7d4131e6607 h1:cTavhURetDkezJCvxFggiyLeP40Mrk/TtVg2+ycw1Es=
github.com/ernesto-jimenez/gogen v0.0.0-20180125220232-d7d4131e6607/go.mod h1:Cg4fM0vhYWOZdgM7RIOSTRNIc8/VT7CXClC3Ni86lu4=
github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q=
github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A=
-github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww=
-github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4=
-github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
-github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
+github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
+github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
+github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
+github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
+github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w=
+github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE=
github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6tUTYIdRA=
-github.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw=
-github.com/flyteorg/flyte/flytestdlib v1.11.0 h1:DxM/sf6H0ong8LIjgh0YwXK+abnGV8kWVi6EgfVCkO8=
-github.com/flyteorg/flyte/flytestdlib v1.11.0/go.mod h1:AmgNCq/tGEDwVfilW1nFtgPQn8vQ9gcDu6SNwz1YY+M=
+github.com/firefart/nonamedreturns v1.0.6 h1:vmiBcKV/3EqKY3ZiPxCINmpS431OcE1S47AQUwhrg8E=
+github.com/firefart/nonamedreturns v1.0.6/go.mod h1:R8NisJnSIpvPWheCq0mNRXJok6D8h7fagJTF8EMEwCo=
github.com/flyteorg/protoc-gen-doc v1.4.2 h1:Otw0F+RHaPQ8XlpzhLLgjsCMcrAIcMO01Zh+ALe3rrE=
github.com/flyteorg/protoc-gen-doc v1.4.2/go.mod h1:exDTOVwqpp30eV/EDPFLZy3Pwr2sn6hBC1WIYH/UbIg=
-github.com/flyteorg/stow v0.3.10 h1:uEe+tI+CGKn21H93uXp9z05hqynEki2BO9KkW/GweY8=
-github.com/flyteorg/stow v0.3.10/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM=
-github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY=
-github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
-github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
-github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
+github.com/flyteorg/stow v0.3.12 h1:RRXI5RUdxaK6A46HrO0D2r14cRlW1lJRL6qyzqpVMPU=
+github.com/flyteorg/stow v0.3.12/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
+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.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
+github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
+github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo=
github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA=
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/ghostiam/protogetter v0.3.6 h1:R7qEWaSgFCsy20yYHNIJsU9ZOb8TziSRRxuAOTVKeOk=
-github.com/ghostiam/protogetter v0.3.6/go.mod h1:7lpeDnEJ1ZjL/YtyoN99ljO4z0pd3H0d18/t2dPBxHw=
-github.com/go-critic/go-critic v0.11.4 h1:O7kGOCx0NDIni4czrkRIXTnit0mkyKOCePh3My6OyEU=
-github.com/go-critic/go-critic v0.11.4/go.mod h1:2QAdo4iuLik5S9YG0rT4wcZ8QxwHYkrr6/2MWAiv/vc=
-github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/ghostiam/protogetter v0.3.20 h1:oW7OPFit2FxZOpmMRPP9FffU4uUpfeE/rEdE1f+MzD0=
+github.com/ghostiam/protogetter v0.3.20/go.mod h1:FjIu5Yfs6FT391m+Fjp3fbAYJ6rkL/J6ySpZBfnODuI=
+github.com/go-critic/go-critic v0.14.3 h1:5R1qH2iFeo4I/RJU8vTezdqs08Egi4u5p6vOESA0pog=
+github.com/go-critic/go-critic v0.14.3/go.mod h1:xwntfW6SYAd7h1OqDzmN6hBX/JxsEKl5up/Y2bsxgVQ=
+github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA=
+github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
-github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/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-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo=
github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA=
-github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
+github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
+github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
-github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
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-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI=
github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow=
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
@@ -214,104 +271,103 @@ github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQi
github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ=
github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus=
github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig=
-github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk=
-github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
-github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U=
-github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=
+github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro=
+github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
+github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY=
+github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
-github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E=
-github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0=
+github.com/godoc-lint/godoc-lint v0.11.2 h1:Bp0FkJWoSdNsBikdNgIcgtaoo+xz6I/Y9s5WSBQUeeM=
+github.com/godoc-lint/godoc-lint v0.11.2/go.mod h1:iVpGdL1JCikNH2gGeAn3Hh+AgN5Gx/I/cxV+91L41jo=
+github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw=
+github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0=
github.com/gogo/protobuf v1.1.1/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/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
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.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
-github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM=
-github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk=
-github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9 h1:/1322Qns6BtQxUZDTAT4SdcoxknUki7IAoK4SAXr8ME=
-github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9/go.mod h1:Oesb/0uFAyWoaw1U1qS5zyjCg5NP9C9iwjnI4tIsXEE=
-github.com/golangci/golangci-lint v1.61.0 h1:VvbOLaRVWmyxCnUIMTbf1kDsaJbTzH20FAMXTAlQGu8=
-github.com/golangci/golangci-lint v1.61.0/go.mod h1:e4lztIrJJgLPhWvFPDkhiMwEFRrWlmFbrZea3FsJyN8=
-github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs=
-github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo=
-github.com/golangci/modinfo v0.3.4 h1:oU5huX3fbxqQXdfspamej74DFX0kyGLkw1ppvXoJ8GA=
-github.com/golangci/modinfo v0.3.4/go.mod h1:wytF1M5xl9u0ij8YSvhkEVPP3M5Mc7XLl1pxH3B2aUM=
-github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c=
-github.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc=
-github.com/golangci/revgrep v0.5.3 h1:3tL7c1XBMtWHHqVpS5ChmiAAoe4PF/d5+ULzV9sLAzs=
-github.com/golangci/revgrep v0.5.3/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k=
-github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs=
-github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ=
-github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
-github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
-github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/golangci/asciicheck v0.5.0 h1:jczN/BorERZwK8oiFBOGvlGPknhvq0bjnysTj4nUfo0=
+github.com/golangci/asciicheck v0.5.0/go.mod h1:5RMNAInbNFw2krqN6ibBxN/zfRFa9S6tA1nPdM0l8qQ=
+github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 h1:WUvBfQL6EW/40l6OmeSBYQJNSif4O11+bmWEz+C7FYw=
+github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E=
+github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarogrvjO9AfiW3B4U=
+github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss=
+github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE=
+github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY=
+github.com/golangci/golangci-lint/v2 v2.11.4 h1:GK+UlZBN5y7rh2PBnHA93XLSX6RaF7uhzJQ3JwU1wuA=
+github.com/golangci/golangci-lint/v2 v2.11.4/go.mod h1:ODQDCASMA3VqfZYIbbQLpTRTzV7O/vjmIRF6u8NyFwI=
+github.com/golangci/golines v0.15.0 h1:Qnph25g8Y1c5fdo1X7GaRDGgnMHgnxh4Gk4VfPTtRx0=
+github.com/golangci/golines v0.15.0/go.mod h1:AZjXd23tbHMpowhtnGlj9KCNsysj72aeZVVHnVcZx10=
+github.com/golangci/misspell v0.8.0 h1:qvxQhiE2/5z+BVRo1kwYA8yGz+lOlu5Jfvtx2b04Jbg=
+github.com/golangci/misspell v0.8.0/go.mod h1:WZyyI2P3hxPY2UVHs3cS8YcllAeyfquQcKfdeE9AFVg=
+github.com/golangci/plugin-module-register v0.1.2 h1:e5WM6PO6NIAEcij3B053CohVp3HIYbzSuP53UAYgOpg=
+github.com/golangci/plugin-module-register v0.1.2/go.mod h1:1+QGTsKBvAIvPvoY/os+G5eoqxWn70HYDm2uvUyGuVw=
+github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s=
+github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k=
+github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e h1:ai0EfmVYE2bRA5htgAG9r7s3tHsfjIhN98WshBTJ9jM=
+github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e/go.mod h1:Vrn4B5oR9qRwM+f54koyeH3yzphlecwERs0el27Fr/s=
+github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e h1:gD6P7NEo7Eqtt0ssnqSJNNndxe69DOQ24A5h7+i3KpM=
+github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e/go.mod h1:h+wZwLjUTJnm/P2rwlbJdRPZXOzaT36/FwnPnY2inzc=
+github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
+github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
github.com/google/go-cmp v0.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.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/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.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-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/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/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=
github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
-github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 h1:5iH8iuqE5apketRbSFBy+X1V0o+l+8NF1avt4HWl7cA=
-github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
-github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM=
-github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
+github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 h1:z2ogiKUYzX5Is6zr/vP9vJGqPwcdqsWjOt+V8J7+bTc=
+github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI=
+github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=
+github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=
github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/googleapis/enterprise-certificate-proxy v0.3.3 h1:QRje2j5GZimBzlbhGA2V2QlGNgL8G6e+wGo/+/2bWI0=
-github.com/googleapis/enterprise-certificate-proxy v0.3.3/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA=
-github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s=
-github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A=
-github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s=
-github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=
+github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4=
+github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA=
+github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo=
+github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc=
+github.com/gordonklaus/ineffassign v0.2.0 h1:Uths4KnmwxNJNzq87fwQQDDnbNb7De00VOk9Nu0TySs=
+github.com/gordonklaus/ineffassign v0.2.0/go.mod h1:TIpymnagPSexySzs7F9FnO1XFTy8IT3a59vmZp5Y9Lw=
github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk=
github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc=
-github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado=
-github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q=
github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM=
-github.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70=
-github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak=
-github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk=
-github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A=
+github.com/gostaticanalysis/comment v1.5.0 h1:X82FLl+TswsUMpMh17srGRuKaaXprTaytmEpgnKIDu8=
+github.com/gostaticanalysis/comment v1.5.0/go.mod h1:V6eb3gpCv9GNVqb6amXzEUX3jXLVK/AdA+IrAMSqvEc=
+github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk=
+github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY=
+github.com/gostaticanalysis/nilerr v0.1.2 h1:S6nk8a9N8g062nsx63kUkF6AzbHGw7zzyHMcpu52xQU=
+github.com/gostaticanalysis/nilerr v0.1.2/go.mod h1:A19UHhoY3y8ahoL7YKz6sdjDtduwTSI4CsymaC2htPA=
github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M=
-github.com/gostaticanalysis/testutil v0.4.0 h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY=
-github.com/gostaticanalysis/testutil v0.4.0/go.mod h1:bLIoPefWXrRi/ssLFWX1dx7Repi5x3CuviD3dgAZaBU=
+github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8=
+github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=
+github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo=
+github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw=
+github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
+github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
-github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
+github.com/hashicorp/go-version v1.8.0 h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bPle2i4=
+github.com/hashicorp/go-version v1.8.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
+github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
+github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
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/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo=
@@ -324,17 +380,14 @@ github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28=
github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
-github.com/jgautheron/goconst v1.7.1 h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5Jkk=
-github.com/jgautheron/goconst v1.7.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4=
+github.com/jgautheron/goconst v1.8.2 h1:y0XF7X8CikZ93fSNT6WBTb/NElBu9IjaY7CCYQrCMX4=
+github.com/jgautheron/goconst v1.8.2/go.mod h1:A0oxgBCHy55NQn6sYpO7UdnA9p+h7cPtoOZUmvNIako=
github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs=
github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c=
-github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg=
-github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
-github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48=
-github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0=
-github.com/jjti/go-spancheck v0.6.2 h1:iYtoxqPMzHUPp7St+5yA8+cONdyXD3ug6KK15n7Pklk=
-github.com/jjti/go-spancheck v0.6.2/go.mod h1:+X7lvIrR5ZdUTkxFYqzJ0abr8Sb5LOo80uOhWNqIrYA=
+github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8=
+github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
+github.com/jjti/go-spancheck v0.6.5 h1:lmi7pKxa37oKYIMScialXUK6hP3iY5F1gu+mLBPgYB8=
+github.com/jjti/go-spancheck v0.6.5/go.mod h1:aEogkeatBrbYsyW6y5TgDfihCulDYciL1B7rG2vSsrU=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
@@ -343,16 +396,16 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY=
-github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0=
-github.com/karamaru-alpha/copyloopvar v1.1.0 h1:x7gNyKcC2vRBO1H2Mks5u1VxQtYvFiym7fCjIP8RPos=
-github.com/karamaru-alpha/copyloopvar v1.1.0/go.mod h1:u7CIfztblY0jZLOQZgH3oYsJzpC2A7S6u/lfgSXHy0k=
+github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ=
+github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY=
+github.com/karamaru-alpha/copyloopvar v1.2.2 h1:yfNQvP9YaGQR7VaWLYcfZUlRP2eo2vhExWKxD/fP6q0=
+github.com/karamaru-alpha/copyloopvar v1.2.2/go.mod h1:oY4rGZqZ879JkJMtX3RRkcXRkmUvH0x35ykgaKgsgJY=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
-github.com/kisielk/errcheck v1.7.0 h1:+SbscKmWJ5mOK/bO1zS60F5I9WwZDWOfRsC4RwfwRV0=
-github.com/kisielk/errcheck v1.7.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ=
+github.com/kisielk/errcheck v1.10.0 h1:Lvs/YAHP24YKg08LA8oDw2z9fJVme090RAXd90S+rrw=
+github.com/kisielk/errcheck v1.10.0/go.mod h1:kQxWMMVZgIkDq7U8xtG/n2juOjbLgZtedi0D+/VL/i8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/kkHAIKE/contextcheck v1.1.5 h1:CdnJh63tcDe53vG+RebdpdXJTc9atMgGqdx8LXxiilg=
-github.com/kkHAIKE/contextcheck v1.1.5/go.mod h1:O930cpht4xb1YQpK+1+AgoM3mFsvxr7uyFptcnWTYUA=
+github.com/kkHAIKE/contextcheck v1.1.6 h1:7HIyRcnyzxL9Lz06NGhiKvenXq7Zw6Q0UQu/ttjfJCE=
+github.com/kkHAIKE/contextcheck v1.1.6/go.mod h1:3dDbMRNBFaq8HFXWC1JyvDSPm43CmE6IuHam8Wr0rkg=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -360,51 +413,59 @@ 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/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs=
-github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I=
-github.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCTdvWJ/lDDs=
-github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY=
+github.com/kulti/thelper v0.7.1 h1:fI8QITAoFVLx+y+vSyuLBP+rcVIB8jKooNSCT2EiI98=
+github.com/kulti/thelper v0.7.1/go.mod h1:NsMjfQEy6sd+9Kfw8kCP61W1I0nerGSYSFnGaxQkcbs=
+github.com/kunwardeep/paralleltest v1.0.15 h1:ZMk4Qt306tHIgKISHWFJAO1IDQJLc6uDyJMLyncOb6w=
+github.com/kunwardeep/paralleltest v1.0.15/go.mod h1:di4moFqtfz3ToSKxhNjhOZL+696QtJGCFe132CbBLGk=
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/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ=
-github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA=
-github.com/lasiar/canonicalheader v1.1.1 h1:wC+dY9ZfiqiPwAexUApFush/csSPXeIi4QqyxXmng8I=
-github.com/lasiar/canonicalheader v1.1.1/go.mod h1:cXkb3Dlk6XXy+8MVQnF23CYKWlyA7kfQhSw2CcZtZb0=
-github.com/ldez/gomoddirectives v0.2.4 h1:j3YjBIjEBbqZ0NKtBNzr8rtMHTOrLPeiwTkfUJZ3alg=
-github.com/ldez/gomoddirectives v0.2.4/go.mod h1:oWu9i62VcQDYp9EQ0ONTfqLNh+mDLWWDO+SO0qSQw5g=
-github.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo=
-github.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4=
+github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4=
+github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI=
+github.com/ldez/exptostd v0.4.5 h1:kv2ZGUVI6VwRfp/+bcQ6Nbx0ghFWcGIKInkG/oFn1aQ=
+github.com/ldez/exptostd v0.4.5/go.mod h1:QRjHRMXJrCTIm9WxVNH6VW7oN7KrGSht69bIRwvdFsM=
+github.com/ldez/gomoddirectives v0.8.0 h1:JqIuTtgvFC2RdH1s357vrE23WJF2cpDCPFgA/TWDGpk=
+github.com/ldez/gomoddirectives v0.8.0/go.mod h1:jutzamvZR4XYJLr0d5Honycp4Gy6GEg2mS9+2YX3F1Q=
+github.com/ldez/grignotin v0.10.1 h1:keYi9rYsgbvqAZGI1liek5c+jv9UUjbvdj3Tbn5fn4o=
+github.com/ldez/grignotin v0.10.1/go.mod h1:UlDbXFCARrXbWGNGP3S5vsysNXAPhnSuBufpTEbwOas=
+github.com/ldez/structtags v0.6.1 h1:bUooFLbXx41tW8SvkfwfFkkjPYvFFs59AAMgVg6DUBk=
+github.com/ldez/structtags v0.6.1/go.mod h1:YDxVSgDy/MON6ariaxLF2X09bh19qL7MtGBN5MrvbdY=
+github.com/ldez/tagliatelle v0.7.2 h1:KuOlL70/fu9paxuxbeqlicJnCspCRjH0x8FW+NfgYUk=
+github.com/ldez/tagliatelle v0.7.2/go.mod h1:PtGgm163ZplJfZMZ2sf5nhUT170rSuPgBimoyYtdaSI=
+github.com/ldez/usetesting v0.5.0 h1:3/QtzZObBKLy1F4F8jLuKJiKBjjVFi1IavpoWbmqLwc=
+github.com/ldez/usetesting v0.5.0/go.mod h1:Spnb4Qppf8JTuRgblLrEWb7IE6rDmUpGvxY3iRrzvDQ=
github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY=
github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA=
-github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM=
-github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM=
-github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk=
-github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I=
-github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
-github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
+github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
+github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
+github.com/macabu/inamedparam v0.2.0 h1:VyPYpOc10nkhI2qeNUdh3Zket4fcZjEWe35poddBCpE=
+github.com/macabu/inamedparam v0.2.0/go.mod h1:+Pee9/YfGe5LJ62pYXqB89lJ+0k5bsR8Wgz/C0Zlq3U=
+github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM=
+github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI=
-github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE=
-github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04=
-github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc=
-github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE=
-github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s=
+github.com/manuelarte/embeddedstructfieldcheck v0.4.0 h1:3mAIyaGRtjK6EO9E73JlXLtiy7ha80b2ZVGyacxgfww=
+github.com/manuelarte/embeddedstructfieldcheck v0.4.0/go.mod h1:z8dFSyXqp+fC6NLDSljRJeNQJJDWnY7RoWFzV3PC6UM=
+github.com/manuelarte/funcorder v0.5.0 h1:llMuHXXbg7tD0i/LNw8vGnkDTHFpTnWqKPI85Rknc+8=
+github.com/manuelarte/funcorder v0.5.0/go.mod h1:Yt3CiUQthSBMBxjShjdXMexmzpP8YGvGLjrxJNkO2hA=
+github.com/maratori/testableexamples v1.0.1 h1:HfOQXs+XgfeRBJ+Wz0XfH+FHnoY9TVqL6Fcevpzy4q8=
+github.com/maratori/testableexamples v1.0.1/go.mod h1:XE2F/nQs7B9N08JgyRmdGjYVGqxWwClLPCGSQhXQSrQ=
+github.com/maratori/testpackage v1.1.2 h1:ffDSh+AgqluCLMXhM19f/cpvQAKygKAJXFl9aUjmbqs=
+github.com/maratori/testpackage v1.1.2/go.mod h1:8F24GdVDFW5Ew43Et02jamrVMNXLUNaOynhDssITGfc=
+github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4=
+github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs=
github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE=
github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU=
-github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
-github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
+github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
-github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
-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/mgechev/revive v1.3.9 h1:18Y3R4a2USSBF+QZKFQwVkBROUda7uoBlkEuBD+YD1A=
-github.com/mgechev/revive v1.3.9/go.mod h1:+uxEIr5UH0TjXWHTno3xh4u7eg6jDpXKzQccA9UGhHU=
+github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
+github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/mgechev/revive v1.15.0 h1:vJ0HzSBzfNyPbHKolgiFjHxLek9KUijhqh42yGoqZ8Q=
+github.com/mgechev/revive v1.15.0/go.mod h1:LlAKO3QQe9OJ0pVZzI2GPa8CbXGZ/9lNpCGvK4T/a8A=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
@@ -412,10 +473,13 @@ github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR
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 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI=
github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U=
+github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
+github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
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-proto-validators v0.0.0-20180403085117-0950a7990007 h1:28i1IjGcx8AofiB4N3q5Yls55VEaitzuEPkFJEVgGkA=
@@ -428,14 +492,12 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK
github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs=
github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk=
github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c=
-github.com/nunnatsa/ginkgolinter v0.16.2 h1:8iLqHIZvN4fTLDC0Ke9tbSZVcyVHoBs0HIbnVSxfHJk=
-github.com/nunnatsa/ginkgolinter v0.16.2/go.mod h1:4tWRinDN1FeJgU+iJANW/kz7xKN5nYRAOfJDQUS9dOQ=
-github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
-github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
-github.com/onsi/ginkgo/v2 v2.20.2 h1:7NVCeyIWROIAheY21RLS+3j2bb52W0W82tkberYytp4=
-github.com/onsi/ginkgo/v2 v2.20.2/go.mod h1:K9gyxPIlb+aIvnZ8bd9Ak+YP18w3APlR+5coaZoE2ag=
-github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8=
-github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc=
+github.com/nunnatsa/ginkgolinter v0.23.0 h1:x3o4DGYOWbBMP/VdNQKgSj+25aJKx2Pe6lHr8gBcgf8=
+github.com/nunnatsa/ginkgolinter v0.23.0/go.mod h1:9qN1+0akwXEccwV1CAcCDfcoBlWXHB+ML9884pL4SZ4=
+github.com/onsi/ginkgo/v2 v2.28.1 h1:S4hj+HbZp40fNKuLUQOYLDgZLwNUVn19N3Atb98NCyI=
+github.com/onsi/ginkgo/v2 v2.28.1/go.mod h1:CLtbVInNckU3/+gC8LzkGUb9oF+e8W8TdUsxPwvdOgE=
+github.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28=
+github.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg=
github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw=
github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU=
github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w=
@@ -445,138 +507,144 @@ github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT9
github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=
github.com/pascaldekloe/name v0.0.0-20180628100202-0fd16699aae1 h1:/I3lTljEEDNYLho3/FUB7iD/oc2cEFgVmbHzV+O0PtU=
github.com/pascaldekloe/name v0.0.0-20180628100202-0fd16699aae1/go.mod h1:eD5JxqMiuNYyFNmyY9rkJ/slN8y59oEu4Ei7F8OoKWQ=
-github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
-github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
+github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
+github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
-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 v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/polyfloyd/go-errorlint v1.6.0 h1:tftWV9DE7txiFzPpztTAwyoRLKNj9gpVm2cg8/OwcYY=
-github.com/polyfloyd/go-errorlint v1.6.0/go.mod h1:HR7u8wuP1kb1NeN1zqTd1ZMlqUKPPHF+Id4vIPvDqVw=
-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.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
-github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
-github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
-github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
-github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
-github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
-github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
-github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
+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.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
+github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
+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/pseudomuto/protokit v0.2.0 h1:hlnBDcy3YEDXH7kc9gV+NLaN0cDzhDvD1s7Y6FZ8RpM=
github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q=
-github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo=
-github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI=
-github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE=
-github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=
+github.com/quasilyte/go-ruleguard v0.4.5 h1:AGY0tiOT5hJX9BTdx/xBdoCubQUAE2grkqY2lSwvZcA=
+github.com/quasilyte/go-ruleguard v0.4.5/go.mod h1:Vl05zJ538vcEEwu16V/Hdu7IYZWyKSwIy4c88Ro1kRE=
+github.com/quasilyte/go-ruleguard/dsl v0.3.23 h1:lxjt5B6ZCiBeeNO8/oQsegE6fLeCzuMRoVWSkXC4uvY=
+github.com/quasilyte/go-ruleguard/dsl v0.3.23/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=
github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo=
github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng=
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU=
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0=
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs=
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
-github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
-github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w=
-github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0=
+github.com/raeperd/recvcheck v0.2.0 h1:GnU+NsbiCqdC2XX5+vMZzP+jAJC5fht7rcVTAhX74UI=
+github.com/raeperd/recvcheck v0.2.0/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU=
+github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
+github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
+github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
+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/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
+github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
+github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/ryancurrah/gomodguard v1.3.5 h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV3oJmPU=
-github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkqr+wKjSxTdsNJE=
-github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU=
-github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ=
-github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc=
-github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI=
-github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4=
-github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY=
+github.com/ryancurrah/gomodguard v1.4.1 h1:eWC8eUMNZ/wM/PWuZBv7JxxqT5fiIKSIyTvjb7Elr+g=
+github.com/ryancurrah/gomodguard v1.4.1/go.mod h1:qnMJwV1hX9m+YJseXEBhd2s90+1Xn6x9dLz11ualI1I=
+github.com/ryanrolds/sqlclosecheck v0.6.0 h1:pEyL9okISdg1F1SEpJNlrEotkTGerv5BMk7U4AG0eVg=
+github.com/ryanrolds/sqlclosecheck v0.6.0/go.mod h1:xyX16hsDaCMXHrMJ3JMzGf5OpDfHTOTTQrT7HOFUmeU=
+github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc=
+github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik=
+github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0=
+github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4=
+github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ=
+github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU=
github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw=
github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ=
-github.com/sashamelentyev/usestdlibvars v1.27.0 h1:t/3jZpSXtRPRf2xr0m63i32ZrusyurIGT9E5wAvXQnI=
-github.com/sashamelentyev/usestdlibvars v1.27.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8=
-github.com/securego/gosec/v2 v2.21.2 h1:deZp5zmYf3TWwU7A7cR2+SolbTpZ3HQiwFqnzQyEl3M=
-github.com/securego/gosec/v2 v2.21.2/go.mod h1:au33kg78rNseF5PwPnTWhuYBFf534bvJRvOrgZ/bFzU=
-github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU=
-github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs=
+github.com/sashamelentyev/usestdlibvars v1.29.0 h1:8J0MoRrw4/NAXtjQqTHrbW9NN+3iMf7Knkq057v4XOQ=
+github.com/sashamelentyev/usestdlibvars v1.29.0/go.mod h1:8PpnjHMk5VdeWlVb4wCdrB8PNbLqZ3wBZTZWkrpZZL8=
+github.com/securego/gosec/v2 v2.24.8-0.20260309165252-619ce2117e08 h1:AoLtJX4WUtZkhhUUMFy3GgecAALp/Mb4S1iyQOA2s0U=
+github.com/securego/gosec/v2 v2.24.8-0.20260309165252-619ce2117e08/go.mod h1:+XLCJiRE95ga77XInNELh2M6zQP+PdqiT9Zpm0D9Wpk=
+github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
+github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
-github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
-github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w=
+github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g=
github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE=
github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4=
-github.com/sivchari/tenv v1.10.0 h1:g/hzMA+dBCKqGXgW8AV/1xIWhAvDrx0zFKNR48NFMg0=
-github.com/sivchari/tenv v1.10.0/go.mod h1:tdY24masnVoZFxYrHv/nD6Tc8FbkEtAQEEziXpyMgqY=
-github.com/sonatard/noctx v0.0.2 h1:L7Dz4De2zDQhW8S0t+KUjY0MAQJd6SgVwhzNIc4ok00=
-github.com/sonatard/noctx v0.0.2/go.mod h1:kzFz+CzWSjQ2OzIm46uJZoXuBpa2+0y3T36U18dWqIo=
+github.com/sonatard/noctx v0.5.1 h1:wklWg9c9ZYugOAk7qG4yP4PBrlQsmSLPTvW1K4PRQMs=
+github.com/sonatard/noctx v0.5.1/go.mod h1:64XdbzFb18XL4LporKXp8poqZtPKbCrqQ402CV+kJas=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U=
github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0=
github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
-github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
-github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
-github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
-github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
-github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
-github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
-github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
+github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
+github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
+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 v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=
+github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU=
-github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA=
+github.com/spf13/pflag v1.0.9/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.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
+github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
+github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=
+github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=
github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0=
github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I=
-github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc=
-github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I=
+github.com/stbenjam/no-sprintf-host-port v0.3.1 h1:AyX7+dxI4IdLBPtDbsGAyqiTSLpCP9hWRrXQDU4Cm/g=
+github.com/stbenjam/no-sprintf-host-port v0.3.1/go.mod h1:ODbZesTCHMVKthBHskvUUexdcNHAQRXk9NpSsL8p/HQ=
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/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 v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8=
-github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
-github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM=
-github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg=
+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.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
+github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA=
github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0=
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag=
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY=
-github.com/tetafro/godot v1.4.17 h1:pGzu+Ye7ZUEFx7LHU0dAKmCOXWsPjl7qA6iMGndsjPs=
-github.com/tetafro/godot v1.4.17/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio=
-github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M=
-github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ=
-github.com/timonwong/loggercheck v0.9.4 h1:HKKhqrjcVj8sxL7K77beXh0adEm6DLjV/QOGeMXEVi4=
-github.com/timonwong/loggercheck v0.9.4/go.mod h1:caz4zlPcgvpEkXgVnAJGowHAMW2NwHaNlpS8xDbVhTg=
-github.com/tomarrell/wrapcheck/v2 v2.9.0 h1:801U2YCAjLhdN8zhZ/7tdjB3EnAoRlJHt/s+9hijLQ4=
-github.com/tomarrell/wrapcheck/v2 v2.9.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo=
+github.com/tetafro/godot v1.5.4 h1:u1ww+gqpRLiIA16yF2PV1CV1n/X3zhyezbNXC3E14Sg=
+github.com/tetafro/godot v1.5.4/go.mod h1:eOkMrVQurDui411nBY2FA05EYH01r14LuWY/NrVDVcU=
+github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 h1:9LPGD+jzxMlnk5r6+hJnar67cgpDIz/iyD+rfl5r2Vk=
+github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460=
+github.com/timonwong/loggercheck v0.11.0 h1:jdaMpYBl+Uq9mWPXv1r8jc5fC3gyXx4/WGwTnnNKn4M=
+github.com/timonwong/loggercheck v0.11.0/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8=
+github.com/tomarrell/wrapcheck/v2 v2.12.0 h1:H/qQ1aNWz/eeIhxKAFvkfIA+N7YDvq6TWVFL27Of9is=
+github.com/tomarrell/wrapcheck/v2 v2.12.0/go.mod h1:AQhQuZd0p7b6rfW+vUwHm5OMCGgp63moQ9Qr/0BpIWo=
github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw=
github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw=
-github.com/ultraware/funlen v0.1.0 h1:BuqclbkY6pO+cvxoq7OsktIXZpgBSkYTQtmwhAK81vI=
-github.com/ultraware/funlen v0.1.0/go.mod h1:XJqmOQja6DpxarLj6Jj1U7JuoS8PvL4nEqDaQhy22p4=
-github.com/ultraware/whitespace v0.1.1 h1:bTPOGejYFulW3PkcrqkeQwOd6NKOOXvmGD9bo/Gk8VQ=
-github.com/ultraware/whitespace v0.1.1/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8=
-github.com/uudashr/gocognit v1.1.3 h1:l+a111VcDbKfynh+airAy/DJQKaXh2m9vkoysMPSZyM=
-github.com/uudashr/gocognit v1.1.3/go.mod h1:aKH8/e8xbTRBwjbCkwZ8qt4l2EpKXl31KMHgSS+lZ2U=
-github.com/vektra/mockery/v2 v2.40.3 h1:IZ2lydSDFsY0khnEsbSu13VLcqSsa6UYSS/8F+uOJmo=
-github.com/vektra/mockery/v2 v2.40.3/go.mod h1:KYBZF/7sqOa86BaOZPYsoCZWEWLS90a5oBLg2pVudxY=
-github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU=
-github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg=
+github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI=
+github.com/ultraware/funlen v0.2.0/go.mod h1:ZE0q4TsJ8T1SQcjmkhN/w+MceuatI6pBFSxxyteHIJA=
+github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSWoFa+g=
+github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8=
+github.com/uudashr/gocognit v1.2.1 h1:CSJynt5txTnORn/DkhiB4mZjwPuifyASC8/6Q0I/QS4=
+github.com/uudashr/gocognit v1.2.1/go.mod h1:acaubQc6xYlXFEMb9nWX2dYBzJ/bIjEkc1zzvyIZg5Q=
+github.com/uudashr/iface v1.4.1 h1:J16Xl1wyNX9ofhpHmQ9h9gk5rnv2A6lX/2+APLTo0zU=
+github.com/uudashr/iface v1.4.1/go.mod h1:pbeBPlbuU2qkNDn0mmfrxP2X+wjPMIQAy+r1MBXSXtg=
+github.com/vektra/mockery/v2 v2.53.5 h1:iktAY68pNiMvLoHxKqlSNSv/1py0QF/17UGrrAMYDI8=
+github.com/vektra/mockery/v2 v2.53.5/go.mod h1:hIFFb3CvzPdDJJiU7J4zLRblUMv7OuezWsHPmswriwo=
+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/xen0n/gosmopolitan v1.3.0 h1:zAZI1zefvo7gcpbCOrPSHJZJYA9ZgLfJqtKzZ5pHqQM=
+github.com/xen0n/gosmopolitan v1.3.0/go.mod h1:rckfr5T6o4lBtM1ga7mLGKZmLxswUoH1zxHgNXOsEt4=
+github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
+github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM=
github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk=
github.com/yeya24/promlinter v0.3.0 h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs=
@@ -594,93 +662,100 @@ gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo=
gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8=
go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ=
go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28=
-go-simpler.org/musttag v0.12.2 h1:J7lRc2ysXOq7eM8rwaTYnNrHd5JwjppzB6mScysB2Cs=
-go-simpler.org/musttag v0.12.2/go.mod h1:uN1DVIasMTQKk6XSik7yrJoEysGtR2GRqvWnI9S7TYM=
-go-simpler.org/sloglint v0.7.2 h1:Wc9Em/Zeuu7JYpl+oKoYOsQSy2X560aVueCW/m6IijY=
-go-simpler.org/sloglint v0.7.2/go.mod h1:US+9C80ppl7VsThQclkM7BkCHQAzuz8kHLsW3ppuluo=
-go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
-go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8=
-go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw=
-go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8=
+go-simpler.org/musttag v0.14.0 h1:XGySZATqQYSEV3/YTy+iX+aofbZZllJaqwFWs+RTtSo=
+go-simpler.org/musttag v0.14.0/go.mod h1:uP8EymctQjJ4Z1kUnjX0u2l60WfUdQxCwSNKzE1JEOE=
+go-simpler.org/sloglint v0.11.1 h1:xRbPepLT/MHPTCA6TS/wNfZrDzkGvCCqUv4Bdwc3H7s=
+go-simpler.org/sloglint v0.11.1/go.mod h1:2PowwiCOK8mjiF+0KGifVOT8ZsCNiFzvfyJeJOIt8MQ=
+go.augendre.info/arangolint v0.4.0 h1:xSCZjRoS93nXazBSg5d0OGCi9APPLNMmmLrC995tR50=
+go.augendre.info/arangolint v0.4.0/go.mod h1:l+f/b4plABuFISuKnTGD4RioXiCCgghv2xqst/xOvAA=
+go.augendre.info/fatcontext v0.9.0 h1:Gt5jGD4Zcj8CDMVzjOJITlSb9cEch54hjRRlN3qDojE=
+go.augendre.info/fatcontext v0.9.0/go.mod h1:L94brOAT1OOUNue6ph/2HnwxoNlds9aXDF2FcUntbNw=
+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/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE=
+go.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ=
+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.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q=
+go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
+go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI=
-go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.19.0 h1:Nw7Dv4lwvGrI68+wULbcq7su9K2cebeCUrDjVrUJHxM=
-go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.19.0/go.mod h1:1MsF6Y7gTqosgoZvHlzcaaM8DIMNZgJh87ykokoNH7Y=
-go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc=
-go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8=
-go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE=
-go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg=
-go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4=
-go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ=
-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.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
-go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak=
+go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k=
+go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY=
+go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 h1:zr8ymM5OWWjjiWRzwTfZ67c905+2TMHYp2lMJ52QTyM=
+go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0/go.mod h1:sQs7FT2iLVJ+67vYngGJkPe1qr39IzaBzaj9IDNNY8k=
+go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
+go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
+go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
+go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
+go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
+go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
+go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
+go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
+go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=
+go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=
+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.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
-go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c=
-go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk=
+go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
+go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
+go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
+go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
+go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
-golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
-golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
-golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e h1:I88y4caeGeuDQxgdoFPUq097j7kNfw6uvuiNxUBfcBk=
-golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
+golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
+golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
+golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
+golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
+golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o=
+golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8=
golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
-golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f h1:phY1HzDcf18Aq9A8KkmRtY9WvOFIxN8wgfvy6Zm1DV8=
-golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
-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/exp/typeparams v0.0.0-20260209203927-2842357ff358 h1:qWFG1Dj7TBjOjOvhEOkmyGPVoquqUKnIU0lEVLp8xyk=
+golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358/go.mod h1:4Mzdyp/6jzw9auFDJ3OMF5qksa7UvPnzKqTVGcb04ms=
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.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
-golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
-golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
-golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI=
+golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/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-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-20201021035429-f5854403a974/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-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-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
-golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
-golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
-golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
-golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA=
-golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
-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/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
+golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
+golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
+golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
+golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
+golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
+golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -689,133 +764,108 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
-golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
-golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
+golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
+golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
+golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
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-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-20210119212857-b64e53b001e4/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-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-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
-golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
+golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
-golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
-golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
+golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
+golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
+golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
+golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=
+golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=
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.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.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
-golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
-golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
+golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
+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-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-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524210228-3d17549cdc6b/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU=
golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
-golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k=
-golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
-golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
+golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
+golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg=
+golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s=
+golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0=
+golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM=
+golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY=
+golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM=
+golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8=
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=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
-google.golang.org/api v0.196.0 h1:k/RafYqebaIJBO3+SMnfEGtFVlvp5vSgqTUF54UN/zg=
-google.golang.org/api v0.196.0/go.mod h1:g9IL21uGkYgvQ5BZg6BAtoGJQIm8r6EgaAbpNey5wBE=
-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-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
+gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
+google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo=
+google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50=
google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
-google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
-google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU=
-google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4=
-google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed h1:3RgNmBoI9MZhsj3QxC+AP/qQhNwpCLOvYDYYsFrhFt0=
-google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
-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.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c=
-google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
+google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4=
+google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 h1:VPWxll4HlMw1Vs/qXtN7BvhZqsS9cdAittCNvVENElA=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
+google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM=
+google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4=
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.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
-google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
+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/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4=
+gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
gopkg.in/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.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
-gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
@@ -823,35 +873,35 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
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=
-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=
-honnef.co/go/tools v0.5.1 h1:4bH5o3b5ZULQ4UrBmP+63W9r7qIkqJClEA9ko5YKx+I=
-honnef.co/go/tools v0.5.1/go.mod h1:e9irvo83WDG9/irijV44wr3tbhcFeRnfpVlRqVwpzMs=
-k8s.io/api v0.28.2 h1:9mpl5mOb6vXZvqbQmankOfPIGiudghwCoLl1EYfUZbw=
-k8s.io/api v0.28.2/go.mod h1:RVnJBsjU8tcMq7C3iaRSGMeaKt2TWEUXcpIt/90fjEg=
-k8s.io/apiextensions-apiserver v0.28.0 h1:CszgmBL8CizEnj4sj7/PtLGey6Na3YgWyGCPONv7E9E=
-k8s.io/apiextensions-apiserver v0.28.0/go.mod h1:uRdYiwIuu0SyqJKriKmqEN2jThIJPhVmOWETm8ud1VE=
-k8s.io/apimachinery v0.28.2 h1:KCOJLrc6gu+wV1BYgwik4AF4vXOlVJPdiqn0yAWWwXQ=
-k8s.io/apimachinery v0.28.2/go.mod h1:RdzF87y/ngqk9H4z3EL2Rppv5jj95vGS/HaFXrLDApU=
-k8s.io/client-go v0.28.1 h1:pRhMzB8HyLfVwpngWKE8hDcXRqifh1ga2Z/PU9SXVK8=
-k8s.io/client-go v0.28.1/go.mod h1:pEZA3FqOsVkCc07pFVzK076R+P/eXqsgx5zuuRWukNE=
-k8s.io/component-base v0.28.1 h1:LA4AujMlK2mr0tZbQDZkjWbdhTV5bRyEyAFe0TJxlWg=
-k8s.io/component-base v0.28.1/go.mod h1:jI11OyhbX21Qtbav7JkhehyBsIRfnO8oEgoAR12ArIU=
-k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
-k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
-k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ=
-k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM=
-k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk=
-k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-mvdan.cc/gofumpt v0.7.0 h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU=
-mvdan.cc/gofumpt v0.7.0/go.mod h1:txVFJy/Sc/mvaycET54pV8SW8gWxTlUuGHVEcncmNUo=
-mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U=
-mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f/go.mod h1:RSLa7mKKCNeTTMHBw5Hsy2rfJmd6O2ivt9Dw9ZqCQpQ=
-sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU=
-sigs.k8s.io/controller-runtime v0.16.2/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
-sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
-sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
+honnef.co/go/tools v0.7.0 h1:w6WUp1VbkqPEgLz4rkBzH/CSU6HkoqNLp6GstyTx3lU=
+honnef.co/go/tools v0.7.0/go.mod h1:pm29oPxeP3P82ISxZDgIYeOaf9ta6Pi0EWvCFoLG2vc=
+k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
+k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
+k8s.io/apiextensions-apiserver v0.28.9 h1:yzPHp+4IASHeu7XIPkAKJrY4UjWdjiAjOcQMd6oNKj0=
+k8s.io/apiextensions-apiserver v0.28.9/go.mod h1:Rjhvq5y3JESdZgV2UOByldyefCfRrUguVpBLYOAIbVs=
+k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4=
+k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
+k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY=
+k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8=
+k8s.io/component-base v0.28.9 h1:ySM2PR8Z/xaUSG1Akd3yM6dqUezTltI7S5aV41MMuuc=
+k8s.io/component-base v0.28.9/go.mod h1:QtWzscEhCKRfHV24/S+11BwWjVxhC6fd3RYoEgZcWFU=
+k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
+k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
+k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA=
+k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
+k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y=
+k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+mvdan.cc/gofumpt v0.9.2 h1:zsEMWL8SVKGHNztrx6uZrXdp7AX8r421Vvp23sz7ik4=
+mvdan.cc/gofumpt v0.9.2/go.mod h1:iB7Hn+ai8lPvofHd9ZFGVg2GOr8sBUw1QUWjNbmIL/s=
+mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15 h1:ssMzja7PDPJV8FStj7hq9IKiuiKhgz9ErWw+m68e7DI=
+mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15/go.mod h1:4M5MMXl2kW6fivUT6yRGpLLPNfuGtU2Z0cPvFquGDYU=
+sigs.k8s.io/controller-runtime v0.16.6 h1:FiXwTuFF5ZJKmozfP2Z0j7dh6kmxP4Ou1KLfxgKKC3I=
+sigs.k8s.io/controller-runtime v0.16.6/go.mod h1:+dQzkZxnylD0u49e0a+7AR+vlibEBaThmPca7lTyUsI=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
+sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
+sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
diff --git a/boilerplate/flyte/golang_support_tools/tools.go b/boilerplate/flyte/golang_support_tools/tools.go
index 4ff02ff238f..8d6b1d1eecf 100644
--- a/boilerplate/flyte/golang_support_tools/tools.go
+++ b/boilerplate/flyte/golang_support_tools/tools.go
@@ -4,10 +4,10 @@
package tools
import (
- _ "github.com/vektra/mockery/v2/cmd"
_ "github.com/alvaroloes/enumer"
- _ "github.com/golangci/golangci-lint/cmd/golangci-lint"
+ _ "github.com/golangci/golangci-lint/v2/cmd/golangci-lint"
_ "github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc"
+ _ "github.com/vektra/mockery/v2/cmd"
_ "github.com/flyteorg/flyte/flytestdlib/cli/pflags"
)
diff --git a/boilerplate/flyte/golang_test_targets/Makefile b/boilerplate/flyte/golang_test_targets/Makefile
index 64920149177..012586e2e29 100644
--- a/boilerplate/flyte/golang_test_targets/Makefile
+++ b/boilerplate/flyte/golang_test_targets/Makefile
@@ -15,7 +15,7 @@ generate: download_tooling #generate go code
.PHONY: lint
lint: download_tooling #lints the package for common code smells
- GL_DEBUG=linters_output,env golangci-lint run $(LINT_FLAGS) --timeout=5m --exclude deprecated -v
+ GL_DEBUG=linters_output,env golangci-lint run $(LINT_FLAGS) --timeout=5m -v
.PHONY: lint-fix
lint-fix: LINT_FLAGS=--fix
diff --git a/boilerplate/flyte/golang_test_targets/download_tooling.sh b/boilerplate/flyte/golang_test_targets/download_tooling.sh
index 7acfb96a48e..cd0e1fae6e5 100755
--- a/boilerplate/flyte/golang_test_targets/download_tooling.sh
+++ b/boilerplate/flyte/golang_test_targets/download_tooling.sh
@@ -16,8 +16,8 @@ set -e
# List of tools to go get
# In the format of ":" or ":" if no cli
tools=(
- "github.com/vektra/mockery/v2@v2.40.3"
- "github.com/golangci/golangci-lint/cmd/golangci-lint"
+ "github.com/vektra/mockery/v2@v2.53.5"
+ "github.com/golangci/golangci-lint/v2/cmd/golangci-lint"
"github.com/daixiang0/gci"
"github.com/alvaroloes/enumer"
"github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc"
diff --git a/boilerplate/flyte/golangci_file/.golangci.yml b/boilerplate/flyte/golangci_file/.golangci.yml
index 7f4dbc80e8f..f2536d8f027 100644
--- a/boilerplate/flyte/golangci_file/.golangci.yml
+++ b/boilerplate/flyte/golangci_file/.golangci.yml
@@ -3,38 +3,37 @@
#
# TO OPT OUT OF UPDATES, SEE https://github.com/flyteorg/boilerplate/blob/master/Readme.rst
-run:
- skip-dirs:
- - pkg/client
-
+version: "2"
linters:
- disable-all: true
+ default: none
enable:
- - deadcode
- errcheck
- - gas
- - gci
- goconst
- - goimports
- - golint
- - gosimple
+ - gosec
- govet
- ineffassign
- misspell
- nakedret
- - staticcheck
- - structcheck
- - typecheck
- unconvert
- unparam
- unused
- - varcheck
-
-linters-settings:
- gci:
- custom-order: true
- sections:
- - standard
- - default
- - prefix(github.com/flyteorg)
- skip-generated: true
+ exclusions:
+ generated: lax
+ presets:
+ - comments
+ - common-false-positives
+ - legacy
+ - std-error-handling
+formatters:
+ enable:
+ - gci
+ - goimports
+ settings:
+ gci:
+ sections:
+ - standard
+ - default
+ - prefix(github.com/flyteorg)
+ custom-order: true
+ exclusions:
+ generated: lax
\ No newline at end of file
diff --git a/charts/flyte-binary/README.md b/charts/flyte-binary/README.md
index 0716fe7f045..93139e7a73c 100644
--- a/charts/flyte-binary/README.md
+++ b/charts/flyte-binary/README.md
@@ -37,7 +37,7 @@ Chart for basic single Flyte executable deployment
| configuration.auth.oidc.clientId | string | `""` | |
| configuration.auth.oidc.clientSecret | string | `""` | |
| configuration.co-pilot.image.repository | string | `"cr.flyte.org/flyteorg/flytecopilot"` | |
-| configuration.co-pilot.image.tag | string | `"v1.16.0-b4"` | |
+| configuration.co-pilot.image.tag | string | `"v1.16.6"` | |
| configuration.connectorService.defaultConnector.defaultTimeout | string | `"10s"` | |
| configuration.connectorService.defaultConnector.endpoint | string | `"k8s://flyteconnector.flyte:8000"` | |
| configuration.connectorService.defaultConnector.insecure | bool | `true` | |
diff --git a/charts/flyte-binary/values.yaml b/charts/flyte-binary/values.yaml
index 16fb753760e..cc50dd6f706 100644
--- a/charts/flyte-binary/values.yaml
+++ b/charts/flyte-binary/values.yaml
@@ -167,7 +167,7 @@ configuration:
# repository CoPilot sidecar image repository
repository: cr.flyte.org/flyteorg/flytecopilot # FLYTECOPILOT_IMAGE
# tag CoPilot sidecar image tag
- tag: v1.16.0-b4 # FLYTECOPILOT_TAG
+ tag: v1.16.6 # FLYTECOPILOT_TAG
# connectorService Flyte Connector configuration
connectorService:
defaultConnector:
diff --git a/charts/flyte-core/README.md b/charts/flyte-core/README.md
index 50b5214ba21..86b14184dc4 100644
--- a/charts/flyte-core/README.md
+++ b/charts/flyte-core/README.md
@@ -103,7 +103,7 @@ helm install gateway bitnami/contour -n flyte
| common.ingress.tls | object | `{"enabled":false}` | - Ingress hostname host: |
| common.ingress.webpackHMR | bool | `false` | - Enable or disable HMR route to flyteconsole. This is useful only for frontend development. |
| configmap.admin | object | `{"admin":{"clientId":"{{ .Values.secrets.adminOauthClientCredentials.clientId }}","clientSecretLocation":"/etc/secrets/client_secret","endpoint":"flyteadmin:81","insecure":true},"event":{"capacity":1000,"rate":500,"type":"admin"}}` | Admin Client configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/subworkflow/launchplan#AdminConfig) |
-| configmap.adminServer | object | `{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpc":{"port":8089},"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}}` | FlyteAdmin server configuration |
+| configmap.adminServer | object | `{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"identityAnnotationKeys":["email","sub"],"identityAnnotationPrefix":"flyte.org","injectIdentityAnnotations":false,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpc":{"port":8089},"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}}` | FlyteAdmin server configuration |
| configmap.adminServer.auth | object | `{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}}` | Authentication configuration |
| configmap.adminServer.server.security.secure | bool | `false` | Controls whether to serve requests over SSL/TLS. |
| configmap.adminServer.server.security.useAuth | bool | `false` | Controls whether to enforce authentication. Follow the guide in https://docs.flyte.org/ on how to setup authentication. |
@@ -111,20 +111,20 @@ helm install gateway bitnami/contour -n flyte
| configmap.clusters.clusterConfigs | list | `[]` | |
| configmap.clusters.labelClusterMap | object | `{}` | |
| configmap.console | object | `{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"}` | Configuration for Flyte console UI |
-| configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration |
-| configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) |
+| configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.16.6","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration |
+| configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.16.6","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) |
| configmap.core | object | `{"manager":{"pod-application":"flytepropeller","pod-template-container-name":"flytepropeller","pod-template-name":"flytepropeller-template"},"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","literal-offloading-config":{"enabled":false},"max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://{{ .Values.storage.bucketName }}/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}}` | Core propeller configuration |
| configmap.core.manager | object | `{"pod-application":"flytepropeller","pod-template-container-name":"flytepropeller","pod-template-name":"flytepropeller-template"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/manager/config#Config). |
| configmap.core.propeller | object | `{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","literal-offloading-config":{"enabled":false},"max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://{{ .Values.storage.bucketName }}/","workers":4,"workflow-reeval-duration":"30s"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/config). |
-| configmap.datacatalogServer | object | `{"application":{"grpcMaxRecvMsgSizeMBs":6,"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"heartbeat-grace-period-multiplier":3,"max-reservation-heartbeat":"30s","metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}}` | Datacatalog server config |
+| configmap.datacatalogServer | object | `{"application":{"grpcMaxRecvMsgSizeMBs":6,"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"heartbeat-grace-period-multiplier":3,"max-reservation-heartbeat":"30s","metrics-scope":"flyte","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}}` | Datacatalog server config |
| configmap.domain | object | `{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]}` | Domains configuration for Flyte projects. This enables the specified number of domains across all projects in Flyte. |
| configmap.enabled_plugins.tasks | object | `{"task-plugins":{"default-for-task-types":{"container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","connector-service","echo"]}}` | Tasks specific configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#GetConfig) |
| configmap.enabled_plugins.tasks.task-plugins | object | `{"default-for-task-types":{"container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","connector-service","echo"]}` | Plugins configuration, [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#TaskPluginConfig) |
| configmap.enabled_plugins.tasks.task-plugins.enabled-plugins | list | `["container","sidecar","k8s-array","connector-service","echo"]` | [Enabled Plugins](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/config#Config). Enable sagemaker*, athena if you install the backend plugins |
| configmap.k8s | object | `{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[],"default-memory":"100Mi"}}}` | Kubernetes specific Flyte configuration |
| configmap.k8s.plugins.k8s | object | `{"default-cpus":"100m","default-env-vars":[],"default-memory":"100Mi"}` | Configuration section for all K8s specific plugins [Configuration structure](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/pluginmachinery/flytek8s/config) |
-| configmap.otel | object | `{"otel":{"file":"/tmp/trace.txt","jaeger":{"endpoint":"http://localhost:14268/api/traces"},"otlpgrpc":{"endpoint":"http://localhost:4317"},"otlphttp":{"endpoint":"http://localhost:4318/v1/traces"},"sampler":{"parentSampler":"always"},"type":"noop"}}` | Open Telemetry Configuration |
-| configmap.otel.otel.file | string | `"/tmp/trace.txt"` | Configuration for the file exporter type |
+| configmap.otel | object | `{"otel":{"file":{"filename":"/tmp/trace.txt"},"jaeger":{"endpoint":"http://localhost:14268/api/traces"},"otlpgrpc":{"endpoint":"http://localhost:4317"},"otlphttp":{"endpoint":"http://localhost:4318/v1/traces"},"sampler":{"parentSampler":"always"},"type":"noop"}}` | Open Telemetry Configuration |
+| configmap.otel.otel.file | object | `{"filename":"/tmp/trace.txt"}` | Configuration for the file exporter type |
| configmap.otel.otel.jaeger | object | `{"endpoint":"http://localhost:14268/api/traces"}` | Configuration for the jaeger exporter type |
| configmap.otel.otel.otlphttp | object | `{"endpoint":"http://localhost:4318/v1/traces"}` | Configuration for the otlp exporter type |
| configmap.otel.otel.sampler | object | `{"parentSampler":"always"}` | Configuration for sampling of traces |
@@ -149,12 +149,23 @@ helm install gateway bitnami/contour -n flyte
| datacatalog.additionalVolumes | list | `[]` | Appends additional volumes to the deployment spec. May include template values. |
| datacatalog.affinity | object | `{}` | affinity for Datacatalog deployment |
| datacatalog.annotations | object | `{}` | Annotations for Datacatalog deployment |
+| datacatalog.autoscaling.enabled | bool | `false` | |
+| datacatalog.autoscaling.maxReplicas | int | `10` | |
+| datacatalog.autoscaling.metrics[0].resource.name | string | `"cpu"` | |
+| datacatalog.autoscaling.metrics[0].resource.target.averageUtilization | int | `80` | |
+| datacatalog.autoscaling.metrics[0].resource.target.type | string | `"Utilization"` | |
+| datacatalog.autoscaling.metrics[0].type | string | `"Resource"` | |
+| datacatalog.autoscaling.metrics[1].resource.name | string | `"memory"` | |
+| datacatalog.autoscaling.metrics[1].resource.target.averageUtilization | int | `80` | |
+| datacatalog.autoscaling.metrics[1].resource.target.type | string | `"Utilization"` | |
+| datacatalog.autoscaling.metrics[1].type | string | `"Resource"` | |
+| datacatalog.autoscaling.minReplicas | int | `1` | |
| datacatalog.configPath | string | `"/etc/datacatalog/config/*.yaml"` | Default regex string for searching configuration files |
| datacatalog.enabled | bool | `true` | |
| datacatalog.extraArgs | object | `{}` | Appends extra command line arguments to the main command |
| datacatalog.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy |
| datacatalog.image.repository | string | `"cr.flyte.org/flyteorg/datacatalog"` | Docker image for Datacatalog deployment |
-| datacatalog.image.tag | string | `"v1.16.0-b4"` | Docker image tag |
+| datacatalog.image.tag | string | `"v1.16.6"` | Docker image tag |
| datacatalog.nodeSelector | object | `{}` | nodeSelector for Datacatalog deployment |
| datacatalog.podAnnotations | object | `{}` | Annotations for Datacatalog pods |
| datacatalog.podEnv | object | `{}` | Additional Datacatalog container environment variables |
@@ -169,6 +180,10 @@ helm install gateway bitnami/contour -n flyte
| datacatalog.serviceAccount.annotations | object | `{}` | Annotations for ServiceAccount attached to Datacatalog pods |
| datacatalog.serviceAccount.create | bool | `true` | Should a service account be created for Datacatalog |
| datacatalog.serviceAccount.imagePullSecrets | list | `[]` | ImagePullSecrets to automatically assign to the service account |
+| datacatalog.serviceMonitor.enabled | bool | `false` | If enabled create the Datacatalog service monitor |
+| datacatalog.serviceMonitor.interval | string | `"60s"` | Sets the interval at which metrics will be scraped by prometheus |
+| datacatalog.serviceMonitor.labels | object | `{}` | Sets the labels for the service monitor which are required by the prometheus to auto-detect the service monitor and start scraping the metrics |
+| datacatalog.serviceMonitor.scrapeTimeout | string | `"30s"` | Sets the timeout after which request to scrape metrics will time out |
| datacatalog.strategy | object | `{}` | |
| datacatalog.tolerations | list | `[]` | tolerations for Datacatalog deployment |
| db.admin.database.dbname | string | `"flyteadmin"` | |
@@ -186,6 +201,17 @@ helm install gateway bitnami/contour -n flyte
| flyteadmin.additionalVolumes | list | `[]` | Appends additional volumes to the deployment spec. May include template values. |
| flyteadmin.affinity | object | `{}` | affinity for Flyteadmin deployment |
| flyteadmin.annotations | object | `{}` | Annotations for Flyteadmin deployment |
+| flyteadmin.autoscaling.enabled | bool | `false` | |
+| flyteadmin.autoscaling.maxReplicas | int | `10` | |
+| flyteadmin.autoscaling.metrics[0].resource.name | string | `"cpu"` | |
+| flyteadmin.autoscaling.metrics[0].resource.target.averageUtilization | int | `80` | |
+| flyteadmin.autoscaling.metrics[0].resource.target.type | string | `"Utilization"` | |
+| flyteadmin.autoscaling.metrics[0].type | string | `"Resource"` | |
+| flyteadmin.autoscaling.metrics[1].resource.name | string | `"memory"` | |
+| flyteadmin.autoscaling.metrics[1].resource.target.averageUtilization | int | `80` | |
+| flyteadmin.autoscaling.metrics[1].resource.target.type | string | `"Utilization"` | |
+| flyteadmin.autoscaling.metrics[1].type | string | `"Resource"` | |
+| flyteadmin.autoscaling.minReplicas | int | `1` | |
| flyteadmin.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files |
| flyteadmin.enabled | bool | `true` | |
| flyteadmin.env | list | `[]` | Additional flyteadmin container environment variables e.g. SendGrid's API key - name: SENDGRID_API_KEY value: "" e.g. secret environment variable (you can combine it with .additionalVolumes): - name: SENDGRID_API_KEY valueFrom: secretKeyRef: name: sendgrid-secret key: api_key |
@@ -193,7 +219,7 @@ helm install gateway bitnami/contour -n flyte
| flyteadmin.extraArgs | object | `{}` | Appends extra command line arguments to the serve command |
| flyteadmin.image.pullPolicy | string | `"IfNotPresent"` | |
| flyteadmin.image.repository | string | `"cr.flyte.org/flyteorg/flyteadmin"` | Docker image for Flyteadmin deployment |
-| flyteadmin.image.tag | string | `"v1.16.0-b4"` | |
+| flyteadmin.image.tag | string | `"v1.16.6"` | |
| flyteadmin.initialProjects | list | `["flytesnacks","flytetester","flyteexamples"]` | Initial projects to create |
| flyteadmin.livenessProbe | string | `"exec:\n command: [ \"sh\", \"-c\", \"reply=$(curl -s -o /dev/null -w %{http_code} http://127.0.0.1:8088/healthcheck); if [ \\\"$reply\\\" -lt 200 -o \\\"$reply\\\" -ge 400 ]; then exit 1; fi;\",\"grpc_health_probe\", \"-addr=:8089\"]\ninitialDelaySeconds: 20\nperiodSeconds: 5"` | |
| flyteadmin.nodeSelector | object | `{}` | nodeSelector for Flyteadmin deployment |
@@ -236,12 +262,23 @@ helm install gateway bitnami/contour -n flyte
| flyteconnector.podLabels | object | `{}` | Labels for flyteconnector pods |
| flyteconsole.affinity | object | `{}` | affinity for Flyteconsole deployment |
| flyteconsole.annotations | object | `{}` | Annotations for Flyteconsole deployment |
+| flyteconsole.autoscaling.enabled | bool | `false` | |
+| flyteconsole.autoscaling.maxReplicas | int | `10` | |
+| flyteconsole.autoscaling.metrics[0].resource.name | string | `"cpu"` | |
+| flyteconsole.autoscaling.metrics[0].resource.target.averageUtilization | int | `80` | |
+| flyteconsole.autoscaling.metrics[0].resource.target.type | string | `"Utilization"` | |
+| flyteconsole.autoscaling.metrics[0].type | string | `"Resource"` | |
+| flyteconsole.autoscaling.metrics[1].resource.name | string | `"memory"` | |
+| flyteconsole.autoscaling.metrics[1].resource.target.averageUtilization | int | `80` | |
+| flyteconsole.autoscaling.metrics[1].resource.target.type | string | `"Utilization"` | |
+| flyteconsole.autoscaling.metrics[1].type | string | `"Resource"` | |
+| flyteconsole.autoscaling.minReplicas | int | `1` | |
| flyteconsole.enabled | bool | `true` | |
| flyteconsole.ga.enabled | bool | `false` | |
| flyteconsole.ga.tracking_id | string | `"G-0QW4DJWJ20"` | |
| flyteconsole.image.pullPolicy | string | `"IfNotPresent"` | |
| flyteconsole.image.repository | string | `"cr.flyte.org/flyteorg/flyteconsole"` | Docker image for Flyteconsole deployment |
-| flyteconsole.image.tag | string | `"v1.20.1"` | |
+| flyteconsole.image.tag | string | `"v1.21.0"` | |
| flyteconsole.imagePullSecrets | list | `[]` | ImagePullSecrets to assign to the Flyteconsole deployment |
| flyteconsole.livenessProbe | object | `{}` | |
| flyteconsole.nodeSelector | object | `{}` | nodeSelector for Flyteconsole deployment |
@@ -273,7 +310,7 @@ helm install gateway bitnami/contour -n flyte
| flytepropeller.extraArgs | object | `{}` | Appends extra command line arguments to the main command |
| flytepropeller.image.pullPolicy | string | `"IfNotPresent"` | |
| flytepropeller.image.repository | string | `"cr.flyte.org/flyteorg/flytepropeller"` | Docker image for Flytepropeller deployment |
-| flytepropeller.image.tag | string | `"v1.16.0-b4"` | |
+| flytepropeller.image.tag | string | `"v1.16.6"` | |
| flytepropeller.manager | bool | `false` | |
| flytepropeller.manager_resources | object | `{"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"100Mi"}}}` | If manager is set to true this can be used to give the flytepropeller-manager different resource requests than the sharded flyte propeller pods |
| flytepropeller.nodeSelector | object | `{}` | nodeSelector for Flytepropeller deployment |
@@ -310,7 +347,7 @@ helm install gateway bitnami/contour -n flyte
| flytescheduler.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files |
| flytescheduler.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy |
| flytescheduler.image.repository | string | `"cr.flyte.org/flyteorg/flytescheduler"` | Docker image for Flytescheduler deployment |
-| flytescheduler.image.tag | string | `"v1.16.0-b4"` | Docker image tag |
+| flytescheduler.image.tag | string | `"v1.16.6"` | Docker image tag |
| flytescheduler.nodeSelector | object | `{}` | nodeSelector for Flytescheduler deployment |
| flytescheduler.podAnnotations | object | `{}` | Annotations for Flytescheduler pods |
| flytescheduler.podEnv | object | `{}` | Additional Flytescheduler container environment variables |
diff --git a/charts/flyte-core/templates/admin/deployment.yaml b/charts/flyte-core/templates/admin/deployment.yaml
index 1f470659364..a765b52290a 100755
--- a/charts/flyte-core/templates/admin/deployment.yaml
+++ b/charts/flyte-core/templates/admin/deployment.yaml
@@ -12,7 +12,9 @@ metadata:
{{- end }}
{{- end }}
spec:
+ {{- if not .Values.flyteadmin.autoscaling.enabled }}
replicas: {{ .Values.flyteadmin.replicaCount }}
+ {{- end }}
selector:
matchLabels: {{ include "flyteadmin.selectorLabels" . | nindent 6 }}
{{- with .Values.flyteadmin.strategy }}
diff --git a/charts/flyte-core/templates/admin/hpa.yaml b/charts/flyte-core/templates/admin/hpa.yaml
new file mode 100644
index 00000000000..8ba9fe122a1
--- /dev/null
+++ b/charts/flyte-core/templates/admin/hpa.yaml
@@ -0,0 +1,17 @@
+{{- if and .Values.flyteadmin.enabled .Values.flyteadmin.autoscaling.enabled }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+ name: {{ template "flyteadmin.name" . }}
+ namespace: {{ template "flyte.namespace" . }}
+ labels: {{ include "flyteadmin.labels" . | nindent 4 }}
+spec:
+ scaleTargetRef:
+ apiVersion: apps/v1
+ kind: Deployment
+ name: {{ template "flyteadmin.name" . }}
+ minReplicas: {{ .Values.flyteadmin.autoscaling.minReplicas }}
+ maxReplicas: {{ .Values.flyteadmin.autoscaling.maxReplicas }}
+ metrics:
+ {{ .Values.flyteadmin.autoscaling.metrics | toYaml | nindent 4 }}
+{{- end }}
diff --git a/charts/flyte-core/templates/console/deployment.yaml b/charts/flyte-core/templates/console/deployment.yaml
index 05c1fefec37..90ea0a8ddee 100644
--- a/charts/flyte-core/templates/console/deployment.yaml
+++ b/charts/flyte-core/templates/console/deployment.yaml
@@ -12,7 +12,9 @@ metadata:
{{- end }}
{{- end }}
spec:
+ {{- if not .Values.flyteconsole.autoscaling.enabled }}
replicas: {{ .Values.flyteconsole.replicaCount }}
+ {{- end }}
selector:
matchLabels: {{ include "flyteconsole.selectorLabels" . | nindent 6 }}
{{- with .Values.flyteconsole.strategy }}
diff --git a/charts/flyte-core/templates/console/hpa.yaml b/charts/flyte-core/templates/console/hpa.yaml
new file mode 100644
index 00000000000..a3f6e85271e
--- /dev/null
+++ b/charts/flyte-core/templates/console/hpa.yaml
@@ -0,0 +1,17 @@
+{{- if and .Values.flyteconsole.enabled .Values.flyteconsole.autoscaling.enabled }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+ name: {{ template "flyteconsole.name" . }}
+ namespace: {{ template "flyte.namespace" . }}
+ labels: {{ include "flyteconsole.labels" . | nindent 4 }}
+spec:
+ scaleTargetRef:
+ apiVersion: apps/v1
+ kind: Deployment
+ name: {{ template "flyteconsole.name" . }}
+ minReplicas: {{ .Values.flyteconsole.autoscaling.minReplicas }}
+ maxReplicas: {{ .Values.flyteconsole.autoscaling.maxReplicas }}
+ metrics:
+ {{ .Values.flyteconsole.autoscaling.metrics | toYaml | nindent 4 }}
+{{- end }}
diff --git a/charts/flyte-core/templates/datacatalog/deployment.yaml b/charts/flyte-core/templates/datacatalog/deployment.yaml
index e634d69b329..e58cd9be16a 100644
--- a/charts/flyte-core/templates/datacatalog/deployment.yaml
+++ b/charts/flyte-core/templates/datacatalog/deployment.yaml
@@ -12,7 +12,9 @@ metadata:
{{- end }}
{{- end }}
spec:
+ {{- if not .Values.datacatalog.autoscaling.enabled }}
replicas: {{ .Values.datacatalog.replicaCount }}
+ {{- end }}
selector:
matchLabels: {{ include "datacatalog.selectorLabels" . | nindent 6 }}
{{- with .Values.datacatalog.strategy }}
diff --git a/charts/flyte-core/templates/datacatalog/hpa.yaml b/charts/flyte-core/templates/datacatalog/hpa.yaml
new file mode 100644
index 00000000000..122b4a4d430
--- /dev/null
+++ b/charts/flyte-core/templates/datacatalog/hpa.yaml
@@ -0,0 +1,17 @@
+{{- if and .Values.datacatalog.enabled .Values.datacatalog.autoscaling.enabled }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+ name: {{ template "datacatalog.name" . }}
+ namespace: {{ template "flyte.namespace" . }}
+ labels: {{ include "datacatalog.labels" . | nindent 4 }}
+spec:
+ scaleTargetRef:
+ apiVersion: apps/v1
+ kind: Deployment
+ name: {{ template "datacatalog.name" . }}
+ minReplicas: {{ .Values.datacatalog.autoscaling.minReplicas }}
+ maxReplicas: {{ .Values.datacatalog.autoscaling.maxReplicas }}
+ metrics:
+ {{ .Values.datacatalog.autoscaling.metrics | toYaml | nindent 4 }}
+{{- end }}
diff --git a/charts/flyte-core/templates/datacatalog/service-monitor.yaml b/charts/flyte-core/templates/datacatalog/service-monitor.yaml
new file mode 100644
index 00000000000..035679e9e1f
--- /dev/null
+++ b/charts/flyte-core/templates/datacatalog/service-monitor.yaml
@@ -0,0 +1,19 @@
+{{- if and .Values.datacatalog.enabled .Values.datacatalog.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+ namespace: {{ template "flyte.namespace" . }}
+ name: {{ template "datacatalog.name" . }}
+ labels:
+ {{- with .Values.datacatalog.serviceMonitor.labels }}
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ endpoints:
+ - interval: {{ .Values.datacatalog.serviceMonitor.interval }}
+ port: http-metrics
+ path: /metrics
+ scrapeTimeout: {{ .Values.datacatalog.serviceMonitor.scrapeTimeout }}
+ selector:
+ matchLabels: {{ include "datacatalog.selectorLabels" . | nindent 6 }}
+{{- end }}
diff --git a/charts/flyte-core/templates/datacatalog/service.yaml b/charts/flyte-core/templates/datacatalog/service.yaml
index 95a1b1c29b3..b21c6a07280 100644
--- a/charts/flyte-core/templates/datacatalog/service.yaml
+++ b/charts/flyte-core/templates/datacatalog/service.yaml
@@ -12,15 +12,17 @@ spec:
{{- with .Values.datacatalog.service.type}}
type: {{ . }}
{{- end }}
+ {{- with .Values.datacatalog.service.clusterIP}}
+ clusterIP: {{ . }}
+ {{- end }}
ports:
- - name: http
- port: 88
- protocol: TCP
- targetPort: 8088
- - name: grpc
- port: 89
- protocol: TCP
- targetPort: 8089
+ - name: http-metrics
+ protocol: TCP
+ port: {{ index .Values.configmap.datacatalogServer.datacatalog "profiler-port" }}
+ - name: grpc
+ port: 89
+ protocol: TCP
+ targetPort: {{ .Values.configmap.datacatalogServer.application.grpcPort }}
{{- with .Values.datacatalog.service.additionalPorts -}}
{{ tpl (toYaml .) $ | nindent 2 }}
{{- end }}
diff --git a/charts/flyte-core/templates/propeller/webhook-hpa.yaml b/charts/flyte-core/templates/propeller/webhook-hpa.yaml
index 9562287fe71..3cfe49578b3 100644
--- a/charts/flyte-core/templates/propeller/webhook-hpa.yaml
+++ b/charts/flyte-core/templates/propeller/webhook-hpa.yaml
@@ -3,6 +3,7 @@ apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {{ template "flyte-pod-webhook.name" . }}
+ namespace: {{ template "flyte.namespace" . }}
labels:
app: {{ template "flyte-pod-webhook.name" . }}
spec:
diff --git a/charts/flyte-core/values.yaml b/charts/flyte-core/values.yaml
index ecd3714ab86..e2250178ba6 100755
--- a/charts/flyte-core/values.yaml
+++ b/charts/flyte-core/values.yaml
@@ -16,7 +16,7 @@ flyteadmin:
image:
# -- Docker image for Flyteadmin deployment
repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE
- tag: v1.16.0-b4 # FLYTEADMIN_TAG
+ tag: v1.16.6 # FLYTEADMIN_TAG
pullPolicy: IfNotPresent
# -- Additional flyteadmin container environment variables
#
@@ -55,6 +55,25 @@ flyteadmin:
memory: 50Mi
# Strategy for Flyteadmin deployment
strategy: {}
+
+ autoscaling:
+ enabled: false
+ minReplicas: 1
+ maxReplicas: 10
+ metrics:
+ - type: Resource
+ resource:
+ name: cpu
+ target:
+ type: Utilization
+ averageUtilization: 80
+ - type: Resource
+ resource:
+ name: memory
+ target:
+ type: Utilization
+ averageUtilization: 80
+
# -- Default regex string for searching configuration files
configPath: /etc/flyte/config/*.yaml
# -- Initial projects to create
@@ -170,7 +189,7 @@ flytescheduler:
# -- Docker image for Flytescheduler deployment
repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE
# -- Docker image tag
- tag: v1.16.0-b4 # FLYTESCHEDULER_TAG
+ tag: v1.16.6 # FLYTESCHEDULER_TAG
# -- Docker image pull policy
pullPolicy: IfNotPresent
# -- Default resources requests and limits for Flytescheduler deployment
@@ -258,7 +277,7 @@ datacatalog:
# -- Docker image for Datacatalog deployment
repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE
# -- Docker image tag
- tag: v1.16.0-b4 # DATACATALOG_TAG
+ tag: v1.16.6 # DATACATALOG_TAG
# -- Docker image pull policy
pullPolicy: IfNotPresent
# -- Default resources requests and limits for Datacatalog deployment
@@ -273,6 +292,24 @@ datacatalog:
memory: 50Mi
# Strategy for Datacatalog deployment
strategy: {}
+
+ autoscaling:
+ enabled: false
+ minReplicas: 1
+ maxReplicas: 10
+ metrics:
+ - type: Resource
+ resource:
+ name: cpu
+ target:
+ type: Utilization
+ averageUtilization: 80
+ - type: Resource
+ resource:
+ name: memory
+ target:
+ type: Utilization
+ averageUtilization: 80
# -- Default regex string for searching configuration files
configPath: /etc/datacatalog/config/*.yaml
# -- Service settings for Datacatalog
@@ -281,6 +318,16 @@ datacatalog:
type: NodePort
# -- Appends additional ports to the service spec.
additionalPorts: []
+ serviceMonitor:
+ # -- If enabled create the Datacatalog service monitor
+ enabled: false
+ # -- Sets the labels for the service monitor which are required by the
+ # prometheus to auto-detect the service monitor and start scraping the metrics
+ labels: {}
+ # -- Sets the interval at which metrics will be scraped by prometheus
+ interval: 60s
+ # -- Sets the timeout after which request to scrape metrics will time out
+ scrapeTimeout: 30s
# -- Configuration for service accounts for Datacatalog
serviceAccount:
# -- Should a service account be created for Datacatalog
@@ -358,7 +405,7 @@ flytepropeller:
image:
# -- Docker image for Flytepropeller deployment
repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE
- tag: v1.16.0-b4 # FLYTEPROPELLER_TAG
+ tag: v1.16.6 # FLYTEPROPELLER_TAG
pullPolicy: IfNotPresent
# -- Default resources requests and limits for Flytepropeller deployment
resources:
@@ -527,7 +574,7 @@ flyteconsole:
image:
# -- Docker image for Flyteconsole deployment
repository: cr.flyte.org/flyteorg/flyteconsole # FLYTECONSOLE_IMAGE
- tag: v1.20.1 # FLYTECONSOLE_TAG
+ tag: v1.21.0 # FLYTECONSOLE_TAG
pullPolicy: IfNotPresent
# -- Default resources requests and limits for Flyteconsole deployment
resources:
@@ -539,6 +586,24 @@ flyteconsole:
memory: 50Mi
# Strategy for Flyteconsole deployment
strategy: {}
+
+ autoscaling:
+ enabled: false
+ minReplicas: 1
+ maxReplicas: 10
+ metrics:
+ - type: Resource
+ resource:
+ name: cpu
+ target:
+ type: Utilization
+ averageUtilization: 80
+ - type: Resource
+ resource:
+ name: memory
+ target:
+ type: Utilization
+ averageUtilization: 80
# -- Service settings for Flyteconsole
service:
appProtocols:
@@ -790,12 +855,18 @@ db:
username: postgres
host: postgres
dbname: "datacatalog"
+ # If using common.databaseSecret, this parameter is required.
+ # Ensure the secret key matches the specified filename below:
+ # E.g. `kubectl create secret generic flyte-db-password --from-literal=pass.txt='xxx'`
+ # passwordPath: /etc/db/pass.txt
admin:
database:
port: 5432
username: postgres
host: postgres
dbname: "flyteadmin"
+ # See comment above about passwordPath usage
+ # passwordPath: /etc/db/pass.txt
# --------------------------------------------------------------------
# Specializing your deployment using configuration
# -------------------------------------------------------------------
@@ -859,7 +930,8 @@ configmap:
# -- The type of exporter to use
type: noop
# -- Configuration for the file exporter type
- file: "/tmp/trace.txt"
+ file:
+ filename: "/tmp/trace.txt"
# -- Configuration for the jaeger exporter type
jaeger:
endpoint: "http://localhost:14268/api/traces"
@@ -909,6 +981,11 @@ configmap:
- "metadata"
- "admin"
eventVersion: 2
+ injectIdentityAnnotations: false
+ identityAnnotationPrefix: "flyte.org"
+ identityAnnotationKeys:
+ - email
+ - sub
testing:
host: http://flyteadmin
@@ -944,7 +1021,7 @@ configmap:
datacatalogServer:
datacatalog:
storage-prefix: metadata/datacatalog
- metrics-scope: datacatalog
+ metrics-scope: flyte
profiler-port: 10254
heartbeat-grace-period-multiplier: 3
max-reservation-heartbeat: 30s
@@ -993,7 +1070,7 @@ configmap:
# -- Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig)
co-pilot:
name: flyte-copilot-
- image: cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4 # FLYTECOPILOT_IMAGE
+ image: cr.flyte.org/flyteorg/flytecopilot:v1.16.6 # FLYTECOPILOT_IMAGE
start-timeout: 30s
# -- Core propeller configuration
diff --git a/charts/flyte-deps/Chart.yaml b/charts/flyte-deps/Chart.yaml
index 471e3e87a5c..248cfad82d3 100644
--- a/charts/flyte-deps/Chart.yaml
+++ b/charts/flyte-deps/Chart.yaml
@@ -10,7 +10,7 @@ dependencies:
condition: contour.enabled
- name: spark-operator
alias: sparkoperator
- version: 1.1.15
+ version: 2.1.1
repository: https://kubeflow.github.io/spark-operator
condition: sparkoperator.enabled
- name: dask-kubernetes-operator
@@ -20,5 +20,5 @@ dependencies:
condition: daskoperator.enabled
- name: kubernetes-dashboard
version: 4.0.2
- repository: https://kubernetes.github.io/dashboard/
+ repository: https://kubernetes-retired.github.io/dashboard/
condition: kubernetes-dashboard.enabled
diff --git a/charts/flyte-deps/README.md b/charts/flyte-deps/README.md
index 9127d8098e5..b46b46dcec9 100644
--- a/charts/flyte-deps/README.md
+++ b/charts/flyte-deps/README.md
@@ -10,8 +10,8 @@ A Helm chart for Flyte dependency
|------------|------|---------|
| https://charts.bitnami.com/bitnami | contour | 7.10.1 |
| https://helm.dask.org | daskoperator(dask-kubernetes-operator) | 2022.12.0 |
-| https://kubeflow.github.io/spark-operator | sparkoperator(spark-operator) | 1.1.15 |
-| https://kubernetes.github.io/dashboard/ | kubernetes-dashboard | 4.0.2 |
+| https://kubeflow.github.io/spark-operator | sparkoperator(spark-operator) | 2.1.1 |
+| https://kubernetes-retired.github.io/dashboard/ | kubernetes-dashboard | 4.0.2 |
### SANDBOX INSTALLATION:
- [Install helm 3](https://helm.sh/docs/intro/install/)
diff --git a/charts/flyte-sandbox/Chart.lock b/charts/flyte-sandbox/Chart.lock
index 7c4a85bfd37..e8b89c78f0e 100644
--- a/charts/flyte-sandbox/Chart.lock
+++ b/charts/flyte-sandbox/Chart.lock
@@ -1,12 +1,12 @@
dependencies:
- name: docker-registry
- repository: https://helm.twun.io/
+ repository: https://twuni.github.io/docker-registry.helm
version: 2.2.2
- name: flyte-binary
repository: file://../flyte-binary
version: v0.1.10
- name: kubernetes-dashboard
- repository: https://kubernetes.github.io/dashboard/
+ repository: https://kubernetes-retired.github.io/dashboard/
version: 6.0.0
- name: minio
repository: https://charts.bitnami.com/bitnami
@@ -14,5 +14,5 @@ dependencies:
- name: postgresql
repository: https://charts.bitnami.com/bitnami
version: 12.8.1
-digest: sha256:f63a6ba148c681162253c24f0ba200ab7d5b7934a398824cb7b4f35d8f9166de
-generated: "2024-02-13T17:51:58.270175-08:00"
+digest: sha256:47284b9ae82884038544cf6562717d9709c4ff735c926b02e74cb0968a6963f8
+generated: "2026-01-30T05:55:31.841384443+08:00"
diff --git a/charts/flyte-sandbox/Chart.yaml b/charts/flyte-sandbox/Chart.yaml
index d0914745db3..ebddc057d9f 100644
--- a/charts/flyte-sandbox/Chart.yaml
+++ b/charts/flyte-sandbox/Chart.yaml
@@ -26,7 +26,7 @@ appVersion: "1.16.1"
dependencies:
- name: docker-registry
version: 2.2.2
- repository: https://helm.twun.io/
+ repository: https://twuni.github.io/docker-registry.helm
condition: docker-registry.enabled
- name: flyte-binary
version: v0.1.10
@@ -34,7 +34,7 @@ dependencies:
condition: flyte-binary.enabled
- name: kubernetes-dashboard
version: 6.0.0
- repository: https://kubernetes.github.io/dashboard/
+ repository: https://kubernetes-retired.github.io/dashboard/
condition: kubernetes-dashboard.enabled
- name: minio
version: 12.6.7
diff --git a/charts/flyte-sandbox/README.md b/charts/flyte-sandbox/README.md
index c316199b575..3b84a354282 100644
--- a/charts/flyte-sandbox/README.md
+++ b/charts/flyte-sandbox/README.md
@@ -11,8 +11,8 @@ A Helm chart for the Flyte local sandbox
| file://../flyte-binary | flyte-binary | v0.1.10 |
| https://charts.bitnami.com/bitnami | minio | 12.6.7 |
| https://charts.bitnami.com/bitnami | postgresql | 12.8.1 |
-| https://helm.twun.io/ | docker-registry | 2.2.2 |
-| https://kubernetes.github.io/dashboard/ | kubernetes-dashboard | 6.0.0 |
+| https://kubernetes-retired.github.io/dashboard/ | kubernetes-dashboard | 6.0.0 |
+| https://twuni.github.io/docker-registry.helm | docker-registry | 2.2.2 |
## Values
@@ -31,7 +31,7 @@ A Helm chart for the Flyte local sandbox
| flyte-binary.configuration.inline.plugins.k8s.default-env-vars[1].FLYTE_AWS_ACCESS_KEY_ID | string | `"minio"` | |
| flyte-binary.configuration.inline.plugins.k8s.default-env-vars[2].FLYTE_AWS_SECRET_ACCESS_KEY | string | `"miniostorage"` | |
| flyte-binary.configuration.inline.plugins.k8s.default-env-vars[3].FLYTE_PLATFORM_URL | string | `"{{ printf \"%s-grpc\" .Release.Name }}.{{ .Release.Namespace }}:8089"` | |
-| flyte-binary.configuration.inline.plugins.k8s.default-env-vars[4].FLYTE_PLATFORM_INSECURE | bool | `true` | |
+| flyte-binary.configuration.inline.plugins.k8s.default-env-vars[4].FLYTE_PLATFORM_INSECURE | string | `"true"` | |
| flyte-binary.configuration.inline.storage.signedURL.stowConfigOverride.endpoint | string | `"http://localhost:30002"` | |
| flyte-binary.configuration.inline.task_resources.defaults.cpu | string | `"500m"` | |
| flyte-binary.configuration.inline.task_resources.defaults.ephemeralStorage | int | `0` | |
diff --git a/charts/flyte-sandbox/values.yaml b/charts/flyte-sandbox/values.yaml
index 314c8f8bb23..d2535f1198e 100644
--- a/charts/flyte-sandbox/values.yaml
+++ b/charts/flyte-sandbox/values.yaml
@@ -58,7 +58,7 @@ flyte-binary:
- FLYTE_AWS_ACCESS_KEY_ID: minio
- FLYTE_AWS_SECRET_ACCESS_KEY: miniostorage
- FLYTE_PLATFORM_URL: '{{ printf "%s-grpc" .Release.Name }}.{{ .Release.Namespace }}:8089'
- - FLYTE_PLATFORM_INSECURE: True
+ - FLYTE_PLATFORM_INSECURE: 'true'
inlineConfigMap: '{{ include "flyte-sandbox.configuration.inlineConfigMap" . }}'
clusterResourceTemplates:
inlineConfigMap: '{{ include "flyte-sandbox.clusterResourceTemplates.inlineConfigMap" . }}'
diff --git a/charts/flyte/Chart.yaml b/charts/flyte/Chart.yaml
index 60e6c8a1df1..37df7d20335 100644
--- a/charts/flyte/Chart.yaml
+++ b/charts/flyte/Chart.yaml
@@ -14,7 +14,7 @@ dependencies:
condition: contour.enabled
- name: spark-operator
alias: sparkoperator
- version: 1.1.15
+ version: 2.1.1
repository: https://kubeflow.github.io/spark-operator
condition: sparkoperator.enabled
- name: dask-kubernetes-operator
@@ -24,5 +24,5 @@ dependencies:
condition: daskoperator.enabled
- name: kubernetes-dashboard
version: 4.0.2
- repository: https://kubernetes.github.io/dashboard/
+ repository: https://kubernetes-retired.github.io/dashboard/
condition: kubernetes-dashboard.enabled
diff --git a/charts/flyte/README.md b/charts/flyte/README.md
index d1f8523b3a4..7b5b292cc5b 100644
--- a/charts/flyte/README.md
+++ b/charts/flyte/README.md
@@ -11,8 +11,8 @@ A Helm chart for Flyte Sandbox
| file://../flyte-core | flyte(flyte-core) | v0.1.10 |
| https://charts.bitnami.com/bitnami | contour | 7.10.1 |
| https://helm.dask.org | daskoperator(dask-kubernetes-operator) | 2022.12.0 |
-| https://kubeflow.github.io/spark-operator | sparkoperator(spark-operator) | 1.1.15 |
-| https://kubernetes.github.io/dashboard/ | kubernetes-dashboard | 4.0.2 |
+| https://kubeflow.github.io/spark-operator | sparkoperator(spark-operator) | 2.1.1 |
+| https://kubernetes-retired.github.io/dashboard/ | kubernetes-dashboard | 4.0.2 |
**NOTE:** Flyte sandbox helm chart is deprecated, From now follow the sandbox [docs](https://docs.flyte.org/en/latest/deployment/sandbox.html) for installing it on cloud
@@ -71,7 +71,7 @@ helm upgrade -f values-sandbox.yaml flyte .
| contour.tolerations | list | `[]` | tolerations for Contour deployment |
| daskoperator | object | `{"enabled":false}` | Optional: Dask Plugin using the Dask Operator |
| daskoperator.enabled | bool | `false` | - enable or disable the dask operator deployment installation |
-| flyte | object | `{"cluster_resource_manager":{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]},"common":{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"host":"","separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":true}},"configmap":{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpc":{"port":8089},"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://{{ .Values.storage.bucketName }}/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcMaxRecvMsgSizeMBs":6,"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"container":"container","container_array":"k8s-array","sensor":"connector-service","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","connector-service","echo"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-from-configmaps":[],"default-env-from-secrets":[],"default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}},"datacatalog":{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v1.16.0-b4"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"db":{"admin":{"database":{"dbname":"flyteadmin","host":"postgres","port":5432,"username":"postgres"}},"datacatalog":{"database":{"dbname":"datacatalog","host":"postgres","port":5432,"username":"postgres"}}},"deployRedoc":true,"flyteadmin":{"additionalVolumeMounts":[],"additionalVolumes":[],"affinity":{},"configPath":"/etc/flyte/config/*.yaml","env":[],"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteadmin","tag":"v1.16.0-b4"},"initialProjects":["flytesnacks","flytetester","flyteexamples"],"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flyteconsole":{"affinity":{},"ga":{"enabled":true,"tracking_id":"G-0QW4DJWJ20"},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v1.20.1"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"275Mi"},"requests":{"cpu":"10m","memory":"250Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]},"flytepropeller":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v1.16.0-b4"},"manager":false,"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flytescheduler":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytescheduler","tag":"v1.16.0-b4"},"nodeSelector":{},"podAnnotations":{},"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"storage":{"bucketName":"my-s3-bucket","cache":{"maxSizeMBs":0,"targetGCPercent":70},"custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"},"webhook":{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]}},"workflow_notifications":{"config":{},"enabled":false},"workflow_scheduler":{"enabled":true,"type":"native"}}` | ------------------------------------------------------------------- Core System settings This section consists of Core components of Flyte and their deployment settings. This includes FlyteAdmin service, Datacatalog, FlytePropeller and Flyteconsole |
+| flyte | object | `{"cluster_resource_manager":{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]},"common":{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"host":"","separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":true}},"configmap":{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpc":{"port":8089},"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.16.6","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://{{ .Values.storage.bucketName }}/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcMaxRecvMsgSizeMBs":6,"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"container":"container","container_array":"k8s-array","sensor":"connector-service","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","connector-service","echo"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-from-configmaps":[],"default-env-from-secrets":[],"default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}},"datacatalog":{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v1.16.6"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"db":{"admin":{"database":{"dbname":"flyteadmin","host":"postgres","port":5432,"username":"postgres"}},"datacatalog":{"database":{"dbname":"datacatalog","host":"postgres","port":5432,"username":"postgres"}}},"deployRedoc":true,"flyteadmin":{"additionalVolumeMounts":[],"additionalVolumes":[],"affinity":{},"configPath":"/etc/flyte/config/*.yaml","env":[],"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteadmin","tag":"v1.16.6"},"initialProjects":["flytesnacks","flytetester","flyteexamples"],"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flyteconsole":{"affinity":{},"ga":{"enabled":true,"tracking_id":"G-0QW4DJWJ20"},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v1.21.0"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"275Mi"},"requests":{"cpu":"10m","memory":"250Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]},"flytepropeller":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v1.16.6"},"manager":false,"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flytescheduler":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytescheduler","tag":"v1.16.6"},"nodeSelector":{},"podAnnotations":{},"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"storage":{"bucketName":"my-s3-bucket","cache":{"maxSizeMBs":0,"targetGCPercent":70},"custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"},"webhook":{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]}},"workflow_notifications":{"config":{},"enabled":false},"workflow_scheduler":{"enabled":true,"type":"native"}}` | ------------------------------------------------------------------- Core System settings This section consists of Core components of Flyte and their deployment settings. This includes FlyteAdmin service, Datacatalog, FlytePropeller and Flyteconsole |
| flyte.cluster_resource_manager | object | `{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]}` | Configuration for the Cluster resource manager component. This is an optional component, that enables automatic cluster configuration. This is useful to set default quotas, manage namespaces etc that map to a project/domain |
| flyte.cluster_resource_manager.config.cluster_resources | object | `{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}` | ClusterResource parameters Refer to the [structure](https://pkg.go.dev/github.com/lyft/flyteadmin@v0.3.37/pkg/runtime/interfaces#ClusterResourceConfig) to customize. |
| flyte.cluster_resource_manager.config.cluster_resources.standaloneDeployment | bool | `false` | Starts the cluster resource manager in standalone mode with requisite auth credentials to call flyteadmin service endpoints |
@@ -91,15 +91,15 @@ helm upgrade -f values-sandbox.yaml flyte .
| flyte.common.ingress.separateGrpcIngressAnnotations | object | `{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"}` | - Extra Ingress annotations applied only to the GRPC ingress. Only makes sense if `separateGrpcIngress` is enabled. |
| flyte.common.ingress.tls | object | `{"enabled":false}` | - TLS Settings |
| flyte.common.ingress.webpackHMR | bool | `true` | - Enable or disable HMR route to flyteconsole. This is useful only for frontend development. |
-| flyte.configmap | object | `{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpc":{"port":8089},"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://{{ .Values.storage.bucketName }}/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcMaxRecvMsgSizeMBs":6,"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"container":"container","container_array":"k8s-array","sensor":"connector-service","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","connector-service","echo"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-from-configmaps":[],"default-env-from-secrets":[],"default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}}` | ----------------------------------------------------------------- CONFIGMAPS SETTINGS |
+| flyte.configmap | object | `{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpc":{"port":8089},"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.16.6","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://{{ .Values.storage.bucketName }}/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcMaxRecvMsgSizeMBs":6,"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"container":"container","container_array":"k8s-array","sensor":"connector-service","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","connector-service","echo"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-from-configmaps":[],"default-env-from-secrets":[],"default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}}` | ----------------------------------------------------------------- CONFIGMAPS SETTINGS |
| flyte.configmap.adminServer | object | `{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpc":{"port":8089},"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}}` | FlyteAdmin server configuration |
| flyte.configmap.adminServer.auth | object | `{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}}` | Authentication configuration |
| flyte.configmap.adminServer.server.security.secure | bool | `false` | Controls whether to serve requests over SSL/TLS. |
| flyte.configmap.adminServer.server.security.useAuth | bool | `false` | Controls whether to enforce authentication. Follow the guide in https://docs.flyte.org/ on how to setup authentication. |
| flyte.configmap.catalog | object | `{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}}` | Catalog Client configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/catalog#Config) Additional advanced Catalog configuration [here](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/pluginmachinery/catalog#Config) |
| flyte.configmap.console | object | `{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"}` | Configuration for Flyte console UI |
-| flyte.configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration |
-| flyte.configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) |
+| flyte.configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.16.6","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration |
+| flyte.configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.16.6","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) |
| flyte.configmap.core | object | `{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://{{ .Values.storage.bucketName }}/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}}` | Core propeller configuration |
| flyte.configmap.core.propeller | object | `{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://{{ .Values.storage.bucketName }}/","workers":4,"workflow-reeval-duration":"30s"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/config). |
| flyte.configmap.datacatalogServer | object | `{"application":{"grpcMaxRecvMsgSizeMBs":6,"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}}` | Datacatalog server config |
@@ -120,7 +120,7 @@ helm upgrade -f values-sandbox.yaml flyte .
| flyte.datacatalog.configPath | string | `"/etc/datacatalog/config/*.yaml"` | Default regex string for searching configuration files |
| flyte.datacatalog.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy |
| flyte.datacatalog.image.repository | string | `"cr.flyte.org/flyteorg/datacatalog"` | Docker image for Datacatalog deployment |
-| flyte.datacatalog.image.tag | string | `"v1.16.0-b4"` | Docker image tag |
+| flyte.datacatalog.image.tag | string | `"v1.16.6"` | Docker image tag |
| flyte.datacatalog.nodeSelector | object | `{}` | nodeSelector for Datacatalog deployment |
| flyte.datacatalog.podAnnotations | object | `{}` | Annotations for Datacatalog pods |
| flyte.datacatalog.replicaCount | int | `1` | Replicas count for Datacatalog deployment |
@@ -136,7 +136,7 @@ helm upgrade -f values-sandbox.yaml flyte .
| flyte.flyteadmin.env | list | `[]` | Additional flyteadmin container environment variables e.g. SendGrid's API key - name: SENDGRID_API_KEY value: "" e.g. secret environment variable (you can combine it with .additionalVolumes): - name: SENDGRID_API_KEY valueFrom: secretKeyRef: name: sendgrid-secret key: api_key |
| flyte.flyteadmin.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy |
| flyte.flyteadmin.image.repository | string | `"cr.flyte.org/flyteorg/flyteadmin"` | Docker image for Flyteadmin deployment |
-| flyte.flyteadmin.image.tag | string | `"v1.16.0-b4"` | Docker image tag |
+| flyte.flyteadmin.image.tag | string | `"v1.16.6"` | Docker image tag |
| flyte.flyteadmin.initialProjects | list | `["flytesnacks","flytetester","flyteexamples"]` | Initial projects to create |
| flyte.flyteadmin.nodeSelector | object | `{}` | nodeSelector for Flyteadmin deployment |
| flyte.flyteadmin.podAnnotations | object | `{}` | Annotations for Flyteadmin pods |
@@ -151,7 +151,7 @@ helm upgrade -f values-sandbox.yaml flyte .
| flyte.flyteconsole.affinity | object | `{}` | affinity for Flyteconsole deployment |
| flyte.flyteconsole.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy |
| flyte.flyteconsole.image.repository | string | `"cr.flyte.org/flyteorg/flyteconsole"` | Docker image for Flyteconsole deployment |
-| flyte.flyteconsole.image.tag | string | `"v1.20.1"` | Docker image tag |
+| flyte.flyteconsole.image.tag | string | `"v1.21.0"` | Docker image tag |
| flyte.flyteconsole.nodeSelector | object | `{}` | nodeSelector for Flyteconsole deployment |
| flyte.flyteconsole.podAnnotations | object | `{}` | Annotations for Flyteconsole pods |
| flyte.flyteconsole.replicaCount | int | `1` | Replicas count for Flyteconsole deployment |
@@ -162,7 +162,7 @@ helm upgrade -f values-sandbox.yaml flyte .
| flyte.flytepropeller.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files |
| flyte.flytepropeller.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy |
| flyte.flytepropeller.image.repository | string | `"cr.flyte.org/flyteorg/flytepropeller"` | Docker image for Flytepropeller deployment |
-| flyte.flytepropeller.image.tag | string | `"v1.16.0-b4"` | Docker image tag |
+| flyte.flytepropeller.image.tag | string | `"v1.16.6"` | Docker image tag |
| flyte.flytepropeller.nodeSelector | object | `{}` | nodeSelector for Flytepropeller deployment |
| flyte.flytepropeller.podAnnotations | object | `{}` | Annotations for Flytepropeller pods |
| flyte.flytepropeller.replicaCount | int | `1` | Replicas count for Flytepropeller deployment |
@@ -176,7 +176,7 @@ helm upgrade -f values-sandbox.yaml flyte .
| flyte.flytescheduler.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files |
| flyte.flytescheduler.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy |
| flyte.flytescheduler.image.repository | string | `"cr.flyte.org/flyteorg/flytescheduler"` | Docker image for Flytescheduler deployment |
-| flyte.flytescheduler.image.tag | string | `"v1.16.0-b4"` | Docker image tag |
+| flyte.flytescheduler.image.tag | string | `"v1.16.6"` | Docker image tag |
| flyte.flytescheduler.nodeSelector | object | `{}` | nodeSelector for Flytescheduler deployment |
| flyte.flytescheduler.podAnnotations | object | `{}` | Annotations for Flytescheduler pods |
| flyte.flytescheduler.resources | object | `{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}}` | Default resources requests and limits for Flytescheduler deployment |
diff --git a/charts/flyte/values.yaml b/charts/flyte/values.yaml
index 1788220fa06..76588eabae0 100755
--- a/charts/flyte/values.yaml
+++ b/charts/flyte/values.yaml
@@ -15,7 +15,7 @@ flyte:
# -- Docker image for Flyteadmin deployment
repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE
# -- Docker image tag
- tag: v1.16.0-b4 # FLYTEADMIN_TAG
+ tag: v1.16.6 # FLYTEADMIN_TAG
# -- Docker image pull policy
pullPolicy: IfNotPresent
# -- Additional flyteadmin container environment variables
@@ -83,7 +83,7 @@ flyte:
# -- Docker image for Flytescheduler deployment
repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE
# -- Docker image tag
- tag: v1.16.0-b4 # FLYTESCHEDULER_TAG
+ tag: v1.16.6 # FLYTESCHEDULER_TAG
# -- Docker image pull policy
pullPolicy: IfNotPresent
# -- Default resources requests and limits for Flytescheduler deployment
@@ -128,7 +128,7 @@ flyte:
# -- Docker image for Datacatalog deployment
repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE
# -- Docker image tag
- tag: v1.16.0-b4 # DATACATALOG_TAG
+ tag: v1.16.6 # DATACATALOG_TAG
# -- Docker image pull policy
pullPolicy: IfNotPresent
# -- Default resources requests and limits for Datacatalog deployment
@@ -177,7 +177,7 @@ flyte:
# -- Docker image for Flytepropeller deployment
repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE
# -- Docker image tag
- tag: v1.16.0-b4 # FLYTEPROPELLER_TAG
+ tag: v1.16.6 # FLYTEPROPELLER_TAG
# -- Docker image pull policy
pullPolicy: IfNotPresent
# -- Default resources requests and limits for Flytepropeller deployment
@@ -221,7 +221,7 @@ flyte:
# -- Docker image for Flyteconsole deployment
repository: cr.flyte.org/flyteorg/flyteconsole # FLYTECONSOLE_IMAGE
# -- Docker image tag
- tag: v1.20.1 # FLYTECONSOLE_TAG
+ tag: v1.21.0 # FLYTECONSOLE_TAG
# -- Docker image pull policy
pullPolicy: IfNotPresent
# -- Default resources requests and limits for Flyteconsole deployment
@@ -474,7 +474,7 @@ flyte:
# -- Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig)
co-pilot:
name: flyte-copilot-
- image: cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4 # FLYTECOPILOT_IMAGE
+ image: cr.flyte.org/flyteorg/flytecopilot:v1.16.6 # FLYTECOPILOT_IMAGE
start-timeout: 30s
# -- Core propeller configuration
diff --git a/charts/flyteconnector/README.md b/charts/flyteconnector/README.md
index d5d85bb809e..a3258d4a386 100644
--- a/charts/flyteconnector/README.md
+++ b/charts/flyteconnector/README.md
@@ -26,10 +26,13 @@ A Helm chart for Flyte connector
| podAnnotations | object | `{}` | Annotations for flyteconnector pods |
| podEnv | object | `{}` | Additional flyteconnector pod container environment variables |
| podLabels | object | `{}` | Labels for flyteconnector pods |
-| podSecurityContext | object | `{}` | Security context for pod |
+| podSecurityContext | object | `{}` | |
| ports.containerPort | int | `8000` | |
| ports.name | string | `"connector-grpc"` | |
| priorityClassName | string | `""` | Sets priorityClassName for datacatalog pod(s). |
+| rbac | object | `{"enabled":false,"rules":[{"apiGroups":[""],"resources":["secrets"],"verbs":["get"]}]}` | RBAC configuration for flyteconnector Enable to allow the connector to read secrets across namespaces (required for per-project Databricks token authentication) |
+| rbac.enabled | bool | `false` | Should RBAC resources (ClusterRole/ClusterRoleBinding) be created for flyteconnector |
+| rbac.rules | list | `[{"apiGroups":[""],"resources":["secrets"],"verbs":["get"]}]` | Rules for the ClusterRole created for flyteconnector |
| readinessProbe | object | `{"grpc":{"port":8000},"initialDelaySeconds":1,"periodSeconds":3}` | https://kubernetes.io/blog/2022/05/13/grpc-probes-now-in-beta/#trying-the-feature-out |
| replicaCount | int | `1` | Replicas count for flyteconnector deployment |
| resources | object | `{"limits":{"cpu":"500m","ephemeral-storage":"200Mi","memory":"300Mi"},"requests":{"cpu":"500m","ephemeral-storage":"200Mi","memory":"200Mi"}}` | Default resources requests and limits for flyteconnector deployment |
diff --git a/charts/flyteconnector/templates/connector/rbac.yaml b/charts/flyteconnector/templates/connector/rbac.yaml
new file mode 100644
index 00000000000..b06396db259
--- /dev/null
+++ b/charts/flyteconnector/templates/connector/rbac.yaml
@@ -0,0 +1,31 @@
+{{- if .Values.rbac.enabled }}
+{{- if $.Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" }}
+apiVersion: rbac.authorization.k8s.io/v1
+{{- else }}
+apiVersion: rbac.authorization.k8s.io/v1beta1
+{{- end }}
+kind: ClusterRole
+metadata:
+ name: {{ template "flyte.namespace" . -}}-{{- template "flyteconnector.name" . }}
+ labels: {{ include "flyteconnector.labels" . | nindent 4 }}
+rules:
+ {{- toYaml .Values.rbac.rules | nindent 2 }}
+---
+{{- if $.Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" }}
+apiVersion: rbac.authorization.k8s.io/v1
+{{- else }}
+apiVersion: rbac.authorization.k8s.io/v1beta1
+{{- end }}
+kind: ClusterRoleBinding
+metadata:
+ name: {{ template "flyte.namespace" . -}}-{{- template "flyteconnector.name" . }}
+ labels: {{ include "flyteconnector.labels" . | nindent 4 }}
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: {{ template "flyte.namespace" . -}}-{{- template "flyteconnector.name" . }}
+subjects:
+- kind: ServiceAccount
+ name: {{ template "flyteconnector.name" . }}
+ namespace: {{ template "flyte.namespace" . }}
+{{- end }}
diff --git a/charts/flyteconnector/values.yaml b/charts/flyteconnector/values.yaml
index 77508940da9..259e46828e5 100755
--- a/charts/flyteconnector/values.yaml
+++ b/charts/flyteconnector/values.yaml
@@ -55,6 +55,20 @@ serviceAccount:
# -- ImagePullSecrets to automatically assign to the service account
imagePullSecrets: []
# -- Security context for pod
+# -- RBAC configuration for flyteconnector
+# Enable to allow the connector to read secrets across namespaces
+# (required for per-project Databricks token authentication)
+rbac:
+ # -- Should RBAC resources (ClusterRole/ClusterRoleBinding) be created for flyteconnector
+ enabled: false
+ # -- Rules for the ClusterRole created for flyteconnector
+ rules:
+ - apiGroups:
+ - ""
+ resources:
+ - secrets
+ verbs:
+ - get
podSecurityContext: {}
# -- Readiness probe for flyteconnector. Use readinessProbe: {} if connector doesn't implement grpc-health-checking service.
# -- https://kubernetes.io/blog/2022/05/13/grpc-probes-now-in-beta/#trying-the-feature-out
diff --git a/datacatalog/.golangci.yml b/datacatalog/.golangci.yml
index 77107079d07..4866cecc78b 100644
--- a/datacatalog/.golangci.yml
+++ b/datacatalog/.golangci.yml
@@ -1,35 +1,41 @@
-run:
- skip-dirs:
- - pkg/client
+version: "2"
linters:
- disable-all: true
+ default: none
enable:
- errcheck
- - gosec
- - gci
- goconst
- - goimports
- - gosimple
+ - gosec
- govet
- ineffassign
- misspell
- nakedret
- - staticcheck
- - typecheck
+ - protogetter
- unconvert
- unparam
- unused
- - protogetter
-linters-settings:
- gci:
- custom-order: true
- sections:
- - standard
- - default
- - prefix(github.com/flyteorg)
- skip-generated: true
- goconst:
- ignore-tests: true
-issues:
- exclude:
- - copylocks
+ exclusions:
+ generated: lax
+ presets:
+ - comments
+ - common-false-positives
+ - legacy
+ - std-error-handling
+ rules:
+ - path: (.+)\.go$
+ text: copylocks
+ - linters:
+ - goconst
+ path: (.+)_test\.go
+formatters:
+ enable:
+ - gci
+ - goimports
+ settings:
+ gci:
+ sections:
+ - standard
+ - default
+ - prefix(github.com/flyteorg)
+ custom-order: true
+ exclusions:
+ generated: lax
\ No newline at end of file
diff --git a/datacatalog/go.mod b/datacatalog/go.mod
index 8892c1bab36..cea1d1e5a73 100644
--- a/datacatalog/go.mod
+++ b/datacatalog/go.mod
@@ -1,22 +1,22 @@
module github.com/flyteorg/flyte/datacatalog
-go 1.22
+go 1.26.0
require (
github.com/Selvatico/go-mocket v1.0.7
github.com/flyteorg/flyte/flyteidl v0.0.0-00010101000000-000000000000
github.com/flyteorg/flyte/flytestdlib v0.0.0-00010101000000-000000000000
+ github.com/go-viper/mapstructure/v2 v2.4.0
github.com/gofrs/uuid v4.2.0+incompatible
- github.com/golang/glog v1.2.4
- github.com/golang/protobuf v1.5.3
- github.com/jackc/pgconn v1.14.3
- github.com/mitchellh/mapstructure v1.5.0
- github.com/spf13/cobra v1.7.0
- github.com/spf13/pflag v1.0.5
- github.com/stretchr/testify v1.9.0
+ github.com/golang/glog v1.2.5
+ github.com/golang/protobuf v1.5.4
+ github.com/jackc/pgx/v5 v5.9.2
+ github.com/spf13/cobra v1.9.1
+ github.com/spf13/pflag v1.0.10
+ github.com/stretchr/testify v1.11.1
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0
- go.opentelemetry.io/otel v1.24.0
- google.golang.org/grpc v1.62.1
+ go.opentelemetry.io/otel v1.43.0
+ google.golang.org/grpc v1.80.0
gorm.io/driver/postgres v1.5.3
gorm.io/driver/sqlite v1.5.4
gorm.io/gorm v1.25.4
@@ -25,8 +25,7 @@ require (
require (
cloud.google.com/go v0.112.0 // indirect
- cloud.google.com/go/compute v1.23.3 // indirect
- cloud.google.com/go/compute/metadata v0.2.3 // indirect
+ cloud.google.com/go/compute/metadata v0.9.0 // indirect
cloud.google.com/go/iam v1.1.5 // indirect
cloud.google.com/go/storage v1.36.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 // indirect
@@ -36,128 +35,116 @@ require (
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
github.com/aws/aws-sdk-go v1.47.11 // indirect
github.com/beorn7/perks v1.0.1 // indirect
- github.com/cenkalti/backoff/v4 v4.2.1 // indirect
+ github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/coocood/freecache v1.1.1 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/emicklei/go-restful/v3 v3.9.0 // indirect
- github.com/evanphx/json-patch/v5 v5.6.0 // indirect
+ github.com/emicklei/go-restful/v3 v3.12.2 // indirect
+ github.com/evanphx/json-patch/v5 v5.9.11 // indirect
github.com/fatih/color v1.13.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/flyteorg/stow v0.3.11 // indirect
- github.com/fsnotify/fsnotify v1.6.0 // indirect
+ github.com/flyteorg/stow v0.3.12 // indirect
+ github.com/fsnotify/fsnotify v1.9.0 // indirect
+ github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/ghodss/yaml v1.0.0 // indirect
github.com/go-gormigrate/gormigrate/v2 v2.1.1 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
+ github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
- github.com/go-openapi/jsonpointer v0.19.6 // indirect
+ github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.20.2 // indirect
- github.com/go-openapi/swag v0.22.3 // indirect
+ github.com/go-openapi/swag v0.23.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/google/gnostic-models v0.6.8 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
+ github.com/google/gnostic-models v0.7.0 // indirect
+ github.com/google/go-cmp v0.7.0 // indirect
github.com/google/s2a-go v0.1.7 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect
- github.com/hashicorp/hcl v1.0.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
- github.com/jackc/chunkreader/v2 v2.0.1 // indirect
- github.com/jackc/pgio v1.0.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
- github.com/jackc/pgproto3/v2 v2.3.3 // indirect
- github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
- github.com/jackc/pgx/v5 v5.5.5 // indirect
- github.com/jackc/puddle/v2 v2.2.1 // indirect
+ github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
+ github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
- github.com/magiconair/properties v1.8.6 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.12 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/mattn/go-sqlite3 v1.14.24 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/ncw/swift v1.0.53 // indirect
- github.com/pelletier/go-toml v1.9.4 // indirect
- github.com/pelletier/go-toml/v2 v2.0.0-beta.8 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/prometheus/client_golang v1.19.1 // indirect
+ github.com/prometheus/client_golang v1.22.0 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
- github.com/prometheus/common v0.53.0 // indirect
+ github.com/prometheus/common v0.62.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
+ github.com/sagikazarmark/locafero v0.11.0 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
- github.com/spf13/afero v1.8.2 // indirect
- github.com/spf13/cast v1.4.1 // indirect
- github.com/spf13/jwalterweatherman v1.1.0 // indirect
- github.com/spf13/viper v1.11.0 // indirect
+ github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
+ github.com/spf13/afero v1.15.0 // indirect
+ github.com/spf13/cast v1.10.0 // indirect
+ github.com/spf13/viper v1.21.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
- github.com/subosito/gotenv v1.2.0 // indirect
+ github.com/subosito/gotenv v1.6.0 // indirect
+ github.com/x448/float16 v0.8.4 // indirect
go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
+ go.opentelemetry.io/auto/sdk v1.2.1 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 // indirect
- go.opentelemetry.io/otel/metric v1.24.0 // indirect
- go.opentelemetry.io/otel/sdk v1.24.0 // indirect
- go.opentelemetry.io/otel/trace v1.24.0 // indirect
- go.opentelemetry.io/proto/otlp v1.1.0 // indirect
- golang.org/x/crypto v0.31.0 // indirect
- golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 // indirect
- golang.org/x/net v0.33.0 // indirect
- golang.org/x/oauth2 v0.18.0 // indirect
- golang.org/x/sync v0.10.0 // indirect
- golang.org/x/sys v0.28.0 // indirect
- golang.org/x/term v0.27.0 // indirect
- golang.org/x/text v0.21.0 // indirect
- golang.org/x/time v0.5.0 // indirect
+ go.opentelemetry.io/otel/metric v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.43.0 // indirect
+ go.opentelemetry.io/otel/trace v1.43.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.10.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.49.0 // indirect
+ golang.org/x/net v0.52.0 // indirect
+ golang.org/x/oauth2 v0.35.0 // indirect
+ golang.org/x/sync v0.20.0 // indirect
+ golang.org/x/sys v0.42.0 // indirect
+ golang.org/x/term v0.41.0 // indirect
+ golang.org/x/text v0.35.0 // indirect
+ golang.org/x/time v0.9.0 // indirect
google.golang.org/api v0.155.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/protobuf v1.34.1 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ google.golang.org/protobuf v1.36.11 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
- gopkg.in/ini.v1 v1.66.4 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- k8s.io/api v0.28.2 // indirect
- k8s.io/apimachinery v0.28.2 // indirect
- k8s.io/client-go v0.28.1 // indirect
- k8s.io/klog/v2 v2.100.1 // indirect
- k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect
- k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 // indirect
- sigs.k8s.io/controller-runtime v0.0.0-00010101000000-000000000000 // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
- sigs.k8s.io/yaml v1.3.0 // indirect
+ k8s.io/api v0.34.1 // indirect
+ k8s.io/apimachinery v0.34.1 // indirect
+ k8s.io/client-go v0.34.1 // indirect
+ k8s.io/klog/v2 v2.130.1 // indirect
+ k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
+ k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect
+ sigs.k8s.io/controller-runtime v0.22.4 // indirect
+ sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
+ sigs.k8s.io/randfill v1.0.0 // indirect
+ sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
+ sigs.k8s.io/yaml v1.6.0 // indirect
)
replace (
- github.com/flyteorg/flyte/datacatalog => ../datacatalog
- github.com/flyteorg/flyte/flyteadmin => ../flyteadmin
github.com/flyteorg/flyte/flyteidl => ../flyteidl
- github.com/flyteorg/flyte/flyteplugins => ../flyteplugins
- github.com/flyteorg/flyte/flytepropeller => ../flytepropeller
github.com/flyteorg/flyte/flytestdlib => ../flytestdlib
- k8s.io/api => k8s.io/api v0.28.2
- k8s.io/apimachinery => k8s.io/apimachinery v0.28.2
- k8s.io/client-go => k8s.io/client-go v0.28.2
- k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f
- sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.16.2
)
diff --git a/datacatalog/go.sum b/datacatalog/go.sum
index ede06581957..18eb09eed72 100644
--- a/datacatalog/go.sum
+++ b/datacatalog/go.sum
@@ -1,51 +1,12 @@
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.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
-cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
-cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
-cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
-cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
-cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
-cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
-cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
-cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
-cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
-cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
-cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
-cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM=
cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4=
-cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
-cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
-cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
-cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
-cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
-cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=
-cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI=
-cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
-cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
-cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
-cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
+cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
+cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI=
cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8=
-cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
-cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
-cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
-cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
-cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
-cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
-cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
-cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
-cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8=
cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8=
-dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc=
@@ -59,7 +20,6 @@ github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0/go.mod h1:WCPBHsOXfB
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
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/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/Selvatico/go-mocket v1.0.7 h1:sXuFMnMfVL9b/Os8rGXPgbOFbr4HJm8aHsulD/uMTUk=
@@ -68,8 +28,10 @@ github.com/aws/aws-sdk-go v1.47.11 h1:Dol+MA+hQblbnXUI3Vk9qvoekU6O1uDEuAItezjiWN
github.com/aws/aws-sdk-go v1.47.11/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
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/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
-github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+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 v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
@@ -77,67 +39,67 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927 h1:SKI1/fuSdodxmNNyVBR8d7X/HuLnRpvvFO0AgyQk764=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
-github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
github.com/coocood/freecache v1.1.1 h1:uukNF7QKCZEdZ9gAV7WQzvh0SbjwdMF6m3x3rxEkaPc=
github.com/coocood/freecache v1.1.1/go.mod h1:OKrEjkGVoxZhyWAJoeFi5BMLUJm2Tit0kpGkIr7NGYY=
-github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE=
-github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU=
+github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
+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.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
-github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
-github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww=
-github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4=
+github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=
+github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
+github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
+github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/flyteorg/stow v0.3.11 h1:Uf4fzVbghCqMNvx50XvYzwdNeQDBSKQJ7zddWu7p3eI=
-github.com/flyteorg/stow v0.3.11/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
-github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
-github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
+github.com/flyteorg/stow v0.3.12 h1:RRXI5RUdxaK6A46HrO0D2r14cRlW1lJRL6qyzqpVMPU=
+github.com/flyteorg/stow v0.3.12/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
+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.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
+github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
+github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gormigrate/gormigrate/v2 v2.1.1 h1:eGS0WTFRV30r103lU8JNXY27KbviRnqqIDobW3EV3iY=
github.com/go-gormigrate/gormigrate/v2 v2.1.1/go.mod h1:L7nJ620PFDKei9QOhJzqA8kRCk+E3UbV2f5gv+1ndLc=
-github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+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-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo=
-github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA=
-github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
+github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
+github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
+github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
+github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
-github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/go-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-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
+github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
+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/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0=
github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
@@ -145,77 +107,40 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69
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/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc=
-github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
-github.com/golang/groupcache v0.0.0-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/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I=
+github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
-github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
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.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
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.4.3/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.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
-github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-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/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
-github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
+github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
+github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.4.1/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.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.4/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.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-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/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 h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
-github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
-github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=
github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
-github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
+github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -223,45 +148,22 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
-github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
-github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
-github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
-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/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=
github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
-github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28=
-github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
-github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8=
-github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
-github.com/jackc/pgconn v1.14.3 h1:bVoTr12EGANZz66nZPkMInAV/KHD2TxH9npjXXgiB3w=
-github.com/jackc/pgconn v1.14.3/go.mod h1:RZbme4uasqzybK2RK5c65VsHxoyaml09lx3tXOcO/VM=
-github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE=
-github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8=
-github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5Wi/+Zz7xoE5ALHsRQlOctkOiHc=
-github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
-github.com/jackc/pgproto3/v2 v2.3.3 h1:1HLSx5H+tXR9pW3in3zaztoEwQYRC9SQaYUHjTSUOag=
-github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
-github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
-github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
-github.com/jackc/pgx/v5 v5.5.5 h1:amBjrZVmksIdNjxGW/IiIMzxMKZFelXbUoPNb+8sjQw=
-github.com/jackc/pgx/v5 v5.5.5/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A=
-github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
-github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
-github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
+github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
+github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
+github.com/jackc/pgx/v5 v5.9.2 h1:3ZhOzMWnR4yJ+RW1XImIPsD1aNSz4T4fyP7zlQb56hw=
+github.com/jackc/pgx/v5 v5.9.2/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4=
+github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
+github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
@@ -274,12 +176,10 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
-github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/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/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+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/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -301,342 +201,181 @@ github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM=
github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
-github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
-github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/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 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/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/ncw/swift v1.0.53 h1:luHjjTNtekIEvHg5KdAFIBaH7bWfNkefwFnpDffSIks=
github.com/ncw/swift v1.0.53/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM=
-github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU=
-github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM=
-github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
-github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
-github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM=
-github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
+github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg=
+github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
+github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw=
+github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
+github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
+github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
-github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
+github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
+github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
-github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
+github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
+github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE=
-github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U=
+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/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+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/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc=
+github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
-github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
-github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
-github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
-github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
-github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
-github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
-github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44=
-github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk=
+github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
+github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
+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 v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
+github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
+github.com/spf13/pflag v1.0.6/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.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
+github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
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/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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
-github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
-github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+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.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
+github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
+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/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
-go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
-go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
+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.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
-go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
-go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q=
+go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
+go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 h1:zr8ymM5OWWjjiWRzwTfZ67c905+2TMHYp2lMJ52QTyM=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0/go.mod h1:sQs7FT2iLVJ+67vYngGJkPe1qr39IzaBzaj9IDNNY8k=
-go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
-go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
-go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
-go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
-go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
-go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI=
-go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY=
+go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
+go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
+go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
+go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
+go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
+go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
+go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
+go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
+go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=
+go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=
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.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
-go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c=
-go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk=
+go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
+go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
+go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
+go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v3 v3.0.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-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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
-golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
+golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
+golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
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-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
-golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
-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-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
-golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/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.1.1-0.20191107180719-034126e5016b/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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
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-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-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-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/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-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200707034311-ab3426394381/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-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=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
-golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
+golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
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-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
-golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
+golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
+golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
-golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
+golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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-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-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-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-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-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
-golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
-golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
-golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
+golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=
+golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=
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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
-golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
+golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
+golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
+golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-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-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
-golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
-golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
+golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=
+golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
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=
@@ -645,96 +384,28 @@ golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3j
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
-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/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
-google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
-google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
-google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
-google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
+gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
+gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA=
google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk=
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/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-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-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
-google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
-google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 h1:VPWxll4HlMw1Vs/qXtN7BvhZqsS9cdAittCNvVENElA=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
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.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
-google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
-google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
-google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
+google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM=
+google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4=
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=
@@ -743,22 +414,16 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi
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.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
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.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
-google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4=
+gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
gopkg.in/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.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4=
-gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/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=
@@ -774,36 +439,28 @@ gorm.io/gorm v1.25.4/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
gorm.io/plugin/opentelemetry v0.1.4 h1:7p0ocWELjSSRI7NCKPW2mVe6h43YPini99sNJcbsTuc=
gorm.io/plugin/opentelemetry v0.1.4/go.mod h1:tndJHOdvPT0pyGhOb8E2209eXJCUxhC5UpKw7bGVWeI=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
-honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-k8s.io/api v0.28.2 h1:9mpl5mOb6vXZvqbQmankOfPIGiudghwCoLl1EYfUZbw=
-k8s.io/api v0.28.2/go.mod h1:RVnJBsjU8tcMq7C3iaRSGMeaKt2TWEUXcpIt/90fjEg=
-k8s.io/apiextensions-apiserver v0.28.0 h1:CszgmBL8CizEnj4sj7/PtLGey6Na3YgWyGCPONv7E9E=
-k8s.io/apiextensions-apiserver v0.28.0/go.mod h1:uRdYiwIuu0SyqJKriKmqEN2jThIJPhVmOWETm8ud1VE=
-k8s.io/apimachinery v0.28.2 h1:KCOJLrc6gu+wV1BYgwik4AF4vXOlVJPdiqn0yAWWwXQ=
-k8s.io/apimachinery v0.28.2/go.mod h1:RdzF87y/ngqk9H4z3EL2Rppv5jj95vGS/HaFXrLDApU=
-k8s.io/client-go v0.28.2 h1:DNoYI1vGq0slMBN/SWKMZMw0Rq+0EQW6/AK4v9+3VeY=
-k8s.io/client-go v0.28.2/go.mod h1:sMkApowspLuc7omj1FOSUxSoqjr+d5Q0Yc0LOFnYFJY=
-k8s.io/component-base v0.28.1 h1:LA4AujMlK2mr0tZbQDZkjWbdhTV5bRyEyAFe0TJxlWg=
-k8s.io/component-base v0.28.1/go.mod h1:jI11OyhbX21Qtbav7JkhehyBsIRfnO8oEgoAR12ArIU=
-k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
-k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
-k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f h1:eeEUOoGYWhOz7EyXqhlR2zHKNw2mNJ9vzJmub6YN6kk=
-k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
-k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk=
-k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
-rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
-rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
-sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU=
-sigs.k8s.io/controller-runtime v0.16.2/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
-sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
-sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
+k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
+k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
+k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI=
+k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc=
+k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4=
+k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
+k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY=
+k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8=
+k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
+k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
+k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA=
+k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
+k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y=
+k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A=
+sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
+sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
+sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
diff --git a/datacatalog/pkg/config/config_flags_test.go b/datacatalog/pkg/config/config_flags_test.go
index 2f3cb5cd907..6a1107dcddf 100755
--- a/datacatalog/pkg/config/config_flags_test.go
+++ b/datacatalog/pkg/config/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/datacatalog/pkg/manager/impl/validators/errors.go b/datacatalog/pkg/manager/impl/validators/errors.go
index eec033b8f9e..764e1fe20f4 100644
--- a/datacatalog/pkg/manager/impl/validators/errors.go
+++ b/datacatalog/pkg/manager/impl/validators/errors.go
@@ -1,8 +1,6 @@
package validators
import (
- "fmt"
-
"google.golang.org/grpc/codes"
"github.com/flyteorg/flyte/datacatalog/pkg/common"
@@ -14,13 +12,13 @@ const invalidArgFormat = "invalid value for %s, value:[%s]"
const invalidFilterFormat = "%s cannot be filtered by %s properties"
func NewMissingArgumentError(field string) error {
- return errors.NewDataCatalogErrorf(codes.InvalidArgument, fmt.Sprintf(missingFieldFormat, field)) //nolint
+ return errors.NewDataCatalogErrorf(codes.InvalidArgument, missingFieldFormat, field)
}
func NewInvalidArgumentError(field string, value string) error {
- return errors.NewDataCatalogErrorf(codes.InvalidArgument, fmt.Sprintf(invalidArgFormat, field, value)) //nolint
+ return errors.NewDataCatalogErrorf(codes.InvalidArgument, invalidArgFormat, field, value)
}
func NewInvalidFilterError(entity common.Entity, propertyEntity common.Entity) error {
- return errors.NewDataCatalogErrorf(codes.InvalidArgument, fmt.Sprintf(invalidFilterFormat, entity, propertyEntity)) //nolint
+ return errors.NewDataCatalogErrorf(codes.InvalidArgument, invalidFilterFormat, entity, propertyEntity)
}
diff --git a/datacatalog/pkg/manager/mocks/artifact_manager.go b/datacatalog/pkg/manager/mocks/artifact_manager.go
index e28cf42e885..3d5b402fe30 100644
--- a/datacatalog/pkg/manager/mocks/artifact_manager.go
+++ b/datacatalog/pkg/manager/mocks/artifact_manager.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/datacatalog/pkg/repositories/errors/postgres.go b/datacatalog/pkg/repositories/errors/postgres.go
index 31e1c253d63..344a24410f2 100644
--- a/datacatalog/pkg/repositories/errors/postgres.go
+++ b/datacatalog/pkg/repositories/errors/postgres.go
@@ -2,10 +2,9 @@ package errors
import (
"errors"
- "fmt"
"reflect"
- "github.com/jackc/pgconn"
+ "github.com/jackc/pgx/v5/pgconn"
"google.golang.org/grpc/codes"
"gorm.io/gorm"
@@ -62,7 +61,7 @@ func (p *postgresErrorTransformer) ToDataCatalogError(err error) error {
case undefinedTable:
return catalogErrors.NewDataCatalogErrorf(codes.InvalidArgument, unsupportedTableOperation, pqError.Message)
default:
- return catalogErrors.NewDataCatalogErrorf(codes.Unknown, fmt.Sprintf(defaultPgError, pqError.Code, pqError.Message)) //nolint
+ return catalogErrors.NewDataCatalogErrorf(codes.Unknown, defaultPgError, pqError.Code, pqError.Message)
}
}
diff --git a/datacatalog/pkg/repositories/gormimpl/tag_test.go b/datacatalog/pkg/repositories/gormimpl/tag_test.go
index 9619c8a4731..014c38c94c1 100644
--- a/datacatalog/pkg/repositories/gormimpl/tag_test.go
+++ b/datacatalog/pkg/repositories/gormimpl/tag_test.go
@@ -6,7 +6,7 @@ import (
"testing"
mocket "github.com/Selvatico/go-mocket"
- "github.com/jackc/pgconn"
+ "github.com/jackc/pgx/v5/pgconn"
"github.com/stretchr/testify/assert"
"google.golang.org/grpc/codes"
"gorm.io/gorm"
diff --git a/datacatalog/pkg/repositories/mocks/artifact_repo.go b/datacatalog/pkg/repositories/mocks/artifact_repo.go
index f5b4ee1a0cd..0e14de3ffe5 100644
--- a/datacatalog/pkg/repositories/mocks/artifact_repo.go
+++ b/datacatalog/pkg/repositories/mocks/artifact_repo.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- mock "github.com/stretchr/testify/mock"
-
models "github.com/flyteorg/flyte/datacatalog/pkg/repositories/models"
+ mock "github.com/stretchr/testify/mock"
)
// ArtifactRepo is an autogenerated mock type for the ArtifactRepo type
diff --git a/datacatalog/pkg/repositories/mocks/dataset_repo.go b/datacatalog/pkg/repositories/mocks/dataset_repo.go
index 0d7620a729e..b807010ed94 100644
--- a/datacatalog/pkg/repositories/mocks/dataset_repo.go
+++ b/datacatalog/pkg/repositories/mocks/dataset_repo.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- mock "github.com/stretchr/testify/mock"
-
models "github.com/flyteorg/flyte/datacatalog/pkg/repositories/models"
+ mock "github.com/stretchr/testify/mock"
)
// DatasetRepo is an autogenerated mock type for the DatasetRepo type
diff --git a/datacatalog/pkg/repositories/mocks/partition_repo.go b/datacatalog/pkg/repositories/mocks/partition_repo.go
index 88ca28f89b6..75939247896 100644
--- a/datacatalog/pkg/repositories/mocks/partition_repo.go
+++ b/datacatalog/pkg/repositories/mocks/partition_repo.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- mock "github.com/stretchr/testify/mock"
-
models "github.com/flyteorg/flyte/datacatalog/pkg/repositories/models"
+ mock "github.com/stretchr/testify/mock"
)
// PartitionRepo is an autogenerated mock type for the PartitionRepo type
diff --git a/datacatalog/pkg/repositories/mocks/reservation_repo.go b/datacatalog/pkg/repositories/mocks/reservation_repo.go
index 034a05d1911..5163fb1966e 100644
--- a/datacatalog/pkg/repositories/mocks/reservation_repo.go
+++ b/datacatalog/pkg/repositories/mocks/reservation_repo.go
@@ -1,15 +1,14 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- mock "github.com/stretchr/testify/mock"
+ time "time"
models "github.com/flyteorg/flyte/datacatalog/pkg/repositories/models"
-
- time "time"
+ mock "github.com/stretchr/testify/mock"
)
// ReservationRepo is an autogenerated mock type for the ReservationRepo type
diff --git a/datacatalog/pkg/repositories/mocks/tag_repo.go b/datacatalog/pkg/repositories/mocks/tag_repo.go
index 9135d5c15ba..a1746a7215a 100644
--- a/datacatalog/pkg/repositories/mocks/tag_repo.go
+++ b/datacatalog/pkg/repositories/mocks/tag_repo.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- mock "github.com/stretchr/testify/mock"
-
models "github.com/flyteorg/flyte/datacatalog/pkg/repositories/models"
+ mock "github.com/stretchr/testify/mock"
)
// TagRepo is an autogenerated mock type for the TagRepo type
diff --git a/datacatalog/pkg/repositories/models/tag.go b/datacatalog/pkg/repositories/models/tag.go
index 7b239cb3cb4..4ed80d125b3 100644
--- a/datacatalog/pkg/repositories/models/tag.go
+++ b/datacatalog/pkg/repositories/models/tag.go
@@ -11,7 +11,7 @@ type TagKey struct {
type Tag struct {
BaseModel
TagKey
- ArtifactID string
- DatasetUUID string `gorm:"type:uuid;index:tags_dataset_uuid_idx"`
+ ArtifactID string `gorm:"index:tags_dataset_uuid_artifact_id_idx,priority:2"`
+ DatasetUUID string `gorm:"type:uuid;index:tags_dataset_uuid_idx;index:tags_dataset_uuid_artifact_id_idx,priority:1"`
Artifact Artifact `gorm:"references:DatasetProject,DatasetName,DatasetDomain,DatasetVersion,ArtifactID;foreignkey:DatasetProject,DatasetName,DatasetDomain,DatasetVersion,ArtifactID"`
}
diff --git a/datacatalog/pkg/runtime/configs/datacatalogconfig_flags_test.go b/datacatalog/pkg/runtime/configs/datacatalogconfig_flags_test.go
index 338c4ac6610..6f2b4dcbd23 100755
--- a/datacatalog/pkg/runtime/configs/datacatalogconfig_flags_test.go
+++ b/datacatalog/pkg/runtime/configs/datacatalogconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml
index 4779f95c06c..ed8d07b7209 100644
--- a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml
+++ b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml
@@ -132,7 +132,8 @@ data:
name: production
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -165,6 +166,11 @@ data:
- openid
flyteadmin:
eventVersion: 2
+ identityAnnotationKeys:
+ - email
+ - sub
+ identityAnnotationPrefix: flyte.org
+ injectIdentityAnnotations: false
metadataStoragePrefix:
- metadata
- admin
@@ -394,7 +400,8 @@ data:
username: flyteadmin
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -413,7 +420,7 @@ data:
datacatalog:
heartbeat-grace-period-multiplier: 3
max-reservation-heartbeat: 30s
- metrics-scope: datacatalog
+ metrics-scope: flyte
profiler-port: 10254
storage-prefix: metadata/datacatalog
storage.yaml: |
@@ -461,7 +468,7 @@ data:
plugins:
k8s:
co-pilot:
- image: cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4
+ image: cr.flyte.org/flyteorg/flytecopilot:v1.16.6
name: flyte-copilot-
start-timeout: 30s
core.yaml: |
@@ -533,7 +540,8 @@ data:
default-memory: 100Mi
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -836,14 +844,13 @@ metadata:
spec:
type: NodePort
ports:
- - name: http
- port: 88
- protocol: TCP
- targetPort: 8088
- - name: grpc
- port: 89
- protocol: TCP
- targetPort: 8089
+ - name: http-metrics
+ protocol: TCP
+ port: 10254
+ - name: grpc
+ port: 89
+ protocol: TCP
+ targetPort: 8089
selector:
app.kubernetes.io/name: datacatalog
app.kubernetes.io/instance: flyte
@@ -884,7 +891,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "1a3b03ce2201b7f44bd9e8d17d00e1ef9d227362fc9b4e45f3d08b56f7e1530"
+ configChecksum: "aafcbf3cd0c9fc84f9e6ac07ce8ed59facbf0710f76987ca5784de1fa32c5af"
labels:
app.kubernetes.io/name: flyteadmin
app.kubernetes.io/instance: flyte
@@ -905,7 +912,7 @@ spec:
- /etc/flyte/config/*.yaml
- migrate
- run
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: run-migrations
securityContext:
@@ -926,7 +933,7 @@ spec:
- flytesnacks
- flytetester
- flyteexamples
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: seed-projects
securityContext:
@@ -944,7 +951,7 @@ spec:
- /etc/flyte/config/*.yaml
- clusterresource
- sync
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: sync-cluster-resources
securityContext:
@@ -961,7 +968,7 @@ spec:
- mountPath: /etc/secrets/
name: admin-secrets
- name: generate-secrets
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
command: ["/bin/sh", "-c"]
args:
@@ -988,7 +995,7 @@ spec:
- --config
- /etc/flyte/config/*.yaml
- serve
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flyteadmin
ports:
@@ -1097,7 +1104,7 @@ spec:
- /etc/flyte/config/*.yaml
- clusterresource
- run
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: sync-cluster-resources
volumeMounts:
@@ -1153,7 +1160,7 @@ spec:
seLinuxOptions:
type: spc_t
containers:
- - image: "cr.flyte.org/flyteorg/flyteconsole:v1.20.1"
+ - image: "cr.flyte.org/flyteorg/flyteconsole:v1.21.0"
imagePullPolicy: "IfNotPresent"
name: flyteconsole
envFrom:
@@ -1206,7 +1213,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "a296db3de9a904e87ff0f51ab5ac2f025193cdfb92ea5621af5d46a70699ac9"
+ configChecksum: "1150f42645741b09ff07a85129828e62314df0b4dea984225c9b728a88bf1e2"
labels:
app.kubernetes.io/name: datacatalog
app.kubernetes.io/instance: flyte
@@ -1227,7 +1234,7 @@ spec:
- /etc/datacatalog/config/*.yaml
- migrate
- run
- image: "cr.flyte.org/flyteorg/datacatalog:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/datacatalog:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: run-migrations
volumeMounts:
@@ -1245,7 +1252,7 @@ spec:
- --config
- /etc/datacatalog/config/*.yaml
- serve
- image: "cr.flyte.org/flyteorg/datacatalog:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/datacatalog:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: datacatalog
ports:
@@ -1310,7 +1317,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "ecda597a26eaad8f7d1611096e736f0870b74b7c13e915deb99c16e5545cc99"
+ configChecksum: "97265f70f47a3e1ac710100719e47cebd553a1185229e18d8ed4bbe76200013"
prometheus.io/path: "/metrics"
prometheus.io/port: "10254"
labels:
@@ -1338,7 +1345,7 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytepropeller
ports:
@@ -1394,9 +1401,9 @@ spec:
labels:
app: flyte-pod-webhook
app.kubernetes.io/name: flyte-pod-webhook
- app.kubernetes.io/version: v1.16.0-b4
+ app.kubernetes.io/version: v1.16.6
annotations:
- configChecksum: "ecda597a26eaad8f7d1611096e736f0870b74b7c13e915deb99c16e5545cc99"
+ configChecksum: "97265f70f47a3e1ac710100719e47cebd553a1185229e18d8ed4bbe76200013"
prometheus.io/path: "/metrics"
prometheus.io/port: "10254"
spec:
@@ -1410,7 +1417,7 @@ spec:
serviceAccountName: flyte-pod-webhook
initContainers:
- name: generate-secrets
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
command:
- flytepropeller
@@ -1437,7 +1444,7 @@ spec:
mountPath: /etc/flyte/config
containers:
- name: webhook
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
command:
- flytepropeller
diff --git a/deployment/eks/flyte_helm_controlplane_generated.yaml b/deployment/eks/flyte_helm_controlplane_generated.yaml
index 79b3659ab6e..19a06ee9def 100644
--- a/deployment/eks/flyte_helm_controlplane_generated.yaml
+++ b/deployment/eks/flyte_helm_controlplane_generated.yaml
@@ -113,7 +113,8 @@ data:
name: production
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -146,6 +147,11 @@ data:
- openid
flyteadmin:
eventVersion: 2
+ identityAnnotationKeys:
+ - email
+ - sub
+ identityAnnotationPrefix: flyte.org
+ injectIdentityAnnotations: false
metadataStoragePrefix:
- metadata
- admin
@@ -360,7 +366,8 @@ data:
username: flyteadmin
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -379,7 +386,7 @@ data:
datacatalog:
heartbeat-grace-period-multiplier: 3
max-reservation-heartbeat: 30s
- metrics-scope: datacatalog
+ metrics-scope: flyte
profiler-port: 10254
storage-prefix: metadata/datacatalog
storage.yaml: |
@@ -550,14 +557,13 @@ metadata:
spec:
type: NodePort
ports:
- - name: http
- port: 88
- protocol: TCP
- targetPort: 8088
- - name: grpc
- port: 89
- protocol: TCP
- targetPort: 8089
+ - name: http-metrics
+ protocol: TCP
+ port: 10254
+ - name: grpc
+ port: 89
+ protocol: TCP
+ targetPort: 8089
selector:
app.kubernetes.io/name: datacatalog
app.kubernetes.io/instance: flyte
@@ -582,7 +588,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "c26f85c2c14e2d92b7ffe4c931918a375a459870b142caad4f9b97947e467ad"
+ configChecksum: "d89d5aafa467e256f3fe7aec0813cb09ac497b3ec27b89f5b8133cdb93ec930"
labels:
app.kubernetes.io/name: flyteadmin
app.kubernetes.io/instance: flyte
@@ -603,7 +609,7 @@ spec:
- /etc/flyte/config/*.yaml
- migrate
- run
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: run-migrations
securityContext:
@@ -624,7 +630,7 @@ spec:
- flytesnacks
- flytetester
- flyteexamples
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: seed-projects
securityContext:
@@ -642,7 +648,7 @@ spec:
- /etc/flyte/config/*.yaml
- clusterresource
- sync
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: sync-cluster-resources
securityContext:
@@ -659,7 +665,7 @@ spec:
- mountPath: /etc/secrets/
name: admin-secrets
- name: generate-secrets
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
command: ["/bin/sh", "-c"]
args:
@@ -686,7 +692,7 @@ spec:
- --config
- /etc/flyte/config/*.yaml
- serve
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flyteadmin
ports:
@@ -795,7 +801,7 @@ spec:
- /etc/flyte/config/*.yaml
- clusterresource
- run
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: sync-cluster-resources
volumeMounts:
@@ -851,7 +857,7 @@ spec:
seLinuxOptions:
type: spc_t
containers:
- - image: "cr.flyte.org/flyteorg/flyteconsole:v1.20.1"
+ - image: "cr.flyte.org/flyteorg/flyteconsole:v1.21.0"
imagePullPolicy: "IfNotPresent"
name: flyteconsole
envFrom:
@@ -904,7 +910,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "a296db3de9a904e87ff0f51ab5ac2f025193cdfb92ea5621af5d46a70699ac9"
+ configChecksum: "1150f42645741b09ff07a85129828e62314df0b4dea984225c9b728a88bf1e2"
labels:
app.kubernetes.io/name: datacatalog
app.kubernetes.io/instance: flyte
@@ -925,7 +931,7 @@ spec:
- /etc/datacatalog/config/*.yaml
- migrate
- run
- image: "cr.flyte.org/flyteorg/datacatalog:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/datacatalog:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: run-migrations
volumeMounts:
@@ -943,7 +949,7 @@ spec:
- --config
- /etc/datacatalog/config/*.yaml
- serve
- image: "cr.flyte.org/flyteorg/datacatalog:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/datacatalog:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: datacatalog
ports:
@@ -1008,7 +1014,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "c26f85c2c14e2d92b7ffe4c931918a375a459870b142caad4f9b97947e467ad"
+ configChecksum: "d89d5aafa467e256f3fe7aec0813cb09ac497b3ec27b89f5b8133cdb93ec930"
labels:
app.kubernetes.io/name: flytescheduler
app.kubernetes.io/instance: flyte
@@ -1028,7 +1034,7 @@ spec:
- precheck
- --config
- /etc/flyte/config/*.yaml
- image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytescheduler-check
securityContext:
@@ -1048,7 +1054,7 @@ spec:
- run
- --config
- /etc/flyte/config/*.yaml
- image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytescheduler
ports:
diff --git a/deployment/eks/flyte_helm_dataplane_generated.yaml b/deployment/eks/flyte_helm_dataplane_generated.yaml
index c78e368cb3a..06b133424df 100644
--- a/deployment/eks/flyte_helm_dataplane_generated.yaml
+++ b/deployment/eks/flyte_helm_dataplane_generated.yaml
@@ -94,7 +94,7 @@ data:
plugins:
k8s:
co-pilot:
- image: cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4
+ image: cr.flyte.org/flyteorg/flytecopilot:v1.16.6
name: flyte-copilot-
start-timeout: 30s
core.yaml: |
@@ -166,7 +166,8 @@ data:
default-memory: 100Mi
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -435,7 +436,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "ecda597a26eaad8f7d1611096e736f0870b74b7c13e915deb99c16e5545cc99"
+ configChecksum: "97265f70f47a3e1ac710100719e47cebd553a1185229e18d8ed4bbe76200013"
prometheus.io/path: "/metrics"
prometheus.io/port: "10254"
labels:
@@ -463,7 +464,7 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytepropeller
ports:
@@ -519,9 +520,9 @@ spec:
labels:
app: flyte-pod-webhook
app.kubernetes.io/name: flyte-pod-webhook
- app.kubernetes.io/version: v1.16.0-b4
+ app.kubernetes.io/version: v1.16.6
annotations:
- configChecksum: "ecda597a26eaad8f7d1611096e736f0870b74b7c13e915deb99c16e5545cc99"
+ configChecksum: "97265f70f47a3e1ac710100719e47cebd553a1185229e18d8ed4bbe76200013"
prometheus.io/path: "/metrics"
prometheus.io/port: "10254"
spec:
@@ -535,7 +536,7 @@ spec:
serviceAccountName: flyte-pod-webhook
initContainers:
- name: generate-secrets
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
command:
- flytepropeller
@@ -562,7 +563,7 @@ spec:
mountPath: /etc/flyte/config
containers:
- name: webhook
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
command:
- flytepropeller
diff --git a/deployment/eks/flyte_helm_generated.yaml b/deployment/eks/flyte_helm_generated.yaml
index a8e783b0888..f1baa0dc75f 100644
--- a/deployment/eks/flyte_helm_generated.yaml
+++ b/deployment/eks/flyte_helm_generated.yaml
@@ -144,7 +144,8 @@ data:
name: production
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -177,6 +178,11 @@ data:
- openid
flyteadmin:
eventVersion: 2
+ identityAnnotationKeys:
+ - email
+ - sub
+ identityAnnotationPrefix: flyte.org
+ injectIdentityAnnotations: false
metadataStoragePrefix:
- metadata
- admin
@@ -391,7 +397,8 @@ data:
username: flyteadmin
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -410,7 +417,7 @@ data:
datacatalog:
heartbeat-grace-period-multiplier: 3
max-reservation-heartbeat: 30s
- metrics-scope: datacatalog
+ metrics-scope: flyte
profiler-port: 10254
storage-prefix: metadata/datacatalog
storage.yaml: |
@@ -492,7 +499,7 @@ data:
plugins:
k8s:
co-pilot:
- image: cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4
+ image: cr.flyte.org/flyteorg/flytecopilot:v1.16.6
name: flyte-copilot-
start-timeout: 30s
core.yaml: |
@@ -564,7 +571,8 @@ data:
default-memory: 100Mi
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -867,14 +875,13 @@ metadata:
spec:
type: NodePort
ports:
- - name: http
- port: 88
- protocol: TCP
- targetPort: 8088
- - name: grpc
- port: 89
- protocol: TCP
- targetPort: 8089
+ - name: http-metrics
+ protocol: TCP
+ port: 10254
+ - name: grpc
+ port: 89
+ protocol: TCP
+ targetPort: 8089
selector:
app.kubernetes.io/name: datacatalog
app.kubernetes.io/instance: flyte
@@ -915,7 +922,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "c26f85c2c14e2d92b7ffe4c931918a375a459870b142caad4f9b97947e467ad"
+ configChecksum: "d89d5aafa467e256f3fe7aec0813cb09ac497b3ec27b89f5b8133cdb93ec930"
labels:
app.kubernetes.io/name: flyteadmin
app.kubernetes.io/instance: flyte
@@ -936,7 +943,7 @@ spec:
- /etc/flyte/config/*.yaml
- migrate
- run
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: run-migrations
securityContext:
@@ -957,7 +964,7 @@ spec:
- flytesnacks
- flytetester
- flyteexamples
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: seed-projects
securityContext:
@@ -975,7 +982,7 @@ spec:
- /etc/flyte/config/*.yaml
- clusterresource
- sync
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: sync-cluster-resources
securityContext:
@@ -992,7 +999,7 @@ spec:
- mountPath: /etc/secrets/
name: admin-secrets
- name: generate-secrets
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
command: ["/bin/sh", "-c"]
args:
@@ -1019,7 +1026,7 @@ spec:
- --config
- /etc/flyte/config/*.yaml
- serve
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flyteadmin
ports:
@@ -1128,7 +1135,7 @@ spec:
- /etc/flyte/config/*.yaml
- clusterresource
- run
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: sync-cluster-resources
volumeMounts:
@@ -1184,7 +1191,7 @@ spec:
seLinuxOptions:
type: spc_t
containers:
- - image: "cr.flyte.org/flyteorg/flyteconsole:v1.20.1"
+ - image: "cr.flyte.org/flyteorg/flyteconsole:v1.21.0"
imagePullPolicy: "IfNotPresent"
name: flyteconsole
envFrom:
@@ -1237,7 +1244,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "a296db3de9a904e87ff0f51ab5ac2f025193cdfb92ea5621af5d46a70699ac9"
+ configChecksum: "1150f42645741b09ff07a85129828e62314df0b4dea984225c9b728a88bf1e2"
labels:
app.kubernetes.io/name: datacatalog
app.kubernetes.io/instance: flyte
@@ -1258,7 +1265,7 @@ spec:
- /etc/datacatalog/config/*.yaml
- migrate
- run
- image: "cr.flyte.org/flyteorg/datacatalog:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/datacatalog:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: run-migrations
volumeMounts:
@@ -1276,7 +1283,7 @@ spec:
- --config
- /etc/datacatalog/config/*.yaml
- serve
- image: "cr.flyte.org/flyteorg/datacatalog:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/datacatalog:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: datacatalog
ports:
@@ -1341,7 +1348,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "c26f85c2c14e2d92b7ffe4c931918a375a459870b142caad4f9b97947e467ad"
+ configChecksum: "d89d5aafa467e256f3fe7aec0813cb09ac497b3ec27b89f5b8133cdb93ec930"
labels:
app.kubernetes.io/name: flytescheduler
app.kubernetes.io/instance: flyte
@@ -1361,7 +1368,7 @@ spec:
- precheck
- --config
- /etc/flyte/config/*.yaml
- image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytescheduler-check
securityContext:
@@ -1381,7 +1388,7 @@ spec:
- run
- --config
- /etc/flyte/config/*.yaml
- image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytescheduler
ports:
@@ -1440,7 +1447,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "ecda597a26eaad8f7d1611096e736f0870b74b7c13e915deb99c16e5545cc99"
+ configChecksum: "97265f70f47a3e1ac710100719e47cebd553a1185229e18d8ed4bbe76200013"
prometheus.io/path: "/metrics"
prometheus.io/port: "10254"
labels:
@@ -1468,7 +1475,7 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytepropeller
ports:
@@ -1524,9 +1531,9 @@ spec:
labels:
app: flyte-pod-webhook
app.kubernetes.io/name: flyte-pod-webhook
- app.kubernetes.io/version: v1.16.0-b4
+ app.kubernetes.io/version: v1.16.6
annotations:
- configChecksum: "ecda597a26eaad8f7d1611096e736f0870b74b7c13e915deb99c16e5545cc99"
+ configChecksum: "97265f70f47a3e1ac710100719e47cebd553a1185229e18d8ed4bbe76200013"
prometheus.io/path: "/metrics"
prometheus.io/port: "10254"
spec:
@@ -1540,7 +1547,7 @@ spec:
serviceAccountName: flyte-pod-webhook
initContainers:
- name: generate-secrets
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
command:
- flytepropeller
@@ -1567,7 +1574,7 @@ spec:
mountPath: /etc/flyte/config
containers:
- name: webhook
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
command:
- flytepropeller
diff --git a/deployment/gcp/flyte_helm_controlplane_generated.yaml b/deployment/gcp/flyte_helm_controlplane_generated.yaml
index 03cfe9dca7a..1ac83867e67 100644
--- a/deployment/gcp/flyte_helm_controlplane_generated.yaml
+++ b/deployment/gcp/flyte_helm_controlplane_generated.yaml
@@ -113,7 +113,8 @@ data:
name: production
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -146,6 +147,11 @@ data:
- openid
flyteadmin:
eventVersion: 2
+ identityAnnotationKeys:
+ - email
+ - sub
+ identityAnnotationPrefix: flyte.org
+ injectIdentityAnnotations: false
metadataStoragePrefix:
- metadata
- admin
@@ -370,7 +376,8 @@ data:
username: flyteadmin
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -389,7 +396,7 @@ data:
datacatalog:
heartbeat-grace-period-multiplier: 3
max-reservation-heartbeat: 30s
- metrics-scope: datacatalog
+ metrics-scope: flyte
profiler-port: 10254
storage-prefix: metadata/datacatalog
storage.yaml: |
@@ -567,14 +574,13 @@ metadata:
spec:
type: NodePort
ports:
- - name: http
- port: 88
- protocol: TCP
- targetPort: 8088
- - name: grpc
- port: 89
- protocol: TCP
- targetPort: 8089
+ - name: http-metrics
+ protocol: TCP
+ port: 10254
+ - name: grpc
+ port: 89
+ protocol: TCP
+ targetPort: 8089
selector:
app.kubernetes.io/name: datacatalog
app.kubernetes.io/instance: flyte
@@ -599,7 +605,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "53737bc0cafe619900707912054d56dd8564533779ccd43728ce3c68d2bc7e9"
+ configChecksum: "63945c02dbcc525d849d434474d6c0f8cd21993545e9367d1326a98de282db2"
labels:
app.kubernetes.io/name: flyteadmin
app.kubernetes.io/instance: flyte
@@ -620,7 +626,7 @@ spec:
- /etc/flyte/config/*.yaml
- migrate
- run
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: run-migrations
securityContext:
@@ -641,7 +647,7 @@ spec:
- flytesnacks
- flytetester
- flyteexamples
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: seed-projects
securityContext:
@@ -659,7 +665,7 @@ spec:
- /etc/flyte/config/*.yaml
- clusterresource
- sync
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: sync-cluster-resources
securityContext:
@@ -676,7 +682,7 @@ spec:
- mountPath: /etc/secrets/
name: admin-secrets
- name: generate-secrets
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
command: ["/bin/sh", "-c"]
args:
@@ -703,7 +709,7 @@ spec:
- --config
- /etc/flyte/config/*.yaml
- serve
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flyteadmin
ports:
@@ -812,7 +818,7 @@ spec:
- /etc/flyte/config/*.yaml
- clusterresource
- run
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: sync-cluster-resources
volumeMounts:
@@ -868,7 +874,7 @@ spec:
seLinuxOptions:
type: spc_t
containers:
- - image: "cr.flyte.org/flyteorg/flyteconsole:v1.20.1"
+ - image: "cr.flyte.org/flyteorg/flyteconsole:v1.21.0"
imagePullPolicy: "IfNotPresent"
name: flyteconsole
envFrom:
@@ -921,7 +927,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "c752ecfbf2d41a20159a1ec417ace2b2a9a0a778966659c142e8e1479dd7ded"
+ configChecksum: "d1e2045469ac51c89c0d4b1074dab66d88bc3e03f9d6429d5726d27f2cb0bab"
labels:
app.kubernetes.io/name: datacatalog
app.kubernetes.io/instance: flyte
@@ -942,7 +948,7 @@ spec:
- /etc/datacatalog/config/*.yaml
- migrate
- run
- image: "cr.flyte.org/flyteorg/datacatalog:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/datacatalog:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: run-migrations
volumeMounts:
@@ -960,7 +966,7 @@ spec:
- --config
- /etc/datacatalog/config/*.yaml
- serve
- image: "cr.flyte.org/flyteorg/datacatalog:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/datacatalog:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: datacatalog
ports:
@@ -1025,7 +1031,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "53737bc0cafe619900707912054d56dd8564533779ccd43728ce3c68d2bc7e9"
+ configChecksum: "63945c02dbcc525d849d434474d6c0f8cd21993545e9367d1326a98de282db2"
labels:
app.kubernetes.io/name: flytescheduler
app.kubernetes.io/instance: flyte
@@ -1045,7 +1051,7 @@ spec:
- precheck
- --config
- /etc/flyte/config/*.yaml
- image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytescheduler-check
securityContext:
@@ -1065,7 +1071,7 @@ spec:
- run
- --config
- /etc/flyte/config/*.yaml
- image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytescheduler
ports:
diff --git a/deployment/gcp/flyte_helm_dataplane_generated.yaml b/deployment/gcp/flyte_helm_dataplane_generated.yaml
index e2139ab6512..2e98116261f 100644
--- a/deployment/gcp/flyte_helm_dataplane_generated.yaml
+++ b/deployment/gcp/flyte_helm_dataplane_generated.yaml
@@ -94,7 +94,7 @@ data:
plugins:
k8s:
co-pilot:
- image: cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4
+ image: cr.flyte.org/flyteorg/flytecopilot:v1.16.6
name: flyte-copilot-
start-timeout: 30s
core.yaml: |
@@ -166,7 +166,8 @@ data:
default-memory: 100Mi
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -443,7 +444,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "f5c6c3ba4626fd2b81280a9c58f26da46d9a698fab839f2399302703b86e807"
+ configChecksum: "0d5f06fa15eb8ba65d62486dce30297ab18e1ca95e55db51819bfa2ce47c5de"
prometheus.io/path: "/metrics"
prometheus.io/port: "10254"
labels:
@@ -470,7 +471,7 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytepropeller
ports:
@@ -526,9 +527,9 @@ spec:
labels:
app: flyte-pod-webhook
app.kubernetes.io/name: flyte-pod-webhook
- app.kubernetes.io/version: v1.16.0-b4
+ app.kubernetes.io/version: v1.16.6
annotations:
- configChecksum: "f5c6c3ba4626fd2b81280a9c58f26da46d9a698fab839f2399302703b86e807"
+ configChecksum: "0d5f06fa15eb8ba65d62486dce30297ab18e1ca95e55db51819bfa2ce47c5de"
prometheus.io/path: "/metrics"
prometheus.io/port: "10254"
spec:
@@ -542,7 +543,7 @@ spec:
serviceAccountName: flyte-pod-webhook
initContainers:
- name: generate-secrets
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
command:
- flytepropeller
@@ -569,7 +570,7 @@ spec:
mountPath: /etc/flyte/config
containers:
- name: webhook
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
command:
- flytepropeller
diff --git a/deployment/gcp/flyte_helm_generated.yaml b/deployment/gcp/flyte_helm_generated.yaml
index 475a90db111..91399a96b01 100644
--- a/deployment/gcp/flyte_helm_generated.yaml
+++ b/deployment/gcp/flyte_helm_generated.yaml
@@ -144,7 +144,8 @@ data:
name: production
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -177,6 +178,11 @@ data:
- openid
flyteadmin:
eventVersion: 2
+ identityAnnotationKeys:
+ - email
+ - sub
+ identityAnnotationPrefix: flyte.org
+ injectIdentityAnnotations: false
metadataStoragePrefix:
- metadata
- admin
@@ -401,7 +407,8 @@ data:
username: flyteadmin
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -420,7 +427,7 @@ data:
datacatalog:
heartbeat-grace-period-multiplier: 3
max-reservation-heartbeat: 30s
- metrics-scope: datacatalog
+ metrics-scope: flyte
profiler-port: 10254
storage-prefix: metadata/datacatalog
storage.yaml: |
@@ -505,7 +512,7 @@ data:
plugins:
k8s:
co-pilot:
- image: cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4
+ image: cr.flyte.org/flyteorg/flytecopilot:v1.16.6
name: flyte-copilot-
start-timeout: 30s
core.yaml: |
@@ -577,7 +584,8 @@ data:
default-memory: 100Mi
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -892,14 +900,13 @@ metadata:
spec:
type: NodePort
ports:
- - name: http
- port: 88
- protocol: TCP
- targetPort: 8088
- - name: grpc
- port: 89
- protocol: TCP
- targetPort: 8089
+ - name: http-metrics
+ protocol: TCP
+ port: 10254
+ - name: grpc
+ port: 89
+ protocol: TCP
+ targetPort: 8089
selector:
app.kubernetes.io/name: datacatalog
app.kubernetes.io/instance: flyte
@@ -940,7 +947,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "53737bc0cafe619900707912054d56dd8564533779ccd43728ce3c68d2bc7e9"
+ configChecksum: "63945c02dbcc525d849d434474d6c0f8cd21993545e9367d1326a98de282db2"
labels:
app.kubernetes.io/name: flyteadmin
app.kubernetes.io/instance: flyte
@@ -961,7 +968,7 @@ spec:
- /etc/flyte/config/*.yaml
- migrate
- run
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: run-migrations
securityContext:
@@ -982,7 +989,7 @@ spec:
- flytesnacks
- flytetester
- flyteexamples
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: seed-projects
securityContext:
@@ -1000,7 +1007,7 @@ spec:
- /etc/flyte/config/*.yaml
- clusterresource
- sync
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: sync-cluster-resources
securityContext:
@@ -1017,7 +1024,7 @@ spec:
- mountPath: /etc/secrets/
name: admin-secrets
- name: generate-secrets
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
command: ["/bin/sh", "-c"]
args:
@@ -1044,7 +1051,7 @@ spec:
- --config
- /etc/flyte/config/*.yaml
- serve
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flyteadmin
ports:
@@ -1153,7 +1160,7 @@ spec:
- /etc/flyte/config/*.yaml
- clusterresource
- run
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: sync-cluster-resources
volumeMounts:
@@ -1209,7 +1216,7 @@ spec:
seLinuxOptions:
type: spc_t
containers:
- - image: "cr.flyte.org/flyteorg/flyteconsole:v1.20.1"
+ - image: "cr.flyte.org/flyteorg/flyteconsole:v1.21.0"
imagePullPolicy: "IfNotPresent"
name: flyteconsole
envFrom:
@@ -1262,7 +1269,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "c752ecfbf2d41a20159a1ec417ace2b2a9a0a778966659c142e8e1479dd7ded"
+ configChecksum: "d1e2045469ac51c89c0d4b1074dab66d88bc3e03f9d6429d5726d27f2cb0bab"
labels:
app.kubernetes.io/name: datacatalog
app.kubernetes.io/instance: flyte
@@ -1283,7 +1290,7 @@ spec:
- /etc/datacatalog/config/*.yaml
- migrate
- run
- image: "cr.flyte.org/flyteorg/datacatalog:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/datacatalog:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: run-migrations
volumeMounts:
@@ -1301,7 +1308,7 @@ spec:
- --config
- /etc/datacatalog/config/*.yaml
- serve
- image: "cr.flyte.org/flyteorg/datacatalog:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/datacatalog:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: datacatalog
ports:
@@ -1366,7 +1373,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "53737bc0cafe619900707912054d56dd8564533779ccd43728ce3c68d2bc7e9"
+ configChecksum: "63945c02dbcc525d849d434474d6c0f8cd21993545e9367d1326a98de282db2"
labels:
app.kubernetes.io/name: flytescheduler
app.kubernetes.io/instance: flyte
@@ -1386,7 +1393,7 @@ spec:
- precheck
- --config
- /etc/flyte/config/*.yaml
- image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytescheduler-check
securityContext:
@@ -1406,7 +1413,7 @@ spec:
- run
- --config
- /etc/flyte/config/*.yaml
- image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytescheduler
ports:
@@ -1465,7 +1472,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "f5c6c3ba4626fd2b81280a9c58f26da46d9a698fab839f2399302703b86e807"
+ configChecksum: "0d5f06fa15eb8ba65d62486dce30297ab18e1ca95e55db51819bfa2ce47c5de"
prometheus.io/path: "/metrics"
prometheus.io/port: "10254"
labels:
@@ -1492,7 +1499,7 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytepropeller
ports:
@@ -1548,9 +1555,9 @@ spec:
labels:
app: flyte-pod-webhook
app.kubernetes.io/name: flyte-pod-webhook
- app.kubernetes.io/version: v1.16.0-b4
+ app.kubernetes.io/version: v1.16.6
annotations:
- configChecksum: "f5c6c3ba4626fd2b81280a9c58f26da46d9a698fab839f2399302703b86e807"
+ configChecksum: "0d5f06fa15eb8ba65d62486dce30297ab18e1ca95e55db51819bfa2ce47c5de"
prometheus.io/path: "/metrics"
prometheus.io/port: "10254"
spec:
@@ -1564,7 +1571,7 @@ spec:
serviceAccountName: flyte-pod-webhook
initContainers:
- name: generate-secrets
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
command:
- flytepropeller
@@ -1591,7 +1598,7 @@ spec:
mountPath: /etc/flyte/config
containers:
- name: webhook
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
command:
- flytepropeller
diff --git a/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml b/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml
index eadd8427737..be2bd06bed8 100644
--- a/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml
+++ b/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml
@@ -120,7 +120,7 @@ data:
stackdriver-enabled: false
k8s:
co-pilot:
- image: "cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytecopilot:v1.16.6"
k8s-array:
logs:
config:
@@ -363,7 +363,7 @@ spec:
app.kubernetes.io/instance: flyte
app.kubernetes.io/component: flyte-binary
annotations:
- checksum/configuration: 7d475562ee04d40c23bbe19a2082bb52ff492b112f66c323c297a270e27404af
+ checksum/configuration: 76d3b789891bfcfbb719f2f688d62246f28796c014f3db22e9b7a33ba9129842
checksum/configuration-secret: d5d93f4e67780b21593dc3799f0f6682aab0765e708e4020939975d14d44f929
checksum/cluster-resource-templates: 7dfa59f3d447e9c099b8f8ffad3af466fecbc9cf9f8c97295d9634254a55d4ae
spec:
diff --git a/deployment/sandbox/flyte_helm_generated.yaml b/deployment/sandbox/flyte_helm_generated.yaml
index c8056260e3f..35189c6e657 100644
--- a/deployment/sandbox/flyte_helm_generated.yaml
+++ b/deployment/sandbox/flyte_helm_generated.yaml
@@ -264,7 +264,8 @@ data:
show-source: true
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -297,6 +298,11 @@ data:
- openid
flyteadmin:
eventVersion: 2
+ identityAnnotationKeys:
+ - email
+ - sub
+ identityAnnotationPrefix: flyte.org
+ injectIdentityAnnotations: false
metadataStoragePrefix:
- metadata
- admin
@@ -500,7 +506,8 @@ data:
username: postgres
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -617,7 +624,7 @@ data:
plugins:
k8s:
co-pilot:
- image: cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4
+ image: cr.flyte.org/flyteorg/flytecopilot:v1.16.6
name: flyte-copilot-
start-timeout: 30s
core.yaml: |
@@ -694,7 +701,8 @@ data:
show-source: true
otel.yaml: |
otel:
- file: /tmp/trace.txt
+ file:
+ filename: /tmp/trace.txt
jaeger:
endpoint: http://localhost:14268/api/traces
otlpgrpc:
@@ -6234,14 +6242,13 @@ metadata:
spec:
type: NodePort
ports:
- - name: http
- port: 88
- protocol: TCP
- targetPort: 8088
- - name: grpc
- port: 89
- protocol: TCP
- targetPort: 8089
+ - name: http-metrics
+ protocol: TCP
+ port: 10254
+ - name: grpc
+ port: 89
+ protocol: TCP
+ targetPort: 8089
selector:
app.kubernetes.io/name: datacatalog
app.kubernetes.io/instance: flyte
@@ -6728,7 +6735,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "b435a59792537ee4fccc9614a73cfbb8a2317b49207afc89127127f397f5f4b"
+ configChecksum: "a793650b39e484cd7d51cf6269cc5f255463fbe767a1d63a11580bc95fc6196"
labels:
app.kubernetes.io/name: flyteadmin
app.kubernetes.io/instance: flyte
@@ -6749,7 +6756,7 @@ spec:
- /etc/flyte/config/*.yaml
- migrate
- run
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: run-migrations
securityContext:
@@ -6769,7 +6776,7 @@ spec:
- flytesnacks
- flytetester
- flyteexamples
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: seed-projects
securityContext:
@@ -6786,7 +6793,7 @@ spec:
- /etc/flyte/config/*.yaml
- clusterresource
- sync
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: sync-cluster-resources
securityContext:
@@ -6802,7 +6809,7 @@ spec:
- mountPath: /etc/secrets/
name: admin-secrets
- name: generate-secrets
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
command: ["/bin/sh", "-c"]
args:
@@ -6829,7 +6836,7 @@ spec:
- --config
- /etc/flyte/config/*.yaml
- serve
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flyteadmin
ports:
@@ -6928,7 +6935,7 @@ spec:
- /etc/flyte/config/*.yaml
- clusterresource
- run
- image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flyteadmin:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: sync-cluster-resources
volumeMounts:
@@ -6981,7 +6988,7 @@ spec:
seLinuxOptions:
type: spc_t
containers:
- - image: "cr.flyte.org/flyteorg/flyteconsole:v1.20.1"
+ - image: "cr.flyte.org/flyteorg/flyteconsole:v1.21.0"
imagePullPolicy: "IfNotPresent"
name: flyteconsole
envFrom:
@@ -7032,7 +7039,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "21632a41587831f93dc2408f0043104f06478b4574b4b8e140c2b084e375f84"
+ configChecksum: "020bddf381d4d3384f1cd3abdc98315ad1926c0021415300d9f6264851d03d2"
labels:
app.kubernetes.io/name: datacatalog
app.kubernetes.io/instance: flyte
@@ -7053,7 +7060,7 @@ spec:
- /etc/datacatalog/config/*.yaml
- migrate
- run
- image: "cr.flyte.org/flyteorg/datacatalog:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/datacatalog:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: run-migrations
volumeMounts:
@@ -7070,7 +7077,7 @@ spec:
- --config
- /etc/datacatalog/config/*.yaml
- serve
- image: "cr.flyte.org/flyteorg/datacatalog:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/datacatalog:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: datacatalog
ports:
@@ -7125,7 +7132,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "b435a59792537ee4fccc9614a73cfbb8a2317b49207afc89127127f397f5f4b"
+ configChecksum: "a793650b39e484cd7d51cf6269cc5f255463fbe767a1d63a11580bc95fc6196"
labels:
app.kubernetes.io/name: flytescheduler
app.kubernetes.io/instance: flyte
@@ -7145,7 +7152,7 @@ spec:
- precheck
- --config
- /etc/flyte/config/*.yaml
- image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytescheduler-check
securityContext:
@@ -7164,7 +7171,7 @@ spec:
- run
- --config
- /etc/flyte/config/*.yaml
- image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytescheduler:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytescheduler
ports:
@@ -7220,7 +7227,7 @@ spec:
template:
metadata:
annotations:
- configChecksum: "efedd45c01d7aea055d79df44724ba729e80872f7c1f324bb9dfe4a4fbd9ef1"
+ configChecksum: "a7f80c4bc2e56c53048e7fdda25f8c153b8f22ee6cfbb8bc7fe0d0d6855a0c3"
prometheus.io/path: "/metrics"
prometheus.io/port: "10254"
labels:
@@ -7247,7 +7254,7 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
name: flytepropeller
ports:
@@ -7296,9 +7303,9 @@ spec:
labels:
app: flyte-pod-webhook
app.kubernetes.io/name: flyte-pod-webhook
- app.kubernetes.io/version: v1.16.0-b4
+ app.kubernetes.io/version: v1.16.6
annotations:
- configChecksum: "efedd45c01d7aea055d79df44724ba729e80872f7c1f324bb9dfe4a4fbd9ef1"
+ configChecksum: "a7f80c4bc2e56c53048e7fdda25f8c153b8f22ee6cfbb8bc7fe0d0d6855a0c3"
prometheus.io/path: "/metrics"
prometheus.io/port: "10254"
spec:
@@ -7312,7 +7319,7 @@ spec:
serviceAccountName: flyte-pod-webhook
initContainers:
- name: generate-secrets
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
command:
- flytepropeller
@@ -7339,7 +7346,7 @@ spec:
mountPath: /etc/flyte/config
containers:
- name: webhook
- image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytepropeller:v1.16.6"
imagePullPolicy: "IfNotPresent"
command:
- flytepropeller
diff --git a/docker/sandbox-bundled/Dockerfile b/docker/sandbox-bundled/Dockerfile
index 92e8fa2d465..819d49db38b 100644
--- a/docker/sandbox-bundled/Dockerfile
+++ b/docker/sandbox-bundled/Dockerfile
@@ -10,7 +10,7 @@ COPY images/manifest.txt images/preload ./
RUN --security=insecure ./preload manifest.txt
-FROM --platform=${BUILDPLATFORM} golang:1.22-bullseye AS bootstrap
+FROM --platform=${BUILDPLATFORM} golang:1.26-bookworm AS bootstrap
ARG TARGETARCH
ENV CGO_ENABLED 0
diff --git a/docker/sandbox-bundled/bootstrap/go.mod b/docker/sandbox-bundled/bootstrap/go.mod
index 4842dd0162e..be5d850e669 100644
--- a/docker/sandbox-bundled/bootstrap/go.mod
+++ b/docker/sandbox-bundled/bootstrap/go.mod
@@ -1,6 +1,6 @@
module github.com/flyteorg/flyte/docker/sandbox-bundled/bootstrap
-go 1.22
+go 1.26.0
require (
github.com/stretchr/testify v1.8.0
@@ -38,9 +38,9 @@ require (
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/xlab/treeprint v1.1.0 // indirect
go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect
- golang.org/x/net v0.33.0 // indirect
- golang.org/x/sys v0.28.0 // indirect
- golang.org/x/text v0.21.0 // indirect
+ golang.org/x/net v0.38.0 // indirect
+ golang.org/x/sys v0.31.0 // indirect
+ golang.org/x/text v0.23.0 // indirect
google.golang.org/protobuf v1.33.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
diff --git a/docker/sandbox-bundled/bootstrap/go.sum b/docker/sandbox-bundled/bootstrap/go.sum
index e466827a586..2e15ca2604c 100644
--- a/docker/sandbox-bundled/bootstrap/go.sum
+++ b/docker/sandbox-bundled/bootstrap/go.sum
@@ -131,8 +131,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/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-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
-golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
+golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/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=
@@ -144,12 +144,12 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
-golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
+golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/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.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
+golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
+golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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=
diff --git a/docker/sandbox-bundled/bootstrap/internal/transform/plugins/config/loader.go b/docker/sandbox-bundled/bootstrap/internal/transform/plugins/config/loader.go
index c601c8c8468..81c098002a1 100644
--- a/docker/sandbox-bundled/bootstrap/internal/transform/plugins/config/loader.go
+++ b/docker/sandbox-bundled/bootstrap/internal/transform/plugins/config/loader.go
@@ -72,7 +72,7 @@ func (cl *Loader) Transform(data []byte) ([]byte, error) {
if err != nil {
return nil, err
}
- defer os.RemoveAll(workDir)
+ defer os.RemoveAll(workDir) //nolint: errcheck
// Write base resource module
baseManifestPath := filepath.Join(workDir, "base.yaml")
diff --git a/docker/sandbox-bundled/bootstrap/internal/utils/checksum.go b/docker/sandbox-bundled/bootstrap/internal/utils/checksum.go
index d47bd1fd37d..f96a78e4620 100644
--- a/docker/sandbox-bundled/bootstrap/internal/utils/checksum.go
+++ b/docker/sandbox-bundled/bootstrap/internal/utils/checksum.go
@@ -15,7 +15,7 @@ func FileChecksum(path string) ([]byte, error) {
if err != nil {
return nil, err
}
- defer f.Close()
+ defer f.Close() //nolint: errcheck
h := sha256.New()
if _, err := io.Copy(h, f); err != nil {
diff --git a/docker/sandbox-bundled/images/manifest.txt b/docker/sandbox-bundled/images/manifest.txt
index df712fa6a0a..e8b8be8b582 100644
--- a/docker/sandbox-bundled/images/manifest.txt
+++ b/docker/sandbox-bundled/images/manifest.txt
@@ -1,6 +1,6 @@
-docker.io/bitnami/os-shell:sandbox=bitnami/os-shell:11-debian-11
-docker.io/bitnami/minio:sandbox=bitnami/minio:2023.1.25-debian-11-r0
-docker.io/bitnami/postgresql:sandbox=bitnami/postgresql:15.1.0-debian-11-r20
+docker.io/bitnami/os-shell:sandbox=bitnamilegacy/os-shell:11-debian-11
+docker.io/bitnami/minio:sandbox=bitnamilegacy/minio:2023.1.25-debian-11-r0
+docker.io/bitnami/postgresql:sandbox=bitnamilegacy/postgresql:15.1.0-debian-11-r20
docker.io/envoyproxy/envoy:sandbox=envoyproxy/envoy:v1.23-latest
docker.io/kubernetesui/dashboard:sandbox=kubernetesui/dashboard:v2.7.0
docker.io/library/registry:sandbox=registry:2.8.1
diff --git a/docker/sandbox-bundled/manifests/complete-connector.yaml b/docker/sandbox-bundled/manifests/complete-connector.yaml
index 7275579f0b2..83bb68c8f96 100644
--- a/docker/sandbox-bundled/manifests/complete-connector.yaml
+++ b/docker/sandbox-bundled/manifests/complete-connector.yaml
@@ -16,18 +16,6 @@ metadata:
namespace: flyte
---
apiVersion: v1
-kind: ServiceAccount
-metadata:
- labels:
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- name: flyte-sandbox-kubernetes-dashboard
- namespace: flyte
----
-apiVersion: v1
automountServiceAccountToken: true
kind: ServiceAccount
metadata:
@@ -52,6 +40,17 @@ metadata:
name: flyteconnector
namespace: flyte
---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ labels:
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ name: flyte-sandbox-kubernetes-dashboard
+---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
@@ -62,7 +61,6 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: flyte-sandbox-kubernetes-dashboard
- namespace: flyte
rules:
- apiGroups:
- ""
@@ -346,7 +344,6 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: flyte-sandbox-kubernetes-dashboard
- namespace: flyte
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
@@ -473,7 +470,7 @@ data:
stackdriver-enabled: false
k8s:
co-pilot:
- image: "cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytecopilot:v1.16.6"
k8s-array:
logs:
config:
@@ -519,7 +516,7 @@ data:
- FLYTE_AWS_ACCESS_KEY_ID: minio
- FLYTE_AWS_SECRET_ACCESS_KEY: miniostorage
- FLYTE_PLATFORM_URL: 'flyte-sandbox-grpc.flyte:8089'
- - FLYTE_PLATFORM_INSECURE: true
+ - FLYTE_PLATFORM_INSECURE: "true"
storage:
signedURL:
stowConfigOverride:
@@ -794,7 +791,6 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: kubernetes-dashboard-settings
- namespace: flyte
---
apiVersion: v1
kind: Secret
@@ -822,7 +818,7 @@ type: Opaque
---
apiVersion: v1
data:
- haSharedSecret: NEw2VVNMT2VXdEdYanVtcA==
+ haSharedSecret: UlRtRTdIU2MxaWtNZ3dlSQ==
proxyPassword: ""
proxyUsername: ""
kind: Secret
@@ -837,19 +833,6 @@ metadata:
type: Opaque
---
apiVersion: v1
-kind: Secret
-metadata:
- labels:
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- name: flyte-sandbox-kubernetes-dashboard-certs
- namespace: flyte
-type: Opaque
----
-apiVersion: v1
data:
root-password: bWluaW9zdG9yYWdl
root-user: bWluaW8=
@@ -889,6 +872,18 @@ type: Opaque
---
apiVersion: v1
kind: Secret
+metadata:
+ labels:
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ name: flyte-sandbox-kubernetes-dashboard-certs
+type: Opaque
+---
+apiVersion: v1
+kind: Secret
metadata:
labels:
app.kubernetes.io/instance: flyte-sandbox
@@ -897,7 +892,6 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: kubernetes-dashboard-csrf
- namespace: flyte
type: Opaque
---
apiVersion: v1
@@ -910,7 +904,6 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: kubernetes-dashboard-key-holder
- namespace: flyte
type: Opaque
---
apiVersion: v1
@@ -983,30 +976,6 @@ spec:
---
apiVersion: v1
kind: Service
-metadata:
- labels:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- kubernetes.io/cluster-service: "true"
- name: flyte-sandbox-kubernetes-dashboard
- namespace: flyte
-spec:
- ports:
- - name: http
- port: 80
- targetPort: http
- selector:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/name: kubernetes-dashboard
- type: ClusterIP
----
-apiVersion: v1
-kind: Service
metadata:
labels:
app.kubernetes.io/instance: flyte-sandbox
@@ -1150,6 +1119,29 @@ spec:
type: ClusterIP
---
apiVersion: v1
+kind: Service
+metadata:
+ labels:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ kubernetes.io/cluster-service: "true"
+ name: flyte-sandbox-kubernetes-dashboard
+spec:
+ ports:
+ - name: http
+ port: 80
+ targetPort: http
+ selector:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/name: kubernetes-dashboard
+ type: ClusterIP
+---
+apiVersion: v1
kind: PersistentVolume
metadata:
labels:
@@ -1253,7 +1245,7 @@ spec:
metadata:
annotations:
checksum/cluster-resource-templates: 6fd9b172465e3089fcc59f738b92b8dc4d8939360c19de8ee65f68b0e7422035
- checksum/configuration: 4f72be5281dcae442947c45ddc4a22827158587627d1913be0dbf30c42131172
+ checksum/configuration: 053dab605e231cca62e4fd8b77648cbbee6f88a03fdf398907d388221ab8a1a6
checksum/configuration-secret: 09216ffaa3d29e14f88b1f30af580d02a2a5e014de4d750b7f275cc07ed4e914
labels:
app.kubernetes.io/component: flyte-binary
@@ -1419,7 +1411,7 @@ spec:
metadata:
annotations:
checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81
- checksum/secret: 4bc204a05c221cd69a5cad0d838fa30886c2c776245ae55d937aec2e83126aba
+ checksum/secret: 5c3141413264946ac89deee9245a56b8ad4676aeff2c2d5f6e2520ef49e91b21
labels:
app: docker-registry
release: flyte-sandbox
@@ -1468,89 +1460,6 @@ spec:
---
apiVersion: apps/v1
kind: Deployment
-metadata:
- labels:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- name: flyte-sandbox-kubernetes-dashboard
- namespace: flyte
-spec:
- replicas: 1
- selector:
- matchLabels:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/name: kubernetes-dashboard
- strategy:
- rollingUpdate:
- maxSurge: 0
- maxUnavailable: 1
- type: RollingUpdate
- template:
- metadata:
- annotations: null
- labels:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- spec:
- containers:
- - args:
- - --namespace=flyte
- - --metrics-provider=none
- - --enable-insecure-login
- - --enable-skip-login
- image: kubernetesui/dashboard:sandbox
- imagePullPolicy: Never
- livenessProbe:
- httpGet:
- path: /
- port: 9090
- scheme: HTTP
- initialDelaySeconds: 30
- timeoutSeconds: 30
- name: kubernetes-dashboard
- ports:
- - containerPort: 9090
- name: http
- protocol: TCP
- resources:
- limits:
- cpu: 2
- memory: 200Mi
- requests:
- cpu: 100m
- memory: 200Mi
- securityContext:
- allowPrivilegeEscalation: false
- readOnlyRootFilesystem: true
- runAsGroup: 2001
- runAsUser: 1001
- volumeMounts:
- - mountPath: /certs
- name: kubernetes-dashboard-certs
- - mountPath: /tmp
- name: tmp-volume
- securityContext:
- seccompProfile:
- type: RuntimeDefault
- serviceAccountName: flyte-sandbox-kubernetes-dashboard
- volumes:
- - name: kubernetes-dashboard-certs
- secret:
- secretName: flyte-sandbox-kubernetes-dashboard-certs
- - emptyDir: {}
- name: tmp-volume
----
-apiVersion: apps/v1
-kind: Deployment
metadata:
labels:
app.kubernetes.io/instance: flyte-sandbox
@@ -1795,6 +1704,88 @@ spec:
secretName: flyteconnector
---
apiVersion: apps/v1
+kind: Deployment
+metadata:
+ labels:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ name: flyte-sandbox-kubernetes-dashboard
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/name: kubernetes-dashboard
+ strategy:
+ rollingUpdate:
+ maxSurge: 0
+ maxUnavailable: 1
+ type: RollingUpdate
+ template:
+ metadata:
+ annotations: null
+ labels:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ spec:
+ containers:
+ - args:
+ - --namespace=flyte
+ - --metrics-provider=none
+ - --enable-insecure-login
+ - --enable-skip-login
+ image: kubernetesui/dashboard:sandbox
+ imagePullPolicy: Never
+ livenessProbe:
+ httpGet:
+ path: /
+ port: 9090
+ scheme: HTTP
+ initialDelaySeconds: 30
+ timeoutSeconds: 30
+ name: kubernetes-dashboard
+ ports:
+ - containerPort: 9090
+ name: http
+ protocol: TCP
+ resources:
+ limits:
+ cpu: 2
+ memory: 200Mi
+ requests:
+ cpu: 100m
+ memory: 200Mi
+ securityContext:
+ allowPrivilegeEscalation: false
+ readOnlyRootFilesystem: true
+ runAsGroup: 2001
+ runAsUser: 1001
+ volumeMounts:
+ - mountPath: /certs
+ name: kubernetes-dashboard-certs
+ - mountPath: /tmp
+ name: tmp-volume
+ securityContext:
+ seccompProfile:
+ type: RuntimeDefault
+ serviceAccountName: flyte-sandbox-kubernetes-dashboard
+ volumes:
+ - name: kubernetes-dashboard-certs
+ secret:
+ secretName: flyte-sandbox-kubernetes-dashboard-certs
+ - emptyDir: {}
+ name: tmp-volume
+---
+apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml
index de79e922b5a..9465189fe80 100644
--- a/docker/sandbox-bundled/manifests/complete.yaml
+++ b/docker/sandbox-bundled/manifests/complete.yaml
@@ -16,30 +16,29 @@ metadata:
namespace: flyte
---
apiVersion: v1
+automountServiceAccountToken: true
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/instance: flyte-sandbox
app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- name: flyte-sandbox-kubernetes-dashboard
+ app.kubernetes.io/name: minio
+ helm.sh/chart: minio-12.6.7
+ name: flyte-sandbox-minio
namespace: flyte
+secrets:
+- name: flyte-sandbox-minio
---
apiVersion: v1
-automountServiceAccountToken: true
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/instance: flyte-sandbox
app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: minio
- helm.sh/chart: minio-12.6.7
- name: flyte-sandbox-minio
- namespace: flyte
-secrets:
-- name: flyte-sandbox-minio
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ name: flyte-sandbox-kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
@@ -51,7 +50,6 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: flyte-sandbox-kubernetes-dashboard
- namespace: flyte
rules:
- apiGroups:
- ""
@@ -335,7 +333,6 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: flyte-sandbox-kubernetes-dashboard
- namespace: flyte
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
@@ -462,7 +459,7 @@ data:
stackdriver-enabled: false
k8s:
co-pilot:
- image: "cr.flyte.org/flyteorg/flytecopilot:v1.16.0-b4"
+ image: "cr.flyte.org/flyteorg/flytecopilot:v1.16.6"
k8s-array:
logs:
config:
@@ -500,7 +497,7 @@ data:
- FLYTE_AWS_ACCESS_KEY_ID: minio
- FLYTE_AWS_SECRET_ACCESS_KEY: miniostorage
- FLYTE_PLATFORM_URL: 'flyte-sandbox-grpc.flyte:8089'
- - FLYTE_PLATFORM_INSECURE: true
+ - FLYTE_PLATFORM_INSECURE: "true"
storage:
signedURL:
stowConfigOverride:
@@ -775,7 +772,6 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: kubernetes-dashboard-settings
- namespace: flyte
---
apiVersion: v1
kind: Secret
@@ -803,7 +799,7 @@ type: Opaque
---
apiVersion: v1
data:
- haSharedSecret: Umg4Tml4NGRCQVBrVTUwZw==
+ haSharedSecret: Y1JsS2lqZVBaRWlVTks1Ug==
proxyPassword: ""
proxyUsername: ""
kind: Secret
@@ -818,19 +814,6 @@ metadata:
type: Opaque
---
apiVersion: v1
-kind: Secret
-metadata:
- labels:
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- name: flyte-sandbox-kubernetes-dashboard-certs
- namespace: flyte
-type: Opaque
----
-apiVersion: v1
data:
root-password: bWluaW9zdG9yYWdl
root-user: bWluaW8=
@@ -861,6 +844,18 @@ type: Opaque
---
apiVersion: v1
kind: Secret
+metadata:
+ labels:
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ name: flyte-sandbox-kubernetes-dashboard-certs
+type: Opaque
+---
+apiVersion: v1
+kind: Secret
metadata:
labels:
app.kubernetes.io/instance: flyte-sandbox
@@ -869,7 +864,6 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: kubernetes-dashboard-csrf
- namespace: flyte
type: Opaque
---
apiVersion: v1
@@ -882,7 +876,6 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: kubernetes-dashboard-key-holder
- namespace: flyte
type: Opaque
---
apiVersion: v1
@@ -955,30 +948,6 @@ spec:
---
apiVersion: v1
kind: Service
-metadata:
- labels:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- kubernetes.io/cluster-service: "true"
- name: flyte-sandbox-kubernetes-dashboard
- namespace: flyte
-spec:
- ports:
- - name: http
- port: 80
- targetPort: http
- selector:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/name: kubernetes-dashboard
- type: ClusterIP
----
-apiVersion: v1
-kind: Service
metadata:
labels:
app.kubernetes.io/instance: flyte-sandbox
@@ -1098,6 +1067,29 @@ spec:
type: ClusterIP
---
apiVersion: v1
+kind: Service
+metadata:
+ labels:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ kubernetes.io/cluster-service: "true"
+ name: flyte-sandbox-kubernetes-dashboard
+spec:
+ ports:
+ - name: http
+ port: 80
+ targetPort: http
+ selector:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/name: kubernetes-dashboard
+ type: ClusterIP
+---
+apiVersion: v1
kind: PersistentVolume
metadata:
labels:
@@ -1201,7 +1193,7 @@ spec:
metadata:
annotations:
checksum/cluster-resource-templates: 6fd9b172465e3089fcc59f738b92b8dc4d8939360c19de8ee65f68b0e7422035
- checksum/configuration: 6d5036e278cf629a1c631e79114d85443094ad1016893831d3d3563c5b90de08
+ checksum/configuration: 8f90b5383252eaec2c7cd35ed575b3c0c1bb166f90dc4950162810dcdb27438d
checksum/configuration-secret: 09216ffaa3d29e14f88b1f30af580d02a2a5e014de4d750b7f275cc07ed4e914
labels:
app.kubernetes.io/component: flyte-binary
@@ -1367,7 +1359,7 @@ spec:
metadata:
annotations:
checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81
- checksum/secret: ff59d09e8df68ae751f1749231f3f24b9f5e66f0f4be92e7dd4c14037c2439ca
+ checksum/secret: 062726e1661665de6ee0ebd4abd056506e0850d1cadcb6d29234ebd1b7996fc5
labels:
app: docker-registry
release: flyte-sandbox
@@ -1416,89 +1408,6 @@ spec:
---
apiVersion: apps/v1
kind: Deployment
-metadata:
- labels:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- name: flyte-sandbox-kubernetes-dashboard
- namespace: flyte
-spec:
- replicas: 1
- selector:
- matchLabels:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/name: kubernetes-dashboard
- strategy:
- rollingUpdate:
- maxSurge: 0
- maxUnavailable: 1
- type: RollingUpdate
- template:
- metadata:
- annotations: null
- labels:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- spec:
- containers:
- - args:
- - --namespace=flyte
- - --metrics-provider=none
- - --enable-insecure-login
- - --enable-skip-login
- image: kubernetesui/dashboard:sandbox
- imagePullPolicy: Never
- livenessProbe:
- httpGet:
- path: /
- port: 9090
- scheme: HTTP
- initialDelaySeconds: 30
- timeoutSeconds: 30
- name: kubernetes-dashboard
- ports:
- - containerPort: 9090
- name: http
- protocol: TCP
- resources:
- limits:
- cpu: 2
- memory: 200Mi
- requests:
- cpu: 100m
- memory: 200Mi
- securityContext:
- allowPrivilegeEscalation: false
- readOnlyRootFilesystem: true
- runAsGroup: 2001
- runAsUser: 1001
- volumeMounts:
- - mountPath: /certs
- name: kubernetes-dashboard-certs
- - mountPath: /tmp
- name: tmp-volume
- securityContext:
- seccompProfile:
- type: RuntimeDefault
- serviceAccountName: flyte-sandbox-kubernetes-dashboard
- volumes:
- - name: kubernetes-dashboard-certs
- secret:
- secretName: flyte-sandbox-kubernetes-dashboard-certs
- - emptyDir: {}
- name: tmp-volume
----
-apiVersion: apps/v1
-kind: Deployment
metadata:
labels:
app.kubernetes.io/instance: flyte-sandbox
@@ -1675,6 +1584,88 @@ spec:
name: config
---
apiVersion: apps/v1
+kind: Deployment
+metadata:
+ labels:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ name: flyte-sandbox-kubernetes-dashboard
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/name: kubernetes-dashboard
+ strategy:
+ rollingUpdate:
+ maxSurge: 0
+ maxUnavailable: 1
+ type: RollingUpdate
+ template:
+ metadata:
+ annotations: null
+ labels:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ spec:
+ containers:
+ - args:
+ - --namespace=flyte
+ - --metrics-provider=none
+ - --enable-insecure-login
+ - --enable-skip-login
+ image: kubernetesui/dashboard:sandbox
+ imagePullPolicy: Never
+ livenessProbe:
+ httpGet:
+ path: /
+ port: 9090
+ scheme: HTTP
+ initialDelaySeconds: 30
+ timeoutSeconds: 30
+ name: kubernetes-dashboard
+ ports:
+ - containerPort: 9090
+ name: http
+ protocol: TCP
+ resources:
+ limits:
+ cpu: 2
+ memory: 200Mi
+ requests:
+ cpu: 100m
+ memory: 200Mi
+ securityContext:
+ allowPrivilegeEscalation: false
+ readOnlyRootFilesystem: true
+ runAsGroup: 2001
+ runAsUser: 1001
+ volumeMounts:
+ - mountPath: /certs
+ name: kubernetes-dashboard-certs
+ - mountPath: /tmp
+ name: tmp-volume
+ securityContext:
+ seccompProfile:
+ type: RuntimeDefault
+ serviceAccountName: flyte-sandbox-kubernetes-dashboard
+ volumes:
+ - name: kubernetes-dashboard-certs
+ secret:
+ secretName: flyte-sandbox-kubernetes-dashboard-certs
+ - emptyDir: {}
+ name: tmp-volume
+---
+apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml
index b84cc08f711..8faca1c5611 100644
--- a/docker/sandbox-bundled/manifests/dev.yaml
+++ b/docker/sandbox-bundled/manifests/dev.yaml
@@ -4,30 +4,29 @@ metadata:
name: flyte
---
apiVersion: v1
+automountServiceAccountToken: true
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/instance: flyte-sandbox
app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- name: flyte-sandbox-kubernetes-dashboard
+ app.kubernetes.io/name: minio
+ helm.sh/chart: minio-12.6.7
+ name: flyte-sandbox-minio
namespace: flyte
+secrets:
+- name: flyte-sandbox-minio
---
apiVersion: v1
-automountServiceAccountToken: true
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/instance: flyte-sandbox
app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: minio
- helm.sh/chart: minio-12.6.7
- name: flyte-sandbox-minio
- namespace: flyte
-secrets:
-- name: flyte-sandbox-minio
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ name: flyte-sandbox-kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
@@ -39,7 +38,6 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: flyte-sandbox-kubernetes-dashboard
- namespace: flyte
rules:
- apiGroups:
- ""
@@ -230,7 +228,6 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: flyte-sandbox-kubernetes-dashboard
- namespace: flyte
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
@@ -495,11 +492,10 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: kubernetes-dashboard-settings
- namespace: flyte
---
apiVersion: v1
data:
- haSharedSecret: WnMwekpCZ0Fmb2p6SW1Fcg==
+ haSharedSecret: TDhzYTZmY0ltMWtVSEhMbw==
proxyPassword: ""
proxyUsername: ""
kind: Secret
@@ -514,19 +510,6 @@ metadata:
type: Opaque
---
apiVersion: v1
-kind: Secret
-metadata:
- labels:
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- name: flyte-sandbox-kubernetes-dashboard-certs
- namespace: flyte
-type: Opaque
----
-apiVersion: v1
data:
root-password: bWluaW9zdG9yYWdl
root-user: bWluaW8=
@@ -557,6 +540,18 @@ type: Opaque
---
apiVersion: v1
kind: Secret
+metadata:
+ labels:
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ name: flyte-sandbox-kubernetes-dashboard-certs
+type: Opaque
+---
+apiVersion: v1
+kind: Secret
metadata:
labels:
app.kubernetes.io/instance: flyte-sandbox
@@ -565,7 +560,6 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: kubernetes-dashboard-csrf
- namespace: flyte
type: Opaque
---
apiVersion: v1
@@ -578,7 +572,6 @@ metadata:
app.kubernetes.io/version: 2.7.0
helm.sh/chart: kubernetes-dashboard-6.0.0
name: kubernetes-dashboard-key-holder
- namespace: flyte
type: Opaque
---
apiVersion: v1
@@ -630,30 +623,6 @@ spec:
---
apiVersion: v1
kind: Service
-metadata:
- labels:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- kubernetes.io/cluster-service: "true"
- name: flyte-sandbox-kubernetes-dashboard
- namespace: flyte
-spec:
- ports:
- - name: http
- port: 80
- targetPort: http
- selector:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/name: kubernetes-dashboard
- type: ClusterIP
----
-apiVersion: v1
-kind: Service
metadata:
labels:
app.kubernetes.io/instance: flyte-sandbox
@@ -775,6 +744,29 @@ spec:
type: NodePort
---
apiVersion: v1
+kind: Service
+metadata:
+ labels:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ kubernetes.io/cluster-service: "true"
+ name: flyte-sandbox-kubernetes-dashboard
+spec:
+ ports:
+ - name: http
+ port: 80
+ targetPort: http
+ selector:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/name: kubernetes-dashboard
+ type: ClusterIP
+---
+apiVersion: v1
kind: PersistentVolume
metadata:
labels:
@@ -934,7 +926,7 @@ spec:
metadata:
annotations:
checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81
- checksum/secret: 9fa416e91f041fa2213c7819aa3317d7d252d4cf6c63fcb6e0440c5d1963f406
+ checksum/secret: 9f66524b3f1d426c07f2b6c95e4e10d081cf00cc9b03150478caf2cdfa86b760
labels:
app: docker-registry
release: flyte-sandbox
@@ -983,89 +975,6 @@ spec:
---
apiVersion: apps/v1
kind: Deployment
-metadata:
- labels:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- name: flyte-sandbox-kubernetes-dashboard
- namespace: flyte
-spec:
- replicas: 1
- selector:
- matchLabels:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/name: kubernetes-dashboard
- strategy:
- rollingUpdate:
- maxSurge: 0
- maxUnavailable: 1
- type: RollingUpdate
- template:
- metadata:
- annotations: null
- labels:
- app.kubernetes.io/component: kubernetes-dashboard
- app.kubernetes.io/instance: flyte-sandbox
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: kubernetes-dashboard
- app.kubernetes.io/version: 2.7.0
- helm.sh/chart: kubernetes-dashboard-6.0.0
- spec:
- containers:
- - args:
- - --namespace=flyte
- - --metrics-provider=none
- - --enable-insecure-login
- - --enable-skip-login
- image: kubernetesui/dashboard:sandbox
- imagePullPolicy: Never
- livenessProbe:
- httpGet:
- path: /
- port: 9090
- scheme: HTTP
- initialDelaySeconds: 30
- timeoutSeconds: 30
- name: kubernetes-dashboard
- ports:
- - containerPort: 9090
- name: http
- protocol: TCP
- resources:
- limits:
- cpu: 2
- memory: 200Mi
- requests:
- cpu: 100m
- memory: 200Mi
- securityContext:
- allowPrivilegeEscalation: false
- readOnlyRootFilesystem: true
- runAsGroup: 2001
- runAsUser: 1001
- volumeMounts:
- - mountPath: /certs
- name: kubernetes-dashboard-certs
- - mountPath: /tmp
- name: tmp-volume
- securityContext:
- seccompProfile:
- type: RuntimeDefault
- serviceAccountName: flyte-sandbox-kubernetes-dashboard
- volumes:
- - name: kubernetes-dashboard-certs
- secret:
- secretName: flyte-sandbox-kubernetes-dashboard-certs
- - emptyDir: {}
- name: tmp-volume
----
-apiVersion: apps/v1
-kind: Deployment
metadata:
labels:
app.kubernetes.io/instance: flyte-sandbox
@@ -1242,6 +1151,88 @@ spec:
name: config
---
apiVersion: apps/v1
+kind: Deployment
+metadata:
+ labels:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ name: flyte-sandbox-kubernetes-dashboard
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/name: kubernetes-dashboard
+ strategy:
+ rollingUpdate:
+ maxSurge: 0
+ maxUnavailable: 1
+ type: RollingUpdate
+ template:
+ metadata:
+ annotations: null
+ labels:
+ app.kubernetes.io/component: kubernetes-dashboard
+ app.kubernetes.io/instance: flyte-sandbox
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: kubernetes-dashboard
+ app.kubernetes.io/version: 2.7.0
+ helm.sh/chart: kubernetes-dashboard-6.0.0
+ spec:
+ containers:
+ - args:
+ - --namespace=flyte
+ - --metrics-provider=none
+ - --enable-insecure-login
+ - --enable-skip-login
+ image: kubernetesui/dashboard:sandbox
+ imagePullPolicy: Never
+ livenessProbe:
+ httpGet:
+ path: /
+ port: 9090
+ scheme: HTTP
+ initialDelaySeconds: 30
+ timeoutSeconds: 30
+ name: kubernetes-dashboard
+ ports:
+ - containerPort: 9090
+ name: http
+ protocol: TCP
+ resources:
+ limits:
+ cpu: 2
+ memory: 200Mi
+ requests:
+ cpu: 100m
+ memory: 200Mi
+ securityContext:
+ allowPrivilegeEscalation: false
+ readOnlyRootFilesystem: true
+ runAsGroup: 2001
+ runAsUser: 1001
+ volumeMounts:
+ - mountPath: /certs
+ name: kubernetes-dashboard-certs
+ - mountPath: /tmp
+ name: tmp-volume
+ securityContext:
+ seccompProfile:
+ type: RuntimeDefault
+ serviceAccountName: flyte-sandbox-kubernetes-dashboard
+ volumes:
+ - name: kubernetes-dashboard-certs
+ secret:
+ secretName: flyte-sandbox-kubernetes-dashboard-certs
+ - emptyDir: {}
+ name: tmp-volume
+---
+apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
diff --git a/docs/community/contribute/contribute_code.rst b/docs/community/contribute/contribute_code.rst
index 2eed2f12e2f..bbf4bf143f0 100644
--- a/docs/community/contribute/contribute_code.rst
+++ b/docs/community/contribute/contribute_code.rst
@@ -393,8 +393,77 @@ If not, we can start backends with a single command.
pyflyte run https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/basics/basics/hello_world.py hello_world_wf
# Running hello_world_wf() hello world
-**3. Run workflow in sandbox.**
+**3. Run integration test**
+
+- Step 1: Build the dev container
+
+.. code:: shell
+
+ make build-dev
+
+- Step 2: Run integration test
+
+.. code:: shell
+
+ # Run integration test
+ make integration_test
+
+ # Run integration test with code coverage report
+ make integration_test_codecov
+
+ # Run integration test with higher verbosity
+ make integration_test PYTEST_OPTS="-n auto --dist=loadfile -vv"
+
+
+**4-1. Run workflow in sandbox - with ImageSpec**
+
+Before running your workflow in the sandbox, make sure you're able to successfully run it
+locally. To run the workflow in the sandbox with the newest modification, you can use
+`ImageSpec` to define your container image directly in Python code.
+
+Create a workflow file that uses `ImageSpec` to define the image with your custom flytekit version:
+
+.. code:: python
+
+ from flytekit import ImageSpec, task, workflow
+
+ # Define your custom flytekit version - replace with your own repo and commit hash
+ # You need to push your modifications to your fork and get the commit hash first
+ new_flytekit = "git+https://github.com/your-github-username/flytekit.git@your-commit-hash"
+
+ # To install your modified plugins, use following:
+ # new_deck_plugin = "git+https://github.com/your-github-username/flytekit.git@your-commit-hash#subdirectory=plugins/flytekit-kf-pytorch"
+
+ # Create ImageSpec with your custom flytekit
+ image_spec = ImageSpec(
+ registry="localhost:30000",
+ packages=[
+ new_flytekit,
+ # new_deck_plugin
+ ],
+ apt_packages=["git"],
+ )
+
+ @task(container_image=image_spec)
+ def hello_world_task(name: str) -> str:
+ return f"Hello {name}!"
+
+ @workflow
+ def wf(name: str = "World") -> str:
+ return hello_world_task(name=name)
+
+
+Then submit the workflow to the Flyte cluster:
+
+.. code:: shell
+
+ # ImageSpec will automatically build and push the image to the local registry
+ pyflyte run --remote custom_workflow.py wf
+ # Go to http://localhost:30080/console/projects/flytesnacks/domains/development/executions/ to see execution in the console.
+
+
+**4-2. Run workflow in sandbox - with Dockerfile**
Before running your workflow in the sandbox, make sure you're able to successfully run it locally.
To deploy the workflow in the sandbox, you'll need to build a Flytekit image.
@@ -436,6 +505,92 @@ the Flyte cluster, and finally submit the workflow.
pyflyte run --image ${FLYTE_INTERNAL_IMAGE} --remote https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/basics/basics/hello_world.py hello_world_wf
# Go to http://localhost:30080/console/projects/flytesnacks/domains/development/executions/f5c17e1b5640c4336bf8 to see execution in the console.
+
+How to debug flytekit remote workflow?
+**************************************
+
+For running locally, we can easily debug with the help of debugger. However,
+this approach does not work if we want to debug the remote workflow. When you
+need to debug your flytekit changes while running a remote workflow and set
+breakpoints to inspect variables, you can follow these steps:
+
+**1. Add breakpoints to your flytekit code**
+
+Insert `breakpoint()` function calls at the locations in your flytekit modifications where
+you want to pause execution and inspect variables. This is particularly useful when
+debugging changes you've made to flytekit's core functionality:
+
+
+**2. Run your workflow remotely**
+
+Execute your workflow using the remote flag:
+
+.. code:: shell
+
+ pyflyte run --remote custom_workflow.py wf
+
+**3. Describe the pod to get container arguments**
+
+First, find the pod name from your execution. You can get this from the Flyte UI execution page or by listing pods:
+
+.. code:: shell
+
+ # List pods to find your execution pod
+ kubectl get pods -n flytesnacks-development
+
+ # Look for pods with names matching your execution ID
+ # Example output:
+ # NAME READY STATUS RESTARTS AGE
+ # ab5mg9lzgth62h82qprp-n0-0 1/1 Running 0 2m
+
+Then describe the pod to get the container arguments:
+
+.. code:: shell
+
+ # Replace with your actual pod name from the execution
+ kubectl describe pod -n flytesnacks-development ab5mg9lzgth62h82qprp-n0-0
+
+Look for the `Args:` section in the container specification and copy all the arguments. Example output:
+
+.. code:: shell
+
+ Args:
+ pyflyte-fast-execute
+ --additional-distribution
+ /opt/venv
+ --dest-dir
+ /tmp/flyte
+ --input
+ s3://my-bucket/metadata/...
+
+**4. Set up environment variables**
+
+Export the necessary Minio environment variables to access the object store if you are using demo cluster:
+
+.. code:: shell
+
+ export FLYTE_AWS_ENDPOINT="http://localhost:30002"
+ export FLYTE_AWS_ACCESS_KEY_ID="minio"
+ export FLYTE_AWS_SECRET_ACCESS_KEY="miniostorage"
+
+**5. Run the container arguments locally**
+
+Take the container arguments from step 3, combine them into a single line, and execute
+them in your terminal. This will run the task locally with the same configuration as the
+remote execution, allowing you to hit your breakpoints and inspect variables.
+
+.. code:: shell
+
+ # Example: Convert the multi-line args to a single command
+ pyflyte-fast-execute --additional-distribution /opt/venv --dest-dir /tmp/flyte --input s3://my-bucket/metadata/... --output-prefix s3://my-bucket/data/...
+
+This approach allows you to debug your flytekit changes in a remote workflow execution
+locally while maintaining the same execution context and data access patterns. This is
+especially valuable when you need to step through your modifications to flytekit's
+internals during remote execution.
+
+
+
How to setup dev environment for flyteconsole?
**********************************************
diff --git a/docs/conf.py b/docs/conf.py
index 9337402f13e..95c6141b09f 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -31,13 +31,13 @@
# -- Project information -----------------------------------------------------
project = "Flyte"
-copyright = "2025, Flyte authors"
+copyright = "2026, Flyte authors"
author = "Flyte"
# The short X.Y version
version = ""
# The full version, including alpha/beta/rc tags. For example, 0.1.1, 1.16.0-b0
-release = "1.16.0-b4"
+release = "1.16.6"
# -- General configuration ---------------------------------------------------
diff --git a/docs/deployment/configuration/generated/datacatalog_config.rst b/docs/deployment/configuration/generated/datacatalog_config.rst
index 48cfbe3a31b..4384220ab21 100644
--- a/docs/deployment/configuration/generated/datacatalog_config.rst
+++ b/docs/deployment/configuration/generated/datacatalog_config.rst
@@ -14,6 +14,8 @@ Flyte Datacatalog Configuration
- `otel <#section-otel>`_
+- `prof <#section-prof>`_
+
- `storage <#section-storage>`_
Section: application
@@ -679,6 +681,19 @@ traceIdRatio (float64)
"0.01"
+Section: prof
+========================================================================================================================
+
+DisableConfigEndpoint (bool)
+------------------------------------------------------------------------------------------------------------------------
+
+**Default Value**:
+
+.. code-block:: yaml
+
+ "false"
+
+
Section: storage
========================================================================================================================
diff --git a/docs/deployment/configuration/generated/flyteadmin_config.rst b/docs/deployment/configuration/generated/flyteadmin_config.rst
index 5dff3a44775..72d96867da9 100644
--- a/docs/deployment/configuration/generated/flyteadmin_config.rst
+++ b/docs/deployment/configuration/generated/flyteadmin_config.rst
@@ -38,6 +38,8 @@ Flyte Admin Configuration
- `plugins <#section-plugins>`_
+- `prof <#section-prof>`_
+
- `propeller <#section-propeller>`_
- `qualityofservice <#section-qualityofservice>`_
@@ -2703,6 +2705,36 @@ Use offloaded inputs for workflows.
"false"
+injectIdentityAnnotations (bool)
+------------------------------------------------------------------------------------------------------------------------
+
+**Default Value**:
+
+.. code-block:: yaml
+
+ "false"
+
+
+identityAnnotationPrefix (string)
+------------------------------------------------------------------------------------------------------------------------
+
+**Default Value**:
+
+.. code-block:: yaml
+
+ ""
+
+
+identityAnnotationKeys ([]string)
+------------------------------------------------------------------------------------------------------------------------
+
+**Default Value**:
+
+.. code-block:: yaml
+
+ null
+
+
interfaces.FeatureGates
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -5308,6 +5340,19 @@ templates ([]tasklog.TemplateLogPlugin)
null
+Section: prof
+========================================================================================================================
+
+DisableConfigEndpoint (bool)
+------------------------------------------------------------------------------------------------------------------------
+
+**Default Value**:
+
+.. code-block:: yaml
+
+ "false"
+
+
Section: propeller
========================================================================================================================
@@ -5598,7 +5643,6 @@ config for a workflow node
default-deadlines:
node-active-deadline: 0s
node-execution-deadline: 0s
- workflow-active-deadline: 0s
default-max-attempts: 1
enable-cr-debug-metadata: false
ignore-retry-cause: false
@@ -6140,16 +6184,6 @@ Whether output data should be sent by reference when it is too large to be sent
"false"
-ErrorOnAlreadyExists (bool)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-**Default Value**:
-
-.. code-block:: yaml
-
- "false"
-
-
config.KubeClientConfig
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -6337,7 +6371,6 @@ Default value for timeouts
node-active-deadline: 0s
node-execution-deadline: 0s
- workflow-active-deadline: 0s
max-node-retries-system-failures (int64)
@@ -6427,18 +6460,6 @@ Default value of node timeout that includes the time spent queued.
0s
-workflow-active-deadline (`config.Duration`_)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-Default value of workflow timeout that includes the time spent queued.
-
-**Default Value**:
-
-.. code-block:: yaml
-
- 0s
-
-
config.Port
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/docs/deployment/configuration/generated/flytepropeller_config.rst b/docs/deployment/configuration/generated/flytepropeller_config.rst
index 31c1b6c3081..224d83f2646 100644
--- a/docs/deployment/configuration/generated/flytepropeller_config.rst
+++ b/docs/deployment/configuration/generated/flytepropeller_config.rst
@@ -16,6 +16,8 @@ Flyte Propeller Configuration
- `plugins <#section-plugins>`_
+- `prof <#section-prof>`_
+
- `propeller <#section-propeller>`_
- `secrets <#section-secrets>`_
@@ -1378,30 +1380,6 @@ logs (`logs.LogConfig`_)
templates: null
-qubole (`config.Config`_)
-------------------------------------------------------------------------------------------------------------------------
-
-**Default Value**:
-
-.. code-block:: yaml
-
- analyzeLinkPath: /v2/analyze
- clusterConfigs:
- - labels:
- - default
- limit: 100
- namespaceScopeQuotaProportionCap: 0.7
- primaryLabel: default
- projectScopeQuotaProportionCap: 0.7
- commandApiPath: /api/v1.2/commands/
- defaultClusterLabel: default
- destinationClusterConfigs: []
- endpoint: https://wellness.qubole.com
- lruCacheSize: 2000
- quboleTokenKey: FLYTE_QUBOLE_CLIENT_TOKEN
- workers: 15
-
-
ray (`ray.Config`_)
------------------------------------------------------------------------------------------------------------------------
@@ -2282,118 +2260,6 @@ timeout (`config.Duration`_)
1m0s
-config.Config
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-endpoint (`config.URL`_)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-Endpoint for qubole to use
-
-**Default Value**:
-
-.. code-block:: yaml
-
- https://wellness.qubole.com
-
-
-commandApiPath (`config.URL`_)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-API Path where commands can be launched on Qubole. Should be a valid url.
-
-**Default Value**:
-
-.. code-block:: yaml
-
- /api/v1.2/commands/
-
-
-analyzeLinkPath (`config.URL`_)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-URL path where queries can be visualized on qubole website. Should be a valid url.
-
-**Default Value**:
-
-.. code-block:: yaml
-
- /v2/analyze
-
-
-quboleTokenKey (string)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-Name of the key where to find Qubole token in the secret manager.
-
-**Default Value**:
-
-.. code-block:: yaml
-
- FLYTE_QUBOLE_CLIENT_TOKEN
-
-
-lruCacheSize (int)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-Size of the AutoRefreshCache
-
-**Default Value**:
-
-.. code-block:: yaml
-
- "2000"
-
-
-workers (int)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-Number of parallel workers to refresh the cache
-
-**Default Value**:
-
-.. code-block:: yaml
-
- "15"
-
-
-defaultClusterLabel (string)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-The default cluster label. This will be used if label is not specified on the hive job.
-
-**Default Value**:
-
-.. code-block:: yaml
-
- default
-
-
-clusterConfigs ([]config.ClusterConfig)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-**Default Value**:
-
-.. code-block:: yaml
-
- - labels:
- - default
- limit: 100
- namespaceScopeQuotaProportionCap: 0.7
- primaryLabel: default
- projectScopeQuotaProportionCap: 0.7
-
-
-destinationClusterConfigs ([]config.DestinationClusterConfig)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-**Default Value**:
-
-.. code-block:: yaml
-
- []
-
-
config.K8sPluginConfig
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -3969,6 +3835,16 @@ serviceType (string)
NodePort
+enableIngress (bool)
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+**Default Value**:
+
+.. code-block:: yaml
+
+ "false"
+
+
includeDashboard (bool)
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@@ -4442,6 +4318,19 @@ Indicates the amount of time before transitioning to success
0s
+Section: prof
+========================================================================================================================
+
+DisableConfigEndpoint (bool)
+------------------------------------------------------------------------------------------------------------------------
+
+**Default Value**:
+
+.. code-block:: yaml
+
+ "false"
+
+
Section: propeller
========================================================================================================================
@@ -4732,7 +4621,6 @@ config for a workflow node
default-deadlines:
node-active-deadline: 0s
node-execution-deadline: 0s
- workflow-active-deadline: 0s
default-max-attempts: 1
enable-cr-debug-metadata: false
ignore-retry-cause: false
@@ -4919,7 +4807,7 @@ admin-launcher (`launchplan.AdminConfig`_)
workers: 10
-resourcemanager (`config.Config (resourcemanager)`_)
+resourcemanager (`config.Config`_)
------------------------------------------------------------------------------------------------------------------------
**Default Value**:
@@ -5141,7 +5029,7 @@ Bucket capacity as number of items
"10000"
-config.Config (resourcemanager)
+config.Config
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
type (string)
@@ -5274,16 +5162,6 @@ Whether output data should be sent by reference when it is too large to be sent
"false"
-ErrorOnAlreadyExists (bool)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-**Default Value**:
-
-.. code-block:: yaml
-
- "false"
-
-
config.KubeClientConfig
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -5471,7 +5349,6 @@ Default value for timeouts
node-active-deadline: 0s
node-execution-deadline: 0s
- workflow-active-deadline: 0s
max-node-retries-system-failures (int64)
@@ -5561,18 +5438,6 @@ Default value of node timeout that includes the time spent queued.
0s
-workflow-active-deadline (`config.Duration`_)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-Default value of workflow timeout that includes the time spent queued.
-
-**Default Value**:
-
-.. code-block:: yaml
-
- 0s
-
-
config.Port
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/docs/deployment/configuration/generated/scheduler_config.rst b/docs/deployment/configuration/generated/scheduler_config.rst
index cb5881e4b6b..a2ef8d50a34 100644
--- a/docs/deployment/configuration/generated/scheduler_config.rst
+++ b/docs/deployment/configuration/generated/scheduler_config.rst
@@ -38,6 +38,8 @@ Flyte Scheduler Configuration
- `plugins <#section-plugins>`_
+- `prof <#section-prof>`_
+
- `propeller <#section-propeller>`_
- `qualityofservice <#section-qualityofservice>`_
@@ -2703,6 +2705,36 @@ Use offloaded inputs for workflows.
"false"
+injectIdentityAnnotations (bool)
+------------------------------------------------------------------------------------------------------------------------
+
+**Default Value**:
+
+.. code-block:: yaml
+
+ "false"
+
+
+identityAnnotationPrefix (string)
+------------------------------------------------------------------------------------------------------------------------
+
+**Default Value**:
+
+.. code-block:: yaml
+
+ ""
+
+
+identityAnnotationKeys ([]string)
+------------------------------------------------------------------------------------------------------------------------
+
+**Default Value**:
+
+.. code-block:: yaml
+
+ null
+
+
interfaces.FeatureGates
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -5308,6 +5340,19 @@ templates ([]tasklog.TemplateLogPlugin)
null
+Section: prof
+========================================================================================================================
+
+DisableConfigEndpoint (bool)
+------------------------------------------------------------------------------------------------------------------------
+
+**Default Value**:
+
+.. code-block:: yaml
+
+ "false"
+
+
Section: propeller
========================================================================================================================
@@ -5598,7 +5643,6 @@ config for a workflow node
default-deadlines:
node-active-deadline: 0s
node-execution-deadline: 0s
- workflow-active-deadline: 0s
default-max-attempts: 1
enable-cr-debug-metadata: false
ignore-retry-cause: false
@@ -6140,16 +6184,6 @@ Whether output data should be sent by reference when it is too large to be sent
"false"
-ErrorOnAlreadyExists (bool)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-**Default Value**:
-
-.. code-block:: yaml
-
- "false"
-
-
config.KubeClientConfig
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -6337,7 +6371,6 @@ Default value for timeouts
node-active-deadline: 0s
node-execution-deadline: 0s
- workflow-active-deadline: 0s
max-node-retries-system-failures (int64)
@@ -6427,18 +6460,6 @@ Default value of node timeout that includes the time spent queued.
0s
-workflow-active-deadline (`config.Duration`_)
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-Default value of workflow timeout that includes the time spent queued.
-
-**Default Value**:
-
-.. code-block:: yaml
-
- 0s
-
-
config.Port
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/flyteadmin/.golangci.yml b/flyteadmin/.golangci.yml
index b3e4f059972..bbb2b460da0 100644
--- a/flyteadmin/.golangci.yml
+++ b/flyteadmin/.golangci.yml
@@ -1,40 +1,43 @@
-run:
- skip-files:
- # because we're skipping TLS verification - for now
- - cmd/entrypoints/serve.go
- - pkg/async/messages/sqs.go
+version: "2"
linters:
- disable-all: true
+ default: none
enable:
- errcheck
- - gosec
- - gci
- goconst
- - goimports
- - gosimple
+ - gosec
- govet
- ineffassign
- misspell
- nakedret
- - staticcheck
- - typecheck
+ - protogetter
- unconvert
- unparam
- unused
- - protogetter
-linters-settings:
- gci:
- custom-order: true
- sections:
- - standard
- - default
- - prefix(github.com/flyteorg)
- skip-generated: true
- goconst:
- ignore-tests: true
-issues:
- exclude-rules:
- - path: pkg/workflowengine/impl/prepare_execution.go
- text: "copies lock"
- - path: pkg/runtime/interfaces/application_configuration.go
- text: "G402: TLS InsecureSkipVerify may be true."
+ exclusions:
+ generated: lax
+ presets:
+ - comments
+ - common-false-positives
+ - legacy
+ - std-error-handling
+ rules:
+ - path: pkg/workflowengine/impl/prepare_execution.go
+ text: copies lock
+ - path: pkg/runtime/interfaces/application_configuration.go
+ text: 'G402: TLS InsecureSkipVerify may be true.'
+ - linters:
+ - goconst
+ path: (.+)_test\.go
+formatters:
+ enable:
+ - gci
+ - goimports
+ settings:
+ gci:
+ sections:
+ - standard
+ - default
+ - prefix(github.com/flyteorg)
+ custom-order: true
+ exclusions:
+ generated: lax
\ No newline at end of file
diff --git a/flyteadmin/auth/authzserver/authorize.go b/flyteadmin/auth/authzserver/authorize.go
index 27f145e0dfc..b85990dfc7e 100644
--- a/flyteadmin/auth/authzserver/authorize.go
+++ b/flyteadmin/auth/authzserver/authorize.go
@@ -64,7 +64,7 @@ func authCallbackEndpoint(authCtx interfaces.AuthenticationContext, rw http.Resp
return
}
- arReq, err := http.NewRequest(http.MethodGet, arURL, nil)
+ arReq, err := http.NewRequest(http.MethodGet, arURL, nil) //nolint:gosec
if err != nil {
logger.Infof(ctx, "Error occurred in NewAuthorizeRequest: %+v", err)
oauth2Provider.WriteAuthorizeError(rw, fosite.NewAuthorizeRequest(), err)
diff --git a/flyteadmin/auth/authzserver/resource_server.go b/flyteadmin/auth/authzserver/resource_server.go
index 917e0fcfaf2..5321e8a19f6 100644
--- a/flyteadmin/auth/authzserver/resource_server.go
+++ b/flyteadmin/auth/authzserver/resource_server.go
@@ -12,7 +12,6 @@ import (
"github.com/coreos/go-oidc/v3/oidc"
jwtgo "github.com/golang-jwt/jwt/v4"
- "golang.org/x/oauth2"
"k8s.io/apimachinery/pkg/util/sets"
authConfig "github.com/flyteorg/flyte/flyteadmin/auth/config"
@@ -47,14 +46,6 @@ func (r ResourceServer) ValidateAccessToken(ctx context.Context, expectedAudienc
return verifyClaims(sets.NewString(append(r.allowedAudience, expectedAudience)...), t.Claims.(jwtgo.MapClaims))
}
-func doRequest(ctx context.Context, req *http.Request) (*http.Response, error) {
- client := http.DefaultClient
- if c, ok := ctx.Value(oauth2.HTTPClient).(*http.Client); ok {
- client = c
- }
- return client.Do(req.WithContext(ctx))
-}
-
func unmarshalResp(r *http.Response, body []byte, v interface{}) error {
err := json.Unmarshal(body, &v)
if err == nil {
diff --git a/flyteadmin/auth/authzserver/resource_server_test.go b/flyteadmin/auth/authzserver/resource_server_test.go
index 9541e73ccd3..9fe8870e713 100644
--- a/flyteadmin/auth/authzserver/resource_server_test.go
+++ b/flyteadmin/auth/authzserver/resource_server_test.go
@@ -189,33 +189,6 @@ func TestResourceServer_ValidateAccessToken(t *testing.T) {
})
}
-func Test_doRequest(t *testing.T) {
- type args struct {
- ctx context.Context
- req *http.Request
- }
- tests := []struct {
- name string
- args args
- want *http.Response
- wantErr bool
- }{
- // TODO: Add test cases.
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- got, err := doRequest(tt.args.ctx, tt.args.req)
- if (err != nil) != tt.wantErr {
- t.Errorf("doRequest() error = %v, wantErr %v", err, tt.wantErr)
- return
- }
- if !reflect.DeepEqual(got, tt.want) {
- t.Errorf("doRequest() got = %v, want %v", got, tt.want)
- }
- })
- }
-}
-
func Test_getJwksForIssuer(t *testing.T) {
type args struct {
ctx context.Context
diff --git a/flyteadmin/auth/config/config_flags_test.go b/flyteadmin/auth/config/config_flags_test.go
index b6d2307de55..866ccc5c80e 100755
--- a/flyteadmin/auth/config/config_flags_test.go
+++ b/flyteadmin/auth/config/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteadmin/auth/cookie.go b/flyteadmin/auth/cookie.go
index 456eeb8580a..abdd7b52dc7 100644
--- a/flyteadmin/auth/cookie.go
+++ b/flyteadmin/auth/cookie.go
@@ -2,12 +2,13 @@ package auth
import (
"context"
+ "crypto/rand"
"crypto/sha256"
+ "encoding/base64"
"encoding/hex"
- "math/rand"
+ "fmt"
"net/http"
"net/url"
- "time"
"github.com/gorilla/securecookie"
@@ -112,25 +113,29 @@ func ReadSecureCookie(ctx context.Context, cookie http.Cookie, hashKey, blockKey
return "", errors.Wrapf(ErrSecureCookie, err, "Error reading secure cookie %s", cookie.Name)
}
-func NewCsrfToken(seed int64) string {
- rand.Seed(seed)
- csrfToken := [10]rune{}
- for i := 0; i < len(csrfToken); i++ {
- /* #nosec */
- csrfToken[i] = AllowedChars[rand.Intn(len(AllowedChars))]
+func NewCsrfToken() (string, error) {
+ // 32 bytes = 256 bits of entropy, plenty for CSRF
+ b := make([]byte, 32)
+ if _, err := rand.Read(b); err != nil {
+ return "", err
}
- return string(csrfToken[:])
+
+ // base64 encode so it's safe to embed in HTML forms
+ return base64.URLEncoding.EncodeToString(b), nil
}
-func NewCsrfCookie() http.Cookie {
- csrfStateToken := NewCsrfToken(time.Now().UnixNano())
+func NewCsrfCookie() (http.Cookie, error) {
+ csrfStateToken, err := NewCsrfToken()
+ if err != nil {
+ return http.Cookie{}, fmt.Errorf("creating csrf token: %w", err)
+ }
return http.Cookie{
Name: csrfStateCookieName,
Value: csrfStateToken,
SameSite: http.SameSiteLaxMode,
HttpOnly: true,
Secure: !config.GetConfig().Security.InsecureCookieHeader,
- }
+ }, nil
}
func VerifyCsrfCookie(ctx context.Context, request *http.Request) error {
diff --git a/flyteadmin/auth/cookie_manager_test.go b/flyteadmin/auth/cookie_manager_test.go
index 444056ba8c1..528431bb306 100644
--- a/flyteadmin/auth/cookie_manager_test.go
+++ b/flyteadmin/auth/cookie_manager_test.go
@@ -10,7 +10,8 @@ import (
"testing"
"time"
- "github.com/golang-jwt/jwt"
+ "github.com/golang-jwt/jwt/v4"
+ "github.com/gorilla/securecookie"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"golang.org/x/oauth2"
@@ -285,3 +286,54 @@ func TestCookieManager(t *testing.T) {
assert.Equal(t, "flyte_auth_code", cookies[0].Name)
})
}
+
+func TestExtractAccessTokenFromCookies(t *testing.T) {
+ hashKeyFromSecret, err := base64.StdEncoding.DecodeString("ODg0K2EybG1IaHJHRUNUcUNsRDB2U3BhRzJIbUREWU1FeXUyYU9maTZ0RnJnYy83bVEzRC9rdTU1ZzRrZ3E3MlFiQ2E1ZmduK2NtTkw1Y2wwaVBsL2c=")
+ require.NoError(t, err)
+ blockKeyFromSecret, err := base64.StdEncoding.DecodeString("dkZKaG9ZcUxQSkc3dCt5VUtSWHhGcFBTOWtoNEpBYjgvZk9NeDN1bFN4Zw==")
+ require.NoError(t, err)
+
+ hashKeyEncoded := string(hashKeyFromSecret)
+ blockKeyEncoded := string(blockKeyFromSecret)
+
+ t.Logf("Hash key encoded: %s", hashKeyEncoded)
+ t.Logf("Block key encoded: %s", blockKeyEncoded)
+
+ hashKey, err := base64.RawStdEncoding.DecodeString(hashKeyEncoded)
+ require.NoError(t, err)
+ blockKey, err := base64.RawStdEncoding.DecodeString(blockKeyEncoded)
+ require.NoError(t, err)
+
+ t.Logf("Hash key length: %d bytes", len(hashKey))
+ t.Logf("Block key length: %d bytes", len(blockKey))
+
+ cookieValue1 := "MTc2OTczMzU0MnxHd3k2YnUxeXRkTTlYa2dIenJKUFhjQ0IwX0tSb2swZE9nUDhSU3I3ZHQyTnNjdGxqM01rQ09SNi1WXzU3Nm9VdHVpMHRsa0RIeHpoVUE1WjhwU29KSHc0d0VVbFprZTNSRnlIa1Z4aGRpeDVsT3VCb05BZ1VyaHVzUFNoazNYQVlaTTdCZHZKakRNWFBrRnY5bjhRVkQ0MUt2b2MybV9tZTk5a2pfdkI3anNLRUNvSURQWWJKOVA5YUhUNFNSVDh4b1hyWUVydXVjZHpZcHhqVndvQjVweko4TlFCX3JaVWtKNU4tYmVCMDBBUzJ3cENFY1d6azFZQjJtWW4wSVZWV0dGa3NSWi12akM1NDVpTklWSU1VeHppMFZGNHc4MEpza05QZm1oN05lWVFFUjJMMXZHOGhBNEVzRUVQR3hZd3RLRG1USFlnTC1FWG5rQURXMkJsWFhtT3lVS3QzLVhSMEp4SEhrT0hUQXZIRy1ZTVg1ZlBKRlZ6clpfM25ZVmZidVJ4V2NLS3U0b21fTzhSTXdyNWZVX0hyOEwxVGtHdlBQWEpRZ1QtYng2Qk5FcUpEWk9YdzlSMFJjdFk5THZfUTJ0VDdEa0lkVU1rb1pWWGN6ZEhtQ1RJeTBhWlpDWmlaWjBoeWNzTTUtd2MyaHhjdmVybFl4LW0wSFozNGM0RTNoNy1US0ZKVlRuc1NKT0tMamVOOU9zb2ZZbXJuUy1veExuN1FqclZycGc0NEh4ZVJxczJvZmxoR1FSVlNVWjNIQUxpMXY2YTdOOUNCN0FLTFkyVmdURmgzdU9QX1JqRmplakZyeWlsWllDRGEyX3NTRzhyTHlQZnZMUWJmbWZWLWF4V1UwX3ZUYi1NUnVBRW03N1ZXRXRYLXB4akFQeWM5VDFzbmtiWlBxMU9SX2VRQWc9PXw1_-70RST-lk0CReGjLEdF6K3-a7Pq31LmoTvZW3nrPg=="
+ cookieValue2 := "MTc2OTczMzU0Mnw3OGVhSXhvcGR1N09yT21wQkRMa2puckVzME5FVmJnZnY1aUJZTkVzZWl5WEduY0NueTFuamtvaDh5YTRmWml5c1JieGJ6WTVfM1dBZjQ0eHE5akFMaU4zRVNYdlBnanFUcVh1dnRoQzgtYVg0THU0c2NrcGtiMlFhR001YThqSW4zdXJBenUxc0tLTVlGSnhocWxnbVN3RnJkekF1VGljb09yRUFZZlo4MkpYNElqRHppbEIweE90aU50Qk1jMDhjQk9zSkpLenBNNW9femRuQkZKYzMxeWNtTmU4VzVSamdOT0NIaGJGX1F0UjdOaXRfVzZCM1RSV25OdTI2amY0eDBoeTFydDJOZHl3QVpGSUdjZ1pDNE9IOE1LcVA4MGV3X3VjdWk5NWlYaExnbW9mWEI5U2kwenFIWnZBNFZESnV4UjJxcHpMZ0gtNVZHUm9PY1RDelJCdzlpMC1CTjg0eXRjNlJhcnpKcnhYWTNJejBfQk9Zd25pOC14ZUZOR3BsLWZrT2xzRUJESldlSUp0LWYtdTlDR0hqREZQVHVubENCV3FLU09kTWJKc2h6WHo2Q3BKWlRhVUd1VFZEc2t5QUZ5Z2QwaTFxY09RNklTNWR6VXk4MV85YWRsLXctRnA4dW56bU1lTHhZeFlJMDhvU25UaFptMmVEUEVNMXhPVzRGNERURXRoc2o5LXUxSDY2cmxZT181UUdEWEM0WXNEcHVmb3R3ZWJWZVZKM2xPS0FpN1dQclRJUUE4bFdTQndxNDJnSnRhWUlaRy1sZ2ZqWlFTZXRhUEs2SkE3M0dYR2FIYjlzMjZHRm4zMGd6TlpOYVZ4UzlqeE5rblVONUhtM1pNZ0x1R3lfUU4wUTBoYnNQRi1DODhEWW5ieGZyUGM4ZXpCZEROQ2RZR0R1eEtCZEE9PXyZ83CfdFK3CRERbq2smHnCl-Y_Vj3DcnEObviBKousyA=="
+
+ decoded, err := base64.StdEncoding.DecodeString(cookieValue1)
+ if err == nil {
+ t.Logf("Cookie 1 raw decoded (first 50 bytes): %s", string(decoded[:50]))
+ }
+ s := securecookie.New(hashKey, blockKey)
+ s.MaxAge(0) // Disable timestamp validation so hardcoded cookies don't expire
+ var firstHalf string
+ err = s.Decode("flyte_at_1", cookieValue1, &firstHalf)
+ if err != nil {
+ t.Logf("Error decoding cookie 1 with MaxAge disabled: %v", err)
+ s2 := securecookie.New(hashKey, blockKey)
+ err2 := s2.Decode("flyte_at_1", cookieValue1, &firstHalf)
+ t.Logf("Error with validation enabled: %v", err2)
+ }
+
+ require.NoError(t, err)
+ t.Logf("First half of access token: %s", firstHalf)
+
+ var secondHalf string
+ err = s.Decode("flyte_at_2", cookieValue2, &secondHalf)
+ require.NoError(t, err)
+ t.Logf("Second half of access token: %s", secondHalf)
+
+ fullAccessToken := firstHalf + secondHalf
+ t.Logf("Full access token: %s", fullAccessToken)
+ assert.NotEmpty(t, fullAccessToken)
+}
diff --git a/flyteadmin/auth/cookie_test.go b/flyteadmin/auth/cookie_test.go
index b236990a2ea..de4fd3d3797 100644
--- a/flyteadmin/auth/cookie_test.go
+++ b/flyteadmin/auth/cookie_test.go
@@ -10,6 +10,7 @@ import (
"github.com/gorilla/securecookie"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
"github.com/flyteorg/flyte/flyteadmin/auth/config"
"github.com/flyteorg/flyte/flyteadmin/auth/interfaces/mocks"
@@ -76,8 +77,21 @@ func TestSecureCookieLifecycle(t *testing.T) {
}
func TestNewCsrfToken(t *testing.T) {
- csrf := NewCsrfToken(5)
- assert.Equal(t, "5qz3p9w8qo", csrf)
+ // Generate many tokens and assert uniqueness and decodability
+ const n = 1000
+ seen := make(map[string]struct{}, n)
+
+ for i := 0; i < n; i++ {
+ tok, err := NewCsrfToken()
+ require.NoError(t, err)
+ require.Len(t, tok, 44)
+
+ if _, ok := seen[tok]; ok {
+ t.Fatalf("duplicate token generated at i=%d", i)
+ }
+ seen[tok] = struct{}{}
+ }
+
}
func TestNewCsrfCookie(t *testing.T) {
@@ -108,7 +122,8 @@ func TestNewCsrfCookie(t *testing.T) {
})
// Generate CSRF cookie
- cookie := NewCsrfCookie()
+ cookie, err := NewCsrfCookie()
+ require.NoError(t, err)
// Validate CSRF cookie properties
assert.Equal(t, "flyte_csrf_state", cookie.Name)
@@ -139,7 +154,8 @@ func TestVerifyCsrfCookie(t *testing.T) {
v := url.Values{
"state": []string{"b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"},
}
- cookie := NewCsrfCookie()
+ cookie, err := NewCsrfCookie()
+ require.NoError(t, err)
cookie.Value = "helloworld"
request.Form = v
request.AddCookie(&cookie)
@@ -154,7 +170,8 @@ func TestVerifyCsrfCookie(t *testing.T) {
v := url.Values{
"state": []string{"b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"},
}
- cookie := NewCsrfCookie()
+ cookie, err := NewCsrfCookie()
+ require.NoError(t, err)
cookie.Value = "hello world"
request.Form = v
request.AddCookie(&cookie)
diff --git a/flyteadmin/auth/create_secrets.go b/flyteadmin/auth/create_secrets.go
index 26c0af83005..3f1379d21ef 100644
--- a/flyteadmin/auth/create_secrets.go
+++ b/flyteadmin/auth/create_secrets.go
@@ -3,7 +3,7 @@ package auth
import (
"context"
"fmt"
- "io/ioutil"
+ "io/fs"
"os"
"path/filepath"
"strings"
@@ -160,12 +160,14 @@ func persistSecrets(ctx context.Context, _ *pflag.FlagSet) error {
func buildK8sSecretData(_ context.Context, localPath string) (map[string][]byte, error) {
secretsData := make(map[string][]byte, 4)
- err := filepath.Walk(localPath, func(path string, info os.FileInfo, err error) error {
+ fsys := os.DirFS(localPath)
+
+ err := fs.WalkDir(fsys, ".", func(path string, info fs.DirEntry, err error) error {
if err != nil || info.IsDir() {
return nil
}
- data, err := ioutil.ReadFile(path)
+ data, err := fs.ReadFile(fsys, path)
if err != nil {
return err
}
diff --git a/flyteadmin/auth/handler_utils.go b/flyteadmin/auth/handler_utils.go
index dd7a97d1afd..a6b4031ca85 100644
--- a/flyteadmin/auth/handler_utils.go
+++ b/flyteadmin/auth/handler_utils.go
@@ -168,7 +168,6 @@ func GetRedirectURLAllowed(ctx context.Context, urlRedirectParam string, cfg *co
}
logger.Debugf(ctx, "validating whether redirect url: %s is authorized", redirectURL)
for _, authorizedURI := range cfg.AuthorizedURIs {
- authorizedURI := authorizedURI
if isAuthorizedRedirectURL(redirectURL, &authorizedURI.URL) {
logger.Debugf(ctx, "authorizing redirect url: %s against authorized uri: %s", redirectURL.String(), authorizedURI.String())
return true
diff --git a/flyteadmin/auth/handlers.go b/flyteadmin/auth/handlers.go
index 002744fbd1f..55e12d1fa0b 100644
--- a/flyteadmin/auth/handlers.go
+++ b/flyteadmin/auth/handlers.go
@@ -139,7 +139,12 @@ func RefreshTokensIfExists(ctx context.Context, authCtx interfaces.Authenticatio
// provider, it saves a cookie that contains the redirect url for after the authentication flow is done.
func GetLoginHandler(ctx context.Context, authCtx interfaces.AuthenticationContext) http.HandlerFunc {
return func(writer http.ResponseWriter, request *http.Request) {
- csrfCookie := NewCsrfCookie()
+ csrfCookie, err := NewCsrfCookie()
+ if err != nil {
+ logger.Errorf(ctx, "Failed to create CSRF cookie. Error: %s", err)
+ writer.WriteHeader(http.StatusInternalServerError)
+ return
+ }
csrfToken := csrfCookie.Value
http.SetCookie(writer, &csrfCookie)
@@ -184,6 +189,10 @@ func GetLoginHandler(ctx context.Context, authCtx interfaces.AuthenticationConte
// the user authentication flow.
func GetCallbackHandler(ctx context.Context, authCtx interfaces.AuthenticationContext, pluginRegistry *plugins.Registry) http.HandlerFunc {
return func(writer http.ResponseWriter, request *http.Request) {
+ // 1. Limit the request body to 1MB (1 << 20 bytes)
+ // This MUST be done before ParseForm() or FormValue()
+ request.Body = http.MaxBytesReader(writer, request.Body, 1048576)
+
logger.Debugf(ctx, "Running callback handler... for RequestURI %v", request.RequestURI)
authorizationCode := request.FormValue(AuthorizationResponseCodeType)
diff --git a/flyteadmin/auth/handlers_test.go b/flyteadmin/auth/handlers_test.go
index 0c6c9893119..575d2605b83 100644
--- a/flyteadmin/auth/handlers_test.go
+++ b/flyteadmin/auth/handlers_test.go
@@ -66,8 +66,9 @@ func addStateString(request *http.Request) {
request.Form = v
}
-func addCsrfCookie(request *http.Request) {
- cookie := NewCsrfCookie()
+func addCsrfCookie(t *testing.T, request *http.Request) {
+ cookie, err := NewCsrfCookie()
+ require.NoError(t, err)
cookie.Value = "hello world"
request.AddCookie(&cookie)
}
@@ -87,7 +88,7 @@ func TestGetCallbackHandlerWithErrorOnToken(t *testing.T) {
r := plugins.NewRegistry()
callbackHandlerFunc := GetCallbackHandler(ctx, mockAuthCtx, r)
request := httptest.NewRequest("GET", localServer.URL+"/callback", nil)
- addCsrfCookie(request)
+ addCsrfCookie(t, request)
addStateString(request)
writer := httptest.NewRecorder()
callbackHandlerFunc(writer, request)
@@ -161,7 +162,7 @@ func TestGetCallbackHandler(t *testing.T) {
r := plugins.NewRegistry()
callbackHandlerFunc := GetCallbackHandler(ctx, mockAuthCtx, r)
request := httptest.NewRequest("GET", localServer.URL+"/callback", nil)
- addCsrfCookie(request)
+ addCsrfCookie(t, request)
addStateString(request)
writer := httptest.NewRecorder()
openIDConfigJSON = fmt.Sprintf(`{
@@ -188,7 +189,7 @@ func TestGetCallbackHandler(t *testing.T) {
r.RegisterDefault(plugins.PluginIDPreRedirectHook, redirectFunc)
callbackHandlerFunc := GetCallbackHandler(ctx, mockAuthCtx, r)
request := httptest.NewRequest("GET", localServer.URL+"/callback", nil)
- addCsrfCookie(request)
+ addCsrfCookie(t, request)
addStateString(request)
writer := httptest.NewRecorder()
openIDConfigJSON = fmt.Sprintf(`{
@@ -219,7 +220,7 @@ func TestGetCallbackHandler(t *testing.T) {
r.RegisterDefault(plugins.PluginIDPreRedirectHook, redirectFunc)
callbackHandlerFunc := GetCallbackHandler(ctx, mockAuthCtx, r)
request := httptest.NewRequest("GET", localServer.URL+"/callback", nil)
- addCsrfCookie(request)
+ addCsrfCookie(t, request)
addStateString(request)
writer := httptest.NewRecorder()
openIDConfigJSON = fmt.Sprintf(`{
diff --git a/flyteadmin/auth/interfaces/mocks/authentication_context.go b/flyteadmin/auth/interfaces/mocks/authentication_context.go
index 2ba5a3e1792..992a40fd5df 100644
--- a/flyteadmin/auth/interfaces/mocks/authentication_context.go
+++ b/flyteadmin/auth/interfaces/mocks/authentication_context.go
@@ -1,23 +1,17 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
http "net/http"
+ url "net/url"
+ oidc "github.com/coreos/go-oidc/v3/oidc"
config "github.com/flyteorg/flyte/flyteadmin/auth/config"
-
interfaces "github.com/flyteorg/flyte/flyteadmin/auth/interfaces"
-
+ service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
mock "github.com/stretchr/testify/mock"
-
oauth2 "golang.org/x/oauth2"
-
- oidc "github.com/coreos/go-oidc/v3/oidc"
-
- service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
-
- url "net/url"
)
// AuthenticationContext is an autogenerated mock type for the AuthenticationContext type
@@ -33,7 +27,7 @@ func (_m *AuthenticationContext) EXPECT() *AuthenticationContext_Expecter {
return &AuthenticationContext_Expecter{mock: &_m.Mock}
}
-// AuthMetadataService provides a mock function with given fields:
+// AuthMetadataService provides a mock function with no fields
func (_m *AuthenticationContext) AuthMetadataService() service.AuthMetadataServiceServer {
ret := _m.Called()
@@ -80,7 +74,7 @@ func (_c *AuthenticationContext_AuthMetadataService_Call) RunAndReturn(run func(
return _c
}
-// CookieManager provides a mock function with given fields:
+// CookieManager provides a mock function with no fields
func (_m *AuthenticationContext) CookieManager() interfaces.CookieHandler {
ret := _m.Called()
@@ -127,7 +121,7 @@ func (_c *AuthenticationContext_CookieManager_Call) RunAndReturn(run func() inte
return _c
}
-// GetHTTPClient provides a mock function with given fields:
+// GetHTTPClient provides a mock function with no fields
func (_m *AuthenticationContext) GetHTTPClient() *http.Client {
ret := _m.Called()
@@ -174,7 +168,7 @@ func (_c *AuthenticationContext_GetHTTPClient_Call) RunAndReturn(run func() *htt
return _c
}
-// GetOAuth2MetadataURL provides a mock function with given fields:
+// GetOAuth2MetadataURL provides a mock function with no fields
func (_m *AuthenticationContext) GetOAuth2MetadataURL() *url.URL {
ret := _m.Called()
@@ -221,7 +215,7 @@ func (_c *AuthenticationContext_GetOAuth2MetadataURL_Call) RunAndReturn(run func
return _c
}
-// GetOIdCMetadataURL provides a mock function with given fields:
+// GetOIdCMetadataURL provides a mock function with no fields
func (_m *AuthenticationContext) GetOIdCMetadataURL() *url.URL {
ret := _m.Called()
@@ -268,7 +262,7 @@ func (_c *AuthenticationContext_GetOIdCMetadataURL_Call) RunAndReturn(run func()
return _c
}
-// IdentityService provides a mock function with given fields:
+// IdentityService provides a mock function with no fields
func (_m *AuthenticationContext) IdentityService() service.IdentityServiceServer {
ret := _m.Called()
@@ -363,7 +357,7 @@ func (_c *AuthenticationContext_OAuth2ClientConfig_Call) RunAndReturn(run func(*
return _c
}
-// OAuth2Provider provides a mock function with given fields:
+// OAuth2Provider provides a mock function with no fields
func (_m *AuthenticationContext) OAuth2Provider() interfaces.OAuth2Provider {
ret := _m.Called()
@@ -410,7 +404,7 @@ func (_c *AuthenticationContext_OAuth2Provider_Call) RunAndReturn(run func() int
return _c
}
-// OAuth2ResourceServer provides a mock function with given fields:
+// OAuth2ResourceServer provides a mock function with no fields
func (_m *AuthenticationContext) OAuth2ResourceServer() interfaces.OAuth2ResourceServer {
ret := _m.Called()
@@ -457,7 +451,7 @@ func (_c *AuthenticationContext_OAuth2ResourceServer_Call) RunAndReturn(run func
return _c
}
-// OidcProvider provides a mock function with given fields:
+// OidcProvider provides a mock function with no fields
func (_m *AuthenticationContext) OidcProvider() *oidc.Provider {
ret := _m.Called()
@@ -504,7 +498,7 @@ func (_c *AuthenticationContext_OidcProvider_Call) RunAndReturn(run func() *oidc
return _c
}
-// Options provides a mock function with given fields:
+// Options provides a mock function with no fields
func (_m *AuthenticationContext) Options() *config.Config {
ret := _m.Called()
diff --git a/flyteadmin/auth/interfaces/mocks/cookie_handler.go b/flyteadmin/auth/interfaces/mocks/cookie_handler.go
index 9ac8afa7fe3..c4add495638 100644
--- a/flyteadmin/auth/interfaces/mocks/cookie_handler.go
+++ b/flyteadmin/auth/interfaces/mocks/cookie_handler.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,11 +6,9 @@ import (
context "context"
http "net/http"
+ service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
mock "github.com/stretchr/testify/mock"
-
oauth2 "golang.org/x/oauth2"
-
- service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
)
// CookieHandler is an autogenerated mock type for the CookieHandler type
@@ -56,7 +54,7 @@ func (_c *CookieHandler_DeleteCookies_Call) Return() *CookieHandler_DeleteCookie
}
func (_c *CookieHandler_DeleteCookies_Call) RunAndReturn(run func(context.Context, http.ResponseWriter)) *CookieHandler_DeleteCookies_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteadmin/auth/interfaces/mocks/handler_registerer.go b/flyteadmin/auth/interfaces/mocks/handler_registerer.go
index 4c057b5a274..436bdef39f2 100644
--- a/flyteadmin/auth/interfaces/mocks/handler_registerer.go
+++ b/flyteadmin/auth/interfaces/mocks/handler_registerer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -51,7 +51,7 @@ func (_c *HandlerRegisterer_HandleFunc_Call) Return() *HandlerRegisterer_HandleF
}
func (_c *HandlerRegisterer_HandleFunc_Call) RunAndReturn(run func(string, func(http.ResponseWriter, *http.Request))) *HandlerRegisterer_HandleFunc_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteadmin/auth/interfaces/mocks/identity_context.go b/flyteadmin/auth/interfaces/mocks/identity_context.go
index a8a227fc012..987f92ece4a 100644
--- a/flyteadmin/auth/interfaces/mocks/identity_context.go
+++ b/flyteadmin/auth/interfaces/mocks/identity_context.go
@@ -1,17 +1,15 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- mock "github.com/stretchr/testify/mock"
+ time "time"
service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
-
+ mock "github.com/stretchr/testify/mock"
sets "k8s.io/apimachinery/pkg/util/sets"
-
- time "time"
)
// IdentityContext is an autogenerated mock type for the IdentityContext type
@@ -27,7 +25,7 @@ func (_m *IdentityContext) EXPECT() *IdentityContext_Expecter {
return &IdentityContext_Expecter{mock: &_m.Mock}
}
-// AppID provides a mock function with given fields:
+// AppID provides a mock function with no fields
func (_m *IdentityContext) AppID() string {
ret := _m.Called()
@@ -72,7 +70,7 @@ func (_c *IdentityContext_AppID_Call) RunAndReturn(run func() string) *IdentityC
return _c
}
-// Audience provides a mock function with given fields:
+// Audience provides a mock function with no fields
func (_m *IdentityContext) Audience() string {
ret := _m.Called()
@@ -117,7 +115,7 @@ func (_c *IdentityContext_Audience_Call) RunAndReturn(run func() string) *Identi
return _c
}
-// AuthenticatedAt provides a mock function with given fields:
+// AuthenticatedAt provides a mock function with no fields
func (_m *IdentityContext) AuthenticatedAt() time.Time {
ret := _m.Called()
@@ -162,7 +160,7 @@ func (_c *IdentityContext_AuthenticatedAt_Call) RunAndReturn(run func() time.Tim
return _c
}
-// Claims provides a mock function with given fields:
+// Claims provides a mock function with no fields
func (_m *IdentityContext) Claims() map[string]interface{} {
ret := _m.Called()
@@ -209,7 +207,7 @@ func (_c *IdentityContext_Claims_Call) RunAndReturn(run func() map[string]interf
return _c
}
-// IsEmpty provides a mock function with given fields:
+// IsEmpty provides a mock function with no fields
func (_m *IdentityContext) IsEmpty() bool {
ret := _m.Called()
@@ -254,7 +252,7 @@ func (_c *IdentityContext_IsEmpty_Call) RunAndReturn(run func() bool) *IdentityC
return _c
}
-// Scopes provides a mock function with given fields:
+// Scopes provides a mock function with no fields
func (_m *IdentityContext) Scopes() sets.String {
ret := _m.Called()
@@ -301,7 +299,7 @@ func (_c *IdentityContext_Scopes_Call) RunAndReturn(run func() sets.String) *Ide
return _c
}
-// UserID provides a mock function with given fields:
+// UserID provides a mock function with no fields
func (_m *IdentityContext) UserID() string {
ret := _m.Called()
@@ -346,7 +344,7 @@ func (_c *IdentityContext_UserID_Call) RunAndReturn(run func() string) *Identity
return _c
}
-// UserInfo provides a mock function with given fields:
+// UserInfo provides a mock function with no fields
func (_m *IdentityContext) UserInfo() *service.UserInfoResponse {
ret := _m.Called()
diff --git a/flyteadmin/auth/interfaces/mocks/o_auth2_provider.go b/flyteadmin/auth/interfaces/mocks/o_auth2_provider.go
index 8f8f34a5ba0..b028007e012 100644
--- a/flyteadmin/auth/interfaces/mocks/o_auth2_provider.go
+++ b/flyteadmin/auth/interfaces/mocks/o_auth2_provider.go
@@ -1,23 +1,17 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
-
- fosite "github.com/ory/fosite"
-
http "net/http"
interfaces "github.com/flyteorg/flyte/flyteadmin/auth/interfaces"
-
+ service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
jwk "github.com/lestrrat-go/jwx/jwk"
-
- mock "github.com/stretchr/testify/mock"
-
+ fosite "github.com/ory/fosite"
oauth2 "github.com/ory/fosite/handler/oauth2"
-
- service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
+ mock "github.com/stretchr/testify/mock"
)
// OAuth2Provider is an autogenerated mock type for the OAuth2Provider type
@@ -116,7 +110,7 @@ func (_c *OAuth2Provider_IntrospectToken_Call) RunAndReturn(run func(context.Con
return _c
}
-// KeySet provides a mock function with given fields:
+// KeySet provides a mock function with no fields
func (_m *OAuth2Provider) KeySet() jwk.Set {
ret := _m.Called()
@@ -651,7 +645,7 @@ func (_c *OAuth2Provider_WriteAccessError_Call) Return() *OAuth2Provider_WriteAc
}
func (_c *OAuth2Provider_WriteAccessError_Call) RunAndReturn(run func(http.ResponseWriter, fosite.AccessRequester, error)) *OAuth2Provider_WriteAccessError_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -686,7 +680,7 @@ func (_c *OAuth2Provider_WriteAccessResponse_Call) Return() *OAuth2Provider_Writ
}
func (_c *OAuth2Provider_WriteAccessResponse_Call) RunAndReturn(run func(http.ResponseWriter, fosite.AccessRequester, fosite.AccessResponder)) *OAuth2Provider_WriteAccessResponse_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -721,7 +715,7 @@ func (_c *OAuth2Provider_WriteAuthorizeError_Call) Return() *OAuth2Provider_Writ
}
func (_c *OAuth2Provider_WriteAuthorizeError_Call) RunAndReturn(run func(http.ResponseWriter, fosite.AuthorizeRequester, error)) *OAuth2Provider_WriteAuthorizeError_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -756,7 +750,7 @@ func (_c *OAuth2Provider_WriteAuthorizeResponse_Call) Return() *OAuth2Provider_W
}
func (_c *OAuth2Provider_WriteAuthorizeResponse_Call) RunAndReturn(run func(http.ResponseWriter, fosite.AuthorizeRequester, fosite.AuthorizeResponder)) *OAuth2Provider_WriteAuthorizeResponse_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -790,7 +784,7 @@ func (_c *OAuth2Provider_WriteIntrospectionError_Call) Return() *OAuth2Provider_
}
func (_c *OAuth2Provider_WriteIntrospectionError_Call) RunAndReturn(run func(http.ResponseWriter, error)) *OAuth2Provider_WriteIntrospectionError_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -824,7 +818,7 @@ func (_c *OAuth2Provider_WriteIntrospectionResponse_Call) Return() *OAuth2Provid
}
func (_c *OAuth2Provider_WriteIntrospectionResponse_Call) RunAndReturn(run func(http.ResponseWriter, fosite.IntrospectionResponder)) *OAuth2Provider_WriteIntrospectionResponse_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -858,7 +852,7 @@ func (_c *OAuth2Provider_WriteRevocationResponse_Call) Return() *OAuth2Provider_
}
func (_c *OAuth2Provider_WriteRevocationResponse_Call) RunAndReturn(run func(http.ResponseWriter, error)) *OAuth2Provider_WriteRevocationResponse_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteadmin/auth/interfaces/mocks/o_auth2_resource_server.go b/flyteadmin/auth/interfaces/mocks/o_auth2_resource_server.go
index 908926d70d8..6be59bedc8d 100644
--- a/flyteadmin/auth/interfaces/mocks/o_auth2_resource_server.go
+++ b/flyteadmin/auth/interfaces/mocks/o_auth2_resource_server.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/cmd/entrypoints/serve.go b/flyteadmin/cmd/entrypoints/serve.go
index a5a9b98bb3e..d7928ad8b5e 100644
--- a/flyteadmin/cmd/entrypoints/serve.go
+++ b/flyteadmin/cmd/entrypoints/serve.go
@@ -2,7 +2,7 @@ package entrypoints
import (
"context"
- _ "net/http/pprof" // Required to serve application.
+ _ "net/http/pprof" //nolint:gosec
"github.com/spf13/cobra"
diff --git a/flyteadmin/cmd/entrypoints/serve_test.go b/flyteadmin/cmd/entrypoints/serve_test.go
index 897a56f3895..4ec8badeeac 100644
--- a/flyteadmin/cmd/entrypoints/serve_test.go
+++ b/flyteadmin/cmd/entrypoints/serve_test.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
package entrypoints
diff --git a/flyteadmin/flyteadmin_config.yaml b/flyteadmin/flyteadmin_config.yaml
index 693e290b2a2..a3aca301133 100644
--- a/flyteadmin/flyteadmin_config.yaml
+++ b/flyteadmin/flyteadmin_config.yaml
@@ -61,6 +61,11 @@ flyteadmin:
- "metadata"
- "admin"
useOffloadedWorkflowClosure: false
+ injectIdentityAnnotations: false
+ identityAnnotationPrefix: "flyte.org"
+ identityAnnotationKeys:
+ - email
+ - sub
database:
postgres:
port: 30001
diff --git a/flyteadmin/go.mod b/flyteadmin/go.mod
index 42f36d90871..5fbe6c57e8a 100644
--- a/flyteadmin/go.mod
+++ b/flyteadmin/go.mod
@@ -1,13 +1,13 @@
module github.com/flyteorg/flyte/flyteadmin
-go 1.22
+go 1.26.0
require (
- cloud.google.com/go/iam v1.1.5
- cloud.google.com/go/storage v1.36.0
+ cloud.google.com/go/iam v1.2.1
+ cloud.google.com/go/storage v1.45.0
github.com/NYTimes/gizmo v1.3.6
github.com/Selvatico/go-mocket v1.0.7
- github.com/aws/aws-sdk-go v1.47.11
+ github.com/aws/aws-sdk-go v1.55.5
github.com/benbjohnson/clock v1.3.0
github.com/cloudevents/sdk-go/binding/format/protobuf/v2 v2.8.0
github.com/cloudevents/sdk-go/v2 v2.15.2
@@ -17,59 +17,57 @@ require (
github.com/flyteorg/flyte/flyteplugins v0.0.0-00010101000000-000000000000
github.com/flyteorg/flyte/flytepropeller v0.0.0-00010101000000-000000000000
github.com/flyteorg/flyte/flytestdlib v0.0.0-00010101000000-000000000000
- github.com/flyteorg/stow v0.3.11
+ github.com/flyteorg/stow v0.3.12
github.com/ghodss/yaml v1.0.0
github.com/go-gormigrate/gormigrate/v2 v2.1.1
- github.com/golang-jwt/jwt v3.2.2+incompatible
+ github.com/go-viper/mapstructure/v2 v2.4.0
github.com/golang-jwt/jwt/v4 v4.5.2
- github.com/golang/glog v1.2.4
+ github.com/golang/glog v1.2.5
github.com/golang/protobuf v1.5.4
github.com/google/uuid v1.6.0
- github.com/googleapis/gax-go/v2 v2.12.0
+ github.com/googleapis/gax-go/v2 v2.13.0
github.com/gorilla/handlers v1.5.1
github.com/gorilla/securecookie v1.1.1
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0
github.com/gtank/cryptopasta v0.0.0-20170601214702-1f550f6f2f69
- github.com/jackc/pgconn v1.14.3
- github.com/jackc/pgx/v5 v5.5.5
+ github.com/jackc/pgx/v5 v5.9.2
github.com/lestrrat-go/jwx v1.2.29
- github.com/magiconair/properties v1.8.6
- github.com/mitchellh/mapstructure v1.5.0
+ github.com/magiconair/properties v1.8.7
github.com/nats-io/nats.go v1.31.0
github.com/ory/fosite v0.42.2
github.com/ory/x v0.0.214
github.com/pkg/errors v0.9.1
- github.com/prometheus/client_golang v1.19.1
- github.com/prometheus/client_model v0.6.1
+ github.com/prometheus/client_golang v1.23.0
+ github.com/prometheus/client_model v0.6.2
github.com/robfig/cron/v3 v3.0.0
github.com/samber/lo v1.47.0
github.com/sendgrid/rest v2.6.9+incompatible
github.com/sendgrid/sendgrid-go v3.10.0+incompatible
- github.com/spf13/cobra v1.7.0
- github.com/spf13/pflag v1.0.5
- github.com/stretchr/testify v1.9.0
+ github.com/spf13/cobra v1.9.1
+ github.com/spf13/pflag v1.0.10
+ github.com/stretchr/testify v1.11.1
github.com/wI2L/jsondiff v0.6.0
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0
- go.opentelemetry.io/otel v1.24.0
- golang.org/x/net v0.33.0
- golang.org/x/oauth2 v0.18.0
- golang.org/x/sync v0.10.0
- golang.org/x/time v0.5.0
- google.golang.org/api v0.155.0
- google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80
- google.golang.org/grpc v1.62.1
- google.golang.org/protobuf v1.34.1
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0
+ go.opentelemetry.io/otel v1.43.0
+ golang.org/x/net v0.52.0
+ golang.org/x/oauth2 v0.35.0
+ golang.org/x/sync v0.20.0
+ golang.org/x/time v0.12.0
+ google.golang.org/api v0.197.0
+ google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1
+ google.golang.org/grpc v1.80.0
+ google.golang.org/protobuf v1.36.11
gorm.io/driver/mysql v1.4.4
gorm.io/driver/postgres v1.5.3
gorm.io/driver/sqlite v1.5.4
gorm.io/gorm v1.25.4
gorm.io/plugin/opentelemetry v0.1.4
- k8s.io/api v0.29.3
- k8s.io/apimachinery v0.29.3
- k8s.io/client-go v0.29.3
- sigs.k8s.io/controller-runtime v0.17.2
+ k8s.io/api v0.34.1
+ k8s.io/apimachinery v0.34.1
+ k8s.io/client-go v0.34.1
+ sigs.k8s.io/controller-runtime v0.22.4
)
require (
@@ -79,37 +77,49 @@ require (
)
require (
- cloud.google.com/go v0.112.0 // indirect
- cloud.google.com/go/compute v1.23.3 // indirect
- cloud.google.com/go/compute/metadata v0.2.3 // indirect
- cloud.google.com/go/pubsub v1.34.0 // indirect
+ cel.dev/expr v0.25.1 // indirect
+ cloud.google.com/go v0.115.1 // indirect
+ cloud.google.com/go/auth v0.9.3 // indirect
+ cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
+ cloud.google.com/go/compute/metadata v0.9.0 // indirect
+ cloud.google.com/go/monitoring v1.21.0 // indirect
+ cloud.google.com/go/pubsub v1.42.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect
github.com/Masterminds/semver v1.5.0 // indirect
github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 // indirect
github.com/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
- github.com/cenkalti/backoff/v4 v4.2.1 // indirect
+ github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
+ github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect
github.com/coocood/freecache v1.1.1 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
+ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
github.com/dgraph-io/ristretto v0.0.3 // indirect
github.com/eapache/go-resiliency v1.2.0 // indirect
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect
github.com/eapache/queue v1.1.0 // indirect
- github.com/emicklei/go-restful/v3 v3.11.0 // indirect
- github.com/evanphx/json-patch/v5 v5.8.0 // indirect
- github.com/fatih/color v1.13.0 // indirect
+ github.com/emicklei/go-restful/v3 v3.13.0 // indirect
+ github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect
+ github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect
+ github.com/evanphx/json-patch/v5 v5.9.11 // indirect
+ github.com/fatih/color v1.18.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/fsnotify/fsnotify v1.7.0 // indirect
- github.com/go-jose/go-jose/v3 v3.0.4 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
+ github.com/fsnotify/fsnotify v1.9.0 // indirect
+ github.com/fxamacker/cbor/v2 v2.9.0 // indirect
+ github.com/go-jose/go-jose/v3 v3.0.5 // indirect
+ github.com/go-jose/go-jose/v4 v4.1.4 // indirect
+ github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
- github.com/go-openapi/jsonpointer v0.19.6 // indirect
- github.com/go-openapi/jsonreference v0.20.2 // indirect
- github.com/go-openapi/swag v0.22.3 // indirect
+ github.com/go-openapi/jsonpointer v0.21.2 // indirect
+ github.com/go-openapi/jsonreference v0.21.0 // indirect
+ github.com/go-openapi/swag v0.23.1 // indirect
github.com/go-redis/redis v6.15.7+incompatible // indirect
github.com/go-sql-driver/mysql v1.6.0 // indirect
github.com/go-test/deep v1.0.7 // indirect
@@ -118,22 +128,19 @@ require (
github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/snappy v0.0.4 // indirect
- github.com/google/gnostic-models v0.6.8 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
- github.com/google/s2a-go v0.1.7 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
- github.com/gorilla/websocket v1.5.0 // indirect
+ github.com/google/btree v1.1.3 // indirect
+ github.com/google/gnostic-models v0.7.0 // indirect
+ github.com/google/go-cmp v0.7.0 // indirect
+ github.com/google/s2a-go v0.1.8 // indirect
+ github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect
+ github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
github.com/hashicorp/go-uuid v1.0.2 // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
- github.com/jackc/chunkreader/v2 v2.0.1 // indirect
- github.com/jackc/pgio v1.0.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
- github.com/jackc/pgproto3/v2 v2.3.3 // indirect
- github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
- github.com/jackc/puddle/v2 v2.2.1 // indirect
+ github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
+ github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/jcmturner/gofork v1.0.0 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
@@ -141,20 +148,21 @@ require (
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kelseyhightower/envconfig v1.4.0 // indirect
- github.com/klauspost/compress v1.17.8 // indirect
+ github.com/klauspost/compress v1.18.0 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/lestrrat-go/backoff/v2 v2.0.8 // indirect
github.com/lestrrat-go/blackmagic v1.0.2 // indirect
github.com/lestrrat-go/httpcc v1.0.1 // indirect
github.com/lestrrat-go/iter v1.0.2 // indirect
github.com/lestrrat-go/option v1.0.1 // indirect
- github.com/mailru/easyjson v0.7.7 // indirect
- github.com/mattn/go-colorable v0.1.12 // indirect
- github.com/mattn/go-isatty v0.0.16 // indirect
+ github.com/mailru/easyjson v0.9.0 // indirect
+ github.com/mattn/go-colorable v0.1.13 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect
github.com/mattn/goveralls v0.0.6 // indirect
+ github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/nats-io/nkeys v0.4.6 // indirect
@@ -166,50 +174,61 @@ require (
github.com/ory/viper v1.7.5 // indirect
github.com/pborman/uuid v1.2.0 // indirect
github.com/pelletier/go-toml v1.9.4 // indirect
- github.com/pelletier/go-toml/v2 v2.0.0-beta.8 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/pierrec/lz4 v2.5.2+incompatible // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/prometheus/common v0.53.0 // indirect
- github.com/prometheus/procfs v0.15.1 // indirect
+ 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/prometheus/common v0.65.0 // indirect
+ github.com/prometheus/procfs v0.17.0 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
+ github.com/sagikazarmark/locafero v0.11.0 // indirect
github.com/santhosh-tekuri/jsonschema v1.2.4 // indirect
github.com/shamaton/msgpack/v2 v2.2.2 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
- github.com/spf13/afero v1.8.2 // indirect
- github.com/spf13/cast v1.4.1 // indirect
+ github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
+ github.com/spf13/afero v1.15.0 // indirect
+ github.com/spf13/cast v1.10.0 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect
- github.com/spf13/viper v1.11.0 // indirect
+ github.com/spf13/viper v1.21.0 // indirect
+ github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
- github.com/subosito/gotenv v1.2.0 // indirect
+ github.com/subosito/gotenv v1.6.0 // indirect
github.com/tidwall/gjson v1.17.1 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.1 // indirect
github.com/tidwall/sjson v1.2.5 // indirect
+ github.com/x448/float16 v0.8.4 // indirect
gitlab.com/yvesf/json-schema-compare v0.0.0-20190604192943-a900c04201f7 // indirect
+ go.etcd.io/etcd/api/v3 v3.6.4 // indirect
go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
+ go.opentelemetry.io/auto/sdk v1.2.1 // indirect
+ go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 // indirect
- go.opentelemetry.io/otel/metric v1.24.0 // indirect
- go.opentelemetry.io/otel/sdk v1.24.0 // indirect
- go.opentelemetry.io/otel/trace v1.24.0 // indirect
- go.opentelemetry.io/proto/otlp v1.1.0 // indirect
+ go.opentelemetry.io/otel/metric v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect
+ go.opentelemetry.io/otel/trace v1.43.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.10.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
- golang.org/x/crypto v0.31.0 // indirect
- golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 // indirect
- golang.org/x/sys v0.28.0 // indirect
- golang.org/x/term v0.27.0 // indirect
- golang.org/x/text v0.21.0 // indirect
- golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
+ go.yaml.in/yaml/v2 v2.4.2 // indirect
+ go.yaml.in/yaml/v3 v3.0.4 // indirect
+ golang.org/x/crypto v0.49.0 // indirect
+ golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
+ golang.org/x/sys v0.42.0 // indirect
+ golang.org/x/term v0.41.0 // indirect
+ golang.org/x/text v0.35.0 // indirect
+ golang.org/x/tools v0.42.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.66.4 // indirect
gopkg.in/jcmturner/aescts.v1 v1.0.1 // indirect
@@ -219,10 +238,11 @@ require (
gopkg.in/square/go-jose.v2 v2.6.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- k8s.io/apiextensions-apiserver v0.29.0 // indirect
- k8s.io/component-base v0.29.0 // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/yaml v1.4.0 // indirect
+ k8s.io/apiextensions-apiserver v0.34.1 // indirect
+ sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
+ sigs.k8s.io/randfill v1.0.0 // indirect
+ sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
+ sigs.k8s.io/yaml v1.6.0 // indirect
)
require (
@@ -231,10 +251,9 @@ require (
github.com/cloudevents/sdk-go/protocol/kafka_sarama/v2 v2.8.0
github.com/cloudevents/sdk-go/protocol/nats/v2 v2.15.2
github.com/imdario/mergo v0.3.13 // indirect
- k8s.io/klog/v2 v2.110.1 // indirect
- k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect
- k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
+ k8s.io/klog/v2 v2.130.1 // indirect
+ k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3 // indirect
+ k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d // indirect
)
// Retracted versions
@@ -242,16 +261,9 @@ require (
retract v1.1.94
replace (
- github.com/flyteorg/flyte/datacatalog => ../datacatalog
- github.com/flyteorg/flyte/flyteadmin => ../flyteadmin
github.com/flyteorg/flyte/flyteidl => ../flyteidl
github.com/flyteorg/flyte/flyteplugins => ../flyteplugins
github.com/flyteorg/flyte/flytepropeller => ../flytepropeller
github.com/flyteorg/flyte/flytestdlib => ../flytestdlib
github.com/robfig/cron/v3 => github.com/unionai/cron/v3 v3.0.2-0.20220915080349-5790c370e63a
- k8s.io/api => k8s.io/api v0.28.2
- k8s.io/apimachinery => k8s.io/apimachinery v0.28.2
- k8s.io/client-go => k8s.io/client-go v0.28.2
- k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f
- sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.16.2
)
diff --git a/flyteadmin/go.sum b/flyteadmin/go.sum
index 0a93b00d6e5..0f9872b4bcf 100644
--- a/flyteadmin/go.sum
+++ b/flyteadmin/go.sum
@@ -1,4 +1,6 @@
bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8=
+cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
+cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
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=
@@ -6,7 +8,6 @@ cloud.google.com/go v0.41.0/go.mod h1:OauMR7DV8fzvZIl2qg6rkaIhD/vmgk4iwEw/h6ercm
cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg=
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
@@ -15,44 +16,44 @@ cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6
cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
-cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
-cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
-cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
-cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
-cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
-cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM=
-cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4=
+cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ=
+cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc=
+cloud.google.com/go/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U=
+cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk=
+cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
+cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
-cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
-cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=
-cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI=
-cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
-cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
+cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
+cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
-cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI=
-cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8=
-cloud.google.com/go/kms v1.15.5 h1:pj1sRfut2eRbD9pFRjNnPNg/CzJPuQAzUujMIM1vVeM=
-cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI=
+cloud.google.com/go/iam v1.2.1 h1:QFct02HRb7H12J/3utj0qf5tobFh9V4vR6h9eX5EBRU=
+cloud.google.com/go/iam v1.2.1/go.mod h1:3VUIJDPpwT6p/amXRC5GY8fCCh70lxPygguVtI0Z4/g=
+cloud.google.com/go/kms v1.19.0 h1:x0OVJDl6UH1BSX4THKlMfdcFWoE4ruh90ZHuilZekrU=
+cloud.google.com/go/kms v1.19.0/go.mod h1:e4imokuPJUc17Trz2s6lEXFDt8bgDmvpVynH39bdrHM=
cloud.google.com/go/logging v1.0.0/go.mod h1:V1cc3ogwobYzQq5f2R7DS/GvRIrI4FKj01Gs5glwAls=
+cloud.google.com/go/logging v1.11.0 h1:v3ktVzXMV7CwHq1MBF65wcqLMA7i+z3YxbUsoK7mOKs=
+cloud.google.com/go/logging v1.11.0/go.mod h1:5LDiJC/RxTt+fHc1LAt20R9TKiUTReDg6RuuFOZ67+A=
+cloud.google.com/go/longrunning v0.6.1 h1:lOLTFxYpr8hcRtcwWir5ITh1PAKUD/sG2lKrTSYjyMc=
+cloud.google.com/go/longrunning v0.6.1/go.mod h1:nHISoOZpBcmlwbJmiVk5oDRz0qG/ZxPynEGs1iZ79s0=
+cloud.google.com/go/monitoring v1.21.0 h1:EMc0tB+d3lUewT2NzKC/hr8cSR9WsUieVywzIHetGro=
+cloud.google.com/go/monitoring v1.21.0/go.mod h1:tuJ+KNDdJbetSsbSGTqnaBvbauS5kr3Q/koy3Up6r+4=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
-cloud.google.com/go/pubsub v1.34.0 h1:ZtPbfwfi5rLaPeSvDC29fFoE20/tQvGrUS6kVJZJvkU=
-cloud.google.com/go/pubsub v1.34.0/go.mod h1:alj4l4rBg+N3YTFDDC+/YyFTs6JAjam2QfYsddcAW4c=
+cloud.google.com/go/pubsub v1.42.0 h1:PVTbzorLryFL5ue8esTS2BfehUs0ahyNOY9qcd+HMOs=
+cloud.google.com/go/pubsub v1.42.0/go.mod h1:KADJ6s4MbTwhXmse/50SebEhE4SmUwHi48z3/dHar1Y=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
-cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
-cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
-cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8=
-cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8=
+cloud.google.com/go/storage v1.45.0 h1:5av0QcIVj77t+44mV4gffFC/LscFRUhto6UBMB5SimM=
+cloud.google.com/go/storage v1.45.0/go.mod h1:wpPblkIuMP5jCB/E48Pz9zIo2S/zD8g+ITmxKkPCITE=
+cloud.google.com/go/trace v1.11.0 h1:UHX6cOJm45Zw/KIbqHe4kII8PupLt/V5tscZUkeiJVI=
+cloud.google.com/go/trace v1.11.0/go.mod h1:Aiemdi52635dBR7o3zuc9lLjXo3BwGaChEjCa3tJNmM=
contrib.go.opencensus.io/exporter/stackdriver v0.13.1/go.mod h1:z2tyTZtPmQ2HvWH4cOmVDgtY+1lomfKdbLnkJvZdc8c=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww=
@@ -74,6 +75,14 @@ github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q
github.com/DataDog/datadog-go v3.4.1+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/datadog-go v4.0.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/opencensus-go-exporter-datadog v0.0.0-20191210083620-6965a1cfed68/go.mod h1:gMGUEe16aZh0QN941HgDjwrdjU4iTthPoz2/AtDRADE=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1/go.mod h1:jyqM3eLpJ3IbIFDTKVz2rF9T/xWGW0rIriGwnz8l9Tk=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1 h1:oTX4vsorBZo/Zdum6OKPA4o7544hm6smoRv1QjpTwGo=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1/go.mod h1:0wEl7vrAD8mehJyohS9HZy+WyEOaQO2mJx86Cvh93kM=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 h1:8nn+rsCvTq9axyEh382S0PFLBeaFwNsT43IrPWzctRU=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1/go.mod h1:viRWSEhtMZqz1rhwmOVKkWl6SwmVowfL9O2YR5gI2PE=
github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
@@ -84,8 +93,9 @@ github.com/NYTimes/gizmo v1.3.6 h1:K+GRagPdAxojsT1TlTQlMkTeOmgfLxSdvuOhdki7GG0=
github.com/NYTimes/gizmo v1.3.6/go.mod h1:8S8QVnITA40p/1jGsUMcPI8R9SSKkoKu+8WF13s9Uhw=
github.com/NYTimes/logrotate v1.0.0/go.mod h1:GxNz1cSw1c6t99PXoZlw+nm90H6cyQyrH66pjVv7x88=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
-github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
+github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8=
+github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
@@ -111,8 +121,8 @@ github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:o
github.com/aws/aws-sdk-go v1.23.19/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.31.3/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
-github.com/aws/aws-sdk-go v1.47.11 h1:Dol+MA+hQblbnXUI3Vk9qvoekU6O1uDEuAItezjiWNQ=
-github.com/aws/aws-sdk-go v1.47.11/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
+github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
+github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
github.com/aws/aws-xray-sdk-go v0.9.4/go.mod h1:XtMKdBQfpVut+tJEwI7+dJFRxxRdxHDyVNp2tHXRq04=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=
@@ -130,8 +140,10 @@ github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6
github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs=
-github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
-github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+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 v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
@@ -154,10 +166,9 @@ github.com/cloudevents/sdk-go/v2 v2.8.0/go.mod h1:GpCBmUj7DIRiDhVvsK5d6WCbgTWs8D
github.com/cloudevents/sdk-go/v2 v2.15.2 h1:54+I5xQEnI73RBhWHxbI1XJcqOFOVJN85vb41+8mHUc=
github.com/cloudevents/sdk-go/v2 v2.15.2/go.mod h1:lL7kSWAE/V8VI4Wh0jbL2v/jvqsm6tjmaQBSvxcv4uE=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk=
github.com/cockroachdb/cockroach-go v0.0.0-20190925194419-606b3d062051/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk=
@@ -181,13 +192,14 @@ github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7
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/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/cucumber/godog v0.8.1/go.mod h1:vSh3r/lM+psC1BPXvdkSEuNjmXfpVqrMGYAElF6hxnA=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/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/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
@@ -217,45 +229,53 @@ github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFP
github.com/elastic/go-sysinfo v1.1.1/go.mod h1:i1ZYdU10oLNfRzq4vq62BEwD2fH8KaWh6eh0ikPT9F0=
github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU=
github.com/elazarl/goproxy v0.0.0-20181003060214-f58a169a71a5/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
-github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
-github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes=
+github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
+github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=
+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/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=
+github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
-github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
+github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=
+github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/evanphx/json-patch/v5 v5.8.0 h1:lRj6N9Nci7MvzrXuX6HFzU8XjmhPiXPlsKEy1u0KQro=
-github.com/evanphx/json-patch/v5 v5.8.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
+github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
+github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
-github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
-github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
+github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
+github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/flyteorg/stow v0.3.11 h1:Uf4fzVbghCqMNvx50XvYzwdNeQDBSKQJ7zddWu7p3eI=
-github.com/flyteorg/stow v0.3.11/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
+github.com/flyteorg/stow v0.3.12 h1:RRXI5RUdxaK6A46HrO0D2r14cRlW1lJRL6qyzqpVMPU=
+github.com/flyteorg/stow v0.3.12/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
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/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ=
github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o=
-github.com/frankban/quicktest v1.10.0 h1:Gfh+GAJZOAoKZsIZeZbdn2JF10kN1XHNvjsvQK8gVkE=
github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y=
+github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
+github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
-github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
-github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
+github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
+github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
@@ -266,8 +286,10 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gormigrate/gormigrate/v2 v2.1.1 h1:eGS0WTFRV30r103lU8JNXY27KbviRnqqIDobW3EV3iY=
github.com/go-gormigrate/gormigrate/v2 v2.1.1/go.mod h1:L7nJ620PFDKei9QOhJzqA8kRCk+E3UbV2f5gv+1ndLc=
-github.com/go-jose/go-jose/v3 v3.0.4 h1:Wp5HA7bLQcKnf6YYao/4kpRpVMp/yf6+pJKV8WFSaNY=
-github.com/go-jose/go-jose/v3 v3.0.4/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
+github.com/go-jose/go-jose/v3 v3.0.5 h1:BLLJWbC4nMZOfuPVxoZIxeYsn6Nl2r1fITaJ78UQlVQ=
+github.com/go-jose/go-jose/v3 v3.0.5/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
+github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA=
+github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
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=
@@ -275,13 +297,12 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9
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.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
-github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+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-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo=
-github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA=
+github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
+github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI=
github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
@@ -299,14 +320,14 @@ github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwds
github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
-github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
-github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
+github.com/go-openapi/jsonpointer v0.21.2 h1:AqQaNADVwq/VnkCmQg6ogE+M3FOsKTytwges0JdwVuA=
+github.com/go-openapi/jsonpointer v0.21.2/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk=
github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc=
github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=
-github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
-github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
+github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
+github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
@@ -337,8 +358,8 @@ github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
github.com/go-openapi/swag v0.19.7/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY=
github.com/go-openapi/swag v0.19.9/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY=
-github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
-github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
+github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU=
+github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0=
github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4=
github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA=
github.com/go-openapi/validate v0.19.3/go.mod h1:90Vh6jjkTn+OT1Eefm0ZixWNFjhtOH7vS9k0lo6zwJo=
@@ -351,10 +372,12 @@ github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LB
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
+github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
+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/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
github.com/gobuffalo/attrs v0.1.0/go.mod h1:fmNpaWyHM0tRm8gCZWKx8yY9fvaNLo2PyzBNSrBZ5Hw=
github.com/gobuffalo/buffalo v0.12.8-0.20181004233540-fac9bb505aa8/go.mod h1:sLyT7/dceRXJUxSsE813JTQtA3Eb1vjxWfo/N//vXIY=
@@ -614,8 +637,6 @@ github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
-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.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
@@ -624,8 +645,8 @@ github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGw
github.com/golang/gddo v0.0.0-20180828051604-96d2a289f41e/go.mod h1:xEhNfoBDX1hzLm2Nf80qUvZ2sVwoMZ8d6IE2SrsQfh4=
github.com/golang/gddo v0.0.0-20190904175337-72a348e765d2/go.mod h1:xEhNfoBDX1hzLm2Nf80qUvZ2sVwoMZ8d6IE2SrsQfh4=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc=
-github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
+github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I=
+github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -638,7 +659,6 @@ github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFU
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -657,7 +677,6 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD
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.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/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
@@ -666,60 +685,53 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
-github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
-github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
+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/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
+github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.4.1/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.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/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.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-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-jsonnet v0.16.0/go.mod h1:sOcuej3UW1vpPTZOr8L7RQimqai1a57bt5j22LzGZCw=
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 h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
-github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=
-github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
+github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=
+github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
+github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
-github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
+github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM=
+github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
-github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
+github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw=
+github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
-github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
-github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
-github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
+github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s=
+github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A=
github.com/gopherjs/gopherjs v0.0.0-20181004151105-1babbf986f6f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
@@ -738,8 +750,8 @@ github.com/gorilla/sessions v1.1.2/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE
github.com/gorilla/sessions v1.1.3/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w=
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
-github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5THxAzdVpqr6/geYxZytqFMBCOtn/ujyeo=
+github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA=
github.com/gotestyourself/gotestyourself v1.3.0/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY=
github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY=
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
@@ -750,8 +762,8 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99 h1:JYghRBlGCZyCF2wNUJ8W0cwaQdtpcssJ4CgC406g+WU=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99/go.mod h1:3bDW6wMZJB7tiONtC/1Xpicra6Wp5GgbTbQWCbI5fkc=
github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=
github.com/gtank/cryptopasta v0.0.0-20170601214702-1f550f6f2f69 h1:7xsUJsB2NrdcttQPa7JLEaGzvdbk7KvfrjgHZXOQRo0=
github.com/gtank/cryptopasta v0.0.0-20170601214702-1f550f6f2f69/go.mod h1:YLEMZOtU+AZ7dhN9T/IpGhXVGly2bvkJQ+zxj3WeVQo=
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
@@ -768,7 +780,6 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
@@ -777,7 +788,6 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf
github.com/inhies/go-bytesize v0.0.0-20201103132853-d0aed0d254f8/go.mod h1:KrtyD5PFj++GKkFS/7/RRrfnRhAMGQwy75GLCHWrCNs=
github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo=
github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
-github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8=
github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ=
github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA=
@@ -786,13 +796,8 @@ github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsU
github.com/jackc/pgconn v1.3.2/go.mod h1:LvCquS3HbBKwgl7KbX9KyqEIumJAbm1UMcTvGaIf3bM=
github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI=
github.com/jackc/pgconn v1.6.0/go.mod h1:yeseQo4xhQbgyJs2c87RAXOH2i624N0Fh1KSPJya7qo=
-github.com/jackc/pgconn v1.14.3 h1:bVoTr12EGANZz66nZPkMInAV/KHD2TxH9npjXXgiB3w=
-github.com/jackc/pgconn v1.14.3/go.mod h1:RZbme4uasqzybK2RK5c65VsHxoyaml09lx3tXOcO/VM=
-github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE=
github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8=
github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE=
-github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5Wi/+Zz7xoE5ALHsRQlOctkOiHc=
-github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78=
@@ -802,11 +807,9 @@ github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvW
github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
github.com/jackc/pgproto3/v2 v2.0.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
-github.com/jackc/pgproto3/v2 v2.3.3 h1:1HLSx5H+tXR9pW3in3zaztoEwQYRC9SQaYUHjTSUOag=
-github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E=
-github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
-github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
+github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
+github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg=
github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc=
github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw=
@@ -819,13 +822,13 @@ github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9
github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc=
github.com/jackc/pgx/v4 v4.4.1/go.mod h1:6iSW+JznC0YT+SgBn7rNxoEBsBgSmnC5FwyCekOGUiE=
github.com/jackc/pgx/v4 v4.6.0/go.mod h1:vPh43ZzxijXUVJ+t/EmXBtFmbFVO72cuneCT9oAlxAg=
-github.com/jackc/pgx/v5 v5.5.5 h1:amBjrZVmksIdNjxGW/IiIMzxMKZFelXbUoPNb+8sjQw=
-github.com/jackc/pgx/v5 v5.5.5/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A=
+github.com/jackc/pgx/v5 v5.9.2 h1:3ZhOzMWnR4yJ+RW1XImIPsD1aNSz4T4fyP7zlQb56hw=
+github.com/jackc/pgx/v5 v5.9.2/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4=
github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
-github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
-github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
+github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
+github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/jandelgado/gcov2lcov v1.0.4-0.20210120124023-b83752c6dc08/go.mod h1:NnSxK6TMlg1oGDBfGelGbjgorT5/L3cchlbtgFYZSss=
github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o=
github.com/jcmturner/gofork v1.0.0 h1:J7uCkflzTEhUZ64xqKnkDxq3kzc96ajM1Gli5ktUem8=
@@ -882,8 +885,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o
github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.9.8/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
-github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU=
-github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
+github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
github.com/knadh/koanf v0.14.1-0.20201201075439-e0853799f9ec/go.mod h1:H5mEFsTeWizwFXHKtsITL5ipsLTuAMQoGuQpp+1JL9U=
github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
@@ -893,7 +896,6 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
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=
@@ -929,15 +931,15 @@ github.com/luna-duclos/instrumentedsql v1.1.3/go.mod h1:9J1njvFds+zN7y85EDhN9XNQ
github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
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/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
-github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
+github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
+github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
-github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
-github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
+github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
github.com/markbates/deplist v1.0.4/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM=
github.com/markbates/deplist v1.0.5/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM=
github.com/markbates/deplist v1.1.3/go.mod h1:BF7ioVzAJYEtzQN/os4rt8H8Ti3h0T7EoN+7eyALktE=
@@ -965,9 +967,8 @@ github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcncea
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
-github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
-github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
-github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
@@ -975,9 +976,9 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
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/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
@@ -1003,8 +1004,9 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w
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/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
github.com/monoculum/formam v0.0.0-20180901015400-4e68be1d79ba/go.mod h1:RKgILGEJq24YyJ2ban8EO0RUVSJlF1pGsEvoLEACr/Q=
@@ -1039,8 +1041,8 @@ github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+
github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
-github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU=
-github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM=
+github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg=
+github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
@@ -1048,8 +1050,8 @@ github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa
github.com/onsi/gomega v1.6.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
-github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
-github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
+github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw=
+github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
@@ -1100,8 +1102,8 @@ github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAv
github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs=
github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM=
github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
+github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
+github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
@@ -1118,34 +1120,36 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
-github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+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 v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
github.com/prometheus/client_golang v0.9.4/go.mod h1:oCXIBxdI62A4cR6aTRJCgetEjecSIYzOEaeAn4iYEpM=
-github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
-github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
+github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc=
+github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE=
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=
-github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
-github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
+github.com/prometheus/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.0.0-20181126121408-4724e9255275/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.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE=
-github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U=
+github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE=
+github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
-github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
-github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
+github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0=
+github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
@@ -1162,8 +1166,8 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
github.com/rogpeppe/go-internal v1.3.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.4.0/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.5.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+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/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU=
@@ -1172,6 +1176,8 @@ github.com/rubenv/sql-migrate v0.0.0-20190212093014-1007f53448d7/go.mod h1:WS0rl
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/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc=
+github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik=
github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc=
github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU=
github.com/santhosh-tekuri/jsonschema v1.2.4 h1:hNhW8e7t+H1vgY+1QeEQpveR6D4+OwKPXCfD2aieJis=
@@ -1221,6 +1227,8 @@ github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:X
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/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U=
github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
@@ -1228,36 +1236,40 @@ github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B
github.com/spf13/afero v1.2.0/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
github.com/spf13/afero v1.3.2/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
-github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
-github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
+github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
+github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg=
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.3.2-0.20200723214538-8d17101741c8/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
-github.com/spf13/cast v1.4.1/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.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
github.com/spf13/cobra v0.0.6/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
github.com/spf13/cobra v0.0.7/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
-github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
-github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
+github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
+github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/pflag v1.0.6/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.2.1/go.mod h1:P4AexN0a+C9tGAnUFNwDMYYZv3pjFuvmeiMyKRaNVlI=
github.com/spf13/viper v1.3.1/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
-github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44=
-github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk=
+github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
+github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
+github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=
+github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=
github.com/sqs/goreturns v0.0.0-20181028201513-538ac6014518/go.mod h1:CKI4AZ4XmGV240rTHfO0hfE83S6/a3/Q1siZJ/vXf7A=
github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693/go.mod h1:6hSY48PjDm4UObWmGLyJE9DxYVKTgR9kbCspXXJEhcU=
github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
@@ -1278,11 +1290,13 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+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.1.1/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
-github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
+github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
+github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
github.com/tidwall/gjson v1.3.2/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls=
github.com/tidwall/gjson v1.6.8/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI=
github.com/tidwall/gjson v1.7.1/go.mod h1:5/xDoumyyDNerp2U36lyolv46b3uF/9Bu6OfyQ9GImk=
@@ -1321,6 +1335,8 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/wI2L/jsondiff v0.6.0 h1:zrsH3FbfVa3JO9llxrcDy/XLkYPLgoMX6Mz3T2PP2AI=
github.com/wI2L/jsondiff v0.6.0/go.mod h1:D6aQ5gKgPF9g17j+E9N7aasmU1O+XvfmWm1y8UMmNpw=
+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/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
@@ -1330,7 +1346,6 @@ github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:
github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c/go.mod h1:UrdRz5enIKZ63MEE3IF9l2/ebyx59GyGgPi+tICQdmM=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
@@ -1338,11 +1353,15 @@ github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxt
github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0=
gitlab.com/yvesf/json-schema-compare v0.0.0-20190604192943-a900c04201f7 h1:BAkxmYRc1ZPl6Gap4HWqwPT8yLZMrgaAwx12Ft408sg=
gitlab.com/yvesf/json-schema-compare v0.0.0-20190604192943-a900c04201f7/go.mod h1:X40Z1OU8o1oiXWzBmkuYOaruzYGv60l0AxGiB0E9keI=
+go.einride.tech/aip v0.67.1 h1:d/4TW92OxXBngkSOwWS2CH5rez869KpKMaN44mdxkFI=
+go.einride.tech/aip v0.67.1/go.mod h1:ZGX4/zKw8dcgzdLsrvpOOGxfxI2QSk12SlP7d6c0/XI=
go.elastic.co/apm v1.8.0/go.mod h1:tCw6CkOJgkWnzEthFN9HUP1uL3Gjc/Ur6m7gRPLaoH0=
go.elastic.co/apm/module/apmhttp v1.8.0/go.mod h1:9LPFlEON51/lRbnWDfqAWErihIiAFDUMfMV27YjoWQ8=
go.elastic.co/apm/module/apmot v1.8.0/go.mod h1:Q5Xzabte8G/fkvDjr1jlDuOSUt9hkVWNZEHh6ZNaTjI=
go.elastic.co/fastjson v1.0.0/go.mod h1:PmeUOMMtLHQr9ZS9J9owrAVg0FkaZDRZJEFTTGHtchs=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
+go.etcd.io/etcd/api/v3 v3.6.4 h1:7F6N7toCKcV72QmoUKa23yYLiiljMrT4xCeBL9BmXdo=
+go.etcd.io/etcd/api/v3 v3.6.4/go.mod h1:eFhhvfR8Px1P6SEuLT600v+vrhdDTdcfMzmnxVXXSbk=
go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
go.mongodb.org/mongo-driver v1.3.0/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE=
@@ -1352,40 +1371,44 @@ go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
+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 v0.18.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ=
+go.opentelemetry.io/contrib/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE=
+go.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk=
+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/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.18.0/go.mod h1:iK1G0FgHurSJ/aYLg5LpnPI0pqdanM73S3dhyDp0Lk4=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
-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.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q=
go.opentelemetry.io/otel v0.18.0/go.mod h1:PT5zQj4lTsR1YeARt8YNKcFb88/c2IKoSABK9mX0r78=
-go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
-go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
+go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
+go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 h1:zr8ymM5OWWjjiWRzwTfZ67c905+2TMHYp2lMJ52QTyM=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0/go.mod h1:sQs7FT2iLVJ+67vYngGJkPe1qr39IzaBzaj9IDNNY8k=
go.opentelemetry.io/otel/metric v0.18.0/go.mod h1:kEH2QtzAyBy3xDVQfGZKIcok4ZZFvd5xyKPfPcuK6pE=
-go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
-go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
+go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
+go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
go.opentelemetry.io/otel/oteltest v0.18.0/go.mod h1:NyierCU3/G8DLTva7KRzGii2fdxdR89zXKH1bNWY7Bo=
-go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
+go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
+go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
+go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
+go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
go.opentelemetry.io/otel/trace v0.18.0/go.mod h1:FzdUu3BPwZSZebfQ1vl5/tAa8LyMLXSJN57AXIt/iDk=
-go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
-go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
-go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI=
-go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY=
+go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
+go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
+go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=
+go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.5.1/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
@@ -1402,6 +1425,10 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
+go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
+go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
+go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180830192347-182538f80094/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
@@ -1441,13 +1468,11 @@ golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
-golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
-golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
-golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
+golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
+golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1462,8 +1487,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
+golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
+golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
@@ -1477,7 +1502,6 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/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=
@@ -1486,13 +1510,11 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
-golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8=
+golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180816102801-aaf60122140d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -1535,38 +1557,25 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200707034311-ab3426394381/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-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=
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-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
-golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
-golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
+golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced/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-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
-golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
+golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
+golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
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=
@@ -1575,14 +1584,12 @@ golang.org/x/sync v0.0.0-20190412183630-56d357773e84/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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/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.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
-golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
+golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/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-20180831094639-fa5fdf94c789/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1642,25 +1649,13 @@ golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/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-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-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1669,11 +1664,12 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
-golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
+golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -1681,27 +1677,25 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
-golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
-golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
+golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=
+golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
+golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
+golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+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-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -1784,39 +1778,26 @@ golang.org/x/tools v0.0.0-20200308013534-11ec41452d41/go.mod h1:o4KQGtdN14AW+yjs
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
-golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
+golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=
+golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
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=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
gonum.org/v1/gonum v0.6.2/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU=
+gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
+gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
gonum.org/v1/netlib v0.0.0-20191229114700-bbb4dff026f8/go.mod h1:2IgXn/sJaRbePPBA1wRj8OE+QLvVaH0q8SK6TSTKlnk=
gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=
@@ -1834,16 +1815,9 @@ google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/
google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.25.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
-google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
-google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
-google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
-google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
-google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA=
-google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk=
+google.golang.org/api v0.197.0 h1:x6CwqQLsFiA5JKAiGyGBjc2bNtHtLddhJCE2IKuhhcQ=
+google.golang.org/api v0.197.0/go.mod h1:AuOuo20GoQ331nq7DquGHlU6d+2wN2fZ8O0ta60nRNw=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -1852,9 +1826,6 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww
google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-google.golang.org/appengine v1.6.7/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-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=
@@ -1881,27 +1852,14 @@ google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfG
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
-google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200806141610-86f49bd18e98/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
-google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
+google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU=
+google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 h1:VPWxll4HlMw1Vs/qXtN7BvhZqsS9cdAittCNvVENElA=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
@@ -1918,15 +1876,11 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
-google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
-google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
+google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM=
+google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4=
google.golang.org/grpc/examples v0.0.0-20210304020650-930c79186c99/go.mod h1:Ly7ZA/ARzg8fnPU9TyZIxoz33sEUuWX7txiqs8lPTgE=
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=
@@ -1940,8 +1894,8 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj
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.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
-google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
+google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/DataDog/dd-trace-go.v1 v1.22.0/go.mod h1:DVp8HmDh8PuTu2Z0fVVlBsyWaC++fzwVCaGWylTe3tg=
gopkg.in/DataDog/dd-trace-go.v1 v1.27.0/go.mod h1:Sp1lku8WJMvNV0kjDI4Ni/T7J/U3BO5ct5kEaoVU8+I=
gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
@@ -1954,6 +1908,8 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo=
+gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo=
gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
@@ -2026,24 +1982,21 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
-k8s.io/api v0.28.2 h1:9mpl5mOb6vXZvqbQmankOfPIGiudghwCoLl1EYfUZbw=
-k8s.io/api v0.28.2/go.mod h1:RVnJBsjU8tcMq7C3iaRSGMeaKt2TWEUXcpIt/90fjEg=
-k8s.io/apiextensions-apiserver v0.29.0 h1:0VuspFG7Hj+SxyF/Z/2T0uFbI5gb5LRgEyUVE3Q4lV0=
-k8s.io/apiextensions-apiserver v0.29.0/go.mod h1:TKmpy3bTS0mr9pylH0nOt/QzQRrW7/h7yLdRForMZwc=
-k8s.io/apimachinery v0.28.2 h1:KCOJLrc6gu+wV1BYgwik4AF4vXOlVJPdiqn0yAWWwXQ=
-k8s.io/apimachinery v0.28.2/go.mod h1:RdzF87y/ngqk9H4z3EL2Rppv5jj95vGS/HaFXrLDApU=
-k8s.io/client-go v0.28.2 h1:DNoYI1vGq0slMBN/SWKMZMw0Rq+0EQW6/AK4v9+3VeY=
-k8s.io/client-go v0.28.2/go.mod h1:sMkApowspLuc7omj1FOSUxSoqjr+d5Q0Yc0LOFnYFJY=
-k8s.io/component-base v0.29.0 h1:T7rjd5wvLnPBV1vC4zWd/iWRbV8Mdxs+nGaoaFzGw3s=
-k8s.io/component-base v0.29.0/go.mod h1:sADonFTQ9Zc9yFLghpDpmNXEdHyQmFIGbiuZbqAXQ1M=
-k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0=
-k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo=
-k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f h1:eeEUOoGYWhOz7EyXqhlR2zHKNw2mNJ9vzJmub6YN6kk=
-k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
-k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
-k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
+k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
+k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI=
+k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc=
+k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4=
+k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
+k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY=
+k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8=
+k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
+k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
+k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3 h1:liMHz39T5dJO1aOKHLvwaCjDbf07wVh6yaUlTpunnkE=
+k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
+k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d h1:wAhiDyZ4Tdtt7e46e9M5ZSAJ/MnPGPs+Ki1gHw4w1R0=
+k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=
modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=
@@ -2053,11 +2006,13 @@ rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
-sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU=
-sigs.k8s.io/controller-runtime v0.16.2/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
-sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
-sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
+sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A=
+sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
+sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
+sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
diff --git a/flyteadmin/pkg/async/cloudevent/mocks/publisher.go b/flyteadmin/pkg/async/cloudevent/mocks/publisher.go
index bea990a05bd..928348250f7 100644
--- a/flyteadmin/pkg/async/cloudevent/mocks/publisher.go
+++ b/flyteadmin/pkg/async/cloudevent/mocks/publisher.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,7 +6,6 @@ import (
context "context"
mock "github.com/stretchr/testify/mock"
-
protoiface "google.golang.org/protobuf/runtime/protoiface"
)
diff --git a/flyteadmin/pkg/async/cloudevent/mocks/sender.go b/flyteadmin/pkg/async/cloudevent/mocks/sender.go
index c1f5126ef25..6b38215b47c 100644
--- a/flyteadmin/pkg/async/cloudevent/mocks/sender.go
+++ b/flyteadmin/pkg/async/cloudevent/mocks/sender.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/async/events/mocks/node_execution_event_writer.go b/flyteadmin/pkg/async/events/mocks/node_execution_event_writer.go
index 952fbb60435..f2ba3162d49 100644
--- a/flyteadmin/pkg/async/events/mocks/node_execution_event_writer.go
+++ b/flyteadmin/pkg/async/events/mocks/node_execution_event_writer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -21,7 +21,7 @@ func (_m *NodeExecutionEventWriter) EXPECT() *NodeExecutionEventWriter_Expecter
return &NodeExecutionEventWriter_Expecter{mock: &_m.Mock}
}
-// Run provides a mock function with given fields:
+// Run provides a mock function with no fields
func (_m *NodeExecutionEventWriter) Run() {
_m.Called()
}
@@ -49,7 +49,7 @@ func (_c *NodeExecutionEventWriter_Run_Call) Return() *NodeExecutionEventWriter_
}
func (_c *NodeExecutionEventWriter_Run_Call) RunAndReturn(run func()) *NodeExecutionEventWriter_Run_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -82,7 +82,7 @@ func (_c *NodeExecutionEventWriter_Write_Call) Return() *NodeExecutionEventWrite
}
func (_c *NodeExecutionEventWriter_Write_Call) RunAndReturn(run func(*admin.NodeExecutionEventRequest)) *NodeExecutionEventWriter_Write_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteadmin/pkg/async/events/mocks/workflow_execution_event_writer.go b/flyteadmin/pkg/async/events/mocks/workflow_execution_event_writer.go
index a8a9483479e..b642ac2b4b6 100644
--- a/flyteadmin/pkg/async/events/mocks/workflow_execution_event_writer.go
+++ b/flyteadmin/pkg/async/events/mocks/workflow_execution_event_writer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -21,7 +21,7 @@ func (_m *WorkflowExecutionEventWriter) EXPECT() *WorkflowExecutionEventWriter_E
return &WorkflowExecutionEventWriter_Expecter{mock: &_m.Mock}
}
-// Run provides a mock function with given fields:
+// Run provides a mock function with no fields
func (_m *WorkflowExecutionEventWriter) Run() {
_m.Called()
}
@@ -49,7 +49,7 @@ func (_c *WorkflowExecutionEventWriter_Run_Call) Return() *WorkflowExecutionEven
}
func (_c *WorkflowExecutionEventWriter_Run_Call) RunAndReturn(run func()) *WorkflowExecutionEventWriter_Run_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -82,7 +82,7 @@ func (_c *WorkflowExecutionEventWriter_Write_Call) Return() *WorkflowExecutionEv
}
func (_c *WorkflowExecutionEventWriter_Write_Call) RunAndReturn(run func(*admin.WorkflowExecutionEventRequest)) *WorkflowExecutionEventWriter_Write_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteadmin/pkg/async/notifications/mocks/emailer.go b/flyteadmin/pkg/async/notifications/mocks/emailer.go
index f99f51d0f5b..f892b2ea029 100644
--- a/flyteadmin/pkg/async/notifications/mocks/emailer.go
+++ b/flyteadmin/pkg/async/notifications/mocks/emailer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/async/notifications/mocks/processor.go b/flyteadmin/pkg/async/notifications/mocks/processor.go
index 63add3f7d21..112ed21547b 100644
--- a/flyteadmin/pkg/async/notifications/mocks/processor.go
+++ b/flyteadmin/pkg/async/notifications/mocks/processor.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *Processor) EXPECT() *Processor_Expecter {
return &Processor_Expecter{mock: &_m.Mock}
}
-// StartProcessing provides a mock function with given fields:
+// StartProcessing provides a mock function with no fields
func (_m *Processor) StartProcessing() {
_m.Called()
}
@@ -45,11 +45,11 @@ func (_c *Processor_StartProcessing_Call) Return() *Processor_StartProcessing_Ca
}
func (_c *Processor_StartProcessing_Call) RunAndReturn(run func()) *Processor_StartProcessing_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// StopProcessing provides a mock function with given fields:
+// StopProcessing provides a mock function with no fields
func (_m *Processor) StopProcessing() error {
ret := _m.Called()
diff --git a/flyteadmin/pkg/async/notifications/mocks/publisher.go b/flyteadmin/pkg/async/notifications/mocks/publisher.go
index bea990a05bd..928348250f7 100644
--- a/flyteadmin/pkg/async/notifications/mocks/publisher.go
+++ b/flyteadmin/pkg/async/notifications/mocks/publisher.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,7 +6,6 @@ import (
context "context"
mock "github.com/stretchr/testify/mock"
-
protoiface "google.golang.org/protobuf/runtime/protoiface"
)
diff --git a/flyteadmin/pkg/async/notifications/mocks/sendgrid_client.go b/flyteadmin/pkg/async/notifications/mocks/sendgrid_client.go
index b629eb7126a..77b81268e50 100644
--- a/flyteadmin/pkg/async/notifications/mocks/sendgrid_client.go
+++ b/flyteadmin/pkg/async/notifications/mocks/sendgrid_client.go
@@ -1,12 +1,11 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
+ rest "github.com/sendgrid/rest"
mail "github.com/sendgrid/sendgrid-go/helpers/mail"
mock "github.com/stretchr/testify/mock"
-
- rest "github.com/sendgrid/rest"
)
// SendgridClient is an autogenerated mock type for the SendgridClient type
diff --git a/flyteadmin/pkg/async/notifications/mocks/smtp_client.go b/flyteadmin/pkg/async/notifications/mocks/smtp_client.go
index 68d419b37a4..b2b21363966 100644
--- a/flyteadmin/pkg/async/notifications/mocks/smtp_client.go
+++ b/flyteadmin/pkg/async/notifications/mocks/smtp_client.go
@@ -1,14 +1,13 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
+ tls "crypto/tls"
io "io"
smtp "net/smtp"
mock "github.com/stretchr/testify/mock"
-
- tls "crypto/tls"
)
// SMTPClient is an autogenerated mock type for the SMTPClient type
@@ -70,7 +69,7 @@ func (_c *SMTPClient_Auth_Call) RunAndReturn(run func(smtp.Auth) error) *SMTPCli
return _c
}
-// Close provides a mock function with given fields:
+// Close provides a mock function with no fields
func (_m *SMTPClient) Close() error {
ret := _m.Called()
@@ -115,7 +114,7 @@ func (_c *SMTPClient_Close_Call) RunAndReturn(run func() error) *SMTPClient_Clos
return _c
}
-// Data provides a mock function with given fields:
+// Data provides a mock function with no fields
func (_m *SMTPClient) Data() (io.WriteCloser, error) {
ret := _m.Called()
@@ -320,7 +319,7 @@ func (_c *SMTPClient_Mail_Call) RunAndReturn(run func(string) error) *SMTPClient
return _c
}
-// Noop provides a mock function with given fields:
+// Noop provides a mock function with no fields
func (_m *SMTPClient) Noop() error {
ret := _m.Called()
diff --git a/flyteadmin/pkg/async/schedule/mocks/event_scheduler.go b/flyteadmin/pkg/async/schedule/mocks/event_scheduler.go
index d55555399d1..902464bd46b 100644
--- a/flyteadmin/pkg/async/schedule/mocks/event_scheduler.go
+++ b/flyteadmin/pkg/async/schedule/mocks/event_scheduler.go
@@ -1,19 +1,15 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
+ interfaces "github.com/flyteorg/flyte/flyteadmin/pkg/async/schedule/interfaces"
+ runtimeinterfaces "github.com/flyteorg/flyte/flyteadmin/pkg/runtime/interfaces"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
-
- interfaces "github.com/flyteorg/flyte/flyteadmin/pkg/async/schedule/interfaces"
-
mock "github.com/stretchr/testify/mock"
-
- runtimeinterfaces "github.com/flyteorg/flyte/flyteadmin/pkg/runtime/interfaces"
)
// EventScheduler is an autogenerated mock type for the EventScheduler type
diff --git a/flyteadmin/pkg/async/schedule/mocks/workflow_executor.go b/flyteadmin/pkg/async/schedule/mocks/workflow_executor.go
index c70d2c5266e..0e5b0baa5f8 100644
--- a/flyteadmin/pkg/async/schedule/mocks/workflow_executor.go
+++ b/flyteadmin/pkg/async/schedule/mocks/workflow_executor.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *WorkflowExecutor) EXPECT() *WorkflowExecutor_Expecter {
return &WorkflowExecutor_Expecter{mock: &_m.Mock}
}
-// Run provides a mock function with given fields:
+// Run provides a mock function with no fields
func (_m *WorkflowExecutor) Run() {
_m.Called()
}
@@ -45,11 +45,11 @@ func (_c *WorkflowExecutor_Run_Call) Return() *WorkflowExecutor_Run_Call {
}
func (_c *WorkflowExecutor_Run_Call) RunAndReturn(run func()) *WorkflowExecutor_Run_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// Stop provides a mock function with given fields:
+// Stop provides a mock function with no fields
func (_m *WorkflowExecutor) Stop() error {
ret := _m.Called()
diff --git a/flyteadmin/pkg/clusterresource/mocks/flyte_admin_data_provider.go b/flyteadmin/pkg/clusterresource/mocks/flyte_admin_data_provider.go
index f4aa5468f69..76210c1b352 100644
--- a/flyteadmin/pkg/clusterresource/mocks/flyte_admin_data_provider.go
+++ b/flyteadmin/pkg/clusterresource/mocks/flyte_admin_data_provider.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/config/serverconfig_flags_test.go b/flyteadmin/pkg/config/serverconfig_flags_test.go
index 77075d9f834..4c154ced538 100755
--- a/flyteadmin/pkg/config/serverconfig_flags_test.go
+++ b/flyteadmin/pkg/config/serverconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteadmin/pkg/data/mocks/remote_url_interface.go b/flyteadmin/pkg/data/mocks/remote_url_interface.go
index e570163b176..e1aae0ade58 100644
--- a/flyteadmin/pkg/data/mocks/remote_url_interface.go
+++ b/flyteadmin/pkg/data/mocks/remote_url_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/errors/errors.go b/flyteadmin/pkg/errors/errors.go
index 8e280e11dd9..68bb9245fe1 100644
--- a/flyteadmin/pkg/errors/errors.go
+++ b/flyteadmin/pkg/errors/errors.go
@@ -91,7 +91,7 @@ func NewAlreadyInTerminalStateError(ctx context.Context, errorMsg string, curPha
statusErr, transformationErr := NewFlyteAdminError(codes.FailedPrecondition, errorMsg).WithDetails(reason)
if transformationErr != nil {
logger.Panicf(ctx, "Failed to wrap grpc status in type 'Error': %v", transformationErr)
- return NewFlyteAdminErrorf(codes.FailedPrecondition, errorMsg) //nolint
+ return NewFlyteAdminError(codes.FailedPrecondition, errorMsg)
}
return statusErr
}
@@ -106,7 +106,7 @@ func NewIncompatibleClusterError(ctx context.Context, errorMsg, curCluster strin
})
if transformationErr != nil {
logger.Panicf(ctx, "Failed to wrap grpc status in type 'Error': %v", transformationErr) //nolint
- return NewFlyteAdminErrorf(codes.FailedPrecondition, errorMsg) //nolint
+ return NewFlyteAdminError(codes.FailedPrecondition, errorMsg)
}
return statusErr
}
@@ -135,12 +135,12 @@ func NewTaskExistsDifferentStructureError(ctx context.Context, request *admin.Ta
errorMsg += strings.Join(rs, "\n")
- return NewFlyteAdminErrorf(codes.InvalidArgument, errorMsg) //nolint
+ return NewFlyteAdminError(codes.InvalidArgument, errorMsg)
}
-func NewTaskExistsIdenticalStructureError(ctx context.Context, request *admin.TaskCreateRequest) FlyteAdminError {
+func NewTaskExistsIdenticalStructureError() FlyteAdminError {
errorMsg := "task with identical structure already exists"
- return NewFlyteAdminErrorf(codes.AlreadyExists, errorMsg) //nolint
+ return NewFlyteAdminError(codes.AlreadyExists, errorMsg)
}
func NewWorkflowExistsDifferentStructureError(ctx context.Context, request *admin.WorkflowCreateRequest, oldSpec *core.CompiledWorkflowClosure, newSpec *core.CompiledWorkflowClosure) FlyteAdminError {
@@ -160,7 +160,7 @@ func NewWorkflowExistsDifferentStructureError(ctx context.Context, request *admi
})
if transformationErr != nil {
logger.Errorf(ctx, "Failed to wrap grpc status in type 'Error': %v", transformationErr)
- return NewFlyteAdminErrorf(codes.InvalidArgument, errorMsg) //nolint
+ return NewFlyteAdminError(codes.InvalidArgument, errorMsg)
}
return statusErr
}
@@ -176,7 +176,7 @@ func NewWorkflowExistsIdenticalStructureError(ctx context.Context, request *admi
})
if transformationErr != nil {
logger.Errorf(ctx, "Failed to wrap grpc status in type 'Error': %v", transformationErr)
- return NewFlyteAdminErrorf(codes.AlreadyExists, errorMsg) //nolint
+ return NewFlyteAdminError(codes.AlreadyExists, errorMsg)
}
return statusErr
}
@@ -189,12 +189,12 @@ func NewLaunchPlanExistsDifferentStructureError(ctx context.Context, request *ad
errorMsg += strings.Join(rs, "\n")
- return NewFlyteAdminErrorf(codes.InvalidArgument, errorMsg) //nolint
+ return NewFlyteAdminError(codes.InvalidArgument, errorMsg)
}
-func NewLaunchPlanExistsIdenticalStructureError(ctx context.Context, request *admin.LaunchPlanCreateRequest) FlyteAdminError {
+func NewLaunchPlanExistsIdenticalStructureError() FlyteAdminError {
errorMsg := "launch plan with identical structure already exists"
- return NewFlyteAdminErrorf(codes.AlreadyExists, errorMsg) //nolint
+ return NewFlyteAdminError(codes.AlreadyExists, errorMsg)
}
func IsDoesNotExistError(err error) bool {
@@ -209,12 +209,11 @@ func NewInactiveProjectError(ctx context.Context, id string) FlyteAdminError {
})
if transformationErr != nil {
logger.Errorf(ctx, "failed to wrap grpc status in type 'Error': %v", transformationErr)
- return NewFlyteAdminErrorf(codes.InvalidArgument, errMsg) //nolint
+ return NewFlyteAdminError(codes.InvalidArgument, errMsg)
}
return statusErr
}
func NewInvalidLiteralTypeError(name string, err error) FlyteAdminError {
- return NewFlyteAdminErrorf(codes.InvalidArgument,
- fmt.Sprintf("Failed to validate literal type for [%s] with err: %s", name, err)) //nolint
+ return NewFlyteAdminErrorf(codes.InvalidArgument, "Failed to validate literal type for [%s] with err: %s", name, err)
}
diff --git a/flyteadmin/pkg/errors/errors_test.go b/flyteadmin/pkg/errors/errors_test.go
index a72b4ce2ebf..fc0250a22ca 100644
--- a/flyteadmin/pkg/errors/errors_test.go
+++ b/flyteadmin/pkg/errors/errors_test.go
@@ -148,10 +148,7 @@ func TestNewTaskExistsDifferentStructureError(t *testing.T) {
}
func TestNewTaskExistsIdenticalStructureError(t *testing.T) {
- req := &admin.TaskCreateRequest{
- Id: &identifier,
- }
- statusErr := NewTaskExistsIdenticalStructureError(context.Background(), req)
+ statusErr := NewTaskExistsIdenticalStructureError()
assert.NotNil(t, statusErr)
s, ok := status.FromError(statusErr)
assert.True(t, ok)
@@ -293,10 +290,7 @@ func TestNewLaunchPlanExistsDifferentStructureError(t *testing.T) {
}
func TestNewLaunchPlanExistsIdenticalStructureError(t *testing.T) {
- req := &admin.LaunchPlanCreateRequest{
- Id: &identifier,
- }
- statusErr := NewLaunchPlanExistsIdenticalStructureError(context.Background(), req)
+ statusErr := NewLaunchPlanExistsIdenticalStructureError()
assert.NotNil(t, statusErr)
s, ok := status.FromError(statusErr)
assert.True(t, ok)
diff --git a/flyteadmin/pkg/executioncluster/mocks/cluster_interface.go b/flyteadmin/pkg/executioncluster/mocks/cluster_interface.go
index cfb21824149..6ef4838a373 100644
--- a/flyteadmin/pkg/executioncluster/mocks/cluster_interface.go
+++ b/flyteadmin/pkg/executioncluster/mocks/cluster_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -23,7 +23,7 @@ func (_m *ClusterInterface) EXPECT() *ClusterInterface_Expecter {
return &ClusterInterface_Expecter{mock: &_m.Mock}
}
-// GetAllTargets provides a mock function with given fields:
+// GetAllTargets provides a mock function with no fields
func (_m *ClusterInterface) GetAllTargets() map[string]*executioncluster.ExecutionTarget {
ret := _m.Called()
@@ -129,7 +129,7 @@ func (_c *ClusterInterface_GetTarget_Call) RunAndReturn(run func(context.Context
return _c
}
-// GetValidTargets provides a mock function with given fields:
+// GetValidTargets provides a mock function with no fields
func (_m *ClusterInterface) GetValidTargets() map[string]*executioncluster.ExecutionTarget {
ret := _m.Called()
diff --git a/flyteadmin/pkg/executioncluster/mocks/execution_target_provider.go b/flyteadmin/pkg/executioncluster/mocks/execution_target_provider.go
index 0382370cd5d..5f22a577421 100644
--- a/flyteadmin/pkg/executioncluster/mocks/execution_target_provider.go
+++ b/flyteadmin/pkg/executioncluster/mocks/execution_target_provider.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,10 +6,8 @@ import (
executioncluster "github.com/flyteorg/flyte/flyteadmin/pkg/executioncluster"
interfaces "github.com/flyteorg/flyte/flyteadmin/pkg/runtime/interfaces"
-
- mock "github.com/stretchr/testify/mock"
-
prometheus "github.com/prometheus/client_golang/prometheus"
+ mock "github.com/stretchr/testify/mock"
)
// ExecutionTargetProvider is an autogenerated mock type for the ExecutionTargetProvider type
diff --git a/flyteadmin/pkg/executioncluster/mocks/get_target_interface.go b/flyteadmin/pkg/executioncluster/mocks/get_target_interface.go
index e5828274a13..61867220855 100644
--- a/flyteadmin/pkg/executioncluster/mocks/get_target_interface.go
+++ b/flyteadmin/pkg/executioncluster/mocks/get_target_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/executioncluster/mocks/list_targets_interface.go b/flyteadmin/pkg/executioncluster/mocks/list_targets_interface.go
index 5ba6d79d98d..22b7fa0434b 100644
--- a/flyteadmin/pkg/executioncluster/mocks/list_targets_interface.go
+++ b/flyteadmin/pkg/executioncluster/mocks/list_targets_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -21,7 +21,7 @@ func (_m *ListTargetsInterface) EXPECT() *ListTargetsInterface_Expecter {
return &ListTargetsInterface_Expecter{mock: &_m.Mock}
}
-// GetAllTargets provides a mock function with given fields:
+// GetAllTargets provides a mock function with no fields
func (_m *ListTargetsInterface) GetAllTargets() map[string]*executioncluster.ExecutionTarget {
ret := _m.Called()
@@ -68,7 +68,7 @@ func (_c *ListTargetsInterface_GetAllTargets_Call) RunAndReturn(run func() map[s
return _c
}
-// GetValidTargets provides a mock function with given fields:
+// GetValidTargets provides a mock function with no fields
func (_m *ListTargetsInterface) GetValidTargets() map[string]*executioncluster.ExecutionTarget {
ret := _m.Called()
diff --git a/flyteadmin/pkg/manager/impl/description_entity_manager_test.go b/flyteadmin/pkg/manager/impl/description_entity_manager_test.go
index dbcab8bdb1f..09672d17e85 100644
--- a/flyteadmin/pkg/manager/impl/description_entity_manager_test.go
+++ b/flyteadmin/pkg/manager/impl/description_entity_manager_test.go
@@ -5,10 +5,12 @@ import (
"testing"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/mock"
"github.com/flyteorg/flyte/flyteadmin/pkg/manager/impl/testutils"
"github.com/flyteorg/flyte/flyteadmin/pkg/repositories/interfaces"
repositoryMocks "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/mocks"
+ "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/models"
runtimeInterfaces "github.com/flyteorg/flyte/flyteadmin/pkg/runtime/interfaces"
runtimeMocks "github.com/flyteorg/flyte/flyteadmin/pkg/runtime/mocks"
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
@@ -32,6 +34,17 @@ var badDescriptionEntityIdentifier = core.Identifier{
Version: version,
}
+var descriptionEntity = models.DescriptionEntity{
+ DescriptionEntityKey: models.DescriptionEntityKey{
+ ResourceType: core.ResourceType_TASK,
+ Project: project,
+ Domain: domain,
+ Name: name,
+ Version: version,
+ },
+ ShortDescription: "hello world",
+}
+
func getMockRepositoryForDETest() interfaces.Repository {
return repositoryMocks.NewMockRepository()
}
@@ -44,6 +57,8 @@ func getMockConfigForDETest() runtimeInterfaces.Configuration {
func TestDescriptionEntityManager_Get(t *testing.T) {
repository := getMockRepositoryForDETest()
+ descriptionEntityRepo := repository.DescriptionEntityRepo().(*repositoryMocks.DescriptionEntityRepoInterface)
+ descriptionEntityRepo.EXPECT().Get(mock.Anything, mock.Anything).Return(descriptionEntity, nil)
manager := NewDescriptionEntityManager(repository, getMockConfigForDETest(), mockScope.NewTestScope())
response, err := manager.GetDescriptionEntity(context.Background(), &admin.ObjectGetRequest{
@@ -104,6 +119,11 @@ func TestDescriptionEntityManager_List(t *testing.T) {
})
t.Run("list description entities in the task", func(t *testing.T) {
+ descriptionEntityRepo := repository.DescriptionEntityRepo().(*repositoryMocks.DescriptionEntityRepoInterface)
+ descriptionEntityRepo.EXPECT().List(mock.Anything, mock.Anything).Return(interfaces.DescriptionEntityCollectionOutput{
+ Entities: []models.DescriptionEntity{descriptionEntity},
+ }, nil)
+
response, err := manager.ListDescriptionEntity(context.Background(), &admin.DescriptionEntityListRequest{
ResourceType: core.ResourceType_TASK,
Id: &admin.NamedEntityIdentifier{
diff --git a/flyteadmin/pkg/manager/impl/execution_manager.go b/flyteadmin/pkg/manager/impl/execution_manager.go
index 214dfca1209..16c19675f4f 100644
--- a/flyteadmin/pkg/manager/impl/execution_manager.go
+++ b/flyteadmin/pkg/manager/impl/execution_manager.go
@@ -14,6 +14,7 @@ import (
"github.com/prometheus/client_golang/prometheus"
"golang.org/x/sync/errgroup"
"google.golang.org/grpc/codes"
+ k8svalidation "k8s.io/apimachinery/pkg/util/validation"
"github.com/flyteorg/flyte/flyteadmin/auth"
cloudeventInterfaces "github.com/flyteorg/flyte/flyteadmin/pkg/async/cloudevent/interfaces"
@@ -590,6 +591,8 @@ func (m *ExecutionManager) launchSingleTaskExecution(
annotations = executionConfig.GetAnnotations().GetValues()
}
+ annotations = m.addIdentityAnnotations(ctx, annotations)
+
var rawOutputDataConfig *admin.RawOutputDataConfig
if executionConfig.GetRawOutputDataConfig() != nil {
rawOutputDataConfig = executionConfig.GetRawOutputDataConfig()
@@ -1025,6 +1028,9 @@ func (m *ExecutionManager) launchExecution(
if err != nil {
return nil, nil, nil, err
}
+
+ annotations = m.addIdentityAnnotations(ctx, annotations)
+
var rawOutputDataConfig *admin.RawOutputDataConfig
if executionConfig.GetRawOutputDataConfig() != nil {
rawOutputDataConfig = executionConfig.GetRawOutputDataConfig()
@@ -1599,7 +1605,7 @@ func (m *ExecutionManager) CreateWorkflowEvent(ctx context.Context, request *adm
// Workflow executions are created in state "UNDEFINED". All the time up until a RUNNING event is received is
// considered system-induced delay.
if executionModel.Mode == int32(admin.ExecutionMetadata_SCHEDULED) {
- go m.emitScheduledWorkflowMetrics(ctx, executionModel, request.GetEvent().GetOccurredAt())
+ go m.emitScheduledWorkflowMetrics(ctx, executionModel, request.GetEvent().GetOccurredAt()) //nolint:gosec
}
} else if common.IsExecutionTerminal(request.GetEvent().GetPhase()) {
if request.GetEvent().GetPhase() == core.WorkflowExecution_FAILED {
@@ -1614,7 +1620,7 @@ func (m *ExecutionManager) CreateWorkflowEvent(ctx context.Context, request *adm
m.systemMetrics.ActiveExecutions.Dec()
m.systemMetrics.ExecutionsTerminated.Inc(contextutils.WithPhase(ctx, request.GetEvent().GetPhase().String()))
- go m.emitOverallWorkflowExecutionTime(executionModel, request.GetEvent().GetOccurredAt())
+ go m.emitOverallWorkflowExecutionTime(executionModel, request.GetEvent().GetOccurredAt()) //nolint:gosec
if request.GetEvent().GetOutputData() != nil {
m.userMetrics.WorkflowExecutionOutputBytes.Observe(float64(proto.Size(request.GetEvent().GetOutputData())))
}
@@ -1634,7 +1640,7 @@ func (m *ExecutionManager) CreateWorkflowEvent(ctx context.Context, request *adm
logger.Infof(ctx, "error publishing event [%+v] with err: [%v]", request.GetRequestId(), err)
}
- go func() {
+ go func() { //nolint:gosec
ceCtx := context.TODO()
if err := m.cloudEventPublisher.Publish(ceCtx, proto.MessageName(request), request); err != nil {
m.systemMetrics.PublishEventError.Inc()
@@ -2050,6 +2056,94 @@ func (m *ExecutionManager) addProjectLabels(ctx context.Context, projectName str
return initialLabels, nil
}
+// addIdentityAnnotations automatically injects identity information (user or app) as annotations when enabled in config.
+// This allows tracking which identity submitted each workflow execution and enables identity-based authorization.
+func (m *ExecutionManager) addIdentityAnnotations(ctx context.Context, initialAnnotations map[string]string) map[string]string {
+ // Check if identity annotation injection is enabled
+ if !m.config.ApplicationConfiguration().GetTopLevelConfig().GetInjectIdentityAnnotations() {
+ return initialAnnotations
+ }
+
+ // Get identity from authentication context
+ identityContext := auth.IdentityContextFromContext(ctx)
+
+ // Check if identity context is empty
+ if identityContext.IsEmpty() {
+ logger.Debugf(ctx, "No identity information found in context, skipping identity annotation injection")
+ return initialAnnotations
+ }
+
+ if initialAnnotations == nil {
+ initialAnnotations = make(map[string]string)
+ }
+
+ prefix := m.config.ApplicationConfiguration().GetTopLevelConfig().GetIdentityAnnotationPrefix()
+ // Validate prefix format using DNS1123 subdomain validation
+ if errs := k8svalidation.IsDNS1123Subdomain(prefix); len(errs) > 0 {
+ logger.Warnf(ctx, "Invalid identity annotation prefix '%s': %v. Skipping identity annotation injection.", prefix, errs)
+ return initialAnnotations
+ }
+
+ keys := m.config.ApplicationConfiguration().GetTopLevelConfig().GetIdentityAnnotationKeys()
+
+ // Determine if this is an app or user identity
+ isAppIdentity := identityContext.AppID() != ""
+ isUserIdentity := identityContext.UserInfo() != nil && !isAppIdentity
+
+ // Add annotations based on identity type
+ if isAppIdentity {
+ // Handle app-based identity
+ appID := identityContext.AppID()
+ for _, key := range keys {
+ annotationKey := fmt.Sprintf("%s/app-%s", prefix, key)
+ if _, exists := initialAnnotations[annotationKey]; exists {
+ logger.Debugf(ctx, "Identity annotation key %s already exists, skipping injection", annotationKey)
+ continue
+ }
+ var value string
+ switch key {
+ case "email", "sub", "id":
+ // For app identities, use the app ID for these fields
+ value = appID
+ default:
+ // Skip unknown keys for app identities
+ logger.Debugf(ctx, "Unknown identity annotation key '%s' for app identity, skipping", key)
+ continue
+ }
+ if value != "" {
+ initialAnnotations[annotationKey] = value
+ logger.Debugf(ctx, "Injected app identity annotation %s=%s", annotationKey, value)
+ }
+ }
+ } else if isUserIdentity {
+ // Handle user-based identity
+ userInfo := identityContext.UserInfo()
+ for _, key := range keys {
+ annotationKey := fmt.Sprintf("%s/user-%s", prefix, key)
+ if _, exists := initialAnnotations[annotationKey]; exists {
+ logger.Debugf(ctx, "Identity annotation key %s already exists, skipping injection", annotationKey)
+ continue
+ }
+ var value string
+ switch key {
+ case "email":
+ value = userInfo.GetEmail()
+ case "sub":
+ value = userInfo.GetSubject()
+ default:
+ // Skip unknown keys
+ logger.Debugf(ctx, "Unknown identity annotation key '%s' for user identity, skipping", key)
+ continue
+ }
+ if value != "" {
+ initialAnnotations[annotationKey] = value
+ logger.Debugf(ctx, "Injected user identity annotation %s=%s", annotationKey, value)
+ }
+ }
+ }
+ return initialAnnotations
+}
+
func addStateFilter(filters []common.InlineFilter) ([]common.InlineFilter, error) {
var stateFilterExists bool
for _, inlineFilter := range filters {
diff --git a/flyteadmin/pkg/manager/impl/execution_manager_test.go b/flyteadmin/pkg/manager/impl/execution_manager_test.go
index 7b0d4a3da7e..fb0eee2f8a9 100644
--- a/flyteadmin/pkg/manager/impl/execution_manager_test.go
+++ b/flyteadmin/pkg/manager/impl/execution_manager_test.go
@@ -34,7 +34,6 @@ import (
"github.com/flyteorg/flyte/flyteadmin/pkg/manager/impl/shared"
"github.com/flyteorg/flyte/flyteadmin/pkg/manager/impl/testutils"
managerInterfaces "github.com/flyteorg/flyte/flyteadmin/pkg/manager/interfaces"
- "github.com/flyteorg/flyte/flyteadmin/pkg/manager/mocks"
managerMocks "github.com/flyteorg/flyte/flyteadmin/pkg/manager/mocks"
"github.com/flyteorg/flyte/flyteadmin/pkg/repositories/interfaces"
repositoryMocks "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/mocks"
@@ -51,6 +50,7 @@ import (
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event"
+ "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
mockScope "github.com/flyteorg/flyte/flytestdlib/promutils"
"github.com/flyteorg/flyte/flytestdlib/storage"
)
@@ -1018,7 +1018,6 @@ func TestCreateExecutionInterruptible(t *testing.T) {
}
for _, tt := range tests {
- tt := tt
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
@@ -1107,7 +1106,6 @@ func TestCreateExecutionOverwriteCache(t *testing.T) {
}
for _, tt := range tests {
- tt := tt
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
@@ -1187,7 +1185,6 @@ func TestCreateExecutionWithEnvs(t *testing.T) {
}
for _, tt := range tests {
- tt := tt
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
@@ -4802,6 +4799,23 @@ func TestCreateSingleTaskExecution(t *testing.T) {
getMockWorkflowConfigProvider(), getMockWorkflowCompiler(), mockStorage,
storagePrefix, mockScope.NewTestScope())
namedEntityManager := NewNamedEntityManager(repository, getMockConfigForNETest(), mockScope.NewTestScope())
+ namedEntityRepo := repository.NamedEntityRepo().(*repositoryMocks.NamedEntityRepoInterface)
+ namedEntityRepo.EXPECT().
+ Get(mock.Anything, mock.Anything).
+ RunAndReturn(func(ctx context.Context, input interfaces.GetNamedEntityInput) (models.NamedEntity, error) {
+ return models.NamedEntity{
+ NamedEntityKey: models.NamedEntityKey{
+ ResourceType: input.ResourceType,
+ Project: input.Project,
+ Domain: input.Domain,
+ Name: input.Name,
+ },
+ NamedEntityMetadataFields: models.NamedEntityMetadataFields{
+ Description: "",
+ },
+ }, nil
+ })
+ namedEntityRepo.EXPECT().Update(mock.Anything, mock.Anything).Return(nil)
mockExecutor := workflowengineMocks.WorkflowExecutor{}
mockExecutor.EXPECT().Execute(mock.Anything, mock.Anything).Return(workflowengineInterfaces.ExecutionResponse{}, nil)
@@ -5871,7 +5885,7 @@ func TestGetClusterAssignment(t *testing.T) {
mockConfig := getMockExecutionsConfigProvider()
mockConfig.(*runtimeMocks.MockConfigurationProvider).AddClusterPoolAssignmentConfiguration(clusterPoolAsstProvider)
- resourceManager := mocks.ResourceInterface{}
+ resourceManager := managerMocks.ResourceInterface{}
resourceManager.EXPECT().GetResource(mock.Anything, mock.Anything).Return(nil, nil)
executionManager := ExecutionManager{
resourceManager: &resourceManager,
@@ -5900,7 +5914,7 @@ func TestGetClusterAssignment(t *testing.T) {
})
t.Run("no value in DB nor in config, takes value from request", func(t *testing.T) {
mockConfig := getMockExecutionsConfigProvider()
- resourceManager := mocks.ResourceInterface{}
+ resourceManager := managerMocks.ResourceInterface{}
resourceManager.EXPECT().GetResource(mock.Anything, mock.Anything).Return(nil, nil)
executionManager := ExecutionManager{
@@ -5929,7 +5943,7 @@ func TestGetClusterAssignment(t *testing.T) {
mockConfig := getMockExecutionsConfigProvider()
mockConfig.(*runtimeMocks.MockConfigurationProvider).AddClusterPoolAssignmentConfiguration(clusterPoolAsstProvider)
- resourceManager := mocks.ResourceInterface{}
+ resourceManager := managerMocks.ResourceInterface{}
resourceManager.EXPECT().GetResource(mock.Anything, mock.Anything).Return(nil, nil)
executionManager := ExecutionManager{
resourceManager: &resourceManager,
@@ -5963,7 +5977,7 @@ func TestGetClusterAssignment(t *testing.T) {
})
t.Run("db error", func(t *testing.T) {
expected := errors.New("fail db")
- resourceManager := mocks.ResourceInterface{}
+ resourceManager := managerMocks.ResourceInterface{}
resourceManager.EXPECT().GetResource(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context,
request managerInterfaces.ResourceRequest) (*managerInterfaces.ResourceResponse, error) {
assert.EqualValues(t, request, managerInterfaces.ResourceRequest{
@@ -6315,3 +6329,156 @@ func TestQueryTemplate(t *testing.T) {
assert.Error(t, err)
})
}
+
+func TestAddIdentityAnnotations(t *testing.T) {
+ principal := "test-user@example.com"
+ subject := "user-123-subject"
+ setupConfig := func(enabled bool, prefix string, keys []string) runtimeInterfaces.Configuration {
+ mockConfig := runtimeMocks.NewMockConfigurationProvider(
+ testutils.GetApplicationConfigWithDefaultDomains(), nil, nil, nil, nil, nil)
+ mockConfig.ApplicationConfiguration().GetTopLevelConfig().InjectIdentityAnnotations = enabled
+ mockConfig.ApplicationConfiguration().GetTopLevelConfig().IdentityAnnotationPrefix = prefix
+ mockConfig.ApplicationConfiguration().GetTopLevelConfig().IdentityAnnotationKeys = keys
+ return mockConfig
+ }
+
+ t.Run("user identity", func(t *testing.T) {
+ manager := ExecutionManager{config: setupConfig(true, "flyte.ai", []string{"email", "sub"})}
+ userInfo := &service.UserInfoResponse{Email: principal, Subject: subject}
+ identity, _ := auth.NewIdentityContext("", "user-id-123", "", time.Now(), sets.NewString(), userInfo, nil)
+ result := manager.addIdentityAnnotations(identity.WithContext(context.Background()), map[string]string{"existing": "value"})
+ assert.Equal(t, principal, result["flyte.ai/user-email"])
+ assert.Equal(t, subject, result["flyte.ai/user-sub"])
+ assert.Equal(t, "value", result["existing"])
+ })
+
+ t.Run("disabled", func(t *testing.T) {
+ manager := ExecutionManager{config: setupConfig(false, "flyte.ai", []string{"email", "sub"})}
+ userInfo := &service.UserInfoResponse{Email: principal, Subject: subject}
+ identity, _ := auth.NewIdentityContext("", "user-id-123", "", time.Now(), sets.NewString(), userInfo, nil)
+ result := manager.addIdentityAnnotations(identity.WithContext(context.Background()), map[string]string{"existing": "value"})
+ assert.NotContains(t, result, "flyte.ai/user-email")
+ assert.Equal(t, "value", result["existing"])
+ })
+
+ t.Run("no identity context", func(t *testing.T) {
+ manager := ExecutionManager{config: setupConfig(true, "flyte.ai", []string{"email", "sub"})}
+ result := manager.addIdentityAnnotations(context.Background(), map[string]string{"existing": "value"})
+ assert.NotContains(t, result, "flyte.ai/user-email")
+ assert.Equal(t, "value", result["existing"])
+ })
+
+ t.Run("nil annotations map", func(t *testing.T) {
+ manager := ExecutionManager{config: setupConfig(true, "flyte.ai", []string{"email", "sub"})}
+ userInfo := &service.UserInfoResponse{Email: principal, Subject: subject}
+ identity, _ := auth.NewIdentityContext("", "user-id-123", "", time.Now(), sets.NewString(), userInfo, nil)
+ result := manager.addIdentityAnnotations(identity.WithContext(context.Background()), nil)
+ assert.Equal(t, principal, result["flyte.ai/user-email"])
+ assert.Equal(t, subject, result["flyte.ai/user-sub"])
+ })
+
+ t.Run("annotation already exists", func(t *testing.T) {
+ manager := ExecutionManager{config: setupConfig(true, "flyte.ai", []string{"email", "sub"})}
+ userInfo := &service.UserInfoResponse{Email: principal, Subject: subject}
+ identity, _ := auth.NewIdentityContext("", "user-id-123", "", time.Now(), sets.NewString(), userInfo, nil)
+ result := manager.addIdentityAnnotations(identity.WithContext(context.Background()), map[string]string{"flyte.ai/user-email": "existing@example.com"})
+ assert.Equal(t, "existing@example.com", result["flyte.ai/user-email"])
+ assert.Equal(t, subject, result["flyte.ai/user-sub"])
+ })
+
+ t.Run("default prefix empty keys", func(t *testing.T) {
+ manager := ExecutionManager{config: setupConfig(true, "", nil)}
+ userInfo := &service.UserInfoResponse{Email: principal, Subject: subject}
+ identity, _ := auth.NewIdentityContext("", "user-id-123", "", time.Now(), sets.NewString(), userInfo, nil)
+ result := manager.addIdentityAnnotations(identity.WithContext(context.Background()), map[string]string{"existing": "value"})
+ assert.NotContains(t, result, "flyte.org/user-email")
+ assert.Equal(t, "value", result["existing"])
+ })
+
+ t.Run("app identity", func(t *testing.T) {
+ manager := ExecutionManager{config: setupConfig(true, "flyte.ai", []string{"email", "sub", "id"})}
+ identity, _ := auth.NewIdentityContext("", "", "app-123", time.Now(), sets.NewString(), nil, nil)
+ result := manager.addIdentityAnnotations(identity.WithContext(context.Background()), map[string]string{"existing": "value"})
+ assert.Equal(t, "app-123", result["flyte.ai/app-email"])
+ assert.Equal(t, "app-123", result["flyte.ai/app-sub"])
+ assert.Equal(t, "app-123", result["flyte.ai/app-id"])
+ })
+
+ t.Run("app identity annotation already exists", func(t *testing.T) {
+ manager := ExecutionManager{config: setupConfig(true, "flyte.ai", []string{"email", "sub", "id"})}
+ identity, _ := auth.NewIdentityContext("", "", "app-123", time.Now(), sets.NewString(), nil, nil)
+ result := manager.addIdentityAnnotations(identity.WithContext(context.Background()), map[string]string{"flyte.ai/app-email": "existing-app@example.com"})
+ assert.Equal(t, "existing-app@example.com", result["flyte.ai/app-email"])
+ assert.Equal(t, "app-123", result["flyte.ai/app-sub"])
+ assert.Equal(t, "app-123", result["flyte.ai/app-id"])
+ })
+
+ t.Run("app identity unknown key", func(t *testing.T) {
+ manager := ExecutionManager{config: setupConfig(true, "flyte.ai", []string{"email", "unknown-key"})}
+ identity, _ := auth.NewIdentityContext("", "", "app-123", time.Now(), sets.NewString(), nil, nil)
+ result := manager.addIdentityAnnotations(identity.WithContext(context.Background()), map[string]string{"existing": "value"})
+ assert.Equal(t, "app-123", result["flyte.ai/app-email"])
+ assert.NotContains(t, result, "flyte.ai/app-unknown-key")
+ })
+
+ t.Run("unknown key", func(t *testing.T) {
+ manager := ExecutionManager{config: setupConfig(true, "flyte.ai", []string{"email", "unknown-key"})}
+ userInfo := &service.UserInfoResponse{Email: principal, Subject: subject}
+ identity, _ := auth.NewIdentityContext("", "user-id-123", "", time.Now(), sets.NewString(), userInfo, nil)
+ result := manager.addIdentityAnnotations(identity.WithContext(context.Background()), map[string]string{"existing": "value"})
+ assert.Equal(t, principal, result["flyte.ai/user-email"])
+ assert.NotContains(t, result, "flyte.ai/user-unknown-key")
+ })
+
+ t.Run("invalid prefix", func(t *testing.T) {
+ for _, prefix := range []string{"Flyte.ai", "flyte_ai"} {
+ manager := ExecutionManager{config: setupConfig(true, prefix, []string{"email", "sub"})}
+ userInfo := &service.UserInfoResponse{Email: principal, Subject: subject}
+ identity, _ := auth.NewIdentityContext("", "user-id-123", "", time.Now(), sets.NewString(), userInfo, nil)
+ result := manager.addIdentityAnnotations(identity.WithContext(context.Background()), map[string]string{"existing": "value"})
+ assert.NotContains(t, result, prefix+"/user-email")
+ assert.Equal(t, "value", result["existing"])
+ }
+ })
+
+ t.Run("empty value", func(t *testing.T) {
+ manager := ExecutionManager{config: setupConfig(true, "flyte.ai", []string{"email", "sub"})}
+ userInfo := &service.UserInfoResponse{Email: "", Subject: ""}
+ identity, _ := auth.NewIdentityContext("", "", "", time.Now(), sets.NewString(), userInfo, nil)
+ result := manager.addIdentityAnnotations(identity.WithContext(context.Background()), map[string]string{"existing": "value"})
+ assert.NotContains(t, result, "flyte.ai/user-email")
+ assert.Equal(t, "value", result["existing"])
+ })
+
+ t.Run("app takes precedence", func(t *testing.T) {
+ manager := ExecutionManager{config: setupConfig(true, "flyte.ai", []string{"email", "sub", "id"})}
+ userInfo := &service.UserInfoResponse{Email: principal, Subject: subject}
+ identity, _ := auth.NewIdentityContext("", "user-id-123", "app-456", time.Now(), sets.NewString(), userInfo, nil)
+ result := manager.addIdentityAnnotations(identity.WithContext(context.Background()), map[string]string{"existing": "value"})
+ assert.Equal(t, "app-456", result["flyte.ai/app-email"])
+ assert.NotContains(t, result, "flyte.ai/user-email")
+ })
+
+ t.Run("empty keys slice", func(t *testing.T) {
+ manager := ExecutionManager{config: setupConfig(true, "flyte.ai", []string{})}
+ userInfo := &service.UserInfoResponse{Email: principal, Subject: subject}
+ identity, _ := auth.NewIdentityContext("", "user-id-123", "", time.Now(), sets.NewString(), userInfo, nil)
+ result := manager.addIdentityAnnotations(identity.WithContext(context.Background()), map[string]string{"existing": "value"})
+ assert.NotContains(t, result, "flyte.ai/user-email")
+ assert.Equal(t, "value", result["existing"])
+ })
+
+ t.Run("neither app nor user identity", func(t *testing.T) {
+ // Test case where identity context is not empty but neither app nor user identity is true
+ // This can happen if there's an execution identity but no app ID or user info
+ manager := ExecutionManager{config: setupConfig(true, "flyte.ai", []string{"email", "sub"})}
+ // Create identity with execution identity but no app ID or user info
+ identity, _ := auth.NewIdentityContext("exec-identity-123", "", "", time.Now(), sets.NewString(), nil, nil)
+ result := manager.addIdentityAnnotations(identity.WithContext(context.Background()), map[string]string{"existing": "value"})
+ // Should return original annotations unchanged since neither app nor user identity is true
+ assert.NotContains(t, result, "flyte.ai/user-email")
+ assert.NotContains(t, result, "flyte.ai/app-email")
+ assert.Equal(t, "value", result["existing"])
+ })
+
+}
diff --git a/flyteadmin/pkg/manager/impl/launch_plan_manager.go b/flyteadmin/pkg/manager/impl/launch_plan_manager.go
index b1d0d8d56da..77cefd48434 100644
--- a/flyteadmin/pkg/manager/impl/launch_plan_manager.go
+++ b/flyteadmin/pkg/manager/impl/launch_plan_manager.go
@@ -88,7 +88,7 @@ func (m *LaunchPlanManager) CreateLaunchPlan(
existingLaunchPlanModel, err := util.GetLaunchPlanModel(ctx, m.db, request.GetId())
if err == nil {
if bytes.Equal(existingLaunchPlanModel.Digest, launchPlanDigest) {
- return nil, errors.NewLaunchPlanExistsIdenticalStructureError(ctx, request)
+ return nil, errors.NewLaunchPlanExistsIdenticalStructureError()
}
existingLaunchPlan, transformerErr := transformers.FromLaunchPlanModel(existingLaunchPlanModel)
if transformerErr != nil {
diff --git a/flyteadmin/pkg/manager/impl/named_entity_manager_test.go b/flyteadmin/pkg/manager/impl/named_entity_manager_test.go
index 0d009753c89..d92eb675cc4 100644
--- a/flyteadmin/pkg/manager/impl/named_entity_manager_test.go
+++ b/flyteadmin/pkg/manager/impl/named_entity_manager_test.go
@@ -5,6 +5,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/mock"
"github.com/flyteorg/flyte/flyteadmin/pkg/manager/impl/testutils"
"github.com/flyteorg/flyte/flyteadmin/pkg/repositories/interfaces"
@@ -43,26 +44,28 @@ func TestNamedEntityManager_Get(t *testing.T) {
repository := getMockRepositoryForNETest()
manager := NewNamedEntityManager(repository, getMockConfigForNETest(), mockScope.NewTestScope())
- getFunction := func(input interfaces.GetNamedEntityInput) (models.NamedEntity, error) {
- return models.NamedEntity{
- NamedEntityKey: models.NamedEntityKey{
- ResourceType: input.ResourceType,
- Project: input.Project,
- Domain: input.Domain,
- Name: input.Name,
- },
- NamedEntityMetadataFields: models.NamedEntityMetadataFields{
- Description: description,
- },
- }, nil
+ result := models.NamedEntity{
+ NamedEntityKey: models.NamedEntityKey{
+ ResourceType: resourceType,
+ Project: namedEntityIdentifier.GetProject(),
+ Domain: namedEntityIdentifier.GetDomain(),
+ Name: namedEntityIdentifier.GetName(),
+ },
+ NamedEntityMetadataFields: models.NamedEntityMetadataFields{
+ Description: description,
+ },
}
- repository.NamedEntityRepo().(*repositoryMocks.MockNamedEntityRepo).SetGetCallback(getFunction)
+
+ namedEntityRepo := repository.NamedEntityRepo().(*repositoryMocks.NamedEntityRepoInterface)
+ namedEntityRepo.EXPECT().Get(mock.Anything, mock.Anything).Return(result, nil)
+
response, err := manager.GetNamedEntity(context.Background(), &admin.NamedEntityGetRequest{
ResourceType: resourceType,
Id: &namedEntityIdentifier,
})
assert.NoError(t, err)
assert.NotNil(t, response)
+ namedEntityRepo.AssertExpectations(t)
}
func TestNamedEntityManager_Get_BadRequest(t *testing.T) {
@@ -105,19 +108,27 @@ func TestNamedEntityManager_getQueryFilters(t *testing.T) {
func TestNamedEntityManager_Update(t *testing.T) {
repository := getMockRepositoryForNETest()
manager := NewNamedEntityManager(repository, getMockConfigForNETest(), mockScope.NewTestScope())
+
updatedDescription := "updated description"
- var updateCalled bool
-
- updateFunction := func(input models.NamedEntity) error {
- updateCalled = true
- assert.Equal(t, input.Description, updatedDescription)
- assert.Equal(t, input.ResourceType, resourceType)
- assert.Equal(t, input.Project, project)
- assert.Equal(t, input.Domain, domain)
- assert.Equal(t, input.Name, name)
- return nil
+ expectedState := int32(0)
+
+ expectedInput := models.NamedEntity{
+ NamedEntityKey: models.NamedEntityKey{
+ ResourceType: resourceType,
+ Project: project,
+ Domain: domain,
+ Name: name,
+ },
+ NamedEntityMetadataFields: models.NamedEntityMetadataFields{
+ Description: updatedDescription,
+ State: &expectedState,
+ },
}
- repository.NamedEntityRepo().(*repositoryMocks.MockNamedEntityRepo).SetUpdateCallback(updateFunction)
+
+ namedEntityRepo := repository.NamedEntityRepo().(*repositoryMocks.NamedEntityRepoInterface)
+ namedEntityRepo.EXPECT().Get(mock.Anything, mock.Anything).Return(models.NamedEntity{}, nil)
+ namedEntityRepo.EXPECT().Update(mock.Anything, expectedInput).Return(nil)
+
updatedMetadata := admin.NamedEntityMetadata{
Description: updatedDescription,
}
@@ -126,9 +137,9 @@ func TestNamedEntityManager_Update(t *testing.T) {
ResourceType: resourceType,
Id: &namedEntityIdentifier,
})
- assert.True(t, updateCalled)
assert.NoError(t, err)
assert.NotNil(t, response)
+ namedEntityRepo.AssertExpectations(t)
}
func TestNamedEntityManager_Update_BadRequest(t *testing.T) {
diff --git a/flyteadmin/pkg/manager/impl/node_execution_manager.go b/flyteadmin/pkg/manager/impl/node_execution_manager.go
index 82e51bec9b5..c8108fce414 100644
--- a/flyteadmin/pkg/manager/impl/node_execution_manager.go
+++ b/flyteadmin/pkg/manager/impl/node_execution_manager.go
@@ -219,11 +219,9 @@ func (m *NodeExecutionManager) CreateNodeEvent(ctx context.Context, request *adm
if err != nil {
m.metrics.MissingWorkflowExecution.Inc()
logger.Debugf(ctx, "Failed to find existing execution with id [%+v] with err: %v", executionID, err)
- if err != nil {
- if ferr, ok := err.(errors.FlyteAdminError); ok {
- return nil, errors.NewFlyteAdminErrorf(ferr.Code(),
- "Failed to get existing execution id: [%+v] with err: %v", executionID, err)
- }
+ if ferr, ok := err.(errors.FlyteAdminError); ok {
+ return nil, errors.NewFlyteAdminErrorf(ferr.Code(),
+ "Failed to get existing execution id: [%+v] with err: %v", executionID, err)
}
return nil, fmt.Errorf("failed to get existing execution id: [%+v]", executionID)
}
@@ -288,7 +286,7 @@ func (m *NodeExecutionManager) CreateNodeEvent(ctx context.Context, request *adm
logger.Infof(ctx, "error publishing event [%+v] with err: [%v]", request.GetRequestId(), err)
}
- go func() {
+ go func() { //nolint:gosec
ceCtx := context.TODO()
if err := m.cloudEventPublisher.Publish(ceCtx, proto.MessageName(request), request); err != nil {
logger.Infof(ctx, "error publishing cloud event [%+v] with err: [%v]", request.GetRequestId(), err)
diff --git a/flyteadmin/pkg/manager/impl/task_execution_manager.go b/flyteadmin/pkg/manager/impl/task_execution_manager.go
index 801d612ab2a..a4a8ab35740 100644
--- a/flyteadmin/pkg/manager/impl/task_execution_manager.go
+++ b/flyteadmin/pkg/manager/impl/task_execution_manager.go
@@ -206,7 +206,7 @@ func (m *TaskExecutionManager) CreateTaskExecutionEvent(ctx context.Context, req
logger.Infof(ctx, "error publishing event [%+v] with err: [%v]", request.GetRequestId(), err)
}
- go func() {
+ go func() { //nolint:gosec
ceCtx := context.TODO()
if err := m.cloudEventsPublisher.Publish(ceCtx, proto.MessageName(request), request); err != nil {
logger.Errorf(ctx, "error publishing cloud event [%+v] with err: [%v]", request.GetRequestId(), err)
diff --git a/flyteadmin/pkg/manager/impl/task_manager.go b/flyteadmin/pkg/manager/impl/task_manager.go
index c5735fe406b..94205d9cf67 100644
--- a/flyteadmin/pkg/manager/impl/task_manager.go
+++ b/flyteadmin/pkg/manager/impl/task_manager.go
@@ -122,7 +122,7 @@ func (t *TaskManager) CreateTask(
return nil, fetchErr
}
if bytes.Equal(taskDigest, existingTaskModel.Digest) {
- return nil, errors.NewTaskExistsIdenticalStructureError(ctx, request)
+ return nil, errors.NewTaskExistsIdenticalStructureError()
}
existingTask, transformerErr := transformers.FromTaskModel(*existingTaskModel)
if transformerErr != nil {
diff --git a/flyteadmin/pkg/manager/impl/task_manager_test.go b/flyteadmin/pkg/manager/impl/task_manager_test.go
index b0f36b7e487..f7f742ea7ac 100644
--- a/flyteadmin/pkg/manager/impl/task_manager_test.go
+++ b/flyteadmin/pkg/manager/impl/task_manager_test.go
@@ -8,6 +8,7 @@ import (
"github.com/golang/protobuf/proto"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/mock"
"google.golang.org/grpc/codes"
"github.com/flyteorg/flyte/flyteadmin/pkg/common"
@@ -82,10 +83,10 @@ func TestCreateTask(t *testing.T) {
createCalled = true
return nil
})
- mockRepository.DescriptionEntityRepo().(*repositoryMocks.MockDescriptionEntityRepo).SetGetCallback(
- func(input interfaces.GetDescriptionEntityInput) (models.DescriptionEntity, error) {
- return models.DescriptionEntity{}, adminErrors.NewFlyteAdminErrorf(codes.NotFound, "NotFound")
- })
+ descriptionEntityRepo := mockRepository.DescriptionEntityRepo().(*repositoryMocks.DescriptionEntityRepoInterface)
+ descriptionEntityRepo.EXPECT().
+ Get(mock.Anything, mock.Anything).
+ Return(models.DescriptionEntity{}, adminErrors.NewFlyteAdminErrorf(codes.NotFound, "NotFound"))
taskManager := NewTaskManager(mockRepository, getMockConfigForTaskTest(), getMockTaskCompiler(),
mockScope.NewTestScope())
request := testutils.GetValidTaskRequest()
diff --git a/flyteadmin/pkg/manager/impl/util/shared_test.go b/flyteadmin/pkg/manager/impl/util/shared_test.go
index 3987d1549a6..4a4084a6502 100644
--- a/flyteadmin/pkg/manager/impl/util/shared_test.go
+++ b/flyteadmin/pkg/manager/impl/util/shared_test.go
@@ -364,24 +364,26 @@ func TestGetLaunchPlan_TransformerError(t *testing.T) {
func TestGetNamedEntityModel(t *testing.T) {
repository := repositoryMocks.NewMockRepository()
- getNamedEntityFunc := func(input interfaces.GetNamedEntityInput) (models.NamedEntity, error) {
- assert.Equal(t, project, input.Project)
- assert.Equal(t, domain, input.Domain)
- assert.Equal(t, name, input.Name)
- assert.Equal(t, resourceType, input.ResourceType)
- return models.NamedEntity{
- NamedEntityKey: models.NamedEntityKey{
- Project: input.Project,
- Domain: input.Domain,
- Name: input.Name,
- ResourceType: input.ResourceType,
- },
- NamedEntityMetadataFields: models.NamedEntityMetadataFields{
- Description: description,
- },
- }, nil
- }
- repository.NamedEntityRepo().(*repositoryMocks.MockNamedEntityRepo).SetGetCallback(getNamedEntityFunc)
+ namedEntityRepo := repository.NamedEntityRepo().(*repositoryMocks.NamedEntityRepoInterface)
+ namedEntityRepo.EXPECT().
+ Get(mock.Anything, mock.Anything).
+ RunAndReturn(func(ctx context.Context, input interfaces.GetNamedEntityInput) (models.NamedEntity, error) {
+ assert.Equal(t, project, input.Project)
+ assert.Equal(t, domain, input.Domain)
+ assert.Equal(t, name, input.Name)
+ assert.Equal(t, resourceType, input.ResourceType)
+ return models.NamedEntity{
+ NamedEntityKey: models.NamedEntityKey{
+ ResourceType: input.ResourceType,
+ Project: input.Project,
+ Domain: input.Domain,
+ Name: input.Name,
+ },
+ NamedEntityMetadataFields: models.NamedEntityMetadataFields{
+ Description: description,
+ },
+ }, nil
+ })
entity, err := GetNamedEntityModel(context.Background(), repository,
core.ResourceType_WORKFLOW,
&admin.NamedEntityIdentifier{
@@ -400,10 +402,10 @@ func TestGetNamedEntityModel(t *testing.T) {
func TestGetNamedEntityModel_DatabaseError(t *testing.T) {
repository := repositoryMocks.NewMockRepository()
- getNamedEntityFunc := func(input interfaces.GetNamedEntityInput) (models.NamedEntity, error) {
- return models.NamedEntity{}, errExpected
- }
- repository.NamedEntityRepo().(*repositoryMocks.MockNamedEntityRepo).SetGetCallback(getNamedEntityFunc)
+ namedEntityRepo := repository.NamedEntityRepo().(*repositoryMocks.NamedEntityRepoInterface)
+ namedEntityRepo.EXPECT().
+ Get(mock.Anything, mock.Anything).
+ Return(models.NamedEntity{}, errExpected)
launchPlan, err := GetNamedEntityModel(context.Background(), repository,
core.ResourceType_WORKFLOW,
&admin.NamedEntityIdentifier{
@@ -417,24 +419,26 @@ func TestGetNamedEntityModel_DatabaseError(t *testing.T) {
func TestGetNamedEntity(t *testing.T) {
repository := repositoryMocks.NewMockRepository()
- getNamedEntityFunc := func(input interfaces.GetNamedEntityInput) (models.NamedEntity, error) {
- assert.Equal(t, project, input.Project)
- assert.Equal(t, domain, input.Domain)
- assert.Equal(t, name, input.Name)
- assert.Equal(t, resourceType, input.ResourceType)
- return models.NamedEntity{
- NamedEntityKey: models.NamedEntityKey{
- Project: input.Project,
- Domain: input.Domain,
- Name: input.Name,
- ResourceType: core.ResourceType_WORKFLOW,
- },
- NamedEntityMetadataFields: models.NamedEntityMetadataFields{
- Description: description,
- },
- }, nil
- }
- repository.NamedEntityRepo().(*repositoryMocks.MockNamedEntityRepo).SetGetCallback(getNamedEntityFunc)
+ namedEntityRepo := repository.NamedEntityRepo().(*repositoryMocks.NamedEntityRepoInterface)
+ namedEntityRepo.EXPECT().
+ Get(mock.Anything, mock.Anything).
+ RunAndReturn(func(ctx context.Context, input interfaces.GetNamedEntityInput) (models.NamedEntity, error) {
+ assert.Equal(t, project, input.Project)
+ assert.Equal(t, domain, input.Domain)
+ assert.Equal(t, name, input.Name)
+ assert.Equal(t, resourceType, input.ResourceType)
+ return models.NamedEntity{
+ NamedEntityKey: models.NamedEntityKey{
+ ResourceType: core.ResourceType_WORKFLOW,
+ Project: input.Project,
+ Domain: input.Domain,
+ Name: input.Name,
+ },
+ NamedEntityMetadataFields: models.NamedEntityMetadataFields{
+ Description: description,
+ },
+ }, nil
+ })
entity, err := GetNamedEntity(context.Background(), repository,
core.ResourceType_WORKFLOW,
&admin.NamedEntityIdentifier{
@@ -569,8 +573,20 @@ func TestGetMatchableResource(t *testing.T) {
}
func TestGetDescriptionEntityModel(t *testing.T) {
- repository := repositoryMocks.NewMockRepository()
+
t.Run("Get Description Entity model", func(t *testing.T) {
+ repository := repositoryMocks.NewMockRepository()
+ descriptionEntityRepo := repository.DescriptionEntityRepo().(*repositoryMocks.DescriptionEntityRepoInterface)
+ descriptionEntityRepo.EXPECT().Get(mock.Anything, mock.Anything).Return(models.DescriptionEntity{
+ DescriptionEntityKey: models.DescriptionEntityKey{
+ ResourceType: core.ResourceType_TASK,
+ Project: project,
+ Domain: domain,
+ Name: name,
+ Version: version,
+ },
+ ShortDescription: "hello world",
+ }, nil)
entity, err := GetDescriptionEntityModel(context.Background(), repository,
&core.Identifier{
ResourceType: core.ResourceType_TASK,
@@ -585,10 +601,11 @@ func TestGetDescriptionEntityModel(t *testing.T) {
})
t.Run("Failed to get DescriptionEntity model", func(t *testing.T) {
- getFunction := func(input interfaces.GetDescriptionEntityInput) (models.DescriptionEntity, error) {
- return models.DescriptionEntity{}, flyteAdminErrors.NewFlyteAdminErrorf(codes.NotFound, "NotFound")
- }
- repository.DescriptionEntityRepo().(*repositoryMocks.MockDescriptionEntityRepo).SetGetCallback(getFunction)
+ repository := repositoryMocks.NewMockRepository()
+ descriptionEntityRepo := repository.DescriptionEntityRepo().(*repositoryMocks.DescriptionEntityRepoInterface)
+ descriptionEntityRepo.EXPECT().
+ Get(mock.Anything, mock.Anything).
+ Return(models.DescriptionEntity{}, flyteAdminErrors.NewFlyteAdminErrorf(codes.NotFound, "NotFound"))
entity, err := GetDescriptionEntityModel(context.Background(), repository,
&core.Identifier{
ResourceType: core.ResourceType_TASK,
@@ -603,8 +620,19 @@ func TestGetDescriptionEntityModel(t *testing.T) {
}
func TestGetDescriptionEntity(t *testing.T) {
- repository := repositoryMocks.NewMockRepository()
t.Run("Get Description Entity", func(t *testing.T) {
+ repository := repositoryMocks.NewMockRepository()
+ descriptionEntityRepo := repository.DescriptionEntityRepo().(*repositoryMocks.DescriptionEntityRepoInterface)
+ descriptionEntityRepo.EXPECT().Get(mock.Anything, mock.Anything).Return(models.DescriptionEntity{
+ DescriptionEntityKey: models.DescriptionEntityKey{
+ ResourceType: core.ResourceType_TASK,
+ Project: project,
+ Domain: domain,
+ Name: name,
+ Version: version,
+ },
+ ShortDescription: "hello world",
+ }, nil)
entity, err := GetDescriptionEntity(context.Background(), repository,
&core.Identifier{
ResourceType: core.ResourceType_TASK,
@@ -619,10 +647,11 @@ func TestGetDescriptionEntity(t *testing.T) {
})
t.Run("Failed to get DescriptionEntity", func(t *testing.T) {
- getFunction := func(input interfaces.GetDescriptionEntityInput) (models.DescriptionEntity, error) {
- return models.DescriptionEntity{}, flyteAdminErrors.NewFlyteAdminErrorf(codes.NotFound, "NotFound")
- }
- repository.DescriptionEntityRepo().(*repositoryMocks.MockDescriptionEntityRepo).SetGetCallback(getFunction)
+ repository := repositoryMocks.NewMockRepository()
+ descriptionEntityRepo := repository.DescriptionEntityRepo().(*repositoryMocks.DescriptionEntityRepoInterface)
+ descriptionEntityRepo.EXPECT().
+ Get(mock.Anything, mock.Anything).
+ Return(models.DescriptionEntity{}, flyteAdminErrors.NewFlyteAdminErrorf(codes.NotFound, "NotFound"))
entity, err := GetDescriptionEntity(context.Background(), repository,
&core.Identifier{
ResourceType: core.ResourceType_TASK,
@@ -634,10 +663,11 @@ func TestGetDescriptionEntity(t *testing.T) {
assert.Error(t, err)
assert.Nil(t, entity)
- getFunction = func(input interfaces.GetDescriptionEntityInput) (models.DescriptionEntity, error) {
- return models.DescriptionEntity{LongDescription: []byte("???")}, nil
- }
- repository.DescriptionEntityRepo().(*repositoryMocks.MockDescriptionEntityRepo).SetGetCallback(getFunction)
+ // Reset mock
+ descriptionEntityRepo.ExpectedCalls = descriptionEntityRepo.ExpectedCalls[:0]
+ descriptionEntityRepo.EXPECT().
+ Get(mock.Anything, mock.Anything).
+ Return(models.DescriptionEntity{LongDescription: []byte("???")}, nil)
entity, err = GetDescriptionEntity(context.Background(), repository,
&core.Identifier{
ResourceType: core.ResourceType_TASK,
diff --git a/flyteadmin/pkg/manager/impl/validation/validation.go b/flyteadmin/pkg/manager/impl/validation/validation.go
index 03bc8f963df..54c5cc37b00 100644
--- a/flyteadmin/pkg/manager/impl/validation/validation.go
+++ b/flyteadmin/pkg/manager/impl/validation/validation.go
@@ -340,14 +340,14 @@ func ValidateOutputData(outputData *core.LiteralMap, maxSizeInBytes int64) error
func ValidateDatetime(literal *core.Literal) error {
if literal == nil {
- return errors.NewFlyteAdminErrorf(codes.InvalidArgument, "Found invalid nil datetime")
+ return errors.NewFlyteAdminError(codes.InvalidArgument, "Found invalid nil datetime")
}
timestamp := literal.GetScalar().GetPrimitive().GetDatetime()
err := timestamp.CheckValid()
if err != nil {
- return errors.NewFlyteAdminErrorf(codes.InvalidArgument, err.Error()) //nolint
+ return errors.NewFlyteAdminError(codes.InvalidArgument, err.Error()) //nolint
}
return nil
}
diff --git a/flyteadmin/pkg/manager/mocks/execution_interface.go b/flyteadmin/pkg/manager/mocks/execution_interface.go
index c9ad4ca18c6..a436ffdc3b0 100644
--- a/flyteadmin/pkg/manager/mocks/execution_interface.go
+++ b/flyteadmin/pkg/manager/mocks/execution_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -7,9 +7,9 @@ import (
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
- mock "github.com/stretchr/testify/mock"
-
time "time"
+
+ mock "github.com/stretchr/testify/mock"
)
// ExecutionInterface is an autogenerated mock type for the ExecutionInterface type
diff --git a/flyteadmin/pkg/manager/mocks/launch_plan_interface.go b/flyteadmin/pkg/manager/mocks/launch_plan_interface.go
index f75256350f3..1cf156d2ac0 100644
--- a/flyteadmin/pkg/manager/mocks/launch_plan_interface.go
+++ b/flyteadmin/pkg/manager/mocks/launch_plan_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/manager/mocks/metrics_interface.go b/flyteadmin/pkg/manager/mocks/metrics_interface.go
index a098a1e062f..6895d3bd6b8 100644
--- a/flyteadmin/pkg/manager/mocks/metrics_interface.go
+++ b/flyteadmin/pkg/manager/mocks/metrics_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/manager/mocks/named_entity_interface.go b/flyteadmin/pkg/manager/mocks/named_entity_interface.go
index a71e10da075..8dd34a1ff02 100644
--- a/flyteadmin/pkg/manager/mocks/named_entity_interface.go
+++ b/flyteadmin/pkg/manager/mocks/named_entity_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/manager/mocks/node_execution_interface.go b/flyteadmin/pkg/manager/mocks/node_execution_interface.go
index 54858c7c256..440e4c029e0 100644
--- a/flyteadmin/pkg/manager/mocks/node_execution_interface.go
+++ b/flyteadmin/pkg/manager/mocks/node_execution_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/manager/mocks/project_interface.go b/flyteadmin/pkg/manager/mocks/project_interface.go
index e6322260f85..02ad47edb2b 100644
--- a/flyteadmin/pkg/manager/mocks/project_interface.go
+++ b/flyteadmin/pkg/manager/mocks/project_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/manager/mocks/resource_interface.go b/flyteadmin/pkg/manager/mocks/resource_interface.go
index c99378d29f1..065496b72d7 100644
--- a/flyteadmin/pkg/manager/mocks/resource_interface.go
+++ b/flyteadmin/pkg/manager/mocks/resource_interface.go
@@ -1,14 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
interfaces "github.com/flyteorg/flyte/flyteadmin/pkg/manager/interfaces"
-
+ admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
mock "github.com/stretchr/testify/mock"
)
diff --git a/flyteadmin/pkg/manager/mocks/signal_interface.go b/flyteadmin/pkg/manager/mocks/signal_interface.go
index ef625a64b21..11ea11ba0ed 100644
--- a/flyteadmin/pkg/manager/mocks/signal_interface.go
+++ b/flyteadmin/pkg/manager/mocks/signal_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/manager/mocks/task_execution_interface.go b/flyteadmin/pkg/manager/mocks/task_execution_interface.go
index a536e2e1683..804ecab3fc2 100644
--- a/flyteadmin/pkg/manager/mocks/task_execution_interface.go
+++ b/flyteadmin/pkg/manager/mocks/task_execution_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/manager/mocks/task_interface.go b/flyteadmin/pkg/manager/mocks/task_interface.go
index 520b555d5fd..857e465a23c 100644
--- a/flyteadmin/pkg/manager/mocks/task_interface.go
+++ b/flyteadmin/pkg/manager/mocks/task_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/manager/mocks/version_interface.go b/flyteadmin/pkg/manager/mocks/version_interface.go
index cfde7991960..3be9e2dc7e8 100644
--- a/flyteadmin/pkg/manager/mocks/version_interface.go
+++ b/flyteadmin/pkg/manager/mocks/version_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/manager/mocks/workflow_interface.go b/flyteadmin/pkg/manager/mocks/workflow_interface.go
index 5b4c2bf2007..084bf1fc81a 100644
--- a/flyteadmin/pkg/manager/mocks/workflow_interface.go
+++ b/flyteadmin/pkg/manager/mocks/workflow_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteadmin/pkg/repositories/database_integration_test.go b/flyteadmin/pkg/repositories/database_integration_test.go
index b8066754b2e..114249593d0 100644
--- a/flyteadmin/pkg/repositories/database_integration_test.go
+++ b/flyteadmin/pkg/repositories/database_integration_test.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
package repositories
diff --git a/flyteadmin/pkg/repositories/errors/postgres.go b/flyteadmin/pkg/repositories/errors/postgres.go
index 3993e140c16..8e633a435cf 100644
--- a/flyteadmin/pkg/repositories/errors/postgres.go
+++ b/flyteadmin/pkg/repositories/errors/postgres.go
@@ -14,8 +14,7 @@ import (
"fmt"
"reflect"
- "github.com/jackc/pgconn"
- pgxPgconn "github.com/jackc/pgx/v5/pgconn"
+ "github.com/jackc/pgx/v5/pgconn"
"github.com/prometheus/client_golang/prometheus"
"google.golang.org/grpc/codes"
"gorm.io/gorm"
@@ -72,8 +71,6 @@ func (p *postgresErrorTransformer) ToFlyteAdminError(err error) flyteAdminErrors
// Try things both ways, the two pgconns are different types.
if pqError, ok := err.(*pgconn.PgError); ok {
return p.flyteAdminErrorFromCode(pqError.Code, pqError.Message)
- } else if pqError, ok := err.(*pgxPgconn.PgError); ok {
- return p.flyteAdminErrorFromCode(pqError.Code, pqError.Message)
}
logger.Debugf(context.Background(), "Unable to cast to pgconn.PgError. Error type: [%v]",
diff --git a/flyteadmin/pkg/repositories/errors/postgres_test.go b/flyteadmin/pkg/repositories/errors/postgres_test.go
index 5b73e31becc..32a8e0a9e3f 100644
--- a/flyteadmin/pkg/repositories/errors/postgres_test.go
+++ b/flyteadmin/pkg/repositories/errors/postgres_test.go
@@ -4,8 +4,7 @@ import (
"errors"
"testing"
- "github.com/jackc/pgconn"
- pgxPgconn "github.com/jackc/pgx/v5/pgconn"
+ "github.com/jackc/pgx/v5/pgconn"
"github.com/magiconair/properties/assert"
"google.golang.org/grpc/codes"
@@ -29,7 +28,7 @@ func TestToFlyteAdminError_UniqueConstraintViolation(t *testing.T) {
assert.Equal(t, "value with matching already exists (message)",
transformedErr.Error())
- err2 := &pgxPgconn.PgError{
+ err2 := &pgconn.PgError{
Code: "23505",
Message: "message",
}
@@ -50,7 +49,7 @@ func TestToFlyteAdminError_UnrecognizedPostgresError(t *testing.T) {
assert.Equal(t, "failed database operation with message",
transformedErr.Error())
- err2 := &pgxPgconn.PgError{
+ err2 := &pgconn.PgError{
Code: "foo",
Message: "message",
}
diff --git a/flyteadmin/pkg/repositories/gormimpl/node_execution_repo.go b/flyteadmin/pkg/repositories/gormimpl/node_execution_repo.go
index f39c6df5547..9ebe549b03d 100644
--- a/flyteadmin/pkg/repositories/gormimpl/node_execution_repo.go
+++ b/flyteadmin/pkg/repositories/gormimpl/node_execution_repo.go
@@ -100,8 +100,13 @@ func (r *NodeExecutionRepo) Update(ctx context.Context, nodeExecution *models.No
tx := r.db.WithContext(ctx).Model(&models.NodeExecution{}).Where(getIDFilter(nodeExecution.ID)).Updates(nodeExecution)
timer.Stop()
if err := tx.Error; err != nil {
- return r.errorTransformer.ToFlyteAdminError(err)
- }
+ return r.errorTransformer.ToFlyteAdminError(err)
+}
+
+if tx.RowsAffected == 0 {
+ return adminErrors.GetMissingEntityError("node execution", nil)
+}
+
return nil
}
diff --git a/flyteadmin/pkg/repositories/gormimpl/task_execution_repo.go b/flyteadmin/pkg/repositories/gormimpl/task_execution_repo.go
index ba473c2968a..00fbbb3f119 100644
--- a/flyteadmin/pkg/repositories/gormimpl/task_execution_repo.go
+++ b/flyteadmin/pkg/repositories/gormimpl/task_execution_repo.go
@@ -88,6 +88,11 @@ func (r *TaskExecutionRepo) Update(ctx context.Context, execution models.TaskExe
if err := tx.Error; err != nil {
return r.errorTransformer.ToFlyteAdminError(err)
}
+
+ if tx.RowsAffected == 0 {
+ return flyteAdminDbErrors.GetMissingEntityError("task execution", nil)
+ }
+
return nil
}
diff --git a/flyteadmin/pkg/repositories/interfaces/description_entity.go b/flyteadmin/pkg/repositories/interfaces/description_entity.go
index c48bb244a7e..d6a4c676fcb 100644
--- a/flyteadmin/pkg/repositories/interfaces/description_entity.go
+++ b/flyteadmin/pkg/repositories/interfaces/description_entity.go
@@ -19,6 +19,8 @@ type DescriptionEntityCollectionOutput struct {
Entities []models.DescriptionEntity
}
+//go:generate mockery --name=DescriptionEntityRepoInterface --output=../mocks --case=underscore --with-expecter
+
// DescriptionEntityRepoInterface Defines the interface for interacting with Description models.
type DescriptionEntityRepoInterface interface {
// Get Returns a matching DescriptionEntity if it exists.
diff --git a/flyteadmin/pkg/repositories/interfaces/named_entity_repo.go b/flyteadmin/pkg/repositories/interfaces/named_entity_repo.go
index e22dddee9a7..cc0d6c7d489 100644
--- a/flyteadmin/pkg/repositories/interfaces/named_entity_repo.go
+++ b/flyteadmin/pkg/repositories/interfaces/named_entity_repo.go
@@ -26,6 +26,8 @@ type NamedEntityCollectionOutput struct {
Entities []models.NamedEntity
}
+//go:generate mockery --name=NamedEntityRepoInterface --output=../mocks --case=underscore --with-expecter
+
// Defines the interface for interacting with NamedEntity models
type NamedEntityRepoInterface interface {
// Returns NamedEntity objects matching the provided query. A limit is
diff --git a/flyteadmin/pkg/repositories/mocks/description_entity_repo.go b/flyteadmin/pkg/repositories/mocks/description_entity_repo.go
deleted file mode 100644
index 5ff5c0b3806..00000000000
--- a/flyteadmin/pkg/repositories/mocks/description_entity_repo.go
+++ /dev/null
@@ -1,66 +0,0 @@
-// Mock implementation of a workflow repo to be used for tests.
-package mocks
-
-import (
- "context"
-
- "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/interfaces"
- "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/models"
-)
-
-type CreateDescriptionEntityFunc func(input models.DescriptionEntity) error
-type GetDescriptionEntityFunc func(input interfaces.GetDescriptionEntityInput) (models.DescriptionEntity, error)
-type ListDescriptionEntityFunc func(input interfaces.ListResourceInput) (interfaces.DescriptionEntityCollectionOutput, error)
-
-type MockDescriptionEntityRepo struct {
- createFunction CreateDescriptionEntityFunc
- getFunction GetDescriptionEntityFunc
- listFunction ListDescriptionEntityFunc
-}
-
-func (r *MockDescriptionEntityRepo) Create(ctx context.Context, DescriptionEntity models.DescriptionEntity) (uint, error) {
- if r.createFunction != nil {
- return 1, r.createFunction(DescriptionEntity)
- }
- return 1, nil
-}
-
-func (r *MockDescriptionEntityRepo) Get(
- ctx context.Context, input interfaces.GetDescriptionEntityInput) (models.DescriptionEntity, error) {
- if r.getFunction != nil {
- return r.getFunction(input)
- }
- return models.DescriptionEntity{
- DescriptionEntityKey: models.DescriptionEntityKey{
- ResourceType: input.ResourceType,
- Project: input.Project,
- Domain: input.Domain,
- Name: input.Name,
- Version: input.Version,
- },
- ShortDescription: "hello world",
- }, nil
-}
-
-func (r *MockDescriptionEntityRepo) List(ctx context.Context, input interfaces.ListResourceInput) (interfaces.DescriptionEntityCollectionOutput, error) {
- if r.listFunction != nil {
- return r.listFunction(input)
- }
- return interfaces.DescriptionEntityCollectionOutput{}, nil
-}
-
-func (r *MockDescriptionEntityRepo) SetCreateCallback(createFunction CreateDescriptionEntityFunc) {
- r.createFunction = createFunction
-}
-
-func (r *MockDescriptionEntityRepo) SetGetCallback(getFunction GetDescriptionEntityFunc) {
- r.getFunction = getFunction
-}
-
-func (r *MockDescriptionEntityRepo) SetListCallback(listFunction ListDescriptionEntityFunc) {
- r.listFunction = listFunction
-}
-
-func NewMockDescriptionEntityRepo() interfaces.DescriptionEntityRepoInterface {
- return &MockDescriptionEntityRepo{}
-}
diff --git a/flyteadmin/pkg/repositories/mocks/description_entity_repo_interface.go b/flyteadmin/pkg/repositories/mocks/description_entity_repo_interface.go
new file mode 100644
index 00000000000..7d8bf85f6ce
--- /dev/null
+++ b/flyteadmin/pkg/repositories/mocks/description_entity_repo_interface.go
@@ -0,0 +1,152 @@
+// Code generated by mockery v2.53.5. DO NOT EDIT.
+
+package mocks
+
+import (
+ context "context"
+
+ interfaces "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/interfaces"
+ models "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/models"
+ mock "github.com/stretchr/testify/mock"
+)
+
+// DescriptionEntityRepoInterface is an autogenerated mock type for the DescriptionEntityRepoInterface type
+type DescriptionEntityRepoInterface struct {
+ mock.Mock
+}
+
+type DescriptionEntityRepoInterface_Expecter struct {
+ mock *mock.Mock
+}
+
+func (_m *DescriptionEntityRepoInterface) EXPECT() *DescriptionEntityRepoInterface_Expecter {
+ return &DescriptionEntityRepoInterface_Expecter{mock: &_m.Mock}
+}
+
+// Get provides a mock function with given fields: ctx, input
+func (_m *DescriptionEntityRepoInterface) Get(ctx context.Context, input interfaces.GetDescriptionEntityInput) (models.DescriptionEntity, error) {
+ ret := _m.Called(ctx, input)
+
+ if len(ret) == 0 {
+ panic("no return value specified for Get")
+ }
+
+ var r0 models.DescriptionEntity
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, interfaces.GetDescriptionEntityInput) (models.DescriptionEntity, error)); ok {
+ return rf(ctx, input)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, interfaces.GetDescriptionEntityInput) models.DescriptionEntity); ok {
+ r0 = rf(ctx, input)
+ } else {
+ r0 = ret.Get(0).(models.DescriptionEntity)
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, interfaces.GetDescriptionEntityInput) error); ok {
+ r1 = rf(ctx, input)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// DescriptionEntityRepoInterface_Get_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Get'
+type DescriptionEntityRepoInterface_Get_Call struct {
+ *mock.Call
+}
+
+// Get is a helper method to define mock.On call
+// - ctx context.Context
+// - input interfaces.GetDescriptionEntityInput
+func (_e *DescriptionEntityRepoInterface_Expecter) Get(ctx interface{}, input interface{}) *DescriptionEntityRepoInterface_Get_Call {
+ return &DescriptionEntityRepoInterface_Get_Call{Call: _e.mock.On("Get", ctx, input)}
+}
+
+func (_c *DescriptionEntityRepoInterface_Get_Call) Run(run func(ctx context.Context, input interfaces.GetDescriptionEntityInput)) *DescriptionEntityRepoInterface_Get_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(interfaces.GetDescriptionEntityInput))
+ })
+ return _c
+}
+
+func (_c *DescriptionEntityRepoInterface_Get_Call) Return(_a0 models.DescriptionEntity, _a1 error) *DescriptionEntityRepoInterface_Get_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *DescriptionEntityRepoInterface_Get_Call) RunAndReturn(run func(context.Context, interfaces.GetDescriptionEntityInput) (models.DescriptionEntity, error)) *DescriptionEntityRepoInterface_Get_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// List provides a mock function with given fields: ctx, input
+func (_m *DescriptionEntityRepoInterface) List(ctx context.Context, input interfaces.ListResourceInput) (interfaces.DescriptionEntityCollectionOutput, error) {
+ ret := _m.Called(ctx, input)
+
+ if len(ret) == 0 {
+ panic("no return value specified for List")
+ }
+
+ var r0 interfaces.DescriptionEntityCollectionOutput
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, interfaces.ListResourceInput) (interfaces.DescriptionEntityCollectionOutput, error)); ok {
+ return rf(ctx, input)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, interfaces.ListResourceInput) interfaces.DescriptionEntityCollectionOutput); ok {
+ r0 = rf(ctx, input)
+ } else {
+ r0 = ret.Get(0).(interfaces.DescriptionEntityCollectionOutput)
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, interfaces.ListResourceInput) error); ok {
+ r1 = rf(ctx, input)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// DescriptionEntityRepoInterface_List_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'List'
+type DescriptionEntityRepoInterface_List_Call struct {
+ *mock.Call
+}
+
+// List is a helper method to define mock.On call
+// - ctx context.Context
+// - input interfaces.ListResourceInput
+func (_e *DescriptionEntityRepoInterface_Expecter) List(ctx interface{}, input interface{}) *DescriptionEntityRepoInterface_List_Call {
+ return &DescriptionEntityRepoInterface_List_Call{Call: _e.mock.On("List", ctx, input)}
+}
+
+func (_c *DescriptionEntityRepoInterface_List_Call) Run(run func(ctx context.Context, input interfaces.ListResourceInput)) *DescriptionEntityRepoInterface_List_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(interfaces.ListResourceInput))
+ })
+ return _c
+}
+
+func (_c *DescriptionEntityRepoInterface_List_Call) Return(_a0 interfaces.DescriptionEntityCollectionOutput, _a1 error) *DescriptionEntityRepoInterface_List_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *DescriptionEntityRepoInterface_List_Call) RunAndReturn(run func(context.Context, interfaces.ListResourceInput) (interfaces.DescriptionEntityCollectionOutput, error)) *DescriptionEntityRepoInterface_List_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// NewDescriptionEntityRepoInterface creates a new instance of DescriptionEntityRepoInterface. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func NewDescriptionEntityRepoInterface(t interface {
+ mock.TestingT
+ Cleanup(func())
+}) *DescriptionEntityRepoInterface {
+ mock := &DescriptionEntityRepoInterface{}
+ mock.Mock.Test(t)
+
+ t.Cleanup(func() { mock.AssertExpectations(t) })
+
+ return mock
+}
diff --git a/flyteadmin/pkg/repositories/mocks/execution_event_repo_interface.go b/flyteadmin/pkg/repositories/mocks/execution_event_repo_interface.go
index d468ebde72c..e4ce82084ca 100644
--- a/flyteadmin/pkg/repositories/mocks/execution_event_repo_interface.go
+++ b/flyteadmin/pkg/repositories/mocks/execution_event_repo_interface.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- mock "github.com/stretchr/testify/mock"
-
models "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/models"
+ mock "github.com/stretchr/testify/mock"
)
// ExecutionEventRepoInterface is an autogenerated mock type for the ExecutionEventRepoInterface type
diff --git a/flyteadmin/pkg/repositories/mocks/named_entity_metadata_repo.go b/flyteadmin/pkg/repositories/mocks/named_entity_metadata_repo.go
deleted file mode 100644
index e686fb539a3..00000000000
--- a/flyteadmin/pkg/repositories/mocks/named_entity_metadata_repo.go
+++ /dev/null
@@ -1,67 +0,0 @@
-// Mock implementation of a workflow repo to be used for tests.
-package mocks
-
-import (
- "context"
-
- "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/interfaces"
- "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/models"
-)
-
-type GetNamedEntityFunc func(input interfaces.GetNamedEntityInput) (models.NamedEntity, error)
-type ListNamedEntityFunc func(input interfaces.ListNamedEntityInput) (interfaces.NamedEntityCollectionOutput, error)
-type UpdateNamedEntityFunc func(input models.NamedEntity) error
-
-type MockNamedEntityRepo struct {
- getFunction GetNamedEntityFunc
- listFunction ListNamedEntityFunc
- updateFunction UpdateNamedEntityFunc
-}
-
-func (r *MockNamedEntityRepo) Update(ctx context.Context, NamedEntity models.NamedEntity) error {
- if r.updateFunction != nil {
- return r.updateFunction(NamedEntity)
- }
- return nil
-}
-
-func (r *MockNamedEntityRepo) Get(
- ctx context.Context, input interfaces.GetNamedEntityInput) (models.NamedEntity, error) {
- if r.getFunction != nil {
- return r.getFunction(input)
- }
- return models.NamedEntity{
- NamedEntityKey: models.NamedEntityKey{
- ResourceType: input.ResourceType,
- Project: input.Project,
- Domain: input.Domain,
- Name: input.Name,
- },
- NamedEntityMetadataFields: models.NamedEntityMetadataFields{
- Description: "",
- },
- }, nil
-}
-
-func (r *MockNamedEntityRepo) List(ctx context.Context, input interfaces.ListNamedEntityInput) (interfaces.NamedEntityCollectionOutput, error) {
- if r.listFunction != nil {
- return r.listFunction(input)
- }
- return interfaces.NamedEntityCollectionOutput{}, nil
-}
-
-func (r *MockNamedEntityRepo) SetGetCallback(getFunction GetNamedEntityFunc) {
- r.getFunction = getFunction
-}
-
-func (r *MockNamedEntityRepo) SetListCallback(listFunction ListNamedEntityFunc) {
- r.listFunction = listFunction
-}
-
-func (r *MockNamedEntityRepo) SetUpdateCallback(updateFunction UpdateNamedEntityFunc) {
- r.updateFunction = updateFunction
-}
-
-func NewMockNamedEntityRepo() interfaces.NamedEntityRepoInterface {
- return &MockNamedEntityRepo{}
-}
diff --git a/flyteadmin/pkg/repositories/mocks/named_entity_repo_interface.go b/flyteadmin/pkg/repositories/mocks/named_entity_repo_interface.go
new file mode 100644
index 00000000000..9c0041d4b9c
--- /dev/null
+++ b/flyteadmin/pkg/repositories/mocks/named_entity_repo_interface.go
@@ -0,0 +1,199 @@
+// Code generated by mockery v2.53.5. DO NOT EDIT.
+
+package mocks
+
+import (
+ context "context"
+
+ interfaces "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/interfaces"
+ models "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/models"
+ mock "github.com/stretchr/testify/mock"
+)
+
+// NamedEntityRepoInterface is an autogenerated mock type for the NamedEntityRepoInterface type
+type NamedEntityRepoInterface struct {
+ mock.Mock
+}
+
+type NamedEntityRepoInterface_Expecter struct {
+ mock *mock.Mock
+}
+
+func (_m *NamedEntityRepoInterface) EXPECT() *NamedEntityRepoInterface_Expecter {
+ return &NamedEntityRepoInterface_Expecter{mock: &_m.Mock}
+}
+
+// Get provides a mock function with given fields: ctx, input
+func (_m *NamedEntityRepoInterface) Get(ctx context.Context, input interfaces.GetNamedEntityInput) (models.NamedEntity, error) {
+ ret := _m.Called(ctx, input)
+
+ if len(ret) == 0 {
+ panic("no return value specified for Get")
+ }
+
+ var r0 models.NamedEntity
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, interfaces.GetNamedEntityInput) (models.NamedEntity, error)); ok {
+ return rf(ctx, input)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, interfaces.GetNamedEntityInput) models.NamedEntity); ok {
+ r0 = rf(ctx, input)
+ } else {
+ r0 = ret.Get(0).(models.NamedEntity)
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, interfaces.GetNamedEntityInput) error); ok {
+ r1 = rf(ctx, input)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// NamedEntityRepoInterface_Get_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Get'
+type NamedEntityRepoInterface_Get_Call struct {
+ *mock.Call
+}
+
+// Get is a helper method to define mock.On call
+// - ctx context.Context
+// - input interfaces.GetNamedEntityInput
+func (_e *NamedEntityRepoInterface_Expecter) Get(ctx interface{}, input interface{}) *NamedEntityRepoInterface_Get_Call {
+ return &NamedEntityRepoInterface_Get_Call{Call: _e.mock.On("Get", ctx, input)}
+}
+
+func (_c *NamedEntityRepoInterface_Get_Call) Run(run func(ctx context.Context, input interfaces.GetNamedEntityInput)) *NamedEntityRepoInterface_Get_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(interfaces.GetNamedEntityInput))
+ })
+ return _c
+}
+
+func (_c *NamedEntityRepoInterface_Get_Call) Return(_a0 models.NamedEntity, _a1 error) *NamedEntityRepoInterface_Get_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *NamedEntityRepoInterface_Get_Call) RunAndReturn(run func(context.Context, interfaces.GetNamedEntityInput) (models.NamedEntity, error)) *NamedEntityRepoInterface_Get_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// List provides a mock function with given fields: ctx, input
+func (_m *NamedEntityRepoInterface) List(ctx context.Context, input interfaces.ListNamedEntityInput) (interfaces.NamedEntityCollectionOutput, error) {
+ ret := _m.Called(ctx, input)
+
+ if len(ret) == 0 {
+ panic("no return value specified for List")
+ }
+
+ var r0 interfaces.NamedEntityCollectionOutput
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, interfaces.ListNamedEntityInput) (interfaces.NamedEntityCollectionOutput, error)); ok {
+ return rf(ctx, input)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, interfaces.ListNamedEntityInput) interfaces.NamedEntityCollectionOutput); ok {
+ r0 = rf(ctx, input)
+ } else {
+ r0 = ret.Get(0).(interfaces.NamedEntityCollectionOutput)
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, interfaces.ListNamedEntityInput) error); ok {
+ r1 = rf(ctx, input)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// NamedEntityRepoInterface_List_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'List'
+type NamedEntityRepoInterface_List_Call struct {
+ *mock.Call
+}
+
+// List is a helper method to define mock.On call
+// - ctx context.Context
+// - input interfaces.ListNamedEntityInput
+func (_e *NamedEntityRepoInterface_Expecter) List(ctx interface{}, input interface{}) *NamedEntityRepoInterface_List_Call {
+ return &NamedEntityRepoInterface_List_Call{Call: _e.mock.On("List", ctx, input)}
+}
+
+func (_c *NamedEntityRepoInterface_List_Call) Run(run func(ctx context.Context, input interfaces.ListNamedEntityInput)) *NamedEntityRepoInterface_List_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(interfaces.ListNamedEntityInput))
+ })
+ return _c
+}
+
+func (_c *NamedEntityRepoInterface_List_Call) Return(_a0 interfaces.NamedEntityCollectionOutput, _a1 error) *NamedEntityRepoInterface_List_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *NamedEntityRepoInterface_List_Call) RunAndReturn(run func(context.Context, interfaces.ListNamedEntityInput) (interfaces.NamedEntityCollectionOutput, error)) *NamedEntityRepoInterface_List_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// Update provides a mock function with given fields: ctx, input
+func (_m *NamedEntityRepoInterface) Update(ctx context.Context, input models.NamedEntity) error {
+ ret := _m.Called(ctx, input)
+
+ if len(ret) == 0 {
+ panic("no return value specified for Update")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(context.Context, models.NamedEntity) error); ok {
+ r0 = rf(ctx, input)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// NamedEntityRepoInterface_Update_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Update'
+type NamedEntityRepoInterface_Update_Call struct {
+ *mock.Call
+}
+
+// Update is a helper method to define mock.On call
+// - ctx context.Context
+// - input models.NamedEntity
+func (_e *NamedEntityRepoInterface_Expecter) Update(ctx interface{}, input interface{}) *NamedEntityRepoInterface_Update_Call {
+ return &NamedEntityRepoInterface_Update_Call{Call: _e.mock.On("Update", ctx, input)}
+}
+
+func (_c *NamedEntityRepoInterface_Update_Call) Run(run func(ctx context.Context, input models.NamedEntity)) *NamedEntityRepoInterface_Update_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(models.NamedEntity))
+ })
+ return _c
+}
+
+func (_c *NamedEntityRepoInterface_Update_Call) Return(_a0 error) *NamedEntityRepoInterface_Update_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *NamedEntityRepoInterface_Update_Call) RunAndReturn(run func(context.Context, models.NamedEntity) error) *NamedEntityRepoInterface_Update_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// NewNamedEntityRepoInterface creates a new instance of NamedEntityRepoInterface. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func NewNamedEntityRepoInterface(t interface {
+ mock.TestingT
+ Cleanup(func())
+}) *NamedEntityRepoInterface {
+ mock := &NamedEntityRepoInterface{}
+ mock.Mock.Test(t)
+
+ t.Cleanup(func() { mock.AssertExpectations(t) })
+
+ return mock
+}
diff --git a/flyteadmin/pkg/repositories/mocks/node_execution_event_repo_interface.go b/flyteadmin/pkg/repositories/mocks/node_execution_event_repo_interface.go
index 934e7f77566..ea58525c6c8 100644
--- a/flyteadmin/pkg/repositories/mocks/node_execution_event_repo_interface.go
+++ b/flyteadmin/pkg/repositories/mocks/node_execution_event_repo_interface.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- mock "github.com/stretchr/testify/mock"
-
models "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/models"
+ mock "github.com/stretchr/testify/mock"
)
// NodeExecutionEventRepoInterface is an autogenerated mock type for the NodeExecutionEventRepoInterface type
diff --git a/flyteadmin/pkg/repositories/mocks/repository.go b/flyteadmin/pkg/repositories/mocks/repository.go
index 5bfafb5958b..79a389fdc5e 100644
--- a/flyteadmin/pkg/repositories/mocks/repository.go
+++ b/flyteadmin/pkg/repositories/mocks/repository.go
@@ -100,8 +100,8 @@ func NewMockRepository() interfaces.Repository {
ProjectRepoIface: NewMockProjectRepo(),
resourceRepo: NewMockResourceRepo(),
taskExecutionRepo: NewMockTaskExecutionRepo(),
- namedEntityRepo: NewMockNamedEntityRepo(),
- descriptionEntityRepo: NewMockDescriptionEntityRepo(),
+ namedEntityRepo: &NamedEntityRepoInterface{},
+ descriptionEntityRepo: &DescriptionEntityRepoInterface{},
ExecutionEventRepoIface: &ExecutionEventRepoInterface{},
NodeExecutionEventRepoIface: &NodeExecutionEventRepoInterface{},
schedulableEntityRepo: &sMocks.SchedulableEntityRepoInterface{},
diff --git a/flyteadmin/pkg/repositories/mocks/signal_repo_interface.go b/flyteadmin/pkg/repositories/mocks/signal_repo_interface.go
index fa2ad1f83eb..b46d2f5c3fe 100644
--- a/flyteadmin/pkg/repositories/mocks/signal_repo_interface.go
+++ b/flyteadmin/pkg/repositories/mocks/signal_repo_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,9 +6,8 @@ import (
context "context"
interfaces "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/interfaces"
- mock "github.com/stretchr/testify/mock"
-
models "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/models"
+ mock "github.com/stretchr/testify/mock"
)
// SignalRepoInterface is an autogenerated mock type for the SignalRepoInterface type
diff --git a/flyteadmin/pkg/repositories/transformers/workflow.go b/flyteadmin/pkg/repositories/transformers/workflow.go
index 0dbf7196a8e..97704831169 100644
--- a/flyteadmin/pkg/repositories/transformers/workflow.go
+++ b/flyteadmin/pkg/repositories/transformers/workflow.go
@@ -1,8 +1,6 @@
package transformers
import (
- "fmt"
-
"github.com/golang/protobuf/proto"
"github.com/golang/protobuf/ptypes"
"google.golang.org/grpc/codes"
@@ -47,14 +45,14 @@ func FromWorkflowModel(workflowModel models.Workflow) (admin.Workflow, error) {
}
createdAt, err := ptypes.TimestampProto(workflowModel.CreatedAt)
if err != nil {
- return admin.Workflow{}, errors.NewFlyteAdminErrorf(codes.Internal, "failed to read created at timestamp")
+ return admin.Workflow{}, errors.NewFlyteAdminError(codes.Internal, "failed to read created at timestamp")
}
var workflowInterface core.TypedInterface
if len(workflowModel.TypedInterface) > 0 {
err = proto.Unmarshal(workflowModel.TypedInterface, &workflowInterface)
if err != nil {
- return admin.Workflow{}, errors.NewFlyteAdminErrorf(codes.Internal, fmt.Sprintf("failed to unmarshal workflow %v interface. Error message: %v", workflowModel.ID, err.Error())) //nolint
+ return admin.Workflow{}, errors.NewFlyteAdminErrorf(codes.Internal, "failed to unmarshal workflow %v interface. Error message: %v", workflowModel.ID, err.Error())
}
}
diff --git a/flyteadmin/pkg/runtime/interfaces/application_configuration.go b/flyteadmin/pkg/runtime/interfaces/application_configuration.go
index 458de593812..6ae512b24b3 100644
--- a/flyteadmin/pkg/runtime/interfaces/application_configuration.go
+++ b/flyteadmin/pkg/runtime/interfaces/application_configuration.go
@@ -116,6 +116,10 @@ type ApplicationConfig struct {
// Enabling this will instruct operator to use storage (s3/gcs/etc) to offload workflow execution inputs instead of storing them inline in the CRD.
UseOffloadedInputs bool `json:"useOffloadedInputs" pflag:",Use offloaded inputs for workflows."`
+
+ InjectIdentityAnnotations bool `json:"injectIdentityAnnotations"`
+ IdentityAnnotationPrefix string `json:"identityAnnotationPrefix"`
+ IdentityAnnotationKeys []string `json:"identityAnnotationKeys"`
}
func (a *ApplicationConfig) GetRoleNameKey() string {
@@ -201,6 +205,21 @@ func (a *ApplicationConfig) GetEnvs() *admin.Envs {
}
}
+func (a *ApplicationConfig) GetInjectIdentityAnnotations() bool {
+ return a.InjectIdentityAnnotations
+}
+
+func (a *ApplicationConfig) GetIdentityAnnotationPrefix() string {
+ if a.IdentityAnnotationPrefix == "" {
+ return "flyte.org"
+ }
+ return a.IdentityAnnotationPrefix
+}
+
+func (a *ApplicationConfig) GetIdentityAnnotationKeys() []string {
+ return a.IdentityAnnotationKeys
+}
+
// GetAsWorkflowExecutionConfig returns the WorkflowExecutionConfig as extracted from this object
func (a *ApplicationConfig) GetAsWorkflowExecutionConfig() *admin.WorkflowExecutionConfig {
// These values should always be set as their fallback values equals to their zero value or nil,
@@ -311,7 +330,7 @@ func (k KafkaConfig) UpdateSaramaConfig(ctx context.Context, s *sarama.Config) {
if k.TLSConfig.Enabled {
s.Net.TLS.Enable = true
s.Net.TLS.Config = &tls.Config{
- InsecureSkipVerify: k.TLSConfig.InsecureSkipVerify,
+ InsecureSkipVerify: k.TLSConfig.InsecureSkipVerify, //nolint:gosec
}
if k.TLSConfig.KeyPath != "" && k.TLSConfig.CertPath != "" {
cert, err := tls.LoadX509KeyPair(k.TLSConfig.CertPath, k.TLSConfig.KeyPath)
diff --git a/flyteadmin/pkg/runtime/interfaces/mocks/cluster_pool_assignment_configuration.go b/flyteadmin/pkg/runtime/interfaces/mocks/cluster_pool_assignment_configuration.go
index 5eaf9675b36..17edf4e660b 100644
--- a/flyteadmin/pkg/runtime/interfaces/mocks/cluster_pool_assignment_configuration.go
+++ b/flyteadmin/pkg/runtime/interfaces/mocks/cluster_pool_assignment_configuration.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *ClusterPoolAssignmentConfiguration) EXPECT() *ClusterPoolAssignmentCon
return &ClusterPoolAssignmentConfiguration_Expecter{mock: &_m.Mock}
}
-// GetClusterPoolAssignments provides a mock function with given fields:
+// GetClusterPoolAssignments provides a mock function with no fields
func (_m *ClusterPoolAssignmentConfiguration) GetClusterPoolAssignments() map[string]interfaces.ClusterPoolAssignment {
ret := _m.Called()
diff --git a/flyteadmin/pkg/runtime/interfaces/mocks/quality_of_service_configuration.go b/flyteadmin/pkg/runtime/interfaces/mocks/quality_of_service_configuration.go
index 094fcdf6c5f..af0c19c0ef5 100644
--- a/flyteadmin/pkg/runtime/interfaces/mocks/quality_of_service_configuration.go
+++ b/flyteadmin/pkg/runtime/interfaces/mocks/quality_of_service_configuration.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -21,7 +21,7 @@ func (_m *QualityOfServiceConfiguration) EXPECT() *QualityOfServiceConfiguration
return &QualityOfServiceConfiguration_Expecter{mock: &_m.Mock}
}
-// GetDefaultTiers provides a mock function with given fields:
+// GetDefaultTiers provides a mock function with no fields
func (_m *QualityOfServiceConfiguration) GetDefaultTiers() map[string]core.QualityOfService_Tier {
ret := _m.Called()
@@ -68,7 +68,7 @@ func (_c *QualityOfServiceConfiguration_GetDefaultTiers_Call) RunAndReturn(run f
return _c
}
-// GetTierExecutionValues provides a mock function with given fields:
+// GetTierExecutionValues provides a mock function with no fields
func (_m *QualityOfServiceConfiguration) GetTierExecutionValues() map[core.QualityOfService_Tier]*core.QualityOfServiceSpec {
ret := _m.Called()
diff --git a/flyteadmin/pkg/runtime/mocks/cluster_configuration.go b/flyteadmin/pkg/runtime/mocks/cluster_configuration.go
index b9ca67f6dd2..be865a2c866 100644
--- a/flyteadmin/pkg/runtime/mocks/cluster_configuration.go
+++ b/flyteadmin/pkg/runtime/mocks/cluster_configuration.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *ClusterConfiguration) EXPECT() *ClusterConfiguration_Expecter {
return &ClusterConfiguration_Expecter{mock: &_m.Mock}
}
-// GetClusterConfigs provides a mock function with given fields:
+// GetClusterConfigs provides a mock function with no fields
func (_m *ClusterConfiguration) GetClusterConfigs() []interfaces.ClusterConfig {
ret := _m.Called()
@@ -67,7 +67,7 @@ func (_c *ClusterConfiguration_GetClusterConfigs_Call) RunAndReturn(run func() [
return _c
}
-// GetDefaultExecutionLabel provides a mock function with given fields:
+// GetDefaultExecutionLabel provides a mock function with no fields
func (_m *ClusterConfiguration) GetDefaultExecutionLabel() string {
ret := _m.Called()
@@ -112,7 +112,7 @@ func (_c *ClusterConfiguration_GetDefaultExecutionLabel_Call) RunAndReturn(run f
return _c
}
-// GetLabelClusterMap provides a mock function with given fields:
+// GetLabelClusterMap provides a mock function with no fields
func (_m *ClusterConfiguration) GetLabelClusterMap() map[string][]interfaces.ClusterEntity {
ret := _m.Called()
diff --git a/flyteadmin/pkg/runtime/mocks/namespace_mapping_configuration.go b/flyteadmin/pkg/runtime/mocks/namespace_mapping_configuration.go
index 7a17bad937a..ebc634e591b 100644
--- a/flyteadmin/pkg/runtime/mocks/namespace_mapping_configuration.go
+++ b/flyteadmin/pkg/runtime/mocks/namespace_mapping_configuration.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *NamespaceMappingConfiguration) EXPECT() *NamespaceMappingConfiguration
return &NamespaceMappingConfiguration_Expecter{mock: &_m.Mock}
}
-// GetNamespaceTemplate provides a mock function with given fields:
+// GetNamespaceTemplate provides a mock function with no fields
func (_m *NamespaceMappingConfiguration) GetNamespaceTemplate() string {
ret := _m.Called()
diff --git a/flyteadmin/pkg/runtime/mocks/whitelist_configuration.go b/flyteadmin/pkg/runtime/mocks/whitelist_configuration.go
index aefb3019b34..1df74c005bf 100644
--- a/flyteadmin/pkg/runtime/mocks/whitelist_configuration.go
+++ b/flyteadmin/pkg/runtime/mocks/whitelist_configuration.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *WhitelistConfiguration) EXPECT() *WhitelistConfiguration_Expecter {
return &WhitelistConfiguration_Expecter{mock: &_m.Mock}
}
-// GetTaskTypeWhitelist provides a mock function with given fields:
+// GetTaskTypeWhitelist provides a mock function with no fields
func (_m *WhitelistConfiguration) GetTaskTypeWhitelist() map[string][]interfaces.WhitelistScope {
ret := _m.Called()
diff --git a/flyteadmin/pkg/workflowengine/impl/k8s_executor.go b/flyteadmin/pkg/workflowengine/impl/k8s_executor.go
index 03de2bbba91..ae9ca686223 100644
--- a/flyteadmin/pkg/workflowengine/impl/k8s_executor.go
+++ b/flyteadmin/pkg/workflowengine/impl/k8s_executor.go
@@ -92,7 +92,7 @@ func (e K8sWorkflowExecutor) Abort(ctx context.Context, data interfaces.AbortDat
TargetID: data.Cluster,
})
if err != nil {
- return errors.NewFlyteAdminErrorf(codes.Internal, err.Error()) //nolint
+ return errors.NewFlyteAdminError(codes.Internal, err.Error())
}
err = target.FlyteClient.FlyteworkflowV1alpha1().FlyteWorkflows(data.Namespace).Delete(ctx, data.ExecutionID.GetName(), v1.DeleteOptions{
PropagationPolicy: &deletePropagationBackground,
diff --git a/flyteadmin/pkg/workflowengine/mocks/flyte_workflow_builder.go b/flyteadmin/pkg/workflowengine/mocks/flyte_workflow_builder.go
index a1715e4d751..51215e0ec7a 100644
--- a/flyteadmin/pkg/workflowengine/mocks/flyte_workflow_builder.go
+++ b/flyteadmin/pkg/workflowengine/mocks/flyte_workflow_builder.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- mock "github.com/stretchr/testify/mock"
-
v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ mock "github.com/stretchr/testify/mock"
)
// FlyteWorkflowBuilder is an autogenerated mock type for the FlyteWorkflowBuilder type
diff --git a/flyteadmin/pkg/workflowengine/mocks/workflow_executor.go b/flyteadmin/pkg/workflowengine/mocks/workflow_executor.go
index d58b512af77..1372d4f8c2f 100644
--- a/flyteadmin/pkg/workflowengine/mocks/workflow_executor.go
+++ b/flyteadmin/pkg/workflowengine/mocks/workflow_executor.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -126,7 +126,7 @@ func (_c *WorkflowExecutor_Execute_Call) RunAndReturn(run func(context.Context,
return _c
}
-// ID provides a mock function with given fields:
+// ID provides a mock function with no fields
func (_m *WorkflowExecutor) ID() string {
ret := _m.Called()
diff --git a/flyteadmin/scheduler/core/gocron_scheduler_test.go b/flyteadmin/scheduler/core/gocron_scheduler_test.go
index ddec100e3af..28b16929030 100644
--- a/flyteadmin/scheduler/core/gocron_scheduler_test.go
+++ b/flyteadmin/scheduler/core/gocron_scheduler_test.go
@@ -1,5 +1,4 @@
//go:build !race
-// +build !race
package core
diff --git a/flyteadmin/scheduler/executor/mocks/executor.go b/flyteadmin/scheduler/executor/mocks/executor.go
index 6e9ebece621..9e707799d2d 100644
--- a/flyteadmin/scheduler/executor/mocks/executor.go
+++ b/flyteadmin/scheduler/executor/mocks/executor.go
@@ -1,15 +1,14 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- mock "github.com/stretchr/testify/mock"
+ time "time"
models "github.com/flyteorg/flyte/flyteadmin/scheduler/repositories/models"
-
- time "time"
+ mock "github.com/stretchr/testify/mock"
)
// Executor is an autogenerated mock type for the Executor type
diff --git a/flyteadmin/scheduler/repositories/mocks/schedulable_entity_repo_interface.go b/flyteadmin/scheduler/repositories/mocks/schedulable_entity_repo_interface.go
index c0d1c34adb3..9677916382d 100644
--- a/flyteadmin/scheduler/repositories/mocks/schedulable_entity_repo_interface.go
+++ b/flyteadmin/scheduler/repositories/mocks/schedulable_entity_repo_interface.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- mock "github.com/stretchr/testify/mock"
-
models "github.com/flyteorg/flyte/flyteadmin/scheduler/repositories/models"
+ mock "github.com/stretchr/testify/mock"
)
// SchedulableEntityRepoInterface is an autogenerated mock type for the SchedulableEntityRepoInterface type
diff --git a/flyteadmin/scheduler/repositories/mocks/schedule_entities_snap_shot_repo_interface.go b/flyteadmin/scheduler/repositories/mocks/schedule_entities_snap_shot_repo_interface.go
index b4c3265a2a3..c22fbe84301 100644
--- a/flyteadmin/scheduler/repositories/mocks/schedule_entities_snap_shot_repo_interface.go
+++ b/flyteadmin/scheduler/repositories/mocks/schedule_entities_snap_shot_repo_interface.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- mock "github.com/stretchr/testify/mock"
-
models "github.com/flyteorg/flyte/flyteadmin/scheduler/repositories/models"
+ mock "github.com/stretchr/testify/mock"
)
// ScheduleEntitiesSnapShotRepoInterface is an autogenerated mock type for the ScheduleEntitiesSnapShotRepoInterface type
diff --git a/flyteadmin/scheduler/schedule_executor_test.go b/flyteadmin/scheduler/schedule_executor_test.go
index 8e8fc55fafd..a1271828b55 100644
--- a/flyteadmin/scheduler/schedule_executor_test.go
+++ b/flyteadmin/scheduler/schedule_executor_test.go
@@ -1,5 +1,4 @@
//go:build !race
-// +build !race
package scheduler
diff --git a/flyteadmin/tests/attributes_test.go b/flyteadmin/tests/attributes_test.go
index 7252e79a76a..c7a9de313db 100644
--- a/flyteadmin/tests/attributes_test.go
+++ b/flyteadmin/tests/attributes_test.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
package tests
diff --git a/flyteadmin/tests/bootstrap.go b/flyteadmin/tests/bootstrap.go
index 02fb86cefa9..4ad9c6a4cbc 100644
--- a/flyteadmin/tests/bootstrap.go
+++ b/flyteadmin/tests/bootstrap.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
package tests
diff --git a/flyteadmin/tests/execution_test.go b/flyteadmin/tests/execution_test.go
index a3d226562b4..3b7fd39e331 100644
--- a/flyteadmin/tests/execution_test.go
+++ b/flyteadmin/tests/execution_test.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
package tests
diff --git a/flyteadmin/tests/launch_plan_test.go b/flyteadmin/tests/launch_plan_test.go
index 3ffb1ee5716..8ebf3bbabf6 100644
--- a/flyteadmin/tests/launch_plan_test.go
+++ b/flyteadmin/tests/launch_plan_test.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
package tests
diff --git a/flyteadmin/tests/named_entity_test.go b/flyteadmin/tests/named_entity_test.go
index 76f0b334e35..35b7f075844 100644
--- a/flyteadmin/tests/named_entity_test.go
+++ b/flyteadmin/tests/named_entity_test.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
package tests
diff --git a/flyteadmin/tests/node_execution_test.go b/flyteadmin/tests/node_execution_test.go
index 60787e430b8..ba01317527c 100644
--- a/flyteadmin/tests/node_execution_test.go
+++ b/flyteadmin/tests/node_execution_test.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
package tests
diff --git a/flyteadmin/tests/project_test.go b/flyteadmin/tests/project_test.go
index 80820042719..8d24af1e9e3 100644
--- a/flyteadmin/tests/project_test.go
+++ b/flyteadmin/tests/project_test.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
package tests
diff --git a/flyteadmin/tests/scheduler_test.go b/flyteadmin/tests/scheduler_test.go
index 47c9a82f311..b18bee3af7c 100644
--- a/flyteadmin/tests/scheduler_test.go
+++ b/flyteadmin/tests/scheduler_test.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
package tests
diff --git a/flyteadmin/tests/shared.go b/flyteadmin/tests/shared.go
index 4654fa4c09f..2e092ebc81d 100644
--- a/flyteadmin/tests/shared.go
+++ b/flyteadmin/tests/shared.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
// Shared test code values.
package tests
diff --git a/flyteadmin/tests/task_execution_test.go b/flyteadmin/tests/task_execution_test.go
index e380104684c..94c226057fd 100644
--- a/flyteadmin/tests/task_execution_test.go
+++ b/flyteadmin/tests/task_execution_test.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
package tests
@@ -329,7 +328,7 @@ func TestGetTaskExecutionData(t *testing.T) {
}
if err != nil {
- t.Fatalf(err.Error())
+ t.Fatal(err.Error())
}
ctx := context.Background()
diff --git a/flyteadmin/tests/task_test.go b/flyteadmin/tests/task_test.go
index 8733461b88d..efe37a742f6 100644
--- a/flyteadmin/tests/task_test.go
+++ b/flyteadmin/tests/task_test.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
package tests
diff --git a/flyteadmin/tests/workflow_test.go b/flyteadmin/tests/workflow_test.go
index 746f013affe..a235298a019 100644
--- a/flyteadmin/tests/workflow_test.go
+++ b/flyteadmin/tests/workflow_test.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
package tests
diff --git a/flytecopilot/.golangci.yml b/flytecopilot/.golangci.yml
index 71a85ec5c36..4cb75c1b870 100644
--- a/flytecopilot/.golangci.yml
+++ b/flytecopilot/.golangci.yml
@@ -1,32 +1,39 @@
-run:
- skip-dirs:
- - pkg/client
+version: "2"
linters:
- disable-all: true
+ default: none
enable:
- errcheck
- - gosec
- - gci
- goconst
- - goimports
- - gosimple
+ - gosec
- govet
- ineffassign
- misspell
- nakedret
- - staticcheck
- - typecheck
+ - protogetter
- unconvert
- unparam
- unused
- - protogetter
-linters-settings:
- gci:
- custom-order: true
- sections:
- - standard
- - default
- - prefix(github.com/flyteorg)
- skip-generated: true
- goconst:
- ignore-tests: true
+ exclusions:
+ generated: lax
+ presets:
+ - comments
+ - common-false-positives
+ - legacy
+ - std-error-handling
+ rules:
+ - linters:
+ - goconst
+ path: (.+)_test\.go
+formatters:
+ enable:
+ - gci
+ - goimports
+ settings:
+ gci:
+ sections:
+ - standard
+ - default
+ - prefix(github.com/flyteorg)
+ custom-order: true
+ exclusions:
+ generated: lax
\ No newline at end of file
diff --git a/flytecopilot/cmd/root.go b/flytecopilot/cmd/root.go
index eae06968ebb..a9ba841e26e 100644
--- a/flytecopilot/cmd/root.go
+++ b/flytecopilot/cmd/root.go
@@ -6,15 +6,10 @@ import (
"fmt"
"os"
"runtime"
- "time"
- "github.com/aws/aws-sdk-go/aws"
- "github.com/aws/aws-sdk-go/aws/credentials"
- "github.com/aws/aws-sdk-go/aws/session"
"github.com/pkg/errors"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
- "k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/klog"
@@ -68,41 +63,6 @@ func (r RootOptions) UploadError(ctx context.Context, code string, recvErr error
})
}
-func PollUntilTimeout(ctx context.Context, pollInterval, timeout time.Duration, condition wait.ConditionFunc) error {
- childCtx, cancel := context.WithTimeout(ctx, timeout)
- defer cancel()
- return wait.PollUntil(pollInterval, condition, childCtx.Done())
-}
-
-func checkAWSCreds() (*credentials.Value, error) {
- sess, err := session.NewSession(&aws.Config{})
- if err != nil {
- return nil, err
- }
-
- // Determine the AWS credentials from the default credential chain
- creds, err := sess.Config.Credentials.Get()
- if err != nil {
- return nil, err
- }
- if creds.AccessKeyID == "" || creds.SecretAccessKey == "" || creds.SessionToken == "" {
- return nil, fmt.Errorf("invalid data in credential fetch")
- }
- return &creds, nil
-}
-
-func waitForAWSCreds(ctx context.Context, timeout time.Duration) error {
- return PollUntilTimeout(ctx, time.Second*5, timeout, func() (bool, error) {
- if creds, err := checkAWSCreds(); err != nil {
- logger.Errorf(ctx, "failed to get AWS credentials: %s", err)
- return false, nil
- } else if creds != nil {
- logger.Infof(ctx, "found AWS credentials from provider: %s", creds.ProviderName)
- }
- return true, nil
- })
-}
-
// NewDataCommand returns a new instance of the co-pilot root command
func NewDataCommand() *cobra.Command {
rootOpts := &RootOptions{}
@@ -116,11 +76,6 @@ func NewDataCommand() *cobra.Command {
}
rootOpts.Scope = promutils.NewScope("flyte:data")
cfg := storage.GetConfig()
- if cfg.Type == storage.TypeS3 {
- if err := waitForAWSCreds(context.Background(), time.Minute*10); err != nil {
- return err
- }
- }
store, err := storage.NewDataStore(cfg, rootOpts.Scope)
if err != nil {
return errors.Wrap(err, "failed to create datastore client")
diff --git a/flytecopilot/data/download.go b/flytecopilot/data/download.go
index 24450697e73..084469faed2 100644
--- a/flytecopilot/data/download.go
+++ b/flytecopilot/data/download.go
@@ -10,6 +10,7 @@ import (
"path/filepath"
"reflect"
"strconv"
+ "strings"
"sync"
"github.com/ghodss/yaml"
@@ -36,23 +37,35 @@ type Downloader struct {
// TODO use chunk to download
func (d Downloader) handleBlob(ctx context.Context, blob *core.Blob, toPath string) (interface{}, error) {
/*
- handleBlob handles the retrieval and local storage of blob data, including support for both single and multipart blob types.
- For multipart blobs, it lists all parts recursively and spawns concurrent goroutines to download each part while managing file I/O in parallel.
-
- - The function begins by validating the blob URI and categorizing the blob type (single or multipart).
- - In the multipart case, it recursively lists all blob parts and launches goroutines to download and save each part.
- Goroutine closure and I/O success tracking are managed to avoid resource leaks.
- - For single-part blobs, it directly downloads and writes the data to the specified path.
-
- Life Cycle:
- 1. Blob URI -> Blob Metadata Type check -> Recursive List parts if Multipart -> Launch goroutines to download parts
- (input blob object) (determine multipart/single) (List API, handles recursive case) (each part handled in parallel)
- 2. Download part or full blob -> Save locally with error checks -> Handle reader/writer closures -> Return local path or error
- (download each part) (error on write or directory) (close streams safely, track success) (completion or report missing closures)
+ handleBlob handles the retrieval and local storage of blob data, including support for both single and multipart blob types.
+ For multipart blobs, it lists all parts recursively and spawns concurrent goroutines to download each part while managing file I/O in parallel.
+
+ - The function begins by validating the blob URI and categorizing the blob type (single or multipart).
+ - In the multipart case, it recursively lists all blob parts and launches goroutines to download and save each part.
+ Goroutine closure and I/O success tracking are managed to avoid resource leaks.
+ - For single-part blobs, it directly downloads and writes the data to the specified path.
+
+ Life Cycle:
+ 1. Blob URI -> Blob Metadata Type check -> Recursive List parts if Multipart -> Launch goroutines to download parts
+ (input blob object) (determine multipart/single) (List API, handles recursive case) (each part handled in parallel)
+ 2. Download part or full blob -> Save locally with error checks -> Handle reader/writer closures -> Return local path or error
+ (download each part) (error on write or directory) (close streams safely, track success) (completion or report missing closures)
+
+ More clarification on Folders. If a user returns FlyteFile("/my/folder") and inside /my/folder is
+ - sample.txt
+ - nested/
+ - deep_file.txt
+
+ The blob uri is something like: s3://container/oz/a9ss8w4mnkk8zttr9p7z-n0-0/0fda6abb7cd4e45cfae4920f0b8a586d
+ and inside are the files:
+ - s3://container/oz/a9ss8w4mnkk8zttr9p7z-n0-0/0fda6abb7cd4e45cfae4920f0b8a586d/sample.txt
+ - s3://container/oz/a9ss8w4mnkk8zttr9p7z-n0-0/0fda6abb7cd4e45cfae4920f0b8a586d/nested/deep_file.txt
+ the top level folder disappears. If we want t
*/
blobRef := storage.DataReference(blob.GetUri())
- scheme, _, _, err := blobRef.Split()
+ scheme, baseContainer, basePrefix, err := blobRef.Split()
+ logger.Debugf(ctx, "Downloader handling blob [%s] uri [%s] in bucket [%s] prefix [%s]", scheme, blob.GetUri(), baseContainer, basePrefix)
if err != nil {
return nil, errors.Wrapf(err, "Blob uri incorrectly formatted")
}
@@ -64,6 +77,7 @@ func (d Downloader) handleBlob(ctx context.Context, blob *core.Blob, toPath stri
cursor := storage.NewCursorAtStart()
var items []storage.DataReference
var absPaths []string
+
for {
items, cursor, err = d.store.List(ctx, blobRef, maxItems, cursor)
if err != nil || len(items) == 0 {
@@ -88,7 +102,6 @@ func (d Downloader) handleBlob(ctx context.Context, blob *core.Blob, toPath stri
var mu sync.Mutex
var wg sync.WaitGroup
for _, absPath := range absPaths {
- absPath := absPath
wg.Add(1)
go func() {
@@ -100,7 +113,17 @@ func (d Downloader) handleBlob(ctx context.Context, blob *core.Blob, toPath stri
}()
ref := storage.DataReference(absPath)
- reader, err := DownloadFileFromStorage(ctx, ref, d.store)
+ scheme, _, prefix, err := ref.Split()
+ if err != nil {
+ logger.Errorf(ctx, "Failed to parse [%s] [%s]", ref, err)
+ return
+ }
+ var reader io.ReadCloser
+ if scheme == "http" || scheme == "https" {
+ reader, err = DownloadFileFromHTTP(ctx, ref)
+ } else {
+ reader, err = DownloadFileFromStorage(ctx, ref, d.store)
+ }
if err != nil {
logger.Errorf(ctx, "Failed to download from ref [%s]", ref)
return
@@ -116,12 +139,43 @@ func (d Downloader) handleBlob(ctx context.Context, blob *core.Blob, toPath stri
mu.Unlock()
}()
- _, _, k, err := ref.Split()
- if err != nil {
- logger.Errorf(ctx, "Failed to parse ref [%s]", ref)
- return
+ // Strip the base path from the item prefix to get the relative path
+ // For HTTP/HTTPS URLs: prefix includes bucket + path (e.g., "bucket/sm/akm6s4bgd6lwx6fhzf58-n0-0/705fe4570586b256a5b0e5fd598b4c28/sample.txt")
+ // For S3/GS URLs: prefix only includes path (e.g., "sm/akm6s4bgd6lwx6fhzf58-n0-0/705fe4570586b256a5b0e5fd598b4c28/sample.txt")
+ // We need to strip the blob's base path to get just the relative file path
+ relativePath := prefix
+
+ // Strip the base path from the item prefix to get the relative path
+ // This works for both HTTP and native cloud storage URLs:
+ // - HTTP: prefix="bucket/path/file.txt", basePrefix="path"
+ // - S3/GS: prefix="path/file.txt", basePrefix="path"
+ if strings.HasPrefix(absPath, "http") {
+ // Try matching two ways...
+ logger.Debugf(ctx, "matching with container, prefix=[%s] %s", prefix, baseContainer+"/"+basePrefix)
+ if strings.HasPrefix(prefix, baseContainer) {
+ // This works for S3
+ relativePath = strings.TrimPrefix(prefix, baseContainer+"/"+basePrefix)
+ } else {
+ // This is here because google has the aggravating behavior of injecting a /o/ into the download
+ // link so we can't use the above. instead just look for the basePrefix in the prefix.
+ // This should work for S3 too, but using the base container feels safer.
+ idx := strings.Index(prefix, basePrefix)
+ if idx == -1 {
+ logger.Errorf(ctx, "Failed to find container prefix [%s]", prefix)
+ } else {
+ // Extract everything after basePrefix
+ relativePath = prefix[idx+len(basePrefix):]
+ }
+ }
+ } else {
+ logger.Debugf(ctx, "matching prefix=[%s] %s", prefix, basePrefix)
+ relativePath = strings.TrimPrefix(prefix, basePrefix)
}
- newPath := filepath.Join(toPath, k)
+ // Remove leading slash if it exists
+ relativePath = strings.TrimPrefix(relativePath, "/")
+ logger.Debugf(ctx, "Extracting file from %s, using relative path %s", absPath, relativePath)
+
+ newPath := filepath.Join(toPath, relativePath)
dir := filepath.Dir(newPath)
mu.Lock()
@@ -337,6 +391,10 @@ func (d Downloader) handleScalar(ctx context.Context, scalar *core.Scalar, toFil
b := scalar.GetGeneric()
i, err := d.handleGeneric(ctx, b, toFilePath, writeToFile)
return i, scalar, err
+ case *core.Scalar_Union:
+ b := scalar.GetUnion()
+ i, lit, err := d.handleLiteral(ctx, b.GetValue(), toFilePath, writeToFile)
+ return i, &core.Scalar{Value: &core.Scalar_Union{Union: &core.Union{Type: b.GetType(), Value: lit}}}, err
case *core.Scalar_NoneType:
if writeToFile {
return nil, scalar, os.WriteFile(toFilePath, []byte("null"), os.ModePerm) // #nosec G306
diff --git a/flytecopilot/data/download_test.go b/flytecopilot/data/download_test.go
index dbc7cb33e7d..1da5602e2c9 100644
--- a/flytecopilot/data/download_test.go
+++ b/flytecopilot/data/download_test.go
@@ -18,17 +18,20 @@ func TestHandleBlobMultipart(t *testing.T) {
t.Run("Successful Query", func(t *testing.T) {
s, err := storage.NewDataStore(&storage.Config{Type: storage.TypeMemory}, promutils.NewTestScope())
assert.NoError(t, err)
- ref := storage.DataReference("s3://container/folder/file1")
- err = s.WriteRaw(context.Background(), ref, 0, storage.Options{}, bytes.NewReader([]byte{}))
+
+ // Create one file at root level and another in a nested folder
+ ref1 := storage.DataReference("s3://container/oz/a9ss8w4mnkk8zttr9p7z-n0-0/0fda6abb7c/root_file.txt")
+ err = s.WriteRaw(context.Background(), ref1, 0, storage.Options{}, bytes.NewReader([]byte("root content")))
assert.NoError(t, err)
- ref = storage.DataReference("s3://container/folder/file2")
- err = s.WriteRaw(context.Background(), ref, 0, storage.Options{}, bytes.NewReader([]byte{}))
+
+ ref2 := storage.DataReference("s3://container/oz/a9ss8w4mnkk8zttr9p7z-n0-0/0fda6abb7c/nested/deep_file.txt")
+ err = s.WriteRaw(context.Background(), ref2, 0, storage.Options{}, bytes.NewReader([]byte("nested content")))
assert.NoError(t, err)
d := Downloader{store: s}
blob := &core.Blob{
- Uri: "s3://container/folder",
+ Uri: "s3://container/oz/a9ss8w4mnkk8zttr9p7z-n0-0/0fda6abb7c",
Metadata: &core.BlobMetadata{
Type: &core.BlobType{
Dimensionality: core.BlobType_MULTIPART,
@@ -36,22 +39,31 @@ func TestHandleBlobMultipart(t *testing.T) {
},
}
- toPath := "./inputs"
+ // Create temporary directory with inputs/my_var structure
+ tmpDir, err := os.MkdirTemp("", "blob_test")
+ assert.NoError(t, err)
+ testPath := filepath.Join(tmpDir, "inputs", "my_var")
defer func() {
- err := os.RemoveAll(toPath)
+ err := os.RemoveAll(tmpDir)
if err != nil {
t.Errorf("Failed to delete directory: %v", err)
}
}()
- result, err := d.handleBlob(context.Background(), blob, toPath)
+ result, err := d.handleBlob(context.Background(), blob, testPath)
assert.NoError(t, err)
- assert.Equal(t, toPath, result)
+ assert.Equal(t, testPath, result)
// Check if files were created and data written
- for _, file := range []string{"file1", "file2"} {
- if _, err := os.Stat(filepath.Join(toPath, "folder", file)); os.IsNotExist(err) {
- t.Errorf("expected file %s to exist", file)
+ // With the new fix, files should be directly under testPath, not in a "folder" subdirectory
+ expectedFiles := []string{
+ filepath.Join(testPath, "root_file.txt"),
+ filepath.Join(testPath, "nested", "deep_file.txt"),
+ }
+
+ for _, expectedFile := range expectedFiles {
+ if _, err := os.Stat(expectedFile); os.IsNotExist(err) {
+ t.Errorf("expected file %s to exist", expectedFile)
}
}
})
@@ -311,3 +323,91 @@ func TestRecursiveDownload(t *testing.T) {
}
})
}
+
+func TestHandleScalar(t *testing.T) {
+ t.Run("Handles Union Scalar with scalar value", func(t *testing.T) {
+ d := Downloader{}
+
+ scalar := &core.Scalar{
+ Value: &core.Scalar_Union{
+ Union: &core.Union{
+ Value: &core.Literal{
+ Value: &core.Literal_Scalar{
+ Scalar: &core.Scalar{
+ Value: &core.Scalar_Primitive{
+ Primitive: &core.Primitive{
+ Value: &core.Primitive_StringValue{
+ StringValue: "string1",
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ }
+
+ resultValue, resultScalar, err := d.handleScalar(context.Background(), scalar, "./inputs", false)
+ assert.NoError(t, err)
+ assert.Equal(t, "string1", resultValue)
+ assert.Equal(t, scalar, resultScalar)
+ })
+ t.Run("Handles Union Scalar with collection value", func(t *testing.T) {
+ d := Downloader{}
+
+ toPath := "./inputs"
+ defer func() {
+ err := os.RemoveAll(toPath)
+ if err != nil {
+ t.Errorf("Failed to delete directory: %v", err)
+ }
+ }()
+
+ scalar := &core.Scalar{
+ Value: &core.Scalar_Union{
+ Union: &core.Union{
+ Value: &core.Literal{
+ Value: &core.Literal_Collection{
+ Collection: &core.LiteralCollection{
+ Literals: []*core.Literal{
+ {
+ Value: &core.Literal_Scalar{
+ Scalar: &core.Scalar{
+ Value: &core.Scalar_Primitive{
+ Primitive: &core.Primitive{
+ Value: &core.Primitive_StringValue{
+ StringValue: "string1",
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ Value: &core.Literal_Scalar{
+ Scalar: &core.Scalar{
+ Value: &core.Scalar_Primitive{
+ Primitive: &core.Primitive{
+ Value: &core.Primitive_StringValue{
+ StringValue: "string2",
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ }
+
+ resultValue, resultScalar, err := d.handleScalar(context.Background(), scalar, toPath, false)
+ assert.NoError(t, err)
+ assert.Equal(t, []interface{}{"string1", "string2"}, resultValue)
+ assert.Equal(t, scalar, resultScalar)
+ })
+}
diff --git a/flytecopilot/go.mod b/flytecopilot/go.mod
index be0e0c87182..5e00e00b5ce 100644
--- a/flytecopilot/go.mod
+++ b/flytecopilot/go.mod
@@ -1,26 +1,23 @@
module github.com/flyteorg/flyte/flytecopilot
-go 1.22
+go 1.26.0
require (
- github.com/aws/aws-sdk-go v1.47.11
github.com/flyteorg/flyte/flyteidl v0.0.0-00010101000000-000000000000
github.com/flyteorg/flyte/flytestdlib v0.0.0-00010101000000-000000000000
github.com/ghodss/yaml v1.0.0
- github.com/golang/protobuf v1.5.3
+ github.com/golang/protobuf v1.5.4
github.com/pkg/errors v0.9.1
- github.com/spf13/cobra v1.7.0
- github.com/spf13/pflag v1.0.5
- github.com/stretchr/testify v1.9.0
- k8s.io/apimachinery v0.28.2
- k8s.io/client-go v0.28.1
+ github.com/spf13/cobra v1.9.1
+ github.com/spf13/pflag v1.0.10
+ github.com/stretchr/testify v1.11.1
+ k8s.io/client-go v0.34.1
k8s.io/klog v1.0.0
)
require (
cloud.google.com/go v0.112.0 // indirect
- cloud.google.com/go/compute v1.23.3 // indirect
- cloud.google.com/go/compute/metadata v0.2.3 // indirect
+ cloud.google.com/go/compute/metadata v0.9.0 // indirect
cloud.google.com/go/iam v1.1.5 // indirect
cloud.google.com/go/storage v1.36.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 // indirect
@@ -28,119 +25,111 @@ require (
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
+ github.com/aws/aws-sdk-go v1.47.11 // indirect
github.com/beorn7/perks v1.0.1 // indirect
- github.com/cenkalti/backoff/v4 v4.2.1 // indirect
+ github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/coocood/freecache v1.1.1 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/emicklei/go-restful/v3 v3.9.0 // indirect
- github.com/evanphx/json-patch/v5 v5.6.0 // indirect
+ github.com/emicklei/go-restful/v3 v3.12.2 // indirect
+ github.com/evanphx/json-patch/v5 v5.9.11 // indirect
github.com/fatih/color v1.13.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/flyteorg/stow v0.3.11 // indirect
- github.com/fsnotify/fsnotify v1.6.0 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
+ github.com/flyteorg/stow v0.3.12 // indirect
+ github.com/fsnotify/fsnotify v1.9.0 // indirect
+ github.com/fxamacker/cbor/v2 v2.9.0 // indirect
+ github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
- github.com/go-openapi/jsonpointer v0.19.6 // indirect
+ github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.20.2 // indirect
- github.com/go-openapi/swag v0.22.3 // indirect
+ github.com/go-openapi/swag v0.23.0 // indirect
+ github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/google/gnostic-models v0.6.8 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
+ github.com/google/gnostic-models v0.7.0 // indirect
+ github.com/google/go-cmp v0.7.0 // indirect
github.com/google/s2a-go v0.1.7 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect
- github.com/hashicorp/hcl v1.0.0 // indirect
- github.com/imdario/mergo v0.3.6 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
- github.com/magiconair/properties v1.8.6 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.12 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
- github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/ncw/swift v1.0.53 // indirect
- github.com/pelletier/go-toml v1.9.4 // indirect
- github.com/pelletier/go-toml/v2 v2.0.0-beta.8 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/prometheus/client_golang v1.19.1 // indirect
+ github.com/prometheus/client_golang v1.22.0 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
- github.com/prometheus/common v0.53.0 // indirect
+ github.com/prometheus/common v0.62.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
+ github.com/sagikazarmark/locafero v0.11.0 // indirect
github.com/shamaton/msgpack/v2 v2.2.2 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
- github.com/spf13/afero v1.8.2 // indirect
- github.com/spf13/cast v1.4.1 // indirect
- github.com/spf13/jwalterweatherman v1.1.0 // indirect
- github.com/spf13/viper v1.11.0 // indirect
- github.com/subosito/gotenv v1.2.0 // indirect
+ github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
+ github.com/spf13/afero v1.15.0 // indirect
+ github.com/spf13/cast v1.10.0 // indirect
+ github.com/spf13/viper v1.21.0 // indirect
+ github.com/subosito/gotenv v1.6.0 // indirect
+ github.com/x448/float16 v0.8.4 // indirect
go.opencensus.io v0.24.0 // indirect
+ go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
- go.opentelemetry.io/otel v1.24.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect
+ go.opentelemetry.io/otel v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 // indirect
- go.opentelemetry.io/otel/metric v1.24.0 // indirect
- go.opentelemetry.io/otel/sdk v1.24.0 // indirect
- go.opentelemetry.io/otel/trace v1.24.0 // indirect
- go.opentelemetry.io/proto/otlp v1.1.0 // indirect
- golang.org/x/crypto v0.31.0 // indirect
- golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 // indirect
- golang.org/x/net v0.33.0 // indirect
- golang.org/x/oauth2 v0.18.0 // indirect
- golang.org/x/sync v0.10.0 // indirect
- golang.org/x/sys v0.28.0 // indirect
- golang.org/x/term v0.27.0 // indirect
- golang.org/x/text v0.21.0 // indirect
- golang.org/x/time v0.5.0 // indirect
+ go.opentelemetry.io/otel/metric v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.43.0 // indirect
+ go.opentelemetry.io/otel/trace v1.43.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.10.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.49.0 // indirect
+ golang.org/x/net v0.52.0 // indirect
+ golang.org/x/oauth2 v0.35.0 // indirect
+ golang.org/x/sync v0.20.0 // indirect
+ golang.org/x/sys v0.42.0 // indirect
+ golang.org/x/term v0.41.0 // indirect
+ golang.org/x/text v0.35.0 // indirect
+ golang.org/x/time v0.9.0 // indirect
google.golang.org/api v0.155.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/grpc v1.62.1 // indirect
- google.golang.org/protobuf v1.34.1 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ google.golang.org/grpc v1.80.0 // indirect
+ google.golang.org/protobuf v1.36.11 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
- gopkg.in/ini.v1 v1.66.4 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- k8s.io/api v0.28.2 // indirect
- k8s.io/klog/v2 v2.100.1 // indirect
- k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect
- k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 // indirect
- sigs.k8s.io/controller-runtime v0.0.0-00010101000000-000000000000 // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
- sigs.k8s.io/yaml v1.3.0 // indirect
+ k8s.io/api v0.34.1 // indirect
+ k8s.io/apimachinery v0.34.1 // indirect
+ k8s.io/klog/v2 v2.130.1 // indirect
+ k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
+ k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect
+ sigs.k8s.io/controller-runtime v0.22.4 // indirect
+ sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
+ sigs.k8s.io/randfill v1.0.0 // indirect
+ sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
+ sigs.k8s.io/yaml v1.6.0 // indirect
)
replace (
- github.com/flyteorg/flyte/datacatalog => ../datacatalog
- github.com/flyteorg/flyte/flyteadmin => ../flyteadmin
- github.com/flyteorg/flyte/flytecopilot => ../flytecopilot
github.com/flyteorg/flyte/flyteidl => ../flyteidl
- github.com/flyteorg/flyte/flyteplugins => ../flyteplugins
- github.com/flyteorg/flyte/flytepropeller => ../flytepropeller
github.com/flyteorg/flyte/flytestdlib => ../flytestdlib
- k8s.io/api => k8s.io/api v0.28.2
- k8s.io/apimachinery => k8s.io/apimachinery v0.28.2
- k8s.io/client-go => k8s.io/client-go v0.28.2
- k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f
- sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.16.2
)
diff --git a/flytecopilot/go.sum b/flytecopilot/go.sum
index 3e593b3525b..b796d66542b 100644
--- a/flytecopilot/go.sum
+++ b/flytecopilot/go.sum
@@ -1,51 +1,12 @@
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.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
-cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
-cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
-cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
-cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
-cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
-cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
-cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
-cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
-cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
-cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
-cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
-cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM=
cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4=
-cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
-cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
-cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
-cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
-cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
-cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=
-cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI=
-cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
-cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
-cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
-cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
+cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
+cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI=
cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8=
-cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
-cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
-cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
-cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
-cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
-cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
-cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
-cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
-cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8=
cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8=
-dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc=
@@ -59,15 +20,16 @@ github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0/go.mod h1:WCPBHsOXfB
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
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/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/aws/aws-sdk-go v1.47.11 h1:Dol+MA+hQblbnXUI3Vk9qvoekU6O1uDEuAItezjiWNQ=
github.com/aws/aws-sdk-go v1.47.11/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
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/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
-github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+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 v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
@@ -75,140 +37,103 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927 h1:SKI1/fuSdodxmNNyVBR8d7X/HuLnRpvvFO0AgyQk764=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
-github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
github.com/coocood/freecache v1.1.1 h1:uukNF7QKCZEdZ9gAV7WQzvh0SbjwdMF6m3x3rxEkaPc=
github.com/coocood/freecache v1.1.1/go.mod h1:OKrEjkGVoxZhyWAJoeFi5BMLUJm2Tit0kpGkIr7NGYY=
-github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE=
-github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU=
+github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
+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.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
-github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
-github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww=
-github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4=
+github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=
+github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
+github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
+github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/flyteorg/stow v0.3.11 h1:Uf4fzVbghCqMNvx50XvYzwdNeQDBSKQJ7zddWu7p3eI=
-github.com/flyteorg/stow v0.3.11/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
-github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
-github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
+github.com/flyteorg/stow v0.3.12 h1:RRXI5RUdxaK6A46HrO0D2r14cRlW1lJRL6qyzqpVMPU=
+github.com/flyteorg/stow v0.3.12/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
+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.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
+github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
+github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
-github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+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-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo=
-github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA=
-github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
+github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
+github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
+github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
+github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
-github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/go-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-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
+github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
+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/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-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/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
-github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
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.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
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.4.3/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.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
-github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-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/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
-github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
+github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
+github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.4.1/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.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.4/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.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-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/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 h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
-github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
-github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=
github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
-github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
+github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -216,24 +141,12 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
-github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
-github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
-github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
-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 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28=
-github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
@@ -242,12 +155,8 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
-github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/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/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -267,344 +176,183 @@ github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
-github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
-github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/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 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/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/ncw/swift v1.0.53 h1:luHjjTNtekIEvHg5KdAFIBaH7bWfNkefwFnpDffSIks=
github.com/ncw/swift v1.0.53/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM=
-github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU=
-github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM=
-github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
-github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
-github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM=
-github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
+github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg=
+github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
+github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw=
+github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
+github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
+github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
-github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
+github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
+github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
-github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
+github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
+github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE=
-github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U=
+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/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+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/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc=
+github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik=
github.com/shamaton/msgpack/v2 v2.2.2 h1:GOIg0c9LV04VwzOOqZSrmsv/JzjNOOMxnS/HvOHGdgs=
github.com/shamaton/msgpack/v2 v2.2.2/go.mod h1:6khjYnkx73f7VQU7wjcFS9DFjs+59naVWJv1TB7qdOI=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
-github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
-github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
-github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
-github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
-github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
-github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
-github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44=
-github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk=
+github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
+github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
+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 v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
+github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
+github.com/spf13/pflag v1.0.6/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.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
+github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
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/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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
-github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
-github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+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.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
+github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
+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/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
-go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
-go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
+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.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
-go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
-go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q=
+go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
+go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 h1:zr8ymM5OWWjjiWRzwTfZ67c905+2TMHYp2lMJ52QTyM=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0/go.mod h1:sQs7FT2iLVJ+67vYngGJkPe1qr39IzaBzaj9IDNNY8k=
-go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
-go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
-go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
-go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
-go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
-go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI=
-go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY=
+go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
+go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
+go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
+go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
+go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
+go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
+go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
+go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
+go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=
+go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=
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.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
-go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c=
-go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk=
+go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
+go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
+go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
+go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v3 v3.0.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-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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
-golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
+golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
+golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
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-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
-golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
-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-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
-golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/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.1.1-0.20191107180719-034126e5016b/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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
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-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-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-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/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-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200707034311-ab3426394381/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-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=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
-golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
+golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
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-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
-golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
+golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
+golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
-golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
+golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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-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-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-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-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-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
-golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
-golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
-golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
+golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=
+golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=
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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
-golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
+golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
+golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
+golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-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-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
-golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
-golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
+golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=
+golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
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=
@@ -613,96 +361,28 @@ golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3j
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
-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/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
-google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
-google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
-google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
-google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
+gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
+gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA=
google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk=
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/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-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-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
-google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
-google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 h1:VPWxll4HlMw1Vs/qXtN7BvhZqsS9cdAittCNvVENElA=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
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.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
-google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
-google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
-google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
+google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM=
+google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4=
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=
@@ -711,22 +391,16 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi
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.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
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.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
-google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4=
+gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
gopkg.in/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.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4=
-gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/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=
@@ -734,38 +408,30 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/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=
-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/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-k8s.io/api v0.28.2 h1:9mpl5mOb6vXZvqbQmankOfPIGiudghwCoLl1EYfUZbw=
-k8s.io/api v0.28.2/go.mod h1:RVnJBsjU8tcMq7C3iaRSGMeaKt2TWEUXcpIt/90fjEg=
-k8s.io/apiextensions-apiserver v0.28.0 h1:CszgmBL8CizEnj4sj7/PtLGey6Na3YgWyGCPONv7E9E=
-k8s.io/apiextensions-apiserver v0.28.0/go.mod h1:uRdYiwIuu0SyqJKriKmqEN2jThIJPhVmOWETm8ud1VE=
-k8s.io/apimachinery v0.28.2 h1:KCOJLrc6gu+wV1BYgwik4AF4vXOlVJPdiqn0yAWWwXQ=
-k8s.io/apimachinery v0.28.2/go.mod h1:RdzF87y/ngqk9H4z3EL2Rppv5jj95vGS/HaFXrLDApU=
-k8s.io/client-go v0.28.2 h1:DNoYI1vGq0slMBN/SWKMZMw0Rq+0EQW6/AK4v9+3VeY=
-k8s.io/client-go v0.28.2/go.mod h1:sMkApowspLuc7omj1FOSUxSoqjr+d5Q0Yc0LOFnYFJY=
-k8s.io/component-base v0.28.1 h1:LA4AujMlK2mr0tZbQDZkjWbdhTV5bRyEyAFe0TJxlWg=
-k8s.io/component-base v0.28.1/go.mod h1:jI11OyhbX21Qtbav7JkhehyBsIRfnO8oEgoAR12ArIU=
+k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
+k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
+k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI=
+k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc=
+k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4=
+k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
+k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY=
+k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8=
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
-k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
-k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
-k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f h1:eeEUOoGYWhOz7EyXqhlR2zHKNw2mNJ9vzJmub6YN6kk=
-k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
-k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk=
-k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
-rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
-rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
-sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU=
-sigs.k8s.io/controller-runtime v0.16.2/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
-sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
-sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
+k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
+k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
+k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA=
+k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
+k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y=
+k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A=
+sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
+sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
+sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
diff --git a/flytectl/.golangci.yml b/flytectl/.golangci.yml
index 12de11bf56f..6b89c7aa8b0 100644
--- a/flytectl/.golangci.yml
+++ b/flytectl/.golangci.yml
@@ -1,30 +1,34 @@
-run:
- skip-dirs:
- - pkg/client
+version: "2"
linters:
- disable-all: true
+ default: none
enable:
- errcheck
- - gosec
- - gci
- goconst
- - goimports
- - gosimple
+ - gosec
- govet
- ineffassign
- misspell
- nakedret
- - staticcheck
- - typecheck
+ - protogetter
- unconvert
- unparam
- unused
- - protogetter
-linters-settings:
- gci:
- skip-generated: true
- goconst:
- ignore-tests: true
-issues:
- exclude:
- - copylocks
+ exclusions:
+ generated: lax
+ presets:
+ - comments
+ - common-false-positives
+ - legacy
+ - std-error-handling
+ rules:
+ - path: (.+)\.go$
+ text: copylocks
+ - linters:
+ - goconst
+ path: (.+)_test\.go
+formatters:
+ enable:
+ - gci
+ - goimports
+ exclusions:
+ generated: lax
\ No newline at end of file
diff --git a/flytectl/cmd/config/subcommand/clusterresourceattribute/attrdeleteconfig_flags_test.go b/flytectl/cmd/config/subcommand/clusterresourceattribute/attrdeleteconfig_flags_test.go
index fcf1f72f0c9..acca20cae43 100755
--- a/flytectl/cmd/config/subcommand/clusterresourceattribute/attrdeleteconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/clusterresourceattribute/attrdeleteconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/clusterresourceattribute/attrfetchconfig_flags_test.go b/flytectl/cmd/config/subcommand/clusterresourceattribute/attrfetchconfig_flags_test.go
index dbcbb814fb8..5bb3ed82833 100755
--- a/flytectl/cmd/config/subcommand/clusterresourceattribute/attrfetchconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/clusterresourceattribute/attrfetchconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/clusterresourceattribute/attrupdateconfig_flags_test.go b/flytectl/cmd/config/subcommand/clusterresourceattribute/attrupdateconfig_flags_test.go
index 9396a2e9e43..84cb34a5de0 100755
--- a/flytectl/cmd/config/subcommand/clusterresourceattribute/attrupdateconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/clusterresourceattribute/attrupdateconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/compile/config_flags_test.go b/flytectl/cmd/config/subcommand/compile/config_flags_test.go
index be3845ec1aa..cf1677a54f5 100755
--- a/flytectl/cmd/config/subcommand/compile/config_flags_test.go
+++ b/flytectl/cmd/config/subcommand/compile/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/config/config_flags_test.go b/flytectl/cmd/config/subcommand/config/config_flags_test.go
index 51f52abb86b..b2a5a9e566f 100755
--- a/flytectl/cmd/config/subcommand/config/config_flags_test.go
+++ b/flytectl/cmd/config/subcommand/config/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/config/consoleconfig_flags_test.go b/flytectl/cmd/config/subcommand/config/consoleconfig_flags_test.go
index 77cf7ad56c7..9c25ae87756 100755
--- a/flytectl/cmd/config/subcommand/config/consoleconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/config/consoleconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/docker/config_flags_test.go b/flytectl/cmd/config/subcommand/docker/config_flags_test.go
index e1efe4a6442..58cc17372bc 100644
--- a/flytectl/cmd/config/subcommand/docker/config_flags_test.go
+++ b/flytectl/cmd/config/subcommand/docker/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/execution/config_flags_test.go b/flytectl/cmd/config/subcommand/execution/config_flags_test.go
index ea72babe754..94d50e9be4b 100755
--- a/flytectl/cmd/config/subcommand/execution/config_flags_test.go
+++ b/flytectl/cmd/config/subcommand/execution/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/execution/execdeleteconfig_flags_test.go b/flytectl/cmd/config/subcommand/execution/execdeleteconfig_flags_test.go
index c4d58d13f8b..cd21e8c85b2 100755
--- a/flytectl/cmd/config/subcommand/execution/execdeleteconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/execution/execdeleteconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/execution/updateconfig_flags_test.go b/flytectl/cmd/config/subcommand/execution/updateconfig_flags_test.go
index 2e6c693ea8c..afd56fc24e4 100755
--- a/flytectl/cmd/config/subcommand/execution/updateconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/execution/updateconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/executionclusterlabel/attrdeleteconfig_flags_test.go b/flytectl/cmd/config/subcommand/executionclusterlabel/attrdeleteconfig_flags_test.go
index 573e5937b30..e46ec884962 100755
--- a/flytectl/cmd/config/subcommand/executionclusterlabel/attrdeleteconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/executionclusterlabel/attrdeleteconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/executionclusterlabel/attrfetchconfig_flags_test.go b/flytectl/cmd/config/subcommand/executionclusterlabel/attrfetchconfig_flags_test.go
index 495e5024d65..3c7e92a1961 100755
--- a/flytectl/cmd/config/subcommand/executionclusterlabel/attrfetchconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/executionclusterlabel/attrfetchconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/executionclusterlabel/attrupdateconfig_flags_test.go b/flytectl/cmd/config/subcommand/executionclusterlabel/attrupdateconfig_flags_test.go
index e2a8fe2a2e7..278f4e839b4 100755
--- a/flytectl/cmd/config/subcommand/executionclusterlabel/attrupdateconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/executionclusterlabel/attrupdateconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/executionqueueattribute/attrdeleteconfig_flags_test.go b/flytectl/cmd/config/subcommand/executionqueueattribute/attrdeleteconfig_flags_test.go
index a2ca3c80046..323b3026c5e 100755
--- a/flytectl/cmd/config/subcommand/executionqueueattribute/attrdeleteconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/executionqueueattribute/attrdeleteconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/executionqueueattribute/attrfetchconfig_flags_test.go b/flytectl/cmd/config/subcommand/executionqueueattribute/attrfetchconfig_flags_test.go
index 73e37ab4475..3acf9457dea 100755
--- a/flytectl/cmd/config/subcommand/executionqueueattribute/attrfetchconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/executionqueueattribute/attrfetchconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/executionqueueattribute/attrupdateconfig_flags_test.go b/flytectl/cmd/config/subcommand/executionqueueattribute/attrupdateconfig_flags_test.go
index 82c697d17a5..77f065e22d6 100755
--- a/flytectl/cmd/config/subcommand/executionqueueattribute/attrupdateconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/executionqueueattribute/attrupdateconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/launchplan/config_flags_test.go b/flytectl/cmd/config/subcommand/launchplan/config_flags_test.go
index b46c8d104f4..39016819a70 100755
--- a/flytectl/cmd/config/subcommand/launchplan/config_flags_test.go
+++ b/flytectl/cmd/config/subcommand/launchplan/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/launchplan/updateconfig_flags_test.go b/flytectl/cmd/config/subcommand/launchplan/updateconfig_flags_test.go
index fc58e7ac8f0..b9323452614 100755
--- a/flytectl/cmd/config/subcommand/launchplan/updateconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/launchplan/updateconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/plugin_override/attrdeleteconfig_flags_test.go b/flytectl/cmd/config/subcommand/plugin_override/attrdeleteconfig_flags_test.go
index 006cfa064b4..73b3b84b149 100755
--- a/flytectl/cmd/config/subcommand/plugin_override/attrdeleteconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/plugin_override/attrdeleteconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/plugin_override/attrfetchconfig_flags_test.go b/flytectl/cmd/config/subcommand/plugin_override/attrfetchconfig_flags_test.go
index d5206f1d330..f44b9a147c2 100755
--- a/flytectl/cmd/config/subcommand/plugin_override/attrfetchconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/plugin_override/attrfetchconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/plugin_override/attrupdateconfig_flags_test.go b/flytectl/cmd/config/subcommand/plugin_override/attrupdateconfig_flags_test.go
index 309c31746a4..594c6f75467 100755
--- a/flytectl/cmd/config/subcommand/plugin_override/attrupdateconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/plugin_override/attrupdateconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/project/config_flags_test.go b/flytectl/cmd/config/subcommand/project/config_flags_test.go
index 78bd4ca726c..00db50928a1 100755
--- a/flytectl/cmd/config/subcommand/project/config_flags_test.go
+++ b/flytectl/cmd/config/subcommand/project/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/project/configproject_flags_test.go b/flytectl/cmd/config/subcommand/project/configproject_flags_test.go
index 98847d779a2..0610a2e6676 100755
--- a/flytectl/cmd/config/subcommand/project/configproject_flags_test.go
+++ b/flytectl/cmd/config/subcommand/project/configproject_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/project/project_config.go b/flytectl/cmd/config/subcommand/project/project_config.go
index fd71628448a..d3283e5909b 100644
--- a/flytectl/cmd/config/subcommand/project/project_config.go
+++ b/flytectl/cmd/config/subcommand/project/project_config.go
@@ -1,14 +1,14 @@
package project
import (
- "fmt"
+ "errors"
"io/ioutil"
"github.com/flyteorg/flyte/flytectl/clierrors"
"github.com/flyteorg/flyte/flytectl/cmd/config"
"github.com/flyteorg/flyte/flytectl/pkg/filters"
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
- "gopkg.in/yaml.v3"
+ "go.yaml.in/yaml/v3"
)
//go:generate pflags Config --default-var DefaultConfig --bind-default-var
@@ -74,12 +74,12 @@ func (c *ConfigProject) GetProjectSpec(cf *config.Config) (*admin.Project, error
project := cf.Project
if len(projectSpec.GetId()) == 0 && len(project) == 0 {
- err := fmt.Errorf(clierrors.ErrProjectNotPassed) //nolint
+ err := errors.New(clierrors.ErrProjectNotPassed)
return nil, err
}
if len(projectSpec.GetId()) > 0 && len(project) > 0 {
- err := fmt.Errorf(clierrors.ErrProjectIDBothPassed) //nolint
+ err := errors.New(clierrors.ErrProjectIDBothPassed)
return nil, err
}
@@ -104,7 +104,7 @@ func (c *ConfigProject) MapToAdminState() (admin.Project_ProjectState, error) {
if activate || archive {
if activate == archive {
- return admin.Project_ACTIVE, fmt.Errorf(clierrors.ErrInvalidStateUpdate) //nolint
+ return admin.Project_ACTIVE, errors.New(clierrors.ErrInvalidStateUpdate)
}
if archive {
return admin.Project_ARCHIVED, nil
diff --git a/flytectl/cmd/config/subcommand/register/filesconfig_flags_test.go b/flytectl/cmd/config/subcommand/register/filesconfig_flags_test.go
index 14fbc00ed2f..1bfeb1d7a32 100755
--- a/flytectl/cmd/config/subcommand/register/filesconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/register/filesconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/sandbox/config_flags.go b/flytectl/cmd/config/subcommand/sandbox/config_flags.go
index 9238a0b5daa..c9476d78f7f 100755
--- a/flytectl/cmd/config/subcommand/sandbox/config_flags.go
+++ b/flytectl/cmd/config/subcommand/sandbox/config_flags.go
@@ -63,6 +63,6 @@ func (cfg Config) GetPFlagSet(prefix string) *pflag.FlagSet {
cmdFlags.BoolVar(&DefaultConfig.Dev, fmt.Sprintf("%v%v", prefix, "dev"), DefaultConfig.Dev, "Optional. Only start minio and postgres in the sandbox.")
cmdFlags.BoolVar(&DefaultConfig.DryRun, fmt.Sprintf("%v%v", prefix, "dryRun"), DefaultConfig.DryRun, "Optional. Only print the docker commands to bring up flyte sandbox/demo container.This will still call github api's to get the latest flyte release to use'")
cmdFlags.BoolVar(&DefaultConfig.Force, fmt.Sprintf("%v%v", prefix, "force"), DefaultConfig.Force, "Optional. Forcefully delete existing sandbox cluster if it exists.")
- cmdFlags.StringVar(&DefaultConfig.Port, fmt.Sprintf("%v%v", prefix, "port"), DefaultConfig.Port, "Optional. Specify the port for the Kubernetes in the sandbox.")
+ cmdFlags.StringSliceVar(&DefaultConfig.Ports, fmt.Sprintf("%v%v", prefix, "ports"), DefaultConfig.Ports, "Optional. Custom port mappings for sandbox.")
return cmdFlags
}
diff --git a/flytectl/cmd/config/subcommand/sandbox/config_flags_test.go b/flytectl/cmd/config/subcommand/sandbox/config_flags_test.go
index 3a72e49b88e..f94f2fa7e65 100755
--- a/flytectl/cmd/config/subcommand/sandbox/config_flags_test.go
+++ b/flytectl/cmd/config/subcommand/sandbox/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/sandbox/sandbox_config.go b/flytectl/cmd/config/subcommand/sandbox/sandbox_config.go
index 6edf676913b..faf36f3ff7b 100644
--- a/flytectl/cmd/config/subcommand/sandbox/sandbox_config.go
+++ b/flytectl/cmd/config/subcommand/sandbox/sandbox_config.go
@@ -1,8 +1,6 @@
package sandbox
import (
- "fmt"
-
"github.com/flyteorg/flyte/flytectl/pkg/docker"
)
@@ -44,17 +42,20 @@ type Config struct {
Force bool `json:"force" pflag:",Optional. Forcefully delete existing sandbox cluster if it exists."`
- // Allow user to specify the port for the sandbox
- Port string `json:"port" pflag:",Optional. Specify the port for the Kubernetes in the sandbox."`
+Port string `json:"port" pflag:",Optional. Specify the port for Kubernetes in the sandbox."`
+
+// Allow user to specify the port for the sandbox
+Ports []string `json:"ports" pflag:",Optional. Custom port mappings for sandbox."`
}
//go:generate pflags Config --default-var DefaultConfig --bind-default-var
var (
DefaultConfig = &Config{
- Port: "6443", // Default port for the sandbox
- }
+ Port: "6443",
+ Ports: []string{}, // Default port mappings
+}
)
func (c Config) GetK8sEndpoint() string {
- return fmt.Sprintf("https://127.0.0.1:%s", c.Port)
-}
+ return "https://127.0.0.1:30086"
+}
\ No newline at end of file
diff --git a/flytectl/cmd/config/subcommand/task/config_flags_test.go b/flytectl/cmd/config/subcommand/task/config_flags_test.go
index 52651e144c9..0fbb6c94c11 100755
--- a/flytectl/cmd/config/subcommand/task/config_flags_test.go
+++ b/flytectl/cmd/config/subcommand/task/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/taskresourceattribute/attrdeleteconfig_flags_test.go b/flytectl/cmd/config/subcommand/taskresourceattribute/attrdeleteconfig_flags_test.go
index d4211ad7cf7..fddf6d8bd78 100755
--- a/flytectl/cmd/config/subcommand/taskresourceattribute/attrdeleteconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/taskresourceattribute/attrdeleteconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/taskresourceattribute/attrfetchconfig_flags_test.go b/flytectl/cmd/config/subcommand/taskresourceattribute/attrfetchconfig_flags_test.go
index 038f8a893c9..6c98b5a554f 100755
--- a/flytectl/cmd/config/subcommand/taskresourceattribute/attrfetchconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/taskresourceattribute/attrfetchconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/taskresourceattribute/attrupdateconfig_flags_test.go b/flytectl/cmd/config/subcommand/taskresourceattribute/attrupdateconfig_flags_test.go
index aaf429a7327..7d52147a30e 100755
--- a/flytectl/cmd/config/subcommand/taskresourceattribute/attrupdateconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/taskresourceattribute/attrupdateconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/workflow/config_flags_test.go b/flytectl/cmd/config/subcommand/workflow/config_flags_test.go
index 46d13aeb87a..46291a27bc7 100755
--- a/flytectl/cmd/config/subcommand/workflow/config_flags_test.go
+++ b/flytectl/cmd/config/subcommand/workflow/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/workflowexecutionconfig/attrdeleteconfig_flags_test.go b/flytectl/cmd/config/subcommand/workflowexecutionconfig/attrdeleteconfig_flags_test.go
index 8a6b1b94f46..53c2deafe38 100755
--- a/flytectl/cmd/config/subcommand/workflowexecutionconfig/attrdeleteconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/workflowexecutionconfig/attrdeleteconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/workflowexecutionconfig/attrfetchconfig_flags_test.go b/flytectl/cmd/config/subcommand/workflowexecutionconfig/attrfetchconfig_flags_test.go
index 6d090a0fe4e..20d05dcc0ca 100755
--- a/flytectl/cmd/config/subcommand/workflowexecutionconfig/attrfetchconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/workflowexecutionconfig/attrfetchconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/config/subcommand/workflowexecutionconfig/attrupdateconfig_flags_test.go b/flytectl/cmd/config/subcommand/workflowexecutionconfig/attrupdateconfig_flags_test.go
index 5c470ca0661..38c86441bcb 100755
--- a/flytectl/cmd/config/subcommand/workflowexecutionconfig/attrupdateconfig_flags_test.go
+++ b/flytectl/cmd/config/subcommand/workflowexecutionconfig/attrupdateconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/core/cmd.go b/flytectl/cmd/core/cmd.go
index f04c73a2da2..92e50f4e7d7 100644
--- a/flytectl/cmd/core/cmd.go
+++ b/flytectl/cmd/core/cmd.go
@@ -58,7 +58,6 @@ func generateCommandFunc(cmdEntry CommandEntry) func(cmd *cobra.Command, args []
if config.GetConfig().Domain == "" {
return fmt.Errorf("project and domain are required parameters")
}
- fmt.Printf("Using Project: %s, Domain: %s\n", config.GetConfig().Project, config.GetConfig().Domain)
}
if _, err := config.GetConfig().OutputFormat(); err != nil {
return err
diff --git a/flytectl/cmd/create/executionconfig_flags_test.go b/flytectl/cmd/create/executionconfig_flags_test.go
index e251b60c496..b6b10eef81c 100755
--- a/flytectl/cmd/create/executionconfig_flags_test.go
+++ b/flytectl/cmd/create/executionconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/create/project.go b/flytectl/cmd/create/project.go
index 777ec7a5db4..0eb67fa0105 100644
--- a/flytectl/cmd/create/project.go
+++ b/flytectl/cmd/create/project.go
@@ -2,6 +2,7 @@ package create
import (
"context"
+ "errors"
"fmt"
"github.com/flyteorg/flyte/flytectl/clierrors"
@@ -50,10 +51,10 @@ func createProjectsCommand(ctx context.Context, args []string, cmdCtx cmdCore.Co
return err
}
if projectSpec.GetId() == "" {
- return fmt.Errorf(clierrors.ErrProjectNotPassed) //nolint
+ return errors.New(clierrors.ErrProjectNotPassed)
}
if projectSpec.GetName() == "" {
- return fmt.Errorf(clierrors.ErrProjectNameNotPassed) //nolint
+ return errors.New(clierrors.ErrProjectNameNotPassed)
}
if project.DefaultProjectConfig.DryRun {
diff --git a/flytectl/cmd/demo/exec_test.go b/flytectl/cmd/demo/exec_test.go
index 7da8e5501ba..db475ae8b09 100644
--- a/flytectl/cmd/demo/exec_test.go
+++ b/flytectl/cmd/demo/exec_test.go
@@ -37,8 +37,8 @@ func TestDemoClusterExec(t *testing.T) {
}, nil)
docker.ExecConfig.Cmd = []string{"ls -al"}
mockDocker.EXPECT().ContainerExecCreate(ctx, mock.Anything, docker.ExecConfig).Return(types.IDResponse{}, nil)
- mockDocker.EXPECT().ContainerExecInspect(ctx, mock.Anything).Return(types.ContainerExecInspect{}, nil)
- mockDocker.EXPECT().ContainerExecAttach(ctx, mock.Anything, types.ExecStartCheck{}).Return(types.HijackedResponse{
+ mockDocker.EXPECT().ContainerExecInspect(ctx, mock.Anything).Return(container.ExecInspect{}, nil)
+ mockDocker.EXPECT().ContainerExecAttach(ctx, mock.Anything, container.ExecStartOptions{}).Return(types.HijackedResponse{
Reader: reader,
}, fmt.Errorf("Test"))
docker.Client = mockDocker
@@ -64,8 +64,8 @@ func TestSandboxClusterExecWithoutCmd(t *testing.T) {
}, nil)
docker.ExecConfig.Cmd = []string{}
mockDocker.EXPECT().ContainerExecCreate(ctx, mock.Anything, docker.ExecConfig).Return(types.IDResponse{}, nil)
- mockDocker.EXPECT().ContainerExecInspect(ctx, mock.Anything).Return(types.ContainerExecInspect{}, nil)
- mockDocker.EXPECT().ContainerExecAttach(ctx, mock.Anything, types.ExecStartCheck{}).Return(types.HijackedResponse{
+ mockDocker.EXPECT().ContainerExecInspect(ctx, mock.Anything).Return(container.ExecInspect{}, nil)
+ mockDocker.EXPECT().ContainerExecAttach(ctx, mock.Anything, container.ExecStartOptions{}).Return(types.HijackedResponse{
Reader: reader,
}, fmt.Errorf("Test"))
docker.Client = mockDocker
diff --git a/flytectl/cmd/demo/reload_test.go b/flytectl/cmd/demo/reload_test.go
index d7cbd9cbe4f..48afc417296 100644
--- a/flytectl/cmd/demo/reload_test.go
+++ b/flytectl/cmd/demo/reload_test.go
@@ -52,7 +52,7 @@ func sandboxSetup(ctx context.Context, legacy bool) {
mockDocker.EXPECT().ContainerExecCreate(
ctx,
docker.FlyteSandboxClusterName,
- types.ExecConfig{
+ container.ExecOptions{
AttachStderr: true,
Tty: true,
WorkingDir: "/",
@@ -60,10 +60,10 @@ func sandboxSetup(ctx context.Context, legacy bool) {
Cmd: []string{"sh", "-c", fmt.Sprintf("which %s > /dev/null", internalBootstrapAgent)},
},
).Return(types.IDResponse{ID: "0"}, nil)
- mockDocker.EXPECT().ContainerExecAttach(ctx, "0", types.ExecStartCheck{}).Return(types.HijackedResponse{
+ mockDocker.EXPECT().ContainerExecAttach(ctx, "0", container.ExecStartOptions{}).Return(types.HijackedResponse{
Reader: bufio.NewReader(bytes.NewReader([]byte{})),
}, nil)
- mockDocker.EXPECT().ContainerExecInspect(ctx, "0").Return(types.ContainerExecInspect{ExitCode: checkLegacySandboxExecExitCode}, nil)
+ mockDocker.EXPECT().ContainerExecInspect(ctx, "0").Return(container.ExecInspect{ExitCode: checkLegacySandboxExecExitCode}, nil)
// Register additional mocks for the actual execution of the bootstrap agent
// in non-legacy sandboxes
@@ -71,7 +71,7 @@ func sandboxSetup(ctx context.Context, legacy bool) {
mockDocker.EXPECT().ContainerExecCreate(
ctx,
docker.FlyteSandboxClusterName,
- types.ExecConfig{
+ container.ExecOptions{
AttachStderr: true,
Tty: true,
WorkingDir: "/",
@@ -79,7 +79,7 @@ func sandboxSetup(ctx context.Context, legacy bool) {
Cmd: []string{internalBootstrapAgent},
},
).Return(types.IDResponse{ID: "1"}, nil)
- mockDocker.EXPECT().ContainerExecAttach(ctx, "1", types.ExecStartCheck{}).Return(types.HijackedResponse{
+ mockDocker.EXPECT().ContainerExecAttach(ctx, "1", container.ExecStartOptions{}).Return(types.HijackedResponse{
Reader: bufio.NewReader(bytes.NewReader([]byte{})),
}, nil)
}
diff --git a/flytectl/cmd/get/execution_util.go b/flytectl/cmd/get/execution_util.go
index ea99872f9bc..7a00af94b7f 100644
--- a/flytectl/cmd/get/execution_util.go
+++ b/flytectl/cmd/get/execution_util.go
@@ -11,7 +11,7 @@ import (
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
structpb "github.com/golang/protobuf/ptypes/struct"
- "gopkg.in/yaml.v3"
+ "go.yaml.in/yaml/v3"
)
// ExecutionConfig is duplicated struct from create with the same structure. This is to avoid the circular dependency. Only works with go-yaml.
diff --git a/flytectl/cmd/get/matchable_cluster_resource_attribute.go b/flytectl/cmd/get/matchable_cluster_resource_attribute.go
index c829efc2881..95c89e55fec 100644
--- a/flytectl/cmd/get/matchable_cluster_resource_attribute.go
+++ b/flytectl/cmd/get/matchable_cluster_resource_attribute.go
@@ -67,7 +67,7 @@ func getClusterResourceAttributes(ctx context.Context, args []string, cmdCtx cmd
project = config.GetConfig().Project
domain = config.GetConfig().Domain
if len(args) == 1 {
- workflowName = args[0]
+ workflowName = args[0] //nolint:gosec
}
// Construct a shadow config for ClusterResourceAttribute. The shadow config is not using ProjectDomainAttribute/Workflowattribute directly inorder to simplify the inputs.
clusterResourceAttrFileConfig := clusterresourceattribute.AttrFileConfig{Project: project, Domain: domain, Workflow: workflowName}
diff --git a/flytectl/cmd/get/matchable_execution_cluster_label.go b/flytectl/cmd/get/matchable_execution_cluster_label.go
index 98af4efce6c..71c5c3682e1 100644
--- a/flytectl/cmd/get/matchable_execution_cluster_label.go
+++ b/flytectl/cmd/get/matchable_execution_cluster_label.go
@@ -66,7 +66,7 @@ func getExecutionClusterLabel(ctx context.Context, args []string, cmdCtx cmdCore
project = config.GetConfig().Project
domain = config.GetConfig().Domain
if len(args) == 1 {
- workflowName = args[0]
+ workflowName = args[0] //nolint:gosec
}
// Construct a shadow config for ExecutionClusterLabel. The shadow config is not using ProjectDomainAttribute/Workflowattribute directly inorder to simplify the inputs.
executionClusterLabelFileConfig := executionclusterlabel.FileConfig{Project: project, Domain: domain, Workflow: workflowName}
diff --git a/flytectl/cmd/get/matchable_execution_queue_attribute.go b/flytectl/cmd/get/matchable_execution_queue_attribute.go
index c9faffc8e09..73bf681cdf1 100644
--- a/flytectl/cmd/get/matchable_execution_queue_attribute.go
+++ b/flytectl/cmd/get/matchable_execution_queue_attribute.go
@@ -69,7 +69,7 @@ func getExecutionQueueAttributes(ctx context.Context, args []string, cmdCtx cmdC
project = config.GetConfig().Project
domain = config.GetConfig().Domain
if len(args) == 1 {
- workflowName = args[0]
+ workflowName = args[0] //nolint:gosec
}
// Construct a shadow config for ExecutionQueueAttribute. The shadow config is not using ProjectDomainAttribute/Workflowattribute directly inorder to simplify the inputs.
executionQueueAttrFileConfig := executionqueueattribute.AttrFileConfig{Project: project, Domain: domain, Workflow: workflowName}
diff --git a/flytectl/cmd/get/matchable_plugin_override.go b/flytectl/cmd/get/matchable_plugin_override.go
index 53f683b5489..c3689d4a050 100644
--- a/flytectl/cmd/get/matchable_plugin_override.go
+++ b/flytectl/cmd/get/matchable_plugin_override.go
@@ -88,7 +88,7 @@ func getPluginOverridesFunc(ctx context.Context, args []string, cmdCtx cmdCore.C
project = config.GetConfig().Project
domain = config.GetConfig().Domain
if len(args) == 1 {
- workflowName = args[0]
+ workflowName = args[0] //nolint:gosec
}
// Construct a shadow config for PluginOverrides. The shadow config is not using ProjectDomainAttribute/Workflowattribute directly inorder to simplify the inputs.
pluginOverrideFileConfig := pluginoverride.FileConfig{Project: project, Domain: domain, Workflow: workflowName}
diff --git a/flytectl/cmd/get/matchable_task_resource_attribute.go b/flytectl/cmd/get/matchable_task_resource_attribute.go
index 0dd9fb7bc24..3fe6c7d48b1 100644
--- a/flytectl/cmd/get/matchable_task_resource_attribute.go
+++ b/flytectl/cmd/get/matchable_task_resource_attribute.go
@@ -71,7 +71,7 @@ func getTaskResourceAttributes(ctx context.Context, args []string, cmdCtx cmdCor
project = config.GetConfig().Project
domain = config.GetConfig().Domain
if len(args) == 1 {
- workflowName = args[0]
+ workflowName = args[0] //nolint:gosec
}
// Construct a shadow config for TaskResourceAttribute. The shadow config is not using ProjectDomainAttribute/Workflowattribute directly inorder to simplify the inputs.
taskResourceAttrFileConfig := taskresourceattribute.TaskResourceAttrFileConfig{Project: project, Domain: domain, Workflow: workflowName}
diff --git a/flytectl/cmd/get/matchable_workflow_execution_config.go b/flytectl/cmd/get/matchable_workflow_execution_config.go
index 6c1e3249d20..e9bd44a8cf7 100644
--- a/flytectl/cmd/get/matchable_workflow_execution_config.go
+++ b/flytectl/cmd/get/matchable_workflow_execution_config.go
@@ -131,7 +131,7 @@ func getWorkflowExecutionConfigFunc(ctx context.Context, args []string, cmdCtx c
project = config.GetConfig().Project
domain = config.GetConfig().Domain
if len(args) == 1 {
- workflowName = args[0]
+ workflowName = args[0] //nolint:gosec
}
// Construct a shadow config for WorkflowExecutionConfig. The shadow config is not using ProjectDomainAttribute/Workflowattribute directly inorder to simplify the inputs.
workflowExecutionConfigFileConfig := workflowexecutionconfig.FileConfig{Project: project, Domain: domain, Workflow: workflowName}
diff --git a/flytectl/cmd/register/register_util.go b/flytectl/cmd/register/register_util.go
index 4ef1bab1c1b..f521f4fd1af 100644
--- a/flytectl/cmd/register/register_util.go
+++ b/flytectl/cmd/register/register_util.go
@@ -35,6 +35,7 @@ import (
"github.com/flyteorg/flyte/flytestdlib/utils"
"github.com/golang/protobuf/jsonpb"
"github.com/golang/protobuf/proto"
+ structpb "github.com/golang/protobuf/ptypes/struct"
"github.com/google/go-github/v42/github"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
@@ -234,13 +235,26 @@ func register(ctx context.Context, message proto.Message, cmdCtx cmdCore.Command
}
}
-func hydrateNode(node *core.Node, version string, force bool) error {
+func hydrateNode(node *core.Node, version string, force bool, sourceUploadedLocation storage.DataReference, destinationDir string) error {
targetNode := node.GetTarget()
switch v := targetNode.(type) {
case *core.Node_TaskNode:
taskNodeWrapper := targetNode.(*core.Node_TaskNode)
taskNodeReference := taskNodeWrapper.TaskNode.GetReference().(*core.TaskNode_ReferenceId)
hydrateIdentifier(taskNodeReference.ReferenceId, version, force)
+ // Substitute fast-registration templates in TaskNodeOverrides pod_template.
+ // When .with_overrides(pod_template=...) is used in a workflow, flytekit embeds
+ // the task container args (including {{ .remote_package_path }}) into the workflow
+ // proto's TaskNodeOverrides. flytectl must substitute them here, just as it does
+ // for task specs, otherwise the pod entrypoint will have an unresolved template.
+ overrides := taskNodeWrapper.TaskNode.GetOverrides()
+ if overrides != nil && overrides.GetPodTemplate() != nil && overrides.GetPodTemplate().GetPodSpec() != nil {
+ podSpecStruct, err := hydrateFastRegistrationArgs(overrides.GetPodTemplate().GetPodSpec(), sourceUploadedLocation, destinationDir)
+ if err != nil {
+ return err
+ }
+ overrides.PodTemplate.PodSpec = podSpecStruct
+ }
case *core.Node_WorkflowNode:
workflowNodeWrapper := targetNode.(*core.Node_WorkflowNode)
switch workflowNodeWrapper.WorkflowNode.GetReference().(type) {
@@ -255,12 +269,12 @@ func hydrateNode(node *core.Node, version string, force bool) error {
}
case *core.Node_BranchNode:
branchNodeWrapper := targetNode.(*core.Node_BranchNode)
- if err := hydrateNode(branchNodeWrapper.BranchNode.GetIfElse().GetCase().GetThenNode(), version, force); err != nil {
+ if err := hydrateNode(branchNodeWrapper.BranchNode.GetIfElse().GetCase().GetThenNode(), version, force, sourceUploadedLocation, destinationDir); err != nil {
return fmt.Errorf("failed to hydrateNode")
}
if len(branchNodeWrapper.BranchNode.GetIfElse().GetOther()) > 0 {
for _, ifBlock := range branchNodeWrapper.BranchNode.GetIfElse().GetOther() {
- if err := hydrateNode(ifBlock.GetThenNode(), version, force); err != nil {
+ if err := hydrateNode(ifBlock.GetThenNode(), version, force, sourceUploadedLocation, destinationDir); err != nil {
return fmt.Errorf("failed to hydrateNode")
}
}
@@ -268,7 +282,7 @@ func hydrateNode(node *core.Node, version string, force bool) error {
switch branchNodeWrapper.BranchNode.GetIfElse().GetDefault().(type) {
case *core.IfElseBlock_ElseNode:
elseNodeReference := branchNodeWrapper.BranchNode.GetIfElse().GetDefault().(*core.IfElseBlock_ElseNode)
- if err := hydrateNode(elseNodeReference.ElseNode, version, force); err != nil {
+ if err := hydrateNode(elseNodeReference.ElseNode, version, force, sourceUploadedLocation, destinationDir); err != nil {
return fmt.Errorf("failed to hydrateNode")
}
@@ -280,7 +294,7 @@ func hydrateNode(node *core.Node, version string, force bool) error {
case *core.Node_GateNode:
// Do nothing.
case *core.Node_ArrayNode:
- if err := hydrateNode(v.ArrayNode.GetNode(), version, force); err != nil {
+ if err := hydrateNode(v.ArrayNode.GetNode(), version, force, sourceUploadedLocation, destinationDir); err != nil {
return fmt.Errorf("failed to hydrateNode")
}
default:
@@ -301,6 +315,29 @@ func hydrateIdentifier(identifier *core.Identifier, version string, force bool)
}
}
+// hydrateFastRegistrationArgs substitutes fast-registration template placeholders
+// in a serialized k8s PodSpec struct, returning the updated struct.
+func hydrateFastRegistrationArgs(podSpecStruct *structpb.Struct, sourceUploadedLocation storage.DataReference, destinationDir string) (*structpb.Struct, error) {
+ var podSpec v1.PodSpec
+ if err := utils.UnmarshalStructToObj(podSpecStruct, &podSpec); err != nil {
+ return nil, err
+ }
+ for containerIdx, container := range podSpec.Containers {
+ for argIdx, arg := range container.Args {
+ if arg == registrationRemotePackagePattern {
+ podSpec.Containers[containerIdx].Args[argIdx] = sourceUploadedLocation.String()
+ }
+ if arg == registrationDestDirPattern {
+ podSpec.Containers[containerIdx].Args[argIdx] = "."
+ if len(destinationDir) > 0 {
+ podSpec.Containers[containerIdx].Args[argIdx] = destinationDir
+ }
+ }
+ }
+ }
+ return utils.MarshalObjToStruct(podSpec)
+}
+
func hydrateTaskSpec(task *admin.TaskSpec, sourceUploadedLocation storage.DataReference, destinationDir string) error {
if task.GetTemplate().GetContainer() != nil {
for k := range task.GetTemplate().GetContainer().GetArgs() {
@@ -315,25 +352,7 @@ func hydrateTaskSpec(task *admin.TaskSpec, sourceUploadedLocation storage.DataRe
}
}
} else if task.GetTemplate().GetK8SPod() != nil && task.GetTemplate().GetK8SPod().GetPodSpec() != nil {
- var podSpec = v1.PodSpec{}
- err := utils.UnmarshalStructToObj(task.GetTemplate().GetK8SPod().GetPodSpec(), &podSpec)
- if err != nil {
- return err
- }
- for containerIdx, container := range podSpec.Containers {
- for argIdx, arg := range container.Args {
- if arg == registrationRemotePackagePattern {
- podSpec.Containers[containerIdx].Args[argIdx] = sourceUploadedLocation.String()
- }
- if arg == registrationDestDirPattern {
- podSpec.Containers[containerIdx].Args[argIdx] = "."
- if len(destinationDir) > 0 {
- podSpec.Containers[containerIdx].Args[argIdx] = destinationDir
- }
- }
- }
- }
- podSpecStruct, err := utils.MarshalObjToStruct(podSpec)
+ podSpecStruct, err := hydrateFastRegistrationArgs(task.GetTemplate().GetK8SPod().GetPodSpec(), sourceUploadedLocation, destinationDir)
if err != nil {
return err
}
@@ -483,24 +502,24 @@ func hydrateSpec(message proto.Message, uploadLocation storage.DataReference, co
case *admin.WorkflowSpec:
workflowSpec := message.(*admin.WorkflowSpec)
for _, Noderef := range workflowSpec.GetTemplate().GetNodes() {
- if err := hydrateNode(Noderef, config.Version, config.Force); err != nil {
+ if err := hydrateNode(Noderef, config.Version, config.Force, uploadLocation, config.DestinationDirectory); err != nil {
return err
}
}
if workflowSpec.GetTemplate().GetFailureNode() != nil {
- if err := hydrateNode(workflowSpec.GetTemplate().GetFailureNode(), config.Version, config.Force); err != nil {
+ if err := hydrateNode(workflowSpec.GetTemplate().GetFailureNode(), config.Version, config.Force, uploadLocation, config.DestinationDirectory); err != nil {
return err
}
}
hydrateIdentifier(workflowSpec.GetTemplate().GetId(), config.Version, config.Force)
for _, subWorkflow := range workflowSpec.GetSubWorkflows() {
for _, Noderef := range subWorkflow.GetNodes() {
- if err := hydrateNode(Noderef, config.Version, config.Force); err != nil {
+ if err := hydrateNode(Noderef, config.Version, config.Force, uploadLocation, config.DestinationDirectory); err != nil {
return err
}
}
if subWorkflow.GetFailureNode() != nil {
- if err := hydrateNode(subWorkflow.GetFailureNode(), config.Version, config.Force); err != nil {
+ if err := hydrateNode(subWorkflow.GetFailureNode(), config.Version, config.Force, uploadLocation, config.DestinationDirectory); err != nil {
return err
}
}
diff --git a/flytectl/cmd/register/register_util_test.go b/flytectl/cmd/register/register_util_test.go
index c1c16171807..575c9d1c372 100644
--- a/flytectl/cmd/register/register_util_test.go
+++ b/flytectl/cmd/register/register_util_test.go
@@ -505,7 +505,7 @@ func TestHydrateNode(t *testing.T) {
t.Run("Failed hydrate node", func(t *testing.T) {
registerFilesSetup()
node := &core.Node{}
- err := hydrateNode(node, rconfig.DefaultFilesConfig.Version, true)
+ err := hydrateNode(node, rconfig.DefaultFilesConfig.Version, true, "", "")
assert.NotNil(t, err)
})
@@ -540,7 +540,7 @@ func TestHydrateArrayNode(t *testing.T) {
},
},
}
- err := hydrateNode(node, rconfig.DefaultFilesConfig.Version, true)
+ err := hydrateNode(node, rconfig.DefaultFilesConfig.Version, true, "", "")
assert.Nil(t, err)
}
@@ -561,7 +561,7 @@ func TestHydrateGateNode(t *testing.T) {
},
},
}
- err := hydrateNode(node, rconfig.DefaultFilesConfig.Version, true)
+ err := hydrateNode(node, rconfig.DefaultFilesConfig.Version, true, "", "")
assert.Nil(t, err)
})
@@ -579,7 +579,7 @@ func TestHydrateGateNode(t *testing.T) {
},
},
}
- err := hydrateNode(node, rconfig.DefaultFilesConfig.Version, true)
+ err := hydrateNode(node, rconfig.DefaultFilesConfig.Version, true, "", "")
assert.Nil(t, err)
})
@@ -597,7 +597,7 @@ func TestHydrateGateNode(t *testing.T) {
},
},
}
- err := hydrateNode(node, rconfig.DefaultFilesConfig.Version, true)
+ err := hydrateNode(node, rconfig.DefaultFilesConfig.Version, true, "", "")
assert.Nil(t, err)
})
}
@@ -654,6 +654,66 @@ func TestHydrateTaskSpec(t *testing.T) {
assert.Contains(t, hydratedPodSpec.Containers[1].Args[1], "somewhere")
}
+func TestHydrateNodeTaskOverridePodTemplate(t *testing.T) {
+ testScope := promutils.NewTestScope()
+ labeled.SetMetricKeys(contextutils.AppNameKey, contextutils.ProjectKey, contextutils.DomainKey)
+ s, err := storage.NewDataStore(&storage.Config{
+ Type: storage.TypeMemory,
+ }, testScope.NewSubScope("flytectl"))
+ assert.Nil(t, err)
+ Client = s
+
+ podSpec := v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "primary",
+ Args: []string{
+ "pyflyte-fast-execute",
+ "--additional-distribution",
+ registrationRemotePackagePattern,
+ "--dest-dir",
+ registrationDestDirPattern,
+ },
+ },
+ },
+ }
+ podSpecStruct, err := utils.MarshalObjToStruct(podSpec)
+ assert.Nil(t, err)
+
+ node := &core.Node{
+ Target: &core.Node_TaskNode{
+ TaskNode: &core.TaskNode{
+ Reference: &core.TaskNode_ReferenceId{
+ ReferenceId: &core.Identifier{
+ ResourceType: core.ResourceType_TASK,
+ Project: "flytesnacks",
+ Domain: "development",
+ Name: "n1",
+ Version: "v1",
+ },
+ },
+ Overrides: &core.TaskNodeOverrides{
+ PodTemplate: &core.K8SPod{
+ PodSpec: podSpecStruct,
+ },
+ },
+ },
+ },
+ }
+
+ err = hydrateNode(node, rconfig.DefaultFilesConfig.Version, true, "s3://my-bucket/fast/archive.tar.gz", "/code/")
+ assert.NoError(t, err)
+
+ taskNode := node.GetTaskNode()
+ assert.NotNil(t, taskNode.GetOverrides().GetPodTemplate())
+ var hydratedPodSpec v1.PodSpec
+ err = utils.UnmarshalStructToObj(taskNode.GetOverrides().GetPodTemplate().GetPodSpec(), &hydratedPodSpec)
+ assert.NoError(t, err)
+ args := hydratedPodSpec.Containers[0].Args
+ assert.Equal(t, "s3://my-bucket/fast/archive.tar.gz", args[2])
+ assert.Equal(t, "/code/", args[4])
+}
+
func TestLeftDiff(t *testing.T) {
t.Run("empty slices", func(t *testing.T) {
c := leftDiff(nil, nil)
diff --git a/flytectl/cmd/root.go b/flytectl/cmd/root.go
index 6806cae236e..9d59c1098cc 100644
--- a/flytectl/cmd/root.go
+++ b/flytectl/cmd/root.go
@@ -29,7 +29,7 @@ import (
var (
cfgFile string
- configAccessor = viper.NewAccessor(stdConfig.Options{StrictMode: true})
+ configAccessor = viper.NewAccessor(stdConfig.Options{StrictMode: false})
)
const (
@@ -116,7 +116,7 @@ func initConfig(cmd *cobra.Command, _ []string) error {
}
configAccessor = viper.NewAccessor(stdConfig.Options{
- StrictMode: true,
+ StrictMode: false,
SearchPaths: []string{configFile},
})
diff --git a/flytectl/cmd/sandbox/exec_test.go b/flytectl/cmd/sandbox/exec_test.go
index 3ad5121a9c2..04a86942fc8 100644
--- a/flytectl/cmd/sandbox/exec_test.go
+++ b/flytectl/cmd/sandbox/exec_test.go
@@ -37,8 +37,8 @@ func TestSandboxClusterExec(t *testing.T) {
}, nil)
docker.ExecConfig.Cmd = []string{"ls -al"}
mockDocker.EXPECT().ContainerExecCreate(ctx, mock.Anything, docker.ExecConfig).Return(types.IDResponse{}, nil)
- mockDocker.EXPECT().ContainerExecInspect(ctx, mock.Anything).Return(types.ContainerExecInspect{}, nil)
- mockDocker.EXPECT().ContainerExecAttach(ctx, mock.Anything, types.ExecStartCheck{}).Return(types.HijackedResponse{
+ mockDocker.EXPECT().ContainerExecInspect(ctx, mock.Anything).Return(container.ExecInspect{}, nil)
+ mockDocker.EXPECT().ContainerExecAttach(ctx, mock.Anything, container.ExecStartOptions{}).Return(types.HijackedResponse{
Reader: reader,
}, fmt.Errorf("Test"))
docker.Client = mockDocker
@@ -63,8 +63,8 @@ func TestSandboxClusterExecWithoutCmd(t *testing.T) {
}, nil)
docker.ExecConfig.Cmd = []string{}
mockDocker.EXPECT().ContainerExecCreate(ctx, mock.Anything, docker.ExecConfig).Return(types.IDResponse{}, nil)
- mockDocker.EXPECT().ContainerExecInspect(ctx, mock.Anything).Return(types.ContainerExecInspect{}, nil)
- mockDocker.EXPECT().ContainerExecAttach(ctx, mock.Anything, types.ExecStartCheck{}).Return(types.HijackedResponse{
+ mockDocker.EXPECT().ContainerExecInspect(ctx, mock.Anything).Return(container.ExecInspect{}, nil)
+ mockDocker.EXPECT().ContainerExecAttach(ctx, mock.Anything, container.ExecStartOptions{}).Return(types.HijackedResponse{
Reader: reader,
}, fmt.Errorf("Test"))
docker.Client = mockDocker
diff --git a/flytectl/cmd/testutils/test_utils.go b/flytectl/cmd/testutils/test_utils.go
index 77c0c5a35d5..5d9c1e47342 100644
--- a/flytectl/cmd/testutils/test_utils.go
+++ b/flytectl/cmd/testutils/test_utils.go
@@ -110,7 +110,7 @@ func RandomName(length int) string {
var b strings.Builder
for i := 0; i < length; i++ {
- c := rune('a' + rand.Intn('z'-'a')) // #nosec G404 - we use this function for testing only, do not need a cryptographically secure random number generator
+ c := rune('a' + rand.Intn('z'-'a')) //nolint:gosec
b.WriteRune(c)
}
diff --git a/flytectl/cmd/update/diff.go b/flytectl/cmd/update/diff.go
index b0f9190f93b..32664c883b1 100644
--- a/flytectl/cmd/update/diff.go
+++ b/flytectl/cmd/update/diff.go
@@ -6,7 +6,7 @@ import (
"github.com/hexops/gotextdiff"
"github.com/hexops/gotextdiff/myers"
- "gopkg.in/yaml.v3"
+ "go.yaml.in/yaml/v3"
)
const (
diff --git a/flytectl/cmd/update/execution.go b/flytectl/cmd/update/execution.go
index efe8e64be77..9fc1035bc73 100644
--- a/flytectl/cmd/update/execution.go
+++ b/flytectl/cmd/update/execution.go
@@ -2,6 +2,7 @@ package update
import (
"context"
+ "errors"
"fmt"
"os"
@@ -36,13 +37,13 @@ func updateExecutionFunc(ctx context.Context, args []string, cmdCtx cmdCore.Comm
project := config.GetConfig().Project
domain := config.GetConfig().Domain
if len(args) != 1 {
- return fmt.Errorf(clierrors.ErrExecutionNotPassed) //nolint
+ return errors.New(clierrors.ErrExecutionNotPassed)
}
executionName := args[0]
activate := execution.UConfig.Activate
archive := execution.UConfig.Archive
if activate && archive {
- return fmt.Errorf(clierrors.ErrInvalidStateUpdate) //nolint
+ return errors.New(clierrors.ErrInvalidStateUpdate)
}
var newState admin.ExecutionState
diff --git a/flytectl/cmd/update/interfaces/mocks/updater.go b/flytectl/cmd/update/interfaces/mocks/updater.go
index 60d6b618ad5..6bdb525c68e 100644
--- a/flytectl/cmd/update/interfaces/mocks/updater.go
+++ b/flytectl/cmd/update/interfaces/mocks/updater.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,7 +6,6 @@ import (
context "context"
cmdcore "github.com/flyteorg/flyte/flytectl/cmd/core"
-
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
mock "github.com/stretchr/testify/mock"
diff --git a/flytectl/cmd/update/launch_plan.go b/flytectl/cmd/update/launch_plan.go
index c847e92e6b3..234c8296f91 100644
--- a/flytectl/cmd/update/launch_plan.go
+++ b/flytectl/cmd/update/launch_plan.go
@@ -2,6 +2,7 @@ package update
import (
"context"
+ "errors"
"fmt"
"os"
@@ -36,12 +37,12 @@ func updateLPFunc(ctx context.Context, args []string, cmdCtx cmdCore.CommandCont
project := config.GetConfig().Project
domain := config.GetConfig().Domain
if len(args) != 1 {
- return fmt.Errorf(clierrors.ErrLPNotPassed) //nolint
+ return errors.New(clierrors.ErrLPNotPassed)
}
name := args[0]
version := launchplan.UConfig.Version
if len(version) == 0 {
- return fmt.Errorf(clierrors.ErrLPVersionNotPassed) //nolint
+ return errors.New(clierrors.ErrLPVersionNotPassed)
}
activate := launchplan.UConfig.Activate
@@ -55,7 +56,7 @@ func updateLPFunc(ctx context.Context, args []string, cmdCtx cmdCore.CommandCont
deactivate = launchplan.UConfig.Deactivate
}
if activate == deactivate && deactivate {
- return fmt.Errorf(clierrors.ErrInvalidBothStateUpdate) //nolint
+ return errors.New(clierrors.ErrInvalidBothStateUpdate)
}
var newState admin.LaunchPlanState
diff --git a/flytectl/cmd/update/launch_plan_meta.go b/flytectl/cmd/update/launch_plan_meta.go
index 51b6c6769ec..aabbbc5c91c 100644
--- a/flytectl/cmd/update/launch_plan_meta.go
+++ b/flytectl/cmd/update/launch_plan_meta.go
@@ -2,6 +2,7 @@ package update
import (
"context"
+ "errors"
"fmt"
"github.com/flyteorg/flyte/flytectl/clierrors"
@@ -37,7 +38,7 @@ func getUpdateLPMetaFunc(namedEntityConfig *NamedEntityConfig) func(ctx context.
project := config.GetConfig().Project
domain := config.GetConfig().Domain
if len(args) != 1 {
- return fmt.Errorf(clierrors.ErrLPNotPassed) //nolint
+ return errors.New(clierrors.ErrLPNotPassed)
}
name := args[0]
err := namedEntityConfig.UpdateNamedEntity(ctx, name, project, domain, core.ResourceType_LAUNCH_PLAN, cmdCtx)
diff --git a/flytectl/cmd/update/named_entity.go b/flytectl/cmd/update/named_entity.go
index 5e99775e142..c78c7eab047 100644
--- a/flytectl/cmd/update/named_entity.go
+++ b/flytectl/cmd/update/named_entity.go
@@ -2,6 +2,7 @@ package update
import (
"context"
+ "errors"
"fmt"
"os"
@@ -28,7 +29,7 @@ type NamedEntityConfig struct {
func (cfg NamedEntityConfig) UpdateNamedEntity(ctx context.Context, name string, project string, domain string, rsType core.ResourceType, cmdCtx cmdCore.CommandContext) error {
if cfg.Activate && cfg.Archive {
- return fmt.Errorf(clierrors.ErrInvalidStateUpdate) //nolint
+ return errors.New(clierrors.ErrInvalidStateUpdate)
}
id := &admin.NamedEntityIdentifier{
diff --git a/flytectl/cmd/update/namedentityconfig_flags_test.go b/flytectl/cmd/update/namedentityconfig_flags_test.go
index 43cf00ec2a0..8f745a64140 100755
--- a/flytectl/cmd/update/namedentityconfig_flags_test.go
+++ b/flytectl/cmd/update/namedentityconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/cmd/update/project.go b/flytectl/cmd/update/project.go
index 3a779df476a..d8ac9c2f896 100644
--- a/flytectl/cmd/update/project.go
+++ b/flytectl/cmd/update/project.go
@@ -2,6 +2,7 @@ package update
import (
"context"
+ "errors"
"fmt"
"os"
@@ -104,7 +105,7 @@ func updateProjectsFunc(ctx context.Context, args []string, cmdCtx cmdCore.Comma
}
if edits.GetId() == "" {
- return fmt.Errorf(clierrors.ErrProjectNotPassed) //nolint
+ return errors.New(clierrors.ErrProjectNotPassed)
}
currentProject, err := cmdCtx.AdminFetcherExt().GetProjectByID(ctx, edits.GetId())
diff --git a/flytectl/cmd/update/task_meta.go b/flytectl/cmd/update/task_meta.go
index 8e68778c99b..7a554ce7b40 100644
--- a/flytectl/cmd/update/task_meta.go
+++ b/flytectl/cmd/update/task_meta.go
@@ -2,6 +2,7 @@ package update
import (
"context"
+ "errors"
"fmt"
"github.com/flyteorg/flyte/flytectl/clierrors"
@@ -37,7 +38,7 @@ func getUpdateTaskFunc(namedEntityConfig *NamedEntityConfig) func(ctx context.Co
project := config.GetConfig().Project
domain := config.GetConfig().Domain
if len(args) != 1 {
- return fmt.Errorf(clierrors.ErrTaskNotPassed) //nolint
+ return errors.New(clierrors.ErrTaskNotPassed)
}
name := args[0]
diff --git a/flytectl/cmd/update/workflow_meta.go b/flytectl/cmd/update/workflow_meta.go
index c6604bfb867..d8eaa6f0eba 100644
--- a/flytectl/cmd/update/workflow_meta.go
+++ b/flytectl/cmd/update/workflow_meta.go
@@ -2,6 +2,7 @@ package update
import (
"context"
+ "errors"
"fmt"
"github.com/flyteorg/flyte/flytectl/clierrors"
@@ -37,7 +38,7 @@ func getUpdateWorkflowFunc(namedEntityConfig *NamedEntityConfig) func(ctx contex
project := config.GetConfig().Project
domain := config.GetConfig().Domain
if len(args) != 1 {
- return fmt.Errorf(clierrors.ErrWorkflowNotPassed) //nolint
+ return errors.New(clierrors.ErrWorkflowNotPassed)
}
name := args[0]
err := namedEntityConfig.UpdateNamedEntity(ctx, name, project, domain, core.ResourceType_WORKFLOW, cmdCtx)
diff --git a/flytectl/cmd/upgrade/upgrade.go b/flytectl/cmd/upgrade/upgrade.go
index 485db6cc30f..7f814cab524 100644
--- a/flytectl/cmd/upgrade/upgrade.go
+++ b/flytectl/cmd/upgrade/upgrade.go
@@ -65,7 +65,7 @@ func SelfUpgrade(rootCmd *cobra.Command) map[string]cmdCore.CommandEntry {
func selfUpgrade(ctx context.Context, args []string, cmdCtx cmdCore.CommandContext) error {
// Check if it's a rollback
if len(args) == 1 {
- if args[0] == rollBackSubCommand && !isRollBackSupported(goos) {
+ if args[0] == rollBackSubCommand && !isRollBackSupported(goos) { //nolint:gosec
return nil
}
ext, err := github.FlytectlReleaseConfig.GetExecutable()
diff --git a/flytectl/docs/docs-requirements.txt b/flytectl/docs/docs-requirements.txt
index 4269462adaa..f28e928f3c1 100644
--- a/flytectl/docs/docs-requirements.txt
+++ b/flytectl/docs/docs-requirements.txt
@@ -31,12 +31,12 @@ markupsafe==3.0.2
# via jinja2
packaging==24.1
# via sphinx
-pygments==2.18.0
+pygments==2.20.0
# via
# furo
# sphinx
# sphinx-prompt
-requests==2.32.3
+requests==2.33.0
# via
# sphinx
# sphinxcontrib-youtube
@@ -81,7 +81,7 @@ sphinxcontrib-serializinghtml==2.0.0
# via sphinx
sphinxcontrib-youtube==1.4.1
# via -r docs-requirements.in
-urllib3==2.2.3
+urllib3==2.6.3
# via
# requests
# sphinx-prompt
diff --git a/flytectl/go.mod b/flytectl/go.mod
index 7d7ab0e86fd..88092362ebb 100644
--- a/flytectl/go.mod
+++ b/flytectl/go.mod
@@ -1,6 +1,6 @@
module github.com/flyteorg/flyte/flytectl
-go 1.22
+go 1.26.0
require (
github.com/apoorvam/goterminal v0.0.0-20180523175556-614d345c47e5
@@ -10,104 +10,112 @@ require (
github.com/charmbracelet/bubbletea v0.25.0
github.com/charmbracelet/lipgloss v0.10.0
github.com/disiqueira/gotree v1.0.0
- github.com/docker/docker v26.1.5+incompatible
+ github.com/docker/docker v28.0.0+incompatible
github.com/docker/go-connections v0.4.0
github.com/enescakir/emoji v1.0.0
github.com/flyteorg/flyte/flyteidl v0.0.0-00010101000000-000000000000
github.com/flyteorg/flyte/flytepropeller v0.0.0-00010101000000-000000000000
github.com/flyteorg/flyte/flytestdlib v0.0.0-00010101000000-000000000000
github.com/go-ozzo/ozzo-validation/v4 v4.3.0
+ github.com/go-viper/mapstructure/v2 v2.4.0
github.com/golang/protobuf v1.5.4
github.com/google/go-github/v42 v42.0.0
github.com/hashicorp/go-version v1.3.0
github.com/hexops/gotextdiff v1.0.3
github.com/kataras/tablewriter v0.0.0-20180708051242-e063d29b7c23
github.com/landoop/tableprinter v0.0.0-20201125135848-89e81fc956e7
- github.com/mitchellh/mapstructure v1.5.0
github.com/moby/term v0.0.0-20201216013528-df9cb8a40635
github.com/mouuff/go-rocket-update v1.5.1
- github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b
+ github.com/opencontainers/image-spec v1.1.1
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
github.com/pkg/errors v0.9.1
github.com/sirupsen/logrus v1.9.3
- github.com/spf13/cobra v1.7.0
- github.com/spf13/pflag v1.0.5
- github.com/stretchr/testify v1.9.0
+ github.com/spf13/cobra v1.9.1
+ github.com/spf13/pflag v1.0.10
+ github.com/stretchr/testify v1.11.1
github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0
github.com/zalando/go-keyring v0.1.1
- golang.org/x/oauth2 v0.18.0
- golang.org/x/text v0.21.0
- google.golang.org/grpc v1.62.1
- google.golang.org/protobuf v1.34.1
- gopkg.in/yaml.v3 v3.0.1
+ go.yaml.in/yaml/v3 v3.0.4
+ golang.org/x/oauth2 v0.35.0
+ golang.org/x/text v0.35.0
+ google.golang.org/grpc v1.80.0
+ google.golang.org/protobuf v1.36.11
gotest.tools v2.2.0+incompatible
- k8s.io/api v0.29.3
- k8s.io/apimachinery v0.29.3
- k8s.io/client-go v0.29.3
- sigs.k8s.io/yaml v1.4.0
+ k8s.io/api v0.34.1
+ k8s.io/apimachinery v0.34.1
+ k8s.io/client-go v0.34.1
+ sigs.k8s.io/yaml v1.6.0
)
require (
- cloud.google.com/go v0.112.0 // indirect
- cloud.google.com/go/compute v1.23.3 // indirect
- cloud.google.com/go/compute/metadata v0.2.3 // indirect
- cloud.google.com/go/iam v1.1.5 // indirect
- cloud.google.com/go/storage v1.36.0 // indirect
+ cel.dev/expr v0.25.1 // indirect
+ cloud.google.com/go v0.115.1 // indirect
+ cloud.google.com/go/auth v0.9.3 // indirect
+ cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
+ cloud.google.com/go/compute/metadata v0.9.0 // indirect
+ cloud.google.com/go/iam v1.2.1 // indirect
+ cloud.google.com/go/monitoring v1.21.0 // indirect
+ cloud.google.com/go/storage v1.45.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0 // indirect
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
- github.com/Microsoft/go-winio v0.5.2 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect
+ github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496 // indirect
- github.com/aws/aws-sdk-go v1.47.11 // indirect
+ github.com/aws/aws-sdk-go v1.55.5 // indirect
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
- github.com/cenkalti/backoff/v4 v4.2.1 // indirect
+ github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
- github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect
+ github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect
+ github.com/containerd/console v1.0.4 // indirect
github.com/containerd/log v0.1.0 // indirect
github.com/coocood/freecache v1.1.1 // indirect
- github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
+ github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect
github.com/danieljoos/wincred v1.1.0 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
+ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/distribution/reference v0.6.0 // indirect
- github.com/docker/go-units v0.4.0 // indirect
+ github.com/docker/go-units v0.5.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
- github.com/emicklei/go-restful/v3 v3.12.0 // indirect
- github.com/evanphx/json-patch v5.6.0+incompatible // indirect
- github.com/evanphx/json-patch/v5 v5.8.0 // indirect
- github.com/fatih/color v1.13.0 // indirect
+ github.com/emicklei/go-restful/v3 v3.13.0 // indirect
+ github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect
+ github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect
+ github.com/evanphx/json-patch/v5 v5.9.11 // indirect
+ github.com/fatih/color v1.18.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/flyteorg/flyte/flyteplugins v0.0.0-00010101000000-000000000000 // indirect
- github.com/flyteorg/stow v0.3.11 // indirect
- github.com/fsnotify/fsnotify v1.7.0 // indirect
+ github.com/flyteorg/stow v0.3.12 // indirect
+ github.com/fsnotify/fsnotify v1.9.0 // indirect
+ github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/ghodss/yaml v1.0.0 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
+ github.com/go-jose/go-jose/v4 v4.1.4 // indirect
+ github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
- github.com/go-openapi/jsonpointer v0.19.6 // indirect
- github.com/go-openapi/jsonreference v0.20.2 // indirect
- github.com/go-openapi/swag v0.22.3 // indirect
- github.com/godbus/dbus/v5 v5.0.6 // indirect
+ github.com/go-openapi/jsonpointer v0.21.2 // indirect
+ github.com/go-openapi/jsonreference v0.21.0 // indirect
+ github.com/go-openapi/swag v0.23.1 // indirect
+ github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/google/gnostic-models v0.6.8 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
+ github.com/google/gnostic-models v0.7.0 // indirect
+ github.com/google/go-cmp v0.7.0 // indirect
github.com/google/go-querystring v1.1.0 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
- github.com/google/s2a-go v0.1.7 // indirect
+ github.com/google/s2a-go v0.1.8 // indirect
github.com/google/uuid v1.6.0 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
- github.com/googleapis/gax-go/v2 v2.12.0 // indirect
+ github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect
+ github.com/googleapis/gax-go/v2 v2.13.0 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect
- github.com/hashicorp/hcl v1.0.0 // indirect
- github.com/imdario/mergo v0.3.13 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
@@ -115,15 +123,14 @@ require (
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
- github.com/magiconair/properties v1.8.6 // indirect
- github.com/mailru/easyjson v0.7.7 // indirect
- github.com/mattn/go-colorable v0.1.12 // indirect
- github.com/mattn/go-isatty v0.0.18 // indirect
+ github.com/mailru/easyjson v0.9.0 // indirect
+ github.com/mattn/go-colorable v0.1.13 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-localereader v0.0.1 // indirect
github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/moby/docker-image-spec v1.3.1 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/morikuni/aec v1.0.0 // indirect
github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect
github.com/muesli/cancelreader v0.2.2 // indirect
@@ -132,64 +139,72 @@ require (
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/ncw/swift v1.0.53 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
- github.com/pelletier/go-toml v1.9.5 // indirect
- github.com/pelletier/go-toml/v2 v2.0.0-beta.8 // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/prometheus/client_golang v1.19.1 // indirect
- github.com/prometheus/client_model v0.6.1 // indirect
- github.com/prometheus/common v0.53.0 // indirect
- github.com/prometheus/procfs v0.15.1 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.4 // indirect
+ 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/prometheus/client_golang v1.23.0 // indirect
+ github.com/prometheus/client_model v0.6.2 // indirect
+ github.com/prometheus/common v0.65.0 // indirect
+ github.com/prometheus/procfs v0.17.0 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
+ github.com/sagikazarmark/locafero v0.11.0 // indirect
github.com/santhosh-tekuri/jsonschema v1.2.4 // indirect
github.com/shamaton/msgpack/v2 v2.2.2 // indirect
- github.com/spf13/afero v1.9.2 // indirect
- github.com/spf13/cast v1.4.1 // indirect
- github.com/spf13/jwalterweatherman v1.1.0 // indirect
- github.com/spf13/viper v1.11.0 // indirect
+ github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
+ github.com/spf13/afero v1.15.0 // indirect
+ github.com/spf13/cast v1.10.0 // indirect
+ github.com/spf13/viper v1.21.0 // indirect
+ github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
- github.com/subosito/gotenv v1.2.0 // indirect
+ github.com/subosito/gotenv v1.6.0 // indirect
github.com/tidwall/gjson v1.17.1 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.1 // indirect
github.com/tidwall/sjson v1.2.5 // indirect
github.com/wI2L/jsondiff v0.6.0 // indirect
+ github.com/x448/float16 v0.8.4 // indirect
gitlab.com/yvesf/json-schema-compare v0.0.0-20190604192943-a900c04201f7 // indirect
go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
- go.opentelemetry.io/otel v1.24.0 // indirect
+ go.opentelemetry.io/auto/sdk v1.2.1 // indirect
+ go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect
+ go.opentelemetry.io/otel v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 // indirect
- go.opentelemetry.io/otel/metric v1.24.0 // indirect
- go.opentelemetry.io/otel/sdk v1.24.0 // indirect
- go.opentelemetry.io/otel/trace v1.24.0 // indirect
- go.opentelemetry.io/proto/otlp v1.1.0 // indirect
- golang.org/x/crypto v0.31.0 // indirect
- golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 // indirect
- golang.org/x/net v0.33.0 // indirect
- golang.org/x/sync v0.10.0 // indirect
- golang.org/x/sys v0.28.0 // indirect
- golang.org/x/term v0.27.0 // indirect
- golang.org/x/time v0.5.0 // indirect
- google.golang.org/api v0.155.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
- google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
+ go.opentelemetry.io/otel/metric v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect
+ go.opentelemetry.io/otel/trace v1.43.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.10.0 // indirect
+ go.yaml.in/yaml/v2 v2.4.2 // indirect
+ golang.org/x/crypto v0.49.0 // indirect
+ golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect
+ golang.org/x/net v0.52.0 // indirect
+ golang.org/x/sync v0.20.0 // indirect
+ golang.org/x/sys v0.42.0 // indirect
+ golang.org/x/term v0.41.0 // indirect
+ golang.org/x/time v0.12.0 // indirect
+ google.golang.org/api v0.197.0 // indirect
+ google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
- gopkg.in/ini.v1 v1.66.4 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
+ gopkg.in/yaml.v3 v3.0.1 // indirect
gotest.tools/v3 v3.5.0 // indirect
- k8s.io/klog/v2 v2.110.1 // indirect
- k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect
- k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
- sigs.k8s.io/controller-runtime v0.17.2 // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
+ k8s.io/klog/v2 v2.130.1 // indirect
+ k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3 // indirect
+ k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d // indirect
+ sigs.k8s.io/controller-runtime v0.22.4 // indirect
+ sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
+ sigs.k8s.io/randfill v1.0.0 // indirect
+ sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
)
replace (
diff --git a/flytectl/go.sum b/flytectl/go.sum
index d89d7ae9395..f1185f522bc 100644
--- a/flytectl/go.sum
+++ b/flytectl/go.sum
@@ -1,51 +1,26 @@
+cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
+cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
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.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
-cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
-cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
-cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
-cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
-cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
-cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
-cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
-cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
-cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
-cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
-cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
-cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
-cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM=
-cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4=
-cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
-cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
-cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
-cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
-cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
-cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=
-cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI=
-cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
-cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
-cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
-cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
-cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI=
-cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8=
-cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
-cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
-cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
-cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
-cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
-cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
-cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
-cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
-cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
-cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8=
-cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8=
-dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ=
+cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc=
+cloud.google.com/go/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U=
+cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk=
+cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
+cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
+cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
+cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
+cloud.google.com/go/iam v1.2.1 h1:QFct02HRb7H12J/3utj0qf5tobFh9V4vR6h9eX5EBRU=
+cloud.google.com/go/iam v1.2.1/go.mod h1:3VUIJDPpwT6p/amXRC5GY8fCCh70lxPygguVtI0Z4/g=
+cloud.google.com/go/logging v1.11.0 h1:v3ktVzXMV7CwHq1MBF65wcqLMA7i+z3YxbUsoK7mOKs=
+cloud.google.com/go/logging v1.11.0/go.mod h1:5LDiJC/RxTt+fHc1LAt20R9TKiUTReDg6RuuFOZ67+A=
+cloud.google.com/go/longrunning v0.6.1 h1:lOLTFxYpr8hcRtcwWir5ITh1PAKUD/sG2lKrTSYjyMc=
+cloud.google.com/go/longrunning v0.6.1/go.mod h1:nHISoOZpBcmlwbJmiVk5oDRz0qG/ZxPynEGs1iZ79s0=
+cloud.google.com/go/monitoring v1.21.0 h1:EMc0tB+d3lUewT2NzKC/hr8cSR9WsUieVywzIHetGro=
+cloud.google.com/go/monitoring v1.21.0/go.mod h1:tuJ+KNDdJbetSsbSGTqnaBvbauS5kr3Q/koy3Up6r+4=
+cloud.google.com/go/storage v1.45.0 h1:5av0QcIVj77t+44mV4gffFC/LscFRUhto6UBMB5SimM=
+cloud.google.com/go/storage v1.45.0/go.mod h1:wpPblkIuMP5jCB/E48Pz9zIo2S/zD8g+ITmxKkPCITE=
+cloud.google.com/go/trace v1.11.0 h1:UHX6cOJm45Zw/KIbqHe4kII8PupLt/V5tscZUkeiJVI=
+cloud.google.com/go/trace v1.11.0/go.mod h1:Aiemdi52635dBR7o3zuc9lLjXo3BwGaChEjCa3tJNmM=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc=
@@ -61,11 +36,19 @@ github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
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/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA=
-github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
-github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1/go.mod h1:jyqM3eLpJ3IbIFDTKVz2rF9T/xWGW0rIriGwnz8l9Tk=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1 h1:oTX4vsorBZo/Zdum6OKPA4o7544hm6smoRv1QjpTwGo=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1/go.mod h1:0wEl7vrAD8mehJyohS9HZy+WyEOaQO2mJx86Cvh93kM=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 h1:8nn+rsCvTq9axyEh382S0PFLBeaFwNsT43IrPWzctRU=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1/go.mod h1:viRWSEhtMZqz1rhwmOVKkWl6SwmVowfL9O2YR5gI2PE=
+github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
+github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
+github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8=
+github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
github.com/apoorvam/goterminal v0.0.0-20180523175556-614d345c47e5 h1:VYqcjykqpcq262cDxBAkAelSdg6HETkxgwzQRTS40Aw=
github.com/apoorvam/goterminal v0.0.0-20180523175556-614d345c47e5/go.mod h1:E7x8aDc3AQzDKjEoIZCt+XYheHk2OkP+p2UgeNjecH8=
github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496 h1:zV3ejI06GQ59hwDQAvmK1qxOQGB3WuVTRoY0okPTAv0=
@@ -74,14 +57,16 @@ github.com/avast/retry-go v3.0.0+incompatible h1:4SOWQ7Qs+oroOTQOYnAHqelpCO0biHS
github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY=
github.com/awalterschulze/gographviz v2.0.3+incompatible h1:9sVEXJBJLwGX7EQVhLm2elIKCm7P2YHFC8v6096G09E=
github.com/awalterschulze/gographviz v2.0.3+incompatible/go.mod h1:GEV5wmg4YquNw7v1kkyoX9etIk8yVmXj+AkDHuuETHs=
-github.com/aws/aws-sdk-go v1.47.11 h1:Dol+MA+hQblbnXUI3Vk9qvoekU6O1uDEuAItezjiWNQ=
-github.com/aws/aws-sdk-go v1.47.11/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
+github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
+github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
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/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
-github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+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 v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
@@ -95,151 +80,131 @@ github.com/charmbracelet/lipgloss v0.10.0 h1:KWeXFSexGcfahHX+54URiZGkBFazf70JNMt
github.com/charmbracelet/lipgloss v0.10.0/go.mod h1:Wig9DSfvANsxqkRsqj6x87irdy123SR4dOXlKa91ciE=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927 h1:SKI1/fuSdodxmNNyVBR8d7X/HuLnRpvvFO0AgyQk764=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
-github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM=
-github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY=
-github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
+github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro=
+github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk=
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
github.com/coocood/freecache v1.1.1 h1:uukNF7QKCZEdZ9gAV7WQzvh0SbjwdMF6m3x3rxEkaPc=
github.com/coocood/freecache v1.1.1/go.mod h1:OKrEjkGVoxZhyWAJoeFi5BMLUJm2Tit0kpGkIr7NGYY=
-github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
-github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
-github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw=
github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/danieljoos/wincred v1.1.0 h1:3RNcEpBg4IhIChZdFRSdlQt1QjCp1sMAPIrOnm7Yf8g=
github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7hqDjlFjiygg=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/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/disiqueira/gotree v1.0.0 h1:en5wk87n7/Jyk6gVME3cx3xN9KmUCstJ1IjHr4Se4To=
github.com/disiqueira/gotree v1.0.0/go.mod h1:7CwL+VWsWAU95DovkdRZAtA7YbtHwGk+tLV/kNi8niU=
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
-github.com/docker/docker v26.1.5+incompatible h1:NEAxTwEjxV6VbBMBoGG3zPqbiJosIApZjxlbrG9q3/g=
-github.com/docker/docker v26.1.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/docker v28.0.0+incompatible h1:Olh0KS820sJ7nPsBKChVhk5pzqcwDR15fumfAd/p9hM=
+github.com/docker/docker v28.0.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
-github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw=
-github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
+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.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
-github.com/emicklei/go-restful/v3 v3.12.0 h1:y2DdzBAURM29NFF94q6RaY4vjIH1rtwDapwQtU84iWk=
-github.com/emicklei/go-restful/v3 v3.12.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes=
+github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/enescakir/emoji v1.0.0 h1:W+HsNql8swfCQFtioDGDHCHri8nudlK1n5p2rHCJoog=
github.com/enescakir/emoji v1.0.0/go.mod h1:Bt1EKuLnKDTYpLALApstIkAjdDrS/8IAgTkKp+WKFD0=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
+github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=
+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/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=
+github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
-github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
-github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
-github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/evanphx/json-patch/v5 v5.8.0 h1:lRj6N9Nci7MvzrXuX6HFzU8XjmhPiXPlsKEy1u0KQro=
-github.com/evanphx/json-patch/v5 v5.8.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
-github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
-github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
+github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=
+github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
+github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
+github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
+github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
+github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/flyteorg/stow v0.3.11 h1:Uf4fzVbghCqMNvx50XvYzwdNeQDBSKQJ7zddWu7p3eI=
-github.com/flyteorg/stow v0.3.11/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
-github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
-github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/flyteorg/stow v0.3.12 h1:RRXI5RUdxaK6A46HrO0D2r14cRlW1lJRL6qyzqpVMPU=
+github.com/flyteorg/stow v0.3.12/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
+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.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
+github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
+github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA=
+github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
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.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
-github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+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-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
-github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
-github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
-github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
-github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
-github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
-github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
+github.com/go-openapi/jsonpointer v0.21.2 h1:AqQaNADVwq/VnkCmQg6ogE+M3FOsKTytwges0JdwVuA=
+github.com/go-openapi/jsonpointer v0.21.2/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk=
+github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
+github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
+github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU=
+github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0=
github.com/go-ozzo/ozzo-validation/v4 v4.3.0 h1:byhDUpfEwjsVQb1vBunvIjh2BHQ9ead57VkAEY4V+Es=
github.com/go-ozzo/ozzo-validation/v4 v4.3.0/go.mod h1:2NKgrcHl3z6cJs+3Oo940FPRiTzuqKbvfrL2RxCj6Ew=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
+github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
+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/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
-github.com/godbus/dbus/v5 v5.0.6 h1:mkgN1ofwASrYnJ5W6U/BxG15eXXXjirgZc7CLqkcaro=
-github.com/godbus/dbus/v5 v5.0.6/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/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-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/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
-github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
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.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
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.4.3/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/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/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
-github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
+github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
+github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.4.1/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.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.4/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.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-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-github/v42 v42.0.0 h1:YNT0FwjPrEysRkLIiKuEfSvBPCGKphW5aS5PxwaoLec=
github.com/google/go-github/v42 v42.0.0/go.mod h1:jgg/jvyI0YlDOM1/ps6XYh04HNQ3vKf0CVko62/EhRg=
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
@@ -247,57 +212,31 @@ github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17
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 h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
-github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
-github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=
-github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
-github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
-github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
+github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=
+github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
+github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
+github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
+github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM=
+github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
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/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
-github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
-github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
-github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
-github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
-github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
-github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
+github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw=
+github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA=
+github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s=
+github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A=
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/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=
github.com/hashicorp/go-version v1.3.0 h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04x7iNw=
github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
-github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
-github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
-github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg=
@@ -310,8 +249,6 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
-github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA=
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
github.com/kataras/tablewriter v0.0.0-20180708051242-e063d29b7c23 h1:M8exrBzuhWcU6aoHJlHWPe4qFjVKzkMGRal78f5jRRU=
@@ -319,14 +256,9 @@ github.com/kataras/tablewriter v0.0.0-20180708051242-e063d29b7c23/go.mod h1:kBSn
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/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
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=
@@ -335,24 +267,20 @@ github.com/landoop/tableprinter v0.0.0-20201125135848-89e81fc956e7 h1:J6LE/95ZXK
github.com/landoop/tableprinter v0.0.0-20201125135848-89e81fc956e7/go.mod h1:f0X1c0za3TbET/rl5ThtCSel0+G3/yZ8iuU9BxnyVK0=
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
-github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
-github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
-github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
-github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
-github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
-github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
-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/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
-github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
+github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
+github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
+github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
+github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
-github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
-github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
github.com/moby/term v0.0.0-20201216013528-df9cb8a40635 h1:rzf0wL0CHVc8CEsgyygG0Mn9CNCCPZqOPaz8RiiHYQk=
@@ -360,8 +288,9 @@ github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXy
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 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/mouuff/go-rocket-update v1.5.1 h1:qGgUu/MP+aVQ63laEguRNimmNTPKs29xz0lZW6QRFaQ=
@@ -379,68 +308,71 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m
github.com/ncw/swift v1.0.53 h1:luHjjTNtekIEvHg5KdAFIBaH7bWfNkefwFnpDffSIks=
github.com/ncw/swift v1.0.53/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
-github.com/onsi/ginkgo/v2 v2.14.0 h1:vSmGj2Z5YPb9JwCWT6z6ihcUvDhuXLc3sJiqd3jMKAY=
-github.com/onsi/ginkgo/v2 v2.14.0/go.mod h1:JkUdW7JkN0V6rFvsHcJ478egV3XH9NxpD27Hal/PhZw=
-github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8=
-github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
+github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg=
+github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
+github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw=
+github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
-github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8=
-github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ=
+github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
+github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
-github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
+github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
+github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+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/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
-github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
+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.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc=
+github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
-github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE=
-github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U=
-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/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.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE=
+github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
+github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0=
+github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw=
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
-github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+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/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc=
+github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik=
github.com/santhosh-tekuri/jsonschema v1.2.4 h1:hNhW8e7t+H1vgY+1QeEQpveR6D4+OwKPXCfD2aieJis=
github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4=
github.com/shamaton/msgpack/v2 v2.2.2 h1:GOIg0c9LV04VwzOOqZSrmsv/JzjNOOMxnS/HvOHGdgs=
github.com/shamaton/msgpack/v2 v2.2.2/go.mod h1:6khjYnkx73f7VQU7wjcFS9DFjs+59naVWJv1TB7qdOI=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-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/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw=
-github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y=
-github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
-github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
-github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
-github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
-github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
+github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
+github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
+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 v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
+github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
-github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44=
-github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk=
+github.com/spf13/pflag v1.0.6/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.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
+github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
+github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=
+github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=
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=
@@ -455,10 +387,10 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
-github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
+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.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
+github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U=
github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
@@ -471,49 +403,48 @@ github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
github.com/wI2L/jsondiff v0.6.0 h1:zrsH3FbfVa3JO9llxrcDy/XLkYPLgoMX6Mz3T2PP2AI=
github.com/wI2L/jsondiff v0.6.0/go.mod h1:D6aQ5gKgPF9g17j+E9N7aasmU1O+XvfmWm1y8UMmNpw=
+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/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY=
github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI=
-github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/zalando/go-keyring v0.1.1 h1:w2V9lcx/Uj4l+dzAf1m9s+DJ1O8ROkEHnynonHjTcYE=
github.com/zalando/go-keyring v0.1.1/go.mod h1:OIC+OZ28XbmwFxU/Rp9V7eKzZjamBJwRzC8UFJH9+L8=
gitlab.com/yvesf/json-schema-compare v0.0.0-20190604192943-a900c04201f7 h1:BAkxmYRc1ZPl6Gap4HWqwPT8yLZMrgaAwx12Ft408sg=
gitlab.com/yvesf/json-schema-compare v0.0.0-20190604192943-a900c04201f7/go.mod h1:X40Z1OU8o1oiXWzBmkuYOaruzYGv60l0AxGiB0E9keI=
-go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
-go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
-go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
-go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
-go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
+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/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE=
+go.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk=
+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/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ=
+go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
+go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 h1:zr8ymM5OWWjjiWRzwTfZ67c905+2TMHYp2lMJ52QTyM=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0/go.mod h1:sQs7FT2iLVJ+67vYngGJkPe1qr39IzaBzaj9IDNNY8k=
-go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
-go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
-go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
-go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
-go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
-go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI=
-go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY=
+go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
+go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
+go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
+go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
+go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
+go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
+go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
+go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
+go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=
+go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
@@ -521,332 +452,107 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/
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.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
-go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
+go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
+go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
+go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
+go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v3 v3.0.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-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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
-golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
+golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
+golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
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-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
-golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
-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/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo=
+golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak=
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-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
-golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/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.1.1-0.20191107180719-034126e5016b/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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
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-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-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-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/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-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200707034311-ab3426394381/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-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=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
-golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
+golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
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-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
-golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
+golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
+golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
-golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
+golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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-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-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-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-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
-golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
-golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
-golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
+golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=
+golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=
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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
-golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
+golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
+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-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-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-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-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-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
-golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
-golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
+golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=
+golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
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=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
-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/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
-google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
-google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
-google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
-google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
-google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA=
-google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk=
+gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
+gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
+google.golang.org/api v0.197.0 h1:x6CwqQLsFiA5JKAiGyGBjc2bNtHtLddhJCE2IKuhhcQ=
+google.golang.org/api v0.197.0/go.mod h1:AuOuo20GoQ331nq7DquGHlU6d+2wN2fZ8O0ta60nRNw=
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/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-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-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
-google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
-google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
-google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
+google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU=
+google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 h1:VPWxll4HlMw1Vs/qXtN7BvhZqsS9cdAittCNvVENElA=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
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.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
-google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
-google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
+google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM=
+google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4=
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=
@@ -855,27 +561,21 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi
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.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
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.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
-google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo=
+gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
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.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4=
-gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0/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=
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
@@ -884,36 +584,28 @@ gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
gotest.tools/v3 v3.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY=
gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
-honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-k8s.io/api v0.29.3 h1:2ORfZ7+bGC3YJqGpV0KSDDEVf8hdGQ6A03/50vj8pmw=
-k8s.io/api v0.29.3/go.mod h1:y2yg2NTyHUUkIoTC+phinTnEa3KFM6RZ3szxt014a80=
-k8s.io/apiextensions-apiserver v0.29.0 h1:0VuspFG7Hj+SxyF/Z/2T0uFbI5gb5LRgEyUVE3Q4lV0=
-k8s.io/apiextensions-apiserver v0.29.0/go.mod h1:TKmpy3bTS0mr9pylH0nOt/QzQRrW7/h7yLdRForMZwc=
-k8s.io/apimachinery v0.29.3 h1:2tbx+5L7RNvqJjn7RIuIKu9XTsIZ9Z5wX2G22XAa5EU=
-k8s.io/apimachinery v0.29.3/go.mod h1:hx/S4V2PNW4OMg3WizRrHutyB5la0iCUbZym+W0EQIU=
-k8s.io/client-go v0.29.3 h1:R/zaZbEAxqComZ9FHeQwOh3Y1ZUs7FaHKZdQtIc2WZg=
-k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0=
-k8s.io/component-base v0.29.0 h1:T7rjd5wvLnPBV1vC4zWd/iWRbV8Mdxs+nGaoaFzGw3s=
-k8s.io/component-base v0.29.0/go.mod h1:sADonFTQ9Zc9yFLghpDpmNXEdHyQmFIGbiuZbqAXQ1M=
-k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0=
-k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo=
-k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780=
-k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
-k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
-k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
-rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
-rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
-sigs.k8s.io/controller-runtime v0.17.2 h1:FwHwD1CTUemg0pW2otk7/U5/i5m2ymzvOXdbeGOUvw0=
-sigs.k8s.io/controller-runtime v0.17.2/go.mod h1:+MngTvIQQQhfXtwfdGw/UOQ/aIaqsYywfCINOtwMO/s=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
-sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
-sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
+k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
+k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
+k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI=
+k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc=
+k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4=
+k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
+k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY=
+k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8=
+k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
+k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
+k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3 h1:liMHz39T5dJO1aOKHLvwaCjDbf07wVh6yaUlTpunnkE=
+k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
+k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d h1:wAhiDyZ4Tdtt7e46e9M5ZSAJ/MnPGPs+Ki1gHw4w1R0=
+k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A=
+sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
+sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
+sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
diff --git a/flytectl/install.sh b/flytectl/install.sh
index df8ae142030..b5d69c3c9b8 100755
--- a/flytectl/install.sh
+++ b/flytectl/install.sh
@@ -88,13 +88,20 @@ tag_to_version() {
log_info "checking GitHub for tag '${TAG}'"
fi
REALTAG=$(github_release "$OWNER/$REPO" "${TAG}") && true
- if test -z "$REALTAG"; then
+
+ RELEASE_URL="https://api.github.com/repos/${OWNER}/${REPO}/releases/tags/flytectl/${TAG}"
+ STATUS_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$RELEASE_URL")
+
+ if [ -n "$REALTAG" ]; then
+ TAG="$REALTAG"
+ VERSION=${TAG#v}
+ elif [ "$STATUS_CODE" -eq 200 ]; then
+ TAG="flytectl/$TAG"
+ VERSION=${TAG#v}
+ else
log_crit "unable to find '${TAG}' - use 'latest' or see https://github.com/${PREFIX}/releases for details"
exit 1
fi
- # if version starts with 'v', remove it
- TAG="$REALTAG"
- VERSION=${TAG#v}
}
adjust_format() {
diff --git a/flytectl/pkg/adminutils/config_flags_test.go b/flytectl/pkg/adminutils/config_flags_test.go
index de285339d13..e550226921c 100755
--- a/flytectl/pkg/adminutils/config_flags_test.go
+++ b/flytectl/pkg/adminutils/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytectl/pkg/docker/docker.go b/flytectl/pkg/docker/docker.go
index e4bc2c503a8..2ceac6fa9d7 100644
--- a/flytectl/pkg/docker/docker.go
+++ b/flytectl/pkg/docker/docker.go
@@ -18,17 +18,17 @@ import (
type Docker interface {
ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, platform *ocispec.Platform, containerName string) (container.CreateResponse, error)
ContainerStart(ctx context.Context, containerID string, options container.StartOptions) error
- ImagePull(ctx context.Context, refStr string, options types.ImagePullOptions) (io.ReadCloser, error)
+ ImagePull(ctx context.Context, refStr string, options image.PullOptions) (io.ReadCloser, error)
ContainerWait(ctx context.Context, container string, condition container.WaitCondition) (<-chan container.WaitResponse, <-chan error)
ContainerLogs(ctx context.Context, container string, options container.LogsOptions) (io.ReadCloser, error)
ContainerRemove(ctx context.Context, containerID string, options container.RemoveOptions) error
ContainerList(ctx context.Context, options container.ListOptions) ([]types.Container, error)
- ContainerExecCreate(ctx context.Context, container string, config types.ExecConfig) (types.IDResponse, error)
- ContainerExecAttach(ctx context.Context, execID string, config types.ExecStartCheck) (types.HijackedResponse, error)
- ContainerExecInspect(ctx context.Context, execID string) (types.ContainerExecInspect, error)
- ImageList(ctx context.Context, listOption types.ImageListOptions) ([]image.Summary, error)
- ContainerStatPath(ctx context.Context, containerID, path string) (types.ContainerPathStat, error)
- CopyFromContainer(ctx context.Context, containerID, srcPath string) (io.ReadCloser, types.ContainerPathStat, error)
+ ContainerExecCreate(ctx context.Context, container string, config container.ExecOptions) (types.IDResponse, error)
+ ContainerExecAttach(ctx context.Context, execID string, config container.ExecStartOptions) (types.HijackedResponse, error)
+ ContainerExecInspect(ctx context.Context, execID string) (container.ExecInspect, error)
+ ImageList(ctx context.Context, listOption image.ListOptions) ([]image.Summary, error)
+ ContainerStatPath(ctx context.Context, containerID, path string) (container.PathStat, error)
+ CopyFromContainer(ctx context.Context, containerID, srcPath string) (io.ReadCloser, container.PathStat, error)
VolumeCreate(ctx context.Context, options volume.CreateOptions) (volume.Volume, error)
VolumeList(ctx context.Context, options volume.ListOptions) (volume.ListResponse, error)
VolumeRemove(ctx context.Context, volumeID string, force bool) error
diff --git a/flytectl/pkg/docker/docker_util.go b/flytectl/pkg/docker/docker_util.go
index a495fdc5147..0f4bbe9c6e9 100644
--- a/flytectl/pkg/docker/docker_util.go
+++ b/flytectl/pkg/docker/docker_util.go
@@ -12,6 +12,7 @@ import (
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/filters"
+ "github.com/docker/docker/api/types/image"
"github.com/docker/docker/api/types/mount"
"github.com/docker/docker/api/types/volume"
"github.com/docker/docker/client"
@@ -47,7 +48,7 @@ var (
Target: K3sDir,
},
}
- ExecConfig = types.ExecConfig{
+ ExecConfig = container.ExecOptions{
AttachStderr: true,
Tty: true,
WorkingDir: "/",
@@ -119,7 +120,12 @@ func GetDevPorts() (map[nat.Port]struct{}, map[nat.Port][]nat.PortBinding, error
}
// GetSandboxPorts will return sandbox ports
-func GetSandboxPorts() (map[nat.Port]struct{}, map[nat.Port][]nat.PortBinding, error) {
+func GetSandboxPorts(customPorts []string) (map[nat.Port]struct{}, map[nat.Port][]nat.PortBinding, error) {
+
+ if len(customPorts) > 0 {
+ return nat.ParsePortSpecs(customPorts)
+ }
+
return nat.ParsePortSpecs([]string{
// Notice that two host ports are mapped to the same container port in the case of Flyteconsole, this is done to
// support the generated URLs produced by pyflyte run
@@ -133,6 +139,7 @@ func GetSandboxPorts() (map[nat.Port]struct{}, map[nat.Port][]nat.PortBinding, e
})
}
+
// GetDemoPorts will return demo ports
func GetDemoPorts(k8sPort string) (map[nat.Port]struct{}, map[nat.Port][]nat.PortBinding, error) {
return nat.ParsePortSpecs([]string{
@@ -146,11 +153,11 @@ func GetDemoPorts(k8sPort string) (map[nat.Port]struct{}, map[nat.Port][]nat.Por
}
// PullDockerImage will Pull docker image
-func PullDockerImage(ctx context.Context, cli Docker, image string, pullPolicy ImagePullPolicy,
+func PullDockerImage(ctx context.Context, cli Docker, dockerImage string, pullPolicy ImagePullPolicy,
imagePullOptions ImagePullOptions, dryRun bool) error {
if dryRun {
- PrintPullImage(image, imagePullOptions)
+ PrintPullImage(dockerImage, imagePullOptions)
return nil
}
@@ -158,14 +165,14 @@ func PullDockerImage(ctx context.Context, cli Docker, image string, pullPolicy I
if pullPolicy == ImagePullPolicyAlways {
needsPull = true
} else {
- imageSummary, err := cli.ImageList(ctx, types.ImageListOptions{})
+ imageSummary, err := cli.ImageList(ctx, image.ListOptions{})
if err != nil {
return err
}
found := false
for _, img := range imageSummary {
for _, tags := range img.RepoTags {
- if image == tags {
+ if dockerImage == tags {
found = true
break
}
@@ -184,11 +191,11 @@ func PullDockerImage(ctx context.Context, cli Docker, image string, pullPolicy I
// Image needs to be pulled but pull policy prevents it
if pullPolicy == ImagePullPolicyNever {
- return fmt.Errorf("Image does not exist, but image pull policy prevents pulling it: %s", image)
+ return fmt.Errorf("Image does not exist, but dockerImage pull policy prevents pulling it: %s", dockerImage)
}
- fmt.Printf("%v Pulling image %s\n", emoji.Whale, image)
- r, err := cli.ImagePull(ctx, image, types.ImagePullOptions{
+ fmt.Printf("%v Pulling dockerImage %s\n", emoji.Whale, dockerImage)
+ r, err := cli.ImagePull(ctx, dockerImage, image.PullOptions{
RegistryAuth: imagePullOptions.RegistryAuth,
Platform: imagePullOptions.Platform,
})
@@ -354,7 +361,7 @@ func ExecCommend(ctx context.Context, cli Docker, containerID string, command []
}
func InspectExecResp(ctx context.Context, cli Docker, containerID string) error {
- resp, err := cli.ContainerExecAttach(ctx, containerID, types.ExecStartCheck{})
+ resp, err := cli.ContainerExecAttach(ctx, containerID, container.ExecStartOptions{})
if err != nil {
return err
}
diff --git a/flytectl/pkg/docker/docker_util_test.go b/flytectl/pkg/docker/docker_util_test.go
index 4f9f5257c28..88de1238dda 100644
--- a/flytectl/pkg/docker/docker_util_test.go
+++ b/flytectl/pkg/docker/docker_util_test.go
@@ -116,8 +116,8 @@ func TestPullDockerImage(t *testing.T) {
mockDocker := &mocks.Docker{}
ctx := context.Background()
// Verify the attributes
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), nil)
- mockDocker.EXPECT().ImageList(ctx, types.ImageListOptions{}).Return([]image.Summary{{RepoTags: []string{"nginx:latest"}}}, nil)
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), nil)
+ mockDocker.EXPECT().ImageList(ctx, image.ListOptions{}).Return([]image.Summary{{RepoTags: []string{"nginx:latest"}}}, nil)
err := PullDockerImage(ctx, mockDocker, "nginx:latest", ImagePullPolicyAlways, ImagePullOptions{}, false)
assert.Nil(t, err)
})
@@ -126,8 +126,8 @@ func TestPullDockerImage(t *testing.T) {
mockDocker := &mocks.Docker{}
ctx := context.Background()
// Verify the attributes
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), nil)
- mockDocker.EXPECT().ImageList(ctx, types.ImageListOptions{}).Return([]image.Summary{}, nil)
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), nil)
+ mockDocker.EXPECT().ImageList(ctx, image.ListOptions{}).Return([]image.Summary{}, nil)
err := PullDockerImage(ctx, mockDocker, "nginx:latest", ImagePullPolicyAlways, ImagePullOptions{}, false)
assert.Nil(t, err)
})
@@ -136,7 +136,7 @@ func TestPullDockerImage(t *testing.T) {
mockDocker := &mocks.Docker{}
ctx := context.Background()
// Verify the attributes
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), fmt.Errorf("error"))
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), fmt.Errorf("error"))
err := PullDockerImage(ctx, mockDocker, "nginx:latest", ImagePullPolicyAlways, ImagePullOptions{}, false)
assert.NotNil(t, err)
})
@@ -145,8 +145,8 @@ func TestPullDockerImage(t *testing.T) {
mockDocker := &mocks.Docker{}
ctx := context.Background()
// Verify the attributes
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), nil)
- mockDocker.EXPECT().ImageList(ctx, types.ImageListOptions{}).Return([]image.Summary{}, nil)
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), nil)
+ mockDocker.EXPECT().ImageList(ctx, image.ListOptions{}).Return([]image.Summary{}, nil)
err := PullDockerImage(ctx, mockDocker, "nginx:latest", ImagePullPolicyIfNotPresent, ImagePullOptions{}, false)
assert.Nil(t, err)
})
@@ -154,7 +154,7 @@ func TestPullDockerImage(t *testing.T) {
t.Run("Success skip existing image with ImagePullPolicyIfNotPresent", func(t *testing.T) {
mockDocker := &mocks.Docker{}
ctx := context.Background()
- mockDocker.EXPECT().ImageList(ctx, types.ImageListOptions{}).Return([]image.Summary{{RepoTags: []string{"nginx:latest"}}}, nil)
+ mockDocker.EXPECT().ImageList(ctx, image.ListOptions{}).Return([]image.Summary{{RepoTags: []string{"nginx:latest"}}}, nil)
err := PullDockerImage(ctx, mockDocker, "nginx:latest", ImagePullPolicyIfNotPresent, ImagePullOptions{}, false)
assert.Nil(t, err)
})
@@ -162,7 +162,7 @@ func TestPullDockerImage(t *testing.T) {
t.Run("Success skip existing image with ImagePullPolicyNever", func(t *testing.T) {
mockDocker := &mocks.Docker{}
ctx := context.Background()
- mockDocker.EXPECT().ImageList(ctx, types.ImageListOptions{}).Return([]image.Summary{{RepoTags: []string{"nginx:latest"}}}, nil)
+ mockDocker.EXPECT().ImageList(ctx, image.ListOptions{}).Return([]image.Summary{{RepoTags: []string{"nginx:latest"}}}, nil)
err := PullDockerImage(ctx, mockDocker, "nginx:latest", ImagePullPolicyNever, ImagePullOptions{}, false)
assert.Nil(t, err)
})
@@ -170,9 +170,9 @@ func TestPullDockerImage(t *testing.T) {
t.Run("Error non-existent image with ImagePullPolicyNever", func(t *testing.T) {
mockDocker := &mocks.Docker{}
ctx := context.Background()
- mockDocker.EXPECT().ImageList(ctx, types.ImageListOptions{}).Return([]image.Summary{}, nil)
+ mockDocker.EXPECT().ImageList(ctx, image.ListOptions{}).Return([]image.Summary{}, nil)
err := PullDockerImage(ctx, mockDocker, "nginx:latest", ImagePullPolicyNever, ImagePullOptions{}, false)
- assert.ErrorContains(t, err, "Image does not exist, but image pull policy prevents pulling it")
+ assert.ErrorContains(t, err, "Image does not exist, but dockerImage pull policy prevents pulling it: nginx:latest")
})
}
@@ -383,8 +383,8 @@ func TestInspectExecResp(t *testing.T) {
c.Cmd = []string{"ls"}
reader := bufio.NewReader(strings.NewReader("test"))
- mockDocker.EXPECT().ContainerExecInspect(ctx, mock.Anything).Return(types.ContainerExecInspect{}, nil)
- mockDocker.EXPECT().ContainerExecAttach(ctx, mock.Anything, types.ExecStartCheck{}).Return(types.HijackedResponse{
+ mockDocker.EXPECT().ContainerExecInspect(ctx, mock.Anything).Return(container.ExecInspect{}, nil)
+ mockDocker.EXPECT().ContainerExecAttach(ctx, mock.Anything, container.ExecStartOptions{}).Return(types.HijackedResponse{
Reader: reader,
}, fmt.Errorf("err"))
@@ -399,7 +399,7 @@ func TestInspectExecResp(t *testing.T) {
c.Cmd = []string{"ls"}
reader := bufio.NewReader(strings.NewReader("test"))
- mockDocker.EXPECT().ContainerExecAttach(ctx, mock.Anything, types.ExecStartCheck{}).Return(types.HijackedResponse{
+ mockDocker.EXPECT().ContainerExecAttach(ctx, mock.Anything, container.ExecStartOptions{}).Return(types.HijackedResponse{
Reader: reader,
}, nil)
@@ -476,8 +476,8 @@ func TestCopyFile(t *testing.T) {
mockDocker.EXPECT().ContainerCreate(
ctx, &container.Config{Image: image}, &container.HostConfig{}, mock.Anything, mock.Anything, containerName).Return(
container.CreateResponse{ID: containerName}, nil)
- mockDocker.EXPECT().ContainerStatPath(ctx, containerName, "some source").Return(types.ContainerPathStat{}, nil)
- mockDocker.EXPECT().CopyFromContainer(ctx, containerName, "some source").Return(reader, types.ContainerPathStat{}, nil)
+ mockDocker.EXPECT().ContainerStatPath(ctx, containerName, "some source").Return(container.PathStat{}, nil)
+ mockDocker.EXPECT().CopyFromContainer(ctx, containerName, "some source").Return(reader, container.PathStat{}, nil)
mockDocker.EXPECT().ContainerRemove(ctx, containerName, container.RemoveOptions{Force: true}).Return(nil)
assert.Nil(t, err)
@@ -499,7 +499,7 @@ func TestCopyFile(t *testing.T) {
mockDocker.EXPECT().ContainerCreate(
ctx, &container.Config{Image: image}, &container.HostConfig{}, mock.Anything, mock.Anything, containerName).Return(
container.CreateResponse{ID: containerName}, nil)
- mockDocker.EXPECT().ContainerStatPath(ctx, containerName, "some source").Return(types.ContainerPathStat{}, myErr)
+ mockDocker.EXPECT().ContainerStatPath(ctx, containerName, "some source").Return(container.PathStat{}, myErr)
mockDocker.EXPECT().ContainerRemove(ctx, containerName, container.RemoveOptions{Force: true}).Return(nil)
assert.Nil(t, err)
diff --git a/flytectl/pkg/docker/mocks/docker.go b/flytectl/pkg/docker/mocks/docker.go
index d14c2fd91a0..43bf1b66a6a 100644
--- a/flytectl/pkg/docker/mocks/docker.go
+++ b/flytectl/pkg/docker/mocks/docker.go
@@ -1,25 +1,21 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
+ common "github.com/docker/docker/api/types/common"
container "github.com/docker/docker/api/types/container"
- image "github.com/docker/docker/api/types/image"
-
io "io"
- mock "github.com/stretchr/testify/mock"
-
- network "github.com/docker/docker/api/types/network"
-
types "github.com/docker/docker/api/types"
-
- v1 "github.com/opencontainers/image-spec/specs-go/v1"
-
+ image "github.com/docker/docker/api/types/image"
+ network "github.com/docker/docker/api/types/network"
volume "github.com/docker/docker/api/types/volume"
+ v1 "github.com/opencontainers/image-spec/specs-go/v1"
+ mock "github.com/stretchr/testify/mock"
)
// Docker is an autogenerated mock type for the Docker type
@@ -97,7 +93,7 @@ func (_c *Docker_ContainerCreate_Call) RunAndReturn(run func(context.Context, *c
}
// ContainerExecAttach provides a mock function with given fields: ctx, execID, config
-func (_m *Docker) ContainerExecAttach(ctx context.Context, execID string, config types.ExecStartCheck) (types.HijackedResponse, error) {
+func (_m *Docker) ContainerExecAttach(ctx context.Context, execID string, config container.ExecStartOptions) (types.HijackedResponse, error) {
ret := _m.Called(ctx, execID, config)
if len(ret) == 0 {
@@ -106,16 +102,16 @@ func (_m *Docker) ContainerExecAttach(ctx context.Context, execID string, config
var r0 types.HijackedResponse
var r1 error
- if rf, ok := ret.Get(0).(func(context.Context, string, types.ExecStartCheck) (types.HijackedResponse, error)); ok {
+ if rf, ok := ret.Get(0).(func(context.Context, string, container.ExecStartOptions) (types.HijackedResponse, error)); ok {
return rf(ctx, execID, config)
}
- if rf, ok := ret.Get(0).(func(context.Context, string, types.ExecStartCheck) types.HijackedResponse); ok {
+ if rf, ok := ret.Get(0).(func(context.Context, string, container.ExecStartOptions) types.HijackedResponse); ok {
r0 = rf(ctx, execID, config)
} else {
r0 = ret.Get(0).(types.HijackedResponse)
}
- if rf, ok := ret.Get(1).(func(context.Context, string, types.ExecStartCheck) error); ok {
+ if rf, ok := ret.Get(1).(func(context.Context, string, container.ExecStartOptions) error); ok {
r1 = rf(ctx, execID, config)
} else {
r1 = ret.Error(1)
@@ -132,14 +128,14 @@ type Docker_ContainerExecAttach_Call struct {
// ContainerExecAttach is a helper method to define mock.On call
// - ctx context.Context
// - execID string
-// - config types.ExecStartCheck
+// - config container.ExecStartOptions
func (_e *Docker_Expecter) ContainerExecAttach(ctx interface{}, execID interface{}, config interface{}) *Docker_ContainerExecAttach_Call {
return &Docker_ContainerExecAttach_Call{Call: _e.mock.On("ContainerExecAttach", ctx, execID, config)}
}
-func (_c *Docker_ContainerExecAttach_Call) Run(run func(ctx context.Context, execID string, config types.ExecStartCheck)) *Docker_ContainerExecAttach_Call {
+func (_c *Docker_ContainerExecAttach_Call) Run(run func(ctx context.Context, execID string, config container.ExecStartOptions)) *Docker_ContainerExecAttach_Call {
_c.Call.Run(func(args mock.Arguments) {
- run(args[0].(context.Context), args[1].(string), args[2].(types.ExecStartCheck))
+ run(args[0].(context.Context), args[1].(string), args[2].(container.ExecStartOptions))
})
return _c
}
@@ -149,31 +145,31 @@ func (_c *Docker_ContainerExecAttach_Call) Return(_a0 types.HijackedResponse, _a
return _c
}
-func (_c *Docker_ContainerExecAttach_Call) RunAndReturn(run func(context.Context, string, types.ExecStartCheck) (types.HijackedResponse, error)) *Docker_ContainerExecAttach_Call {
+func (_c *Docker_ContainerExecAttach_Call) RunAndReturn(run func(context.Context, string, container.ExecStartOptions) (types.HijackedResponse, error)) *Docker_ContainerExecAttach_Call {
_c.Call.Return(run)
return _c
}
// ContainerExecCreate provides a mock function with given fields: ctx, _a1, config
-func (_m *Docker) ContainerExecCreate(ctx context.Context, _a1 string, config types.ExecConfig) (types.IDResponse, error) {
+func (_m *Docker) ContainerExecCreate(ctx context.Context, _a1 string, config container.ExecOptions) (common.IDResponse, error) {
ret := _m.Called(ctx, _a1, config)
if len(ret) == 0 {
panic("no return value specified for ContainerExecCreate")
}
- var r0 types.IDResponse
+ var r0 common.IDResponse
var r1 error
- if rf, ok := ret.Get(0).(func(context.Context, string, types.ExecConfig) (types.IDResponse, error)); ok {
+ if rf, ok := ret.Get(0).(func(context.Context, string, container.ExecOptions) (common.IDResponse, error)); ok {
return rf(ctx, _a1, config)
}
- if rf, ok := ret.Get(0).(func(context.Context, string, types.ExecConfig) types.IDResponse); ok {
+ if rf, ok := ret.Get(0).(func(context.Context, string, container.ExecOptions) common.IDResponse); ok {
r0 = rf(ctx, _a1, config)
} else {
- r0 = ret.Get(0).(types.IDResponse)
+ r0 = ret.Get(0).(common.IDResponse)
}
- if rf, ok := ret.Get(1).(func(context.Context, string, types.ExecConfig) error); ok {
+ if rf, ok := ret.Get(1).(func(context.Context, string, container.ExecOptions) error); ok {
r1 = rf(ctx, _a1, config)
} else {
r1 = ret.Error(1)
@@ -190,45 +186,45 @@ type Docker_ContainerExecCreate_Call struct {
// ContainerExecCreate is a helper method to define mock.On call
// - ctx context.Context
// - _a1 string
-// - config types.ExecConfig
+// - config container.ExecOptions
func (_e *Docker_Expecter) ContainerExecCreate(ctx interface{}, _a1 interface{}, config interface{}) *Docker_ContainerExecCreate_Call {
return &Docker_ContainerExecCreate_Call{Call: _e.mock.On("ContainerExecCreate", ctx, _a1, config)}
}
-func (_c *Docker_ContainerExecCreate_Call) Run(run func(ctx context.Context, _a1 string, config types.ExecConfig)) *Docker_ContainerExecCreate_Call {
+func (_c *Docker_ContainerExecCreate_Call) Run(run func(ctx context.Context, _a1 string, config container.ExecOptions)) *Docker_ContainerExecCreate_Call {
_c.Call.Run(func(args mock.Arguments) {
- run(args[0].(context.Context), args[1].(string), args[2].(types.ExecConfig))
+ run(args[0].(context.Context), args[1].(string), args[2].(container.ExecOptions))
})
return _c
}
-func (_c *Docker_ContainerExecCreate_Call) Return(_a0 types.IDResponse, _a1 error) *Docker_ContainerExecCreate_Call {
+func (_c *Docker_ContainerExecCreate_Call) Return(_a0 common.IDResponse, _a1 error) *Docker_ContainerExecCreate_Call {
_c.Call.Return(_a0, _a1)
return _c
}
-func (_c *Docker_ContainerExecCreate_Call) RunAndReturn(run func(context.Context, string, types.ExecConfig) (types.IDResponse, error)) *Docker_ContainerExecCreate_Call {
+func (_c *Docker_ContainerExecCreate_Call) RunAndReturn(run func(context.Context, string, container.ExecOptions) (common.IDResponse, error)) *Docker_ContainerExecCreate_Call {
_c.Call.Return(run)
return _c
}
// ContainerExecInspect provides a mock function with given fields: ctx, execID
-func (_m *Docker) ContainerExecInspect(ctx context.Context, execID string) (types.ContainerExecInspect, error) {
+func (_m *Docker) ContainerExecInspect(ctx context.Context, execID string) (container.ExecInspect, error) {
ret := _m.Called(ctx, execID)
if len(ret) == 0 {
panic("no return value specified for ContainerExecInspect")
}
- var r0 types.ContainerExecInspect
+ var r0 container.ExecInspect
var r1 error
- if rf, ok := ret.Get(0).(func(context.Context, string) (types.ContainerExecInspect, error)); ok {
+ if rf, ok := ret.Get(0).(func(context.Context, string) (container.ExecInspect, error)); ok {
return rf(ctx, execID)
}
- if rf, ok := ret.Get(0).(func(context.Context, string) types.ContainerExecInspect); ok {
+ if rf, ok := ret.Get(0).(func(context.Context, string) container.ExecInspect); ok {
r0 = rf(ctx, execID)
} else {
- r0 = ret.Get(0).(types.ContainerExecInspect)
+ r0 = ret.Get(0).(container.ExecInspect)
}
if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
@@ -259,34 +255,34 @@ func (_c *Docker_ContainerExecInspect_Call) Run(run func(ctx context.Context, ex
return _c
}
-func (_c *Docker_ContainerExecInspect_Call) Return(_a0 types.ContainerExecInspect, _a1 error) *Docker_ContainerExecInspect_Call {
+func (_c *Docker_ContainerExecInspect_Call) Return(_a0 container.ExecInspect, _a1 error) *Docker_ContainerExecInspect_Call {
_c.Call.Return(_a0, _a1)
return _c
}
-func (_c *Docker_ContainerExecInspect_Call) RunAndReturn(run func(context.Context, string) (types.ContainerExecInspect, error)) *Docker_ContainerExecInspect_Call {
+func (_c *Docker_ContainerExecInspect_Call) RunAndReturn(run func(context.Context, string) (container.ExecInspect, error)) *Docker_ContainerExecInspect_Call {
_c.Call.Return(run)
return _c
}
// ContainerList provides a mock function with given fields: ctx, options
-func (_m *Docker) ContainerList(ctx context.Context, options container.ListOptions) ([]types.Container, error) {
+func (_m *Docker) ContainerList(ctx context.Context, options container.ListOptions) ([]container.Summary, error) {
ret := _m.Called(ctx, options)
if len(ret) == 0 {
panic("no return value specified for ContainerList")
}
- var r0 []types.Container
+ var r0 []container.Summary
var r1 error
- if rf, ok := ret.Get(0).(func(context.Context, container.ListOptions) ([]types.Container, error)); ok {
+ if rf, ok := ret.Get(0).(func(context.Context, container.ListOptions) ([]container.Summary, error)); ok {
return rf(ctx, options)
}
- if rf, ok := ret.Get(0).(func(context.Context, container.ListOptions) []types.Container); ok {
+ if rf, ok := ret.Get(0).(func(context.Context, container.ListOptions) []container.Summary); ok {
r0 = rf(ctx, options)
} else {
if ret.Get(0) != nil {
- r0 = ret.Get(0).([]types.Container)
+ r0 = ret.Get(0).([]container.Summary)
}
}
@@ -318,12 +314,12 @@ func (_c *Docker_ContainerList_Call) Run(run func(ctx context.Context, options c
return _c
}
-func (_c *Docker_ContainerList_Call) Return(_a0 []types.Container, _a1 error) *Docker_ContainerList_Call {
+func (_c *Docker_ContainerList_Call) Return(_a0 []container.Summary, _a1 error) *Docker_ContainerList_Call {
_c.Call.Return(_a0, _a1)
return _c
}
-func (_c *Docker_ContainerList_Call) RunAndReturn(run func(context.Context, container.ListOptions) ([]types.Container, error)) *Docker_ContainerList_Call {
+func (_c *Docker_ContainerList_Call) RunAndReturn(run func(context.Context, container.ListOptions) ([]container.Summary, error)) *Docker_ContainerList_Call {
_c.Call.Return(run)
return _c
}
@@ -485,22 +481,22 @@ func (_c *Docker_ContainerStart_Call) RunAndReturn(run func(context.Context, str
}
// ContainerStatPath provides a mock function with given fields: ctx, containerID, path
-func (_m *Docker) ContainerStatPath(ctx context.Context, containerID string, path string) (types.ContainerPathStat, error) {
+func (_m *Docker) ContainerStatPath(ctx context.Context, containerID string, path string) (container.PathStat, error) {
ret := _m.Called(ctx, containerID, path)
if len(ret) == 0 {
panic("no return value specified for ContainerStatPath")
}
- var r0 types.ContainerPathStat
+ var r0 container.PathStat
var r1 error
- if rf, ok := ret.Get(0).(func(context.Context, string, string) (types.ContainerPathStat, error)); ok {
+ if rf, ok := ret.Get(0).(func(context.Context, string, string) (container.PathStat, error)); ok {
return rf(ctx, containerID, path)
}
- if rf, ok := ret.Get(0).(func(context.Context, string, string) types.ContainerPathStat); ok {
+ if rf, ok := ret.Get(0).(func(context.Context, string, string) container.PathStat); ok {
r0 = rf(ctx, containerID, path)
} else {
- r0 = ret.Get(0).(types.ContainerPathStat)
+ r0 = ret.Get(0).(container.PathStat)
}
if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
@@ -532,12 +528,12 @@ func (_c *Docker_ContainerStatPath_Call) Run(run func(ctx context.Context, conta
return _c
}
-func (_c *Docker_ContainerStatPath_Call) Return(_a0 types.ContainerPathStat, _a1 error) *Docker_ContainerStatPath_Call {
+func (_c *Docker_ContainerStatPath_Call) Return(_a0 container.PathStat, _a1 error) *Docker_ContainerStatPath_Call {
_c.Call.Return(_a0, _a1)
return _c
}
-func (_c *Docker_ContainerStatPath_Call) RunAndReturn(run func(context.Context, string, string) (types.ContainerPathStat, error)) *Docker_ContainerStatPath_Call {
+func (_c *Docker_ContainerStatPath_Call) RunAndReturn(run func(context.Context, string, string) (container.PathStat, error)) *Docker_ContainerStatPath_Call {
_c.Call.Return(run)
return _c
}
@@ -605,7 +601,7 @@ func (_c *Docker_ContainerWait_Call) RunAndReturn(run func(context.Context, stri
}
// CopyFromContainer provides a mock function with given fields: ctx, containerID, srcPath
-func (_m *Docker) CopyFromContainer(ctx context.Context, containerID string, srcPath string) (io.ReadCloser, types.ContainerPathStat, error) {
+func (_m *Docker) CopyFromContainer(ctx context.Context, containerID string, srcPath string) (io.ReadCloser, container.PathStat, error) {
ret := _m.Called(ctx, containerID, srcPath)
if len(ret) == 0 {
@@ -613,9 +609,9 @@ func (_m *Docker) CopyFromContainer(ctx context.Context, containerID string, src
}
var r0 io.ReadCloser
- var r1 types.ContainerPathStat
+ var r1 container.PathStat
var r2 error
- if rf, ok := ret.Get(0).(func(context.Context, string, string) (io.ReadCloser, types.ContainerPathStat, error)); ok {
+ if rf, ok := ret.Get(0).(func(context.Context, string, string) (io.ReadCloser, container.PathStat, error)); ok {
return rf(ctx, containerID, srcPath)
}
if rf, ok := ret.Get(0).(func(context.Context, string, string) io.ReadCloser); ok {
@@ -626,10 +622,10 @@ func (_m *Docker) CopyFromContainer(ctx context.Context, containerID string, src
}
}
- if rf, ok := ret.Get(1).(func(context.Context, string, string) types.ContainerPathStat); ok {
+ if rf, ok := ret.Get(1).(func(context.Context, string, string) container.PathStat); ok {
r1 = rf(ctx, containerID, srcPath)
} else {
- r1 = ret.Get(1).(types.ContainerPathStat)
+ r1 = ret.Get(1).(container.PathStat)
}
if rf, ok := ret.Get(2).(func(context.Context, string, string) error); ok {
@@ -661,12 +657,12 @@ func (_c *Docker_CopyFromContainer_Call) Run(run func(ctx context.Context, conta
return _c
}
-func (_c *Docker_CopyFromContainer_Call) Return(_a0 io.ReadCloser, _a1 types.ContainerPathStat, _a2 error) *Docker_CopyFromContainer_Call {
+func (_c *Docker_CopyFromContainer_Call) Return(_a0 io.ReadCloser, _a1 container.PathStat, _a2 error) *Docker_CopyFromContainer_Call {
_c.Call.Return(_a0, _a1, _a2)
return _c
}
-func (_c *Docker_CopyFromContainer_Call) RunAndReturn(run func(context.Context, string, string) (io.ReadCloser, types.ContainerPathStat, error)) *Docker_CopyFromContainer_Call {
+func (_c *Docker_CopyFromContainer_Call) RunAndReturn(run func(context.Context, string, string) (io.ReadCloser, container.PathStat, error)) *Docker_CopyFromContainer_Call {
_c.Call.Return(run)
return _c
}
diff --git a/flytectl/pkg/ext/mocks/admin_deleter_ext_interface.go b/flytectl/pkg/ext/mocks/admin_deleter_ext_interface.go
index e772c58c606..ba183c0f012 100644
--- a/flytectl/pkg/ext/mocks/admin_deleter_ext_interface.go
+++ b/flytectl/pkg/ext/mocks/admin_deleter_ext_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -7,9 +7,8 @@ import (
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
- mock "github.com/stretchr/testify/mock"
-
service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
+ mock "github.com/stretchr/testify/mock"
)
// AdminDeleterExtInterface is an autogenerated mock type for the AdminDeleterExtInterface type
@@ -25,7 +24,7 @@ func (_m *AdminDeleterExtInterface) EXPECT() *AdminDeleterExtInterface_Expecter
return &AdminDeleterExtInterface_Expecter{mock: &_m.Mock}
}
-// AdminServiceClient provides a mock function with given fields:
+// AdminServiceClient provides a mock function with no fields
func (_m *AdminDeleterExtInterface) AdminServiceClient() service.AdminServiceClient {
ret := _m.Called()
diff --git a/flytectl/pkg/ext/mocks/admin_fetcher_ext_interface.go b/flytectl/pkg/ext/mocks/admin_fetcher_ext_interface.go
index 3e9d4f4f84f..43b45b7fd5b 100644
--- a/flytectl/pkg/ext/mocks/admin_fetcher_ext_interface.go
+++ b/flytectl/pkg/ext/mocks/admin_fetcher_ext_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -8,10 +8,8 @@ import (
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
filters "github.com/flyteorg/flyte/flytectl/pkg/filters"
-
- mock "github.com/stretchr/testify/mock"
-
service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
+ mock "github.com/stretchr/testify/mock"
)
// AdminFetcherExtInterface is an autogenerated mock type for the AdminFetcherExtInterface type
@@ -27,7 +25,7 @@ func (_m *AdminFetcherExtInterface) EXPECT() *AdminFetcherExtInterface_Expecter
return &AdminFetcherExtInterface_Expecter{mock: &_m.Mock}
}
-// AdminServiceClient provides a mock function with given fields:
+// AdminServiceClient provides a mock function with no fields
func (_m *AdminFetcherExtInterface) AdminServiceClient() service.AdminServiceClient {
ret := _m.Called()
diff --git a/flytectl/pkg/ext/mocks/admin_updater_ext_interface.go b/flytectl/pkg/ext/mocks/admin_updater_ext_interface.go
index b2b1e95d7dd..66ae998aa24 100644
--- a/flytectl/pkg/ext/mocks/admin_updater_ext_interface.go
+++ b/flytectl/pkg/ext/mocks/admin_updater_ext_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -7,9 +7,8 @@ import (
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
- mock "github.com/stretchr/testify/mock"
-
service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
+ mock "github.com/stretchr/testify/mock"
)
// AdminUpdaterExtInterface is an autogenerated mock type for the AdminUpdaterExtInterface type
@@ -25,7 +24,7 @@ func (_m *AdminUpdaterExtInterface) EXPECT() *AdminUpdaterExtInterface_Expecter
return &AdminUpdaterExtInterface_Expecter{mock: &_m.Mock}
}
-// AdminServiceClient provides a mock function with given fields:
+// AdminServiceClient provides a mock function with no fields
func (_m *AdminUpdaterExtInterface) AdminServiceClient() service.AdminServiceClient {
ret := _m.Called()
diff --git a/flytectl/pkg/github/githubutil.go b/flytectl/pkg/github/githubutil.go
index 165de1f4f4e..7bf7d8d0f0e 100644
--- a/flytectl/pkg/github/githubutil.go
+++ b/flytectl/pkg/github/githubutil.go
@@ -25,6 +25,7 @@ const (
flyte = "flyte"
flytectl = "flytectl"
sandboxSupportedVersion = "v0.10.0"
+ sandboxMaxVersion = "v2.0.0"
flytectlRepository = "github.com/flyteorg/flyte"
commonMessage = "\n A new release of flytectl is available: %s → %s \n"
brewMessage = "To upgrade, run: brew update && brew upgrade flytectl \n"
@@ -129,6 +130,17 @@ func GetSandboxImageSha(tag string, pre bool, g GHRepoService) (string, string,
return "", release.GetTagName(), err
}
for _, v := range releases {
+ tagName := v.GetTagName()
+
+ // Skip versions >= sandboxMaxVersion (v2.x and above)
+ // flytectl only supports flyte v1
+ isLessThan, err := util.IsVersionGreaterThan(sandboxMaxVersion, tagName)
+ if err == nil && !isLessThan {
+ // tagName >= sandboxMaxVersion, skip it
+ logger.Debugf(context.Background(), "skipping release %s (>= %s)", tagName, sandboxMaxVersion)
+ continue
+ }
+
// When pre-releases are allowed, simply choose the latest release
if pre {
release = v
diff --git a/flytectl/pkg/github/mocks/gh_repo_service.go b/flytectl/pkg/github/mocks/gh_repo_service.go
index 461e9646552..d46441160c4 100644
--- a/flytectl/pkg/github/mocks/gh_repo_service.go
+++ b/flytectl/pkg/github/mocks/gh_repo_service.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytectl/pkg/k8s/mocks/context_ops.go b/flytectl/pkg/k8s/mocks/context_ops.go
index 17015972f14..3996e3c169c 100644
--- a/flytectl/pkg/k8s/mocks/context_ops.go
+++ b/flytectl/pkg/k8s/mocks/context_ops.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -21,7 +21,7 @@ func (_m *ContextOps) EXPECT() *ContextOps_Expecter {
return &ContextOps_Expecter{mock: &_m.Mock}
}
-// CheckConfig provides a mock function with given fields:
+// CheckConfig provides a mock function with no fields
func (_m *ContextOps) CheckConfig() error {
ret := _m.Called()
diff --git a/flytectl/pkg/pkce/token_cache_keyring.go b/flytectl/pkg/pkce/token_cache_keyring.go
index 7b79a09f888..ba936c9c5f8 100644
--- a/flytectl/pkg/pkce/token_cache_keyring.go
+++ b/flytectl/pkg/pkce/token_cache_keyring.go
@@ -27,7 +27,7 @@ type TokenCacheKeyringProvider struct {
}
func (t *TokenCacheKeyringProvider) PurgeIfEquals(existing *oauth2.Token) (bool, error) {
- if existingBytes, err := json.Marshal(existing); err != nil {
+ if existingBytes, err := json.Marshal(existing); err != nil { //nolint:gosec
return false, fmt.Errorf("unable to marshal token to save in cache due to %w", err)
} else if tokenJSON, err := keyring.Get(t.ServiceName, t.ServiceUser); err != nil {
logger.Warnf(context.Background(), "unable to read token from cache but not failing the purge as the token might not have been saved at all. Error: %v", err)
@@ -88,7 +88,7 @@ func (t *TokenCacheKeyringProvider) SaveToken(token *oauth2.Token) error {
}
var err error
- if tokenBytes, err = json.Marshal(token); err != nil {
+ if tokenBytes, err = json.Marshal(token); err != nil { //nolint:gosec
return fmt.Errorf("unable to marshal token to save in cache due to %w", err)
}
diff --git a/flytectl/pkg/sandbox/start.go b/flytectl/pkg/sandbox/start.go
index 5536708988d..e72f90572e5 100644
--- a/flytectl/pkg/sandbox/start.go
+++ b/flytectl/pkg/sandbox/start.go
@@ -419,14 +419,17 @@ func StartDemoCluster(ctx context.Context, args []string, sandboxConfig *sandbox
func StartSandboxCluster(ctx context.Context, args []string, sandboxConfig *sandboxCmdConfig.Config) error {
demoImagePrefix := "dind"
- exposedPorts, portBindings, err := docker.GetSandboxPorts()
+
+ exposedPorts, portBindings, err := docker.GetSandboxPorts(sandboxConfig.Ports)
if err != nil {
return err
}
+
err = StartClusterForSandbox(ctx, args, sandboxConfig, sandboxImageName, demoImagePrefix, exposedPorts, portBindings, util.SandBoxConsolePort)
if err != nil {
return err
}
+
util.PrintSandboxStartMessage(util.SandBoxConsolePort, docker.SandboxKubeconfig, sandboxConfig.DryRun)
return nil
-}
+}
\ No newline at end of file
diff --git a/flytectl/pkg/sandbox/start_test.go b/flytectl/pkg/sandbox/start_test.go
index 9956054cd13..cd9eb37814e 100644
--- a/flytectl/pkg/sandbox/start_test.go
+++ b/flytectl/pkg/sandbox/start_test.go
@@ -12,6 +12,7 @@ import (
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/filters"
+ "github.com/docker/docker/api/types/image"
"github.com/docker/docker/api/types/volume"
sandboxCmdConfig "github.com/flyteorg/flyte/flytectl/cmd/config/subcommand/sandbox"
"github.com/flyteorg/flyte/flytectl/pkg/docker"
@@ -131,7 +132,7 @@ func TestStartFunc(t *testing.T) {
t.Run("Successfully run demo cluster", func(t *testing.T) {
sandboxSetup()
mockDocker.EXPECT().ContainerList(ctx, container.ListOptions{All: true}).Return([]types.Container{}, nil)
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), nil)
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), nil)
mockDocker.EXPECT().ContainerStart(ctx, "Hello", container.StartOptions{}).Return(nil)
mockDocker.EXPECT().ContainerLogs(ctx, mock.Anything, container.LogsOptions{
ShowStderr: true,
@@ -154,7 +155,7 @@ func TestStartFunc(t *testing.T) {
},
},
}, nil)
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), nil)
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), nil)
mockDocker.EXPECT().ContainerStart(ctx, "Hello", container.StartOptions{}).Return(nil)
mockDocker.EXPECT().ContainerLogs(ctx, mock.Anything, container.LogsOptions{
ShowStderr: true,
@@ -172,7 +173,7 @@ func TestStartFunc(t *testing.T) {
sandboxSetup()
mockDocker.EXPECT().ContainerList(ctx, container.ListOptions{All: true}).Return([]types.Container{}, nil)
mockDocker.EXPECT().ContainerStart(ctx, "Hello", container.StartOptions{}).Return(nil)
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), nil)
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), nil)
mockDocker.EXPECT().ContainerLogs(ctx, mock.Anything, container.LogsOptions{
ShowStderr: true,
ShowStdout: true,
@@ -188,7 +189,7 @@ func TestStartFunc(t *testing.T) {
sandboxSetup()
mockDocker.EXPECT().ContainerList(ctx, container.ListOptions{All: true}).Return([]types.Container{}, nil)
mockDocker.EXPECT().ContainerStart(ctx, "Hello", container.StartOptions{}).Return(nil)
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), nil)
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), nil)
mockDocker.EXPECT().ContainerLogs(ctx, mock.Anything, container.LogsOptions{
ShowStderr: true,
ShowStdout: true,
@@ -202,7 +203,7 @@ func TestStartFunc(t *testing.T) {
sandboxSetup()
mockDocker.EXPECT().ContainerList(ctx, container.ListOptions{All: true}).Return([]types.Container{}, nil)
mockDocker.EXPECT().ContainerStart(ctx, "Hello", container.StartOptions{}).Return(nil)
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), nil)
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), nil)
mockDocker.EXPECT().ContainerLogs(ctx, mock.Anything, container.LogsOptions{
ShowStderr: true,
ShowStdout: true,
@@ -231,7 +232,7 @@ func TestStartFunc(t *testing.T) {
t.Run("Error in pulling image", func(t *testing.T) {
sandboxSetup()
mockDocker.EXPECT().ContainerList(ctx, container.ListOptions{All: true}).Return([]types.Container{}, nil)
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), fmt.Errorf("failed to pull"))
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), fmt.Errorf("failed to pull"))
sandboxCmdConfig.DefaultConfig.Image = ""
tag := "v0.15.0"
githubMock.EXPECT().GetReleaseByTag(mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&github.RepositoryRelease{
@@ -253,7 +254,7 @@ func TestStartFunc(t *testing.T) {
},
},
}, nil)
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), nil)
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), nil)
mockDocker.EXPECT().ContainerRemove(ctx, mock.Anything, container.RemoveOptions{Force: true}).Return(fmt.Errorf("failed to remove container"))
_, err := startSandbox(ctx, mockDocker, githubMock, strings.NewReader("y"), sandboxCmdConfig.DefaultConfig, sandboxImageName, defaultImagePrefix, exposedPorts, portBindings, util.SandBoxConsolePort)
assert.NotNil(t, err)
@@ -262,7 +263,7 @@ func TestStartFunc(t *testing.T) {
t.Run("Error in start container", func(t *testing.T) {
sandboxSetup()
mockDocker.EXPECT().ContainerList(ctx, container.ListOptions{All: true}).Return([]types.Container{}, nil)
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), nil)
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), nil)
mockDocker.EXPECT().ContainerStart(ctx, "Hello", container.StartOptions{}).Return(fmt.Errorf("failed to run container"))
_, err := startSandbox(ctx, mockDocker, githubMock, dummyReader(), sandboxCmdConfig.DefaultConfig, sandboxImageName, defaultImagePrefix, exposedPorts, portBindings, util.SandBoxConsolePort)
assert.NotNil(t, err)
@@ -271,7 +272,7 @@ func TestStartFunc(t *testing.T) {
t.Run("Error in reading logs", func(t *testing.T) {
sandboxSetup()
mockDocker.EXPECT().ContainerList(ctx, container.ListOptions{All: true}).Return([]types.Container{}, nil)
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), nil)
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), nil)
mockDocker.EXPECT().ContainerStart(ctx, "Hello", container.StartOptions{}).Return(nil)
mockDocker.EXPECT().ContainerLogs(ctx, mock.Anything, container.LogsOptions{
ShowStderr: true,
@@ -286,7 +287,7 @@ func TestStartFunc(t *testing.T) {
t.Run("Error in list container", func(t *testing.T) {
sandboxSetup()
mockDocker.EXPECT().ContainerList(mock.Anything, mock.Anything).Return([]types.Container{}, fmt.Errorf("failed to list containers"))
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), nil)
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), nil)
mockDocker.EXPECT().ContainerStart(ctx, "Hello", container.StartOptions{}).Return(nil)
mockDocker.EXPECT().ContainerLogs(ctx, mock.Anything, container.LogsOptions{
ShowStderr: true,
@@ -341,7 +342,7 @@ func TestStartFunc(t *testing.T) {
sandboxSetup()
docker.Client = mockDocker
mockDocker.EXPECT().ContainerList(mock.Anything, mock.Anything).Return([]types.Container{}, fmt.Errorf("failed to list containers"))
- mockDocker.EXPECT().ImagePull(ctx, mock.Anything, types.ImagePullOptions{}).Return(dummyReader(), nil)
+ mockDocker.EXPECT().ImagePull(ctx, mock.Anything, image.PullOptions{}).Return(dummyReader(), nil)
mockDocker.EXPECT().ContainerStart(ctx, "Hello", container.StartOptions{}).Return(nil)
mockDocker.EXPECT().ContainerLogs(ctx, mock.Anything, container.LogsOptions{
ShowStderr: true,
diff --git a/flytectl/pkg/visualize/mocks/graphvizer.go b/flytectl/pkg/visualize/mocks/graphvizer.go
index 9bace724d87..5cf83028616 100644
--- a/flytectl/pkg/visualize/mocks/graphvizer.go
+++ b/flytectl/pkg/visualize/mocks/graphvizer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteidl/.golangci.yml b/flyteidl/.golangci.yml
index 8eda34cffee..d71f166f1dd 100644
--- a/flyteidl/.golangci.yml
+++ b/flyteidl/.golangci.yml
@@ -1,22 +1,27 @@
-run:
- skip-dirs:
- - pkg/client
- - gen
+version: "2"
linters:
- disable-all: true
+ default: none
enable:
- errcheck
- - gosec
- goconst
- - goimports
- - gosimple
+ - gosec
- govet
- ineffassign
- misspell
- nakedret
- - staticcheck
- - typecheck
+ - protogetter
- unconvert
- unparam
- unused
- - protogetter
+ exclusions:
+ generated: lax
+ presets:
+ - comments
+ - common-false-positives
+ - legacy
+ - std-error-handling
+formatters:
+ enable:
+ - goimports
+ exclusions:
+ generated: lax
\ No newline at end of file
diff --git a/flyteidl/buf.gen.yaml b/flyteidl/buf.gen.yaml
index 903801000a7..a36571645ac 100644
--- a/flyteidl/buf.gen.yaml
+++ b/flyteidl/buf.gen.yaml
@@ -8,7 +8,7 @@ plugins:
out: gen/pb_python
- plugin: buf.build/protocolbuffers/pyi:v22.2
out: gen/pb_python
- - plugin: buf.build/community/neoeinstein-prost
+ - plugin: buf.build/community/neoeinstein-prost:v0.4.0
out: gen/pb_rust
- plugin: buf.build/community/neoeinstein-tonic:v0.4.0
out: gen/pb_rust
diff --git a/flyteidl/clients/go/admin/auth_interceptor.go b/flyteidl/clients/go/admin/auth_interceptor.go
index 802db2cb0e1..b931b452f35 100644
--- a/flyteidl/clients/go/admin/auth_interceptor.go
+++ b/flyteidl/clients/go/admin/auth_interceptor.go
@@ -236,9 +236,7 @@ func NewAuthInterceptor(cfg *Config, tokenCache cache.TokenCache, credentialsFut
logger.Debugf(ctx, "Request failed due to [%v]. Attempting to establish an authenticated connection and trying again.", st.Code())
newErr := MaterializeCredentials(tokenSource, cfg, authorizationMetadataKey, credentialsFuture)
if newErr != nil {
- errString := fmt.Sprintf("authentication error! Original Error: %v, Auth Error: %v", err, newErr)
- logger.Errorf(ctx, errString)
- return fmt.Errorf(errString) //nolint
+ return fmt.Errorf("authentication error! Original Error: %w, Auth Error: %w", err, newErr)
}
tokenCache.CondBroadcast()
diff --git a/flyteidl/clients/go/admin/cache/mocks/token_cache.go b/flyteidl/clients/go/admin/cache/mocks/token_cache.go
index 3b7806466fc..99eecb511ff 100644
--- a/flyteidl/clients/go/admin/cache/mocks/token_cache.go
+++ b/flyteidl/clients/go/admin/cache/mocks/token_cache.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *TokenCache) EXPECT() *TokenCache_Expecter {
return &TokenCache_Expecter{mock: &_m.Mock}
}
-// CondBroadcast provides a mock function with given fields:
+// CondBroadcast provides a mock function with no fields
func (_m *TokenCache) CondBroadcast() {
_m.Called()
}
@@ -48,11 +48,11 @@ func (_c *TokenCache_CondBroadcast_Call) Return() *TokenCache_CondBroadcast_Call
}
func (_c *TokenCache_CondBroadcast_Call) RunAndReturn(run func()) *TokenCache_CondBroadcast_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// CondWait provides a mock function with given fields:
+// CondWait provides a mock function with no fields
func (_m *TokenCache) CondWait() {
_m.Called()
}
@@ -80,11 +80,11 @@ func (_c *TokenCache_CondWait_Call) Return() *TokenCache_CondWait_Call {
}
func (_c *TokenCache_CondWait_Call) RunAndReturn(run func()) *TokenCache_CondWait_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// GetToken provides a mock function with given fields:
+// GetToken provides a mock function with no fields
func (_m *TokenCache) GetToken() (*oauth2.Token, error) {
ret := _m.Called()
@@ -141,7 +141,7 @@ func (_c *TokenCache_GetToken_Call) RunAndReturn(run func() (*oauth2.Token, erro
return _c
}
-// Lock provides a mock function with given fields:
+// Lock provides a mock function with no fields
func (_m *TokenCache) Lock() {
_m.Called()
}
@@ -169,7 +169,7 @@ func (_c *TokenCache_Lock_Call) Return() *TokenCache_Lock_Call {
}
func (_c *TokenCache_Lock_Call) RunAndReturn(run func()) *TokenCache_Lock_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -275,7 +275,7 @@ func (_c *TokenCache_SaveToken_Call) RunAndReturn(run func(*oauth2.Token) error)
return _c
}
-// TryLock provides a mock function with given fields:
+// TryLock provides a mock function with no fields
func (_m *TokenCache) TryLock() bool {
ret := _m.Called()
@@ -320,7 +320,7 @@ func (_c *TokenCache_TryLock_Call) RunAndReturn(run func() bool) *TokenCache_Try
return _c
}
-// Unlock provides a mock function with given fields:
+// Unlock provides a mock function with no fields
func (_m *TokenCache) Unlock() {
_m.Called()
}
@@ -348,7 +348,7 @@ func (_c *TokenCache_Unlock_Call) Return() *TokenCache_Unlock_Call {
}
func (_c *TokenCache_Unlock_Call) RunAndReturn(run func()) *TokenCache_Unlock_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteidl/clients/go/admin/client_test.go b/flyteidl/clients/go/admin/client_test.go
index 39366d2bbc1..e63f7204c5d 100644
--- a/flyteidl/clients/go/admin/client_test.go
+++ b/flyteidl/clients/go/admin/client_test.go
@@ -124,7 +124,7 @@ func TestGetAuthenticationDialOptionClientSecret(t *testing.T) {
PerRetryTimeout: config.Duration{Duration: 1 * time.Second},
}
t.Run("legal", func(t *testing.T) {
- metadata := &service.OAuth2MetadataResponse{
+ metadata := &service.OAuth2MetadataResponse{ //nolint:gosec
TokenEndpoint: "http://localhost:8089/token",
ScopesSupported: []string{"code", "all"},
}
@@ -194,7 +194,7 @@ func TestGetAuthenticationDialOptionClientSecret(t *testing.T) {
PerRetryTimeout: config.Duration{Duration: 1 * time.Second},
}
t.Run("incorrect client secret loc", func(t *testing.T) {
- metadata := &service.OAuth2MetadataResponse{
+ metadata := &service.OAuth2MetadataResponse{ //nolint:gosec
TokenEndpoint: "http://localhost:8089/token",
ScopesSupported: []string{"code", "all"},
}
@@ -220,7 +220,7 @@ func TestGetAuthenticationDialOptionPkce(t *testing.T) {
AuthType: AuthTypePkce,
PerRetryTimeout: config.Duration{Duration: 1 * time.Second},
}
- metadata := &service.OAuth2MetadataResponse{
+ metadata := &service.OAuth2MetadataResponse{ //nolint:gosec
TokenEndpoint: "http://localhost:8089/token",
ScopesSupported: []string{"code", "all"},
}
@@ -264,7 +264,7 @@ func TestGetAuthenticationDialOptionPkce(t *testing.T) {
func Test_getPkceAuthTokenSource(t *testing.T) {
ctx := context.Background()
mockAuthClient := new(mocks.AuthMetadataServiceClient)
- metadata := &service.OAuth2MetadataResponse{
+ metadata := &service.OAuth2MetadataResponse{ //nolint:gosec
TokenEndpoint: "http://localhost:8089/token",
ScopesSupported: []string{"code", "all"},
}
diff --git a/flyteidl/clients/go/admin/config_flags_test.go b/flyteidl/clients/go/admin/config_flags_test.go
index a79467dc160..a0732e2b10e 100755
--- a/flyteidl/clients/go/admin/config_flags_test.go
+++ b/flyteidl/clients/go/admin/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteidl/clients/go/admin/integration_test.go b/flyteidl/clients/go/admin/integration_test.go
index 46e59d33c39..1dd9e179069 100644
--- a/flyteidl/clients/go/admin/integration_test.go
+++ b/flyteidl/clients/go/admin/integration_test.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
package admin
diff --git a/flyteidl/clients/go/admin/mocks/AdminServiceClient.go b/flyteidl/clients/go/admin/mocks/AdminServiceClient.go
index 17c669c437a..84b88e1d1e1 100644
--- a/flyteidl/clients/go/admin/mocks/AdminServiceClient.go
+++ b/flyteidl/clients/go/admin/mocks/AdminServiceClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,10 +6,8 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
- grpc "google.golang.org/grpc"
-
mock "github.com/stretchr/testify/mock"
+ grpc "google.golang.org/grpc"
)
// AdminServiceClient is an autogenerated mock type for the AdminServiceClient type
diff --git a/flyteidl/clients/go/admin/mocks/AdminServiceServer.go b/flyteidl/clients/go/admin/mocks/AdminServiceServer.go
index 590ab320bf2..a05b851f71a 100644
--- a/flyteidl/clients/go/admin/mocks/AdminServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/AdminServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,7 +6,6 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
mock "github.com/stretchr/testify/mock"
)
diff --git a/flyteidl/clients/go/admin/mocks/AgentMetadataServiceClient.go b/flyteidl/clients/go/admin/mocks/AgentMetadataServiceClient.go
index a5883b61b5b..62acbd54c53 100644
--- a/flyteidl/clients/go/admin/mocks/AgentMetadataServiceClient.go
+++ b/flyteidl/clients/go/admin/mocks/AgentMetadataServiceClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,10 +6,8 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
- grpc "google.golang.org/grpc"
-
mock "github.com/stretchr/testify/mock"
+ grpc "google.golang.org/grpc"
)
// AgentMetadataServiceClient is an autogenerated mock type for the AgentMetadataServiceClient type
diff --git a/flyteidl/clients/go/admin/mocks/AgentMetadataServiceServer.go b/flyteidl/clients/go/admin/mocks/AgentMetadataServiceServer.go
index 3121ee88666..85230f7db83 100644
--- a/flyteidl/clients/go/admin/mocks/AgentMetadataServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/AgentMetadataServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,7 +6,6 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
mock "github.com/stretchr/testify/mock"
)
diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentServiceClient.go b/flyteidl/clients/go/admin/mocks/AsyncAgentServiceClient.go
index 00dac4c716b..ffc5ad62d9d 100644
--- a/flyteidl/clients/go/admin/mocks/AsyncAgentServiceClient.go
+++ b/flyteidl/clients/go/admin/mocks/AsyncAgentServiceClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,12 +6,9 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
- grpc "google.golang.org/grpc"
-
- mock "github.com/stretchr/testify/mock"
-
service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
+ mock "github.com/stretchr/testify/mock"
+ grpc "google.golang.org/grpc"
)
// AsyncAgentServiceClient is an autogenerated mock type for the AsyncAgentServiceClient type
diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentServiceServer.go b/flyteidl/clients/go/admin/mocks/AsyncAgentServiceServer.go
index 3576b336f51..52a48436f74 100644
--- a/flyteidl/clients/go/admin/mocks/AsyncAgentServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/AsyncAgentServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,10 +6,8 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
- mock "github.com/stretchr/testify/mock"
-
service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
+ mock "github.com/stretchr/testify/mock"
)
// AsyncAgentServiceServer is an autogenerated mock type for the AsyncAgentServiceServer type
diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsClient.go b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsClient.go
index f0e3219e73c..a684f728c75 100644
--- a/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsClient.go
+++ b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,10 +6,8 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
- metadata "google.golang.org/grpc/metadata"
-
mock "github.com/stretchr/testify/mock"
+ metadata "google.golang.org/grpc/metadata"
)
// AsyncAgentService_GetTaskLogsClient is an autogenerated mock type for the AsyncAgentService_GetTaskLogsClient type
@@ -25,7 +23,7 @@ func (_m *AsyncAgentService_GetTaskLogsClient) EXPECT() *AsyncAgentService_GetTa
return &AsyncAgentService_GetTaskLogsClient_Expecter{mock: &_m.Mock}
}
-// CloseSend provides a mock function with given fields:
+// CloseSend provides a mock function with no fields
func (_m *AsyncAgentService_GetTaskLogsClient) CloseSend() error {
ret := _m.Called()
@@ -70,7 +68,7 @@ func (_c *AsyncAgentService_GetTaskLogsClient_CloseSend_Call) RunAndReturn(run f
return _c
}
-// Context provides a mock function with given fields:
+// Context provides a mock function with no fields
func (_m *AsyncAgentService_GetTaskLogsClient) Context() context.Context {
ret := _m.Called()
@@ -117,7 +115,7 @@ func (_c *AsyncAgentService_GetTaskLogsClient_Context_Call) RunAndReturn(run fun
return _c
}
-// Header provides a mock function with given fields:
+// Header provides a mock function with no fields
func (_m *AsyncAgentService_GetTaskLogsClient) Header() (metadata.MD, error) {
ret := _m.Called()
@@ -174,7 +172,7 @@ func (_c *AsyncAgentService_GetTaskLogsClient_Header_Call) RunAndReturn(run func
return _c
}
-// Recv provides a mock function with given fields:
+// Recv provides a mock function with no fields
func (_m *AsyncAgentService_GetTaskLogsClient) Recv() (*admin.GetTaskLogsResponse, error) {
ret := _m.Called()
@@ -323,7 +321,7 @@ func (_c *AsyncAgentService_GetTaskLogsClient_SendMsg_Call) RunAndReturn(run fun
return _c
}
-// Trailer provides a mock function with given fields:
+// Trailer provides a mock function with no fields
func (_m *AsyncAgentService_GetTaskLogsClient) Trailer() metadata.MD {
ret := _m.Called()
diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsServer.go b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsServer.go
index f51ad24d007..6064c0a90dc 100644
--- a/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsServer.go
+++ b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,10 +6,8 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
- metadata "google.golang.org/grpc/metadata"
-
mock "github.com/stretchr/testify/mock"
+ metadata "google.golang.org/grpc/metadata"
)
// AsyncAgentService_GetTaskLogsServer is an autogenerated mock type for the AsyncAgentService_GetTaskLogsServer type
@@ -25,7 +23,7 @@ func (_m *AsyncAgentService_GetTaskLogsServer) EXPECT() *AsyncAgentService_GetTa
return &AsyncAgentService_GetTaskLogsServer_Expecter{mock: &_m.Mock}
}
-// Context provides a mock function with given fields:
+// Context provides a mock function with no fields
func (_m *AsyncAgentService_GetTaskLogsServer) Context() context.Context {
ret := _m.Called()
@@ -331,7 +329,7 @@ func (_c *AsyncAgentService_GetTaskLogsServer_SetTrailer_Call) Return() *AsyncAg
}
func (_c *AsyncAgentService_GetTaskLogsServer_SetTrailer_Call) RunAndReturn(run func(metadata.MD)) *AsyncAgentService_GetTaskLogsServer_SetTrailer_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteidl/clients/go/admin/mocks/AuthMetadataServiceClient.go b/flyteidl/clients/go/admin/mocks/AuthMetadataServiceClient.go
index 20a1d66e445..1c9288fac42 100644
--- a/flyteidl/clients/go/admin/mocks/AuthMetadataServiceClient.go
+++ b/flyteidl/clients/go/admin/mocks/AuthMetadataServiceClient.go
@@ -1,15 +1,13 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- grpc "google.golang.org/grpc"
-
- mock "github.com/stretchr/testify/mock"
-
service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
+ mock "github.com/stretchr/testify/mock"
+ grpc "google.golang.org/grpc"
)
// AuthMetadataServiceClient is an autogenerated mock type for the AuthMetadataServiceClient type
diff --git a/flyteidl/clients/go/admin/mocks/AuthMetadataServiceServer.go b/flyteidl/clients/go/admin/mocks/AuthMetadataServiceServer.go
index 45579950c34..c37c87bd332 100644
--- a/flyteidl/clients/go/admin/mocks/AuthMetadataServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/AuthMetadataServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteidl/clients/go/admin/mocks/DataProxyServiceClient.go b/flyteidl/clients/go/admin/mocks/DataProxyServiceClient.go
index 8a264cfb014..6dc0dacd316 100644
--- a/flyteidl/clients/go/admin/mocks/DataProxyServiceClient.go
+++ b/flyteidl/clients/go/admin/mocks/DataProxyServiceClient.go
@@ -1,15 +1,13 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- grpc "google.golang.org/grpc"
-
- mock "github.com/stretchr/testify/mock"
-
service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
+ mock "github.com/stretchr/testify/mock"
+ grpc "google.golang.org/grpc"
)
// DataProxyServiceClient is an autogenerated mock type for the DataProxyServiceClient type
diff --git a/flyteidl/clients/go/admin/mocks/DataProxyServiceServer.go b/flyteidl/clients/go/admin/mocks/DataProxyServiceServer.go
index fb1c86d0722..130bf0e5bc7 100644
--- a/flyteidl/clients/go/admin/mocks/DataProxyServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/DataProxyServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteidl/clients/go/admin/mocks/ExternalPluginServiceClient.go b/flyteidl/clients/go/admin/mocks/ExternalPluginServiceClient.go
index b7aed0c2a28..6322b9fd7ff 100644
--- a/flyteidl/clients/go/admin/mocks/ExternalPluginServiceClient.go
+++ b/flyteidl/clients/go/admin/mocks/ExternalPluginServiceClient.go
@@ -1,15 +1,13 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- grpc "google.golang.org/grpc"
-
- mock "github.com/stretchr/testify/mock"
-
service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
+ mock "github.com/stretchr/testify/mock"
+ grpc "google.golang.org/grpc"
)
// ExternalPluginServiceClient is an autogenerated mock type for the ExternalPluginServiceClient type
diff --git a/flyteidl/clients/go/admin/mocks/ExternalPluginServiceServer.go b/flyteidl/clients/go/admin/mocks/ExternalPluginServiceServer.go
index e06d54292b5..c6890dbe721 100644
--- a/flyteidl/clients/go/admin/mocks/ExternalPluginServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/ExternalPluginServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteidl/clients/go/admin/mocks/IdentityServiceClient.go b/flyteidl/clients/go/admin/mocks/IdentityServiceClient.go
index 9e43480fed3..efecbb87aff 100644
--- a/flyteidl/clients/go/admin/mocks/IdentityServiceClient.go
+++ b/flyteidl/clients/go/admin/mocks/IdentityServiceClient.go
@@ -1,15 +1,13 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- grpc "google.golang.org/grpc"
-
- mock "github.com/stretchr/testify/mock"
-
service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
+ mock "github.com/stretchr/testify/mock"
+ grpc "google.golang.org/grpc"
)
// IdentityServiceClient is an autogenerated mock type for the IdentityServiceClient type
diff --git a/flyteidl/clients/go/admin/mocks/IdentityServiceServer.go b/flyteidl/clients/go/admin/mocks/IdentityServiceServer.go
index d46c4f8b778..fd29b60f721 100644
--- a/flyteidl/clients/go/admin/mocks/IdentityServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/IdentityServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteidl/clients/go/admin/mocks/SignalServiceClient.go b/flyteidl/clients/go/admin/mocks/SignalServiceClient.go
index db21197e3a3..04bc1783b0c 100644
--- a/flyteidl/clients/go/admin/mocks/SignalServiceClient.go
+++ b/flyteidl/clients/go/admin/mocks/SignalServiceClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,10 +6,8 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
- grpc "google.golang.org/grpc"
-
mock "github.com/stretchr/testify/mock"
+ grpc "google.golang.org/grpc"
)
// SignalServiceClient is an autogenerated mock type for the SignalServiceClient type
diff --git a/flyteidl/clients/go/admin/mocks/SignalServiceServer.go b/flyteidl/clients/go/admin/mocks/SignalServiceServer.go
index 77b418a5016..6a13d1be2b6 100644
--- a/flyteidl/clients/go/admin/mocks/SignalServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/SignalServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,7 +6,6 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
mock "github.com/stretchr/testify/mock"
)
diff --git a/flyteidl/clients/go/admin/mocks/SyncAgentServiceClient.go b/flyteidl/clients/go/admin/mocks/SyncAgentServiceClient.go
index c7f444cc526..b5efa0e1de2 100644
--- a/flyteidl/clients/go/admin/mocks/SyncAgentServiceClient.go
+++ b/flyteidl/clients/go/admin/mocks/SyncAgentServiceClient.go
@@ -1,15 +1,13 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- grpc "google.golang.org/grpc"
-
- mock "github.com/stretchr/testify/mock"
-
service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service"
+ mock "github.com/stretchr/testify/mock"
+ grpc "google.golang.org/grpc"
)
// SyncAgentServiceClient is an autogenerated mock type for the SyncAgentServiceClient type
diff --git a/flyteidl/clients/go/admin/mocks/SyncAgentServiceServer.go b/flyteidl/clients/go/admin/mocks/SyncAgentServiceServer.go
index 63e09bb7671..17715c45c55 100644
--- a/flyteidl/clients/go/admin/mocks/SyncAgentServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/SyncAgentServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncClient.go b/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncClient.go
index a0ce72fb42c..932c4e1c4e4 100644
--- a/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncClient.go
+++ b/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,10 +6,8 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
- metadata "google.golang.org/grpc/metadata"
-
mock "github.com/stretchr/testify/mock"
+ metadata "google.golang.org/grpc/metadata"
)
// SyncAgentService_ExecuteTaskSyncClient is an autogenerated mock type for the SyncAgentService_ExecuteTaskSyncClient type
@@ -25,7 +23,7 @@ func (_m *SyncAgentService_ExecuteTaskSyncClient) EXPECT() *SyncAgentService_Exe
return &SyncAgentService_ExecuteTaskSyncClient_Expecter{mock: &_m.Mock}
}
-// CloseSend provides a mock function with given fields:
+// CloseSend provides a mock function with no fields
func (_m *SyncAgentService_ExecuteTaskSyncClient) CloseSend() error {
ret := _m.Called()
@@ -70,7 +68,7 @@ func (_c *SyncAgentService_ExecuteTaskSyncClient_CloseSend_Call) RunAndReturn(ru
return _c
}
-// Context provides a mock function with given fields:
+// Context provides a mock function with no fields
func (_m *SyncAgentService_ExecuteTaskSyncClient) Context() context.Context {
ret := _m.Called()
@@ -117,7 +115,7 @@ func (_c *SyncAgentService_ExecuteTaskSyncClient_Context_Call) RunAndReturn(run
return _c
}
-// Header provides a mock function with given fields:
+// Header provides a mock function with no fields
func (_m *SyncAgentService_ExecuteTaskSyncClient) Header() (metadata.MD, error) {
ret := _m.Called()
@@ -174,7 +172,7 @@ func (_c *SyncAgentService_ExecuteTaskSyncClient_Header_Call) RunAndReturn(run f
return _c
}
-// Recv provides a mock function with given fields:
+// Recv provides a mock function with no fields
func (_m *SyncAgentService_ExecuteTaskSyncClient) Recv() (*admin.ExecuteTaskSyncResponse, error) {
ret := _m.Called()
@@ -369,7 +367,7 @@ func (_c *SyncAgentService_ExecuteTaskSyncClient_SendMsg_Call) RunAndReturn(run
return _c
}
-// Trailer provides a mock function with given fields:
+// Trailer provides a mock function with no fields
func (_m *SyncAgentService_ExecuteTaskSyncClient) Trailer() metadata.MD {
ret := _m.Called()
diff --git a/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncServer.go b/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncServer.go
index 4e02b679ba8..802141dc1d4 100644
--- a/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncServer.go
+++ b/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,10 +6,8 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
- metadata "google.golang.org/grpc/metadata"
-
mock "github.com/stretchr/testify/mock"
+ metadata "google.golang.org/grpc/metadata"
)
// SyncAgentService_ExecuteTaskSyncServer is an autogenerated mock type for the SyncAgentService_ExecuteTaskSyncServer type
@@ -25,7 +23,7 @@ func (_m *SyncAgentService_ExecuteTaskSyncServer) EXPECT() *SyncAgentService_Exe
return &SyncAgentService_ExecuteTaskSyncServer_Expecter{mock: &_m.Mock}
}
-// Context provides a mock function with given fields:
+// Context provides a mock function with no fields
func (_m *SyncAgentService_ExecuteTaskSyncServer) Context() context.Context {
ret := _m.Called()
@@ -72,7 +70,7 @@ func (_c *SyncAgentService_ExecuteTaskSyncServer_Context_Call) RunAndReturn(run
return _c
}
-// Recv provides a mock function with given fields:
+// Recv provides a mock function with no fields
func (_m *SyncAgentService_ExecuteTaskSyncServer) Recv() (*admin.ExecuteTaskSyncRequest, error) {
ret := _m.Called()
@@ -388,7 +386,7 @@ func (_c *SyncAgentService_ExecuteTaskSyncServer_SetTrailer_Call) Return() *Sync
}
func (_c *SyncAgentService_ExecuteTaskSyncServer_SetTrailer_Call) RunAndReturn(run func(metadata.MD)) *SyncAgentService_ExecuteTaskSyncServer_SetTrailer_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteidl/clients/go/admin/mocks/TokenSource.go b/flyteidl/clients/go/admin/mocks/TokenSource.go
index c55e77c0114..69b0868d7ec 100644
--- a/flyteidl/clients/go/admin/mocks/TokenSource.go
+++ b/flyteidl/clients/go/admin/mocks/TokenSource.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *TokenSource) EXPECT() *TokenSource_Expecter {
return &TokenSource_Expecter{mock: &_m.Mock}
}
-// Token provides a mock function with given fields:
+// Token provides a mock function with no fields
func (_m *TokenSource) Token() (*oauth2.Token, error) {
ret := _m.Called()
diff --git a/flyteidl/clients/go/admin/mocks/UnsafeAdminServiceServer.go b/flyteidl/clients/go/admin/mocks/UnsafeAdminServiceServer.go
index ef631c8d47f..8beedf91e16 100644
--- a/flyteidl/clients/go/admin/mocks/UnsafeAdminServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/UnsafeAdminServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *UnsafeAdminServiceServer) EXPECT() *UnsafeAdminServiceServer_Expecter
return &UnsafeAdminServiceServer_Expecter{mock: &_m.Mock}
}
-// mustEmbedUnimplementedAdminServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedAdminServiceServer provides a mock function with no fields
func (_m *UnsafeAdminServiceServer) mustEmbedUnimplementedAdminServiceServer() {
_m.Called()
}
@@ -45,7 +45,7 @@ func (_c *UnsafeAdminServiceServer_mustEmbedUnimplementedAdminServiceServer_Call
}
func (_c *UnsafeAdminServiceServer_mustEmbedUnimplementedAdminServiceServer_Call) RunAndReturn(run func()) *UnsafeAdminServiceServer_mustEmbedUnimplementedAdminServiceServer_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteidl/clients/go/admin/mocks/UnsafeAgentMetadataServiceServer.go b/flyteidl/clients/go/admin/mocks/UnsafeAgentMetadataServiceServer.go
index 95c91761e3f..aedcbb5cdc4 100644
--- a/flyteidl/clients/go/admin/mocks/UnsafeAgentMetadataServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/UnsafeAgentMetadataServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *UnsafeAgentMetadataServiceServer) EXPECT() *UnsafeAgentMetadataService
return &UnsafeAgentMetadataServiceServer_Expecter{mock: &_m.Mock}
}
-// mustEmbedUnimplementedAgentMetadataServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedAgentMetadataServiceServer provides a mock function with no fields
func (_m *UnsafeAgentMetadataServiceServer) mustEmbedUnimplementedAgentMetadataServiceServer() {
_m.Called()
}
@@ -45,7 +45,7 @@ func (_c *UnsafeAgentMetadataServiceServer_mustEmbedUnimplementedAgentMetadataSe
}
func (_c *UnsafeAgentMetadataServiceServer_mustEmbedUnimplementedAgentMetadataServiceServer_Call) RunAndReturn(run func()) *UnsafeAgentMetadataServiceServer_mustEmbedUnimplementedAgentMetadataServiceServer_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteidl/clients/go/admin/mocks/UnsafeAsyncAgentServiceServer.go b/flyteidl/clients/go/admin/mocks/UnsafeAsyncAgentServiceServer.go
index ec27395a30f..632a27693d4 100644
--- a/flyteidl/clients/go/admin/mocks/UnsafeAsyncAgentServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/UnsafeAsyncAgentServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *UnsafeAsyncAgentServiceServer) EXPECT() *UnsafeAsyncAgentServiceServer
return &UnsafeAsyncAgentServiceServer_Expecter{mock: &_m.Mock}
}
-// mustEmbedUnimplementedAsyncAgentServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedAsyncAgentServiceServer provides a mock function with no fields
func (_m *UnsafeAsyncAgentServiceServer) mustEmbedUnimplementedAsyncAgentServiceServer() {
_m.Called()
}
@@ -45,7 +45,7 @@ func (_c *UnsafeAsyncAgentServiceServer_mustEmbedUnimplementedAsyncAgentServiceS
}
func (_c *UnsafeAsyncAgentServiceServer_mustEmbedUnimplementedAsyncAgentServiceServer_Call) RunAndReturn(run func()) *UnsafeAsyncAgentServiceServer_mustEmbedUnimplementedAsyncAgentServiceServer_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteidl/clients/go/admin/mocks/UnsafeAuthMetadataServiceServer.go b/flyteidl/clients/go/admin/mocks/UnsafeAuthMetadataServiceServer.go
index 7a2ac212877..93230347142 100644
--- a/flyteidl/clients/go/admin/mocks/UnsafeAuthMetadataServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/UnsafeAuthMetadataServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *UnsafeAuthMetadataServiceServer) EXPECT() *UnsafeAuthMetadataServiceSe
return &UnsafeAuthMetadataServiceServer_Expecter{mock: &_m.Mock}
}
-// mustEmbedUnimplementedAuthMetadataServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedAuthMetadataServiceServer provides a mock function with no fields
func (_m *UnsafeAuthMetadataServiceServer) mustEmbedUnimplementedAuthMetadataServiceServer() {
_m.Called()
}
@@ -45,7 +45,7 @@ func (_c *UnsafeAuthMetadataServiceServer_mustEmbedUnimplementedAuthMetadataServ
}
func (_c *UnsafeAuthMetadataServiceServer_mustEmbedUnimplementedAuthMetadataServiceServer_Call) RunAndReturn(run func()) *UnsafeAuthMetadataServiceServer_mustEmbedUnimplementedAuthMetadataServiceServer_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteidl/clients/go/admin/mocks/UnsafeDataProxyServiceServer.go b/flyteidl/clients/go/admin/mocks/UnsafeDataProxyServiceServer.go
index c3fcc0e7d8c..156f984c768 100644
--- a/flyteidl/clients/go/admin/mocks/UnsafeDataProxyServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/UnsafeDataProxyServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *UnsafeDataProxyServiceServer) EXPECT() *UnsafeDataProxyServiceServer_E
return &UnsafeDataProxyServiceServer_Expecter{mock: &_m.Mock}
}
-// mustEmbedUnimplementedDataProxyServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedDataProxyServiceServer provides a mock function with no fields
func (_m *UnsafeDataProxyServiceServer) mustEmbedUnimplementedDataProxyServiceServer() {
_m.Called()
}
@@ -45,7 +45,7 @@ func (_c *UnsafeDataProxyServiceServer_mustEmbedUnimplementedDataProxyServiceSer
}
func (_c *UnsafeDataProxyServiceServer_mustEmbedUnimplementedDataProxyServiceServer_Call) RunAndReturn(run func()) *UnsafeDataProxyServiceServer_mustEmbedUnimplementedDataProxyServiceServer_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteidl/clients/go/admin/mocks/UnsafeExternalPluginServiceServer.go b/flyteidl/clients/go/admin/mocks/UnsafeExternalPluginServiceServer.go
index d9824b79c60..48c6dcbf2ec 100644
--- a/flyteidl/clients/go/admin/mocks/UnsafeExternalPluginServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/UnsafeExternalPluginServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *UnsafeExternalPluginServiceServer) EXPECT() *UnsafeExternalPluginServi
return &UnsafeExternalPluginServiceServer_Expecter{mock: &_m.Mock}
}
-// mustEmbedUnimplementedExternalPluginServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedExternalPluginServiceServer provides a mock function with no fields
func (_m *UnsafeExternalPluginServiceServer) mustEmbedUnimplementedExternalPluginServiceServer() {
_m.Called()
}
@@ -45,7 +45,7 @@ func (_c *UnsafeExternalPluginServiceServer_mustEmbedUnimplementedExternalPlugin
}
func (_c *UnsafeExternalPluginServiceServer_mustEmbedUnimplementedExternalPluginServiceServer_Call) RunAndReturn(run func()) *UnsafeExternalPluginServiceServer_mustEmbedUnimplementedExternalPluginServiceServer_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteidl/clients/go/admin/mocks/UnsafeIdentityServiceServer.go b/flyteidl/clients/go/admin/mocks/UnsafeIdentityServiceServer.go
index 1e9fe83eb29..70013e24648 100644
--- a/flyteidl/clients/go/admin/mocks/UnsafeIdentityServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/UnsafeIdentityServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *UnsafeIdentityServiceServer) EXPECT() *UnsafeIdentityServiceServer_Exp
return &UnsafeIdentityServiceServer_Expecter{mock: &_m.Mock}
}
-// mustEmbedUnimplementedIdentityServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedIdentityServiceServer provides a mock function with no fields
func (_m *UnsafeIdentityServiceServer) mustEmbedUnimplementedIdentityServiceServer() {
_m.Called()
}
@@ -45,7 +45,7 @@ func (_c *UnsafeIdentityServiceServer_mustEmbedUnimplementedIdentityServiceServe
}
func (_c *UnsafeIdentityServiceServer_mustEmbedUnimplementedIdentityServiceServer_Call) RunAndReturn(run func()) *UnsafeIdentityServiceServer_mustEmbedUnimplementedIdentityServiceServer_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteidl/clients/go/admin/mocks/UnsafeSignalServiceServer.go b/flyteidl/clients/go/admin/mocks/UnsafeSignalServiceServer.go
index c611222220f..12dbc4ad70d 100644
--- a/flyteidl/clients/go/admin/mocks/UnsafeSignalServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/UnsafeSignalServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *UnsafeSignalServiceServer) EXPECT() *UnsafeSignalServiceServer_Expecte
return &UnsafeSignalServiceServer_Expecter{mock: &_m.Mock}
}
-// mustEmbedUnimplementedSignalServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedSignalServiceServer provides a mock function with no fields
func (_m *UnsafeSignalServiceServer) mustEmbedUnimplementedSignalServiceServer() {
_m.Called()
}
@@ -45,7 +45,7 @@ func (_c *UnsafeSignalServiceServer_mustEmbedUnimplementedSignalServiceServer_Ca
}
func (_c *UnsafeSignalServiceServer_mustEmbedUnimplementedSignalServiceServer_Call) RunAndReturn(run func()) *UnsafeSignalServiceServer_mustEmbedUnimplementedSignalServiceServer_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteidl/clients/go/admin/mocks/UnsafeSyncAgentServiceServer.go b/flyteidl/clients/go/admin/mocks/UnsafeSyncAgentServiceServer.go
index 92884c3ae32..aa1a2461d2a 100644
--- a/flyteidl/clients/go/admin/mocks/UnsafeSyncAgentServiceServer.go
+++ b/flyteidl/clients/go/admin/mocks/UnsafeSyncAgentServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *UnsafeSyncAgentServiceServer) EXPECT() *UnsafeSyncAgentServiceServer_E
return &UnsafeSyncAgentServiceServer_Expecter{mock: &_m.Mock}
}
-// mustEmbedUnimplementedSyncAgentServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedSyncAgentServiceServer provides a mock function with no fields
func (_m *UnsafeSyncAgentServiceServer) mustEmbedUnimplementedSyncAgentServiceServer() {
_m.Called()
}
@@ -45,7 +45,7 @@ func (_c *UnsafeSyncAgentServiceServer_mustEmbedUnimplementedSyncAgentServiceSer
}
func (_c *UnsafeSyncAgentServiceServer_mustEmbedUnimplementedSyncAgentServiceServer_Call) RunAndReturn(run func()) *UnsafeSyncAgentServiceServer_mustEmbedUnimplementedSyncAgentServiceServer_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteidl/clients/go/admin/mocks/isCreateDownloadLinkRequest_Source.go b/flyteidl/clients/go/admin/mocks/isCreateDownloadLinkRequest_Source.go
index 70211986adb..33b6fca3a27 100644
--- a/flyteidl/clients/go/admin/mocks/isCreateDownloadLinkRequest_Source.go
+++ b/flyteidl/clients/go/admin/mocks/isCreateDownloadLinkRequest_Source.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *isCreateDownloadLinkRequest_Source) EXPECT() *isCreateDownloadLinkRequ
return &isCreateDownloadLinkRequest_Source_Expecter{mock: &_m.Mock}
}
-// isCreateDownloadLinkRequest_Source provides a mock function with given fields:
+// isCreateDownloadLinkRequest_Source provides a mock function with no fields
func (_m *isCreateDownloadLinkRequest_Source) isCreateDownloadLinkRequest_Source() {
_m.Called()
}
@@ -45,7 +45,7 @@ func (_c *isCreateDownloadLinkRequest_Source_isCreateDownloadLinkRequest_Source_
}
func (_c *isCreateDownloadLinkRequest_Source_isCreateDownloadLinkRequest_Source_Call) RunAndReturn(run func()) *isCreateDownloadLinkRequest_Source_isCreateDownloadLinkRequest_Source_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteidl/clients/go/admin/mocks/isGetDataResponse_Data.go b/flyteidl/clients/go/admin/mocks/isGetDataResponse_Data.go
index d0ed3a58cb1..309b774b798 100644
--- a/flyteidl/clients/go/admin/mocks/isGetDataResponse_Data.go
+++ b/flyteidl/clients/go/admin/mocks/isGetDataResponse_Data.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *isGetDataResponse_Data) EXPECT() *isGetDataResponse_Data_Expecter {
return &isGetDataResponse_Data_Expecter{mock: &_m.Mock}
}
-// isGetDataResponse_Data provides a mock function with given fields:
+// isGetDataResponse_Data provides a mock function with no fields
func (_m *isGetDataResponse_Data) isGetDataResponse_Data() {
_m.Called()
}
@@ -45,7 +45,7 @@ func (_c *isGetDataResponse_Data_isGetDataResponse_Data_Call) Return() *isGetDat
}
func (_c *isGetDataResponse_Data_isGetDataResponse_Data_Call) RunAndReturn(run func()) *isGetDataResponse_Data_isGetDataResponse_Data_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteidl/clients/go/admin/pkce/handle_app_call_back.go b/flyteidl/clients/go/admin/pkce/handle_app_call_back.go
index 775dcb4795f..565a9d54909 100644
--- a/flyteidl/clients/go/admin/pkce/handle_app_call_back.go
+++ b/flyteidl/clients/go/admin/pkce/handle_app_call_back.go
@@ -3,6 +3,7 @@ package pkce
import (
"context"
"fmt"
+ "html"
"net/http"
"golang.org/x/oauth2"
@@ -23,9 +24,9 @@ func getAuthServerCallbackHandler(c *oauth.Config, codeVerifier string, tokenCha
Error Hint: %s
Description: %s
`,
- req.URL.Query().Get("error"),
- req.URL.Query().Get("error_hint"),
- req.URL.Query().Get("error_description"),
+ html.EscapeString(req.URL.Query().Get("error")),
+ html.EscapeString(req.URL.Query().Get("error_hint")),
+ html.EscapeString(req.URL.Query().Get("error_description")),
)))
return
}
@@ -44,7 +45,7 @@ func getAuthServerCallbackHandler(c *oauth.Config, codeVerifier string, tokenCha
opts = append(opts, oauth2.SetAuthURLParam("code_verifier", codeVerifier))
ctx := context.WithValue(context.Background(), oauth2.HTTPClient, client)
- token, err := c.Exchange(ctx, req.URL.Query().Get("code"), opts...)
+ token, err := c.Exchange(ctx, html.EscapeString(req.URL.Query().Get("code")), opts...)
if err != nil {
errorChannel <- fmt.Errorf("error while exchanging auth code due to %v", err)
_, _ = rw.Write([]byte(fmt.Sprintf(`Couldn't get access token due to error: %s
`, err.Error())))
diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json
index 6e3aa65f81c..4f0b9e77d55 100644
--- a/flyteidl/clients/go/assets/admin.swagger.json
+++ b/flyteidl/clients/go/assets/admin.swagger.json
@@ -6649,6 +6649,10 @@
"type": "string"
},
"description": "+optional. Specifies input bindings that are not mapped over for the node."
+ },
+ "run_all_sub_nodes": {
+ "type": "boolean",
+ "description": "+optional. If set to true, the ArrayNode will continue to run all sub-nodes even after the\nfailure threshold has been met (i.e. it is no longer possible to meet min_successes or\nmin_success_ratio). This is useful when you want to ensure all sub-nodes complete execution\neven if the overall array node will fail."
}
},
"description": "ArrayNode is a Flyte node type that simplifies the execution of a sub-node over a list of input\nvalues. An ArrayNode can be executed with configurable parallelism (separate from the parent\nworkflow) and can be configured to succeed when a certain number of sub-nodes succeed."
diff --git a/flyteidl/clients/go/cacheservice/mocks/CacheServiceClient.go b/flyteidl/clients/go/cacheservice/mocks/CacheServiceClient.go
index 77d8aa72e0a..05f64d9ccec 100644
--- a/flyteidl/clients/go/cacheservice/mocks/CacheServiceClient.go
+++ b/flyteidl/clients/go/cacheservice/mocks/CacheServiceClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,10 +6,8 @@ import (
context "context"
cacheservice "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/cacheservice"
-
- grpc "google.golang.org/grpc"
-
mock "github.com/stretchr/testify/mock"
+ grpc "google.golang.org/grpc"
)
// CacheServiceClient is an autogenerated mock type for the CacheServiceClient type
diff --git a/flyteidl/clients/go/datacatalog/mocks/DataCatalogClient.go b/flyteidl/clients/go/datacatalog/mocks/DataCatalogClient.go
index 854bc782799..d21d74ba42e 100644
--- a/flyteidl/clients/go/datacatalog/mocks/DataCatalogClient.go
+++ b/flyteidl/clients/go/datacatalog/mocks/DataCatalogClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,9 +6,8 @@ import (
context "context"
datacatalog "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/datacatalog"
- grpc "google.golang.org/grpc"
-
mock "github.com/stretchr/testify/mock"
+ grpc "google.golang.org/grpc"
)
// DataCatalogClient is an autogenerated mock type for the DataCatalogClient type
diff --git a/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts b/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts
index 4c0f83be8c7..437da16fbfa 100644
--- a/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts
+++ b/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts
@@ -575,6 +575,16 @@ export class ArrayNode extends Message {
*/
boundInputs: string[] = [];
+ /**
+ * +optional. If set to true, the ArrayNode will continue to run all sub-nodes even after the
+ * failure threshold has been met (i.e. it is no longer possible to meet min_successes or
+ * min_success_ratio). This is useful when you want to ensure all sub-nodes complete execution
+ * even if the overall array node will fail.
+ *
+ * @generated from field: bool run_all_sub_nodes = 9;
+ */
+ runAllSubNodes = false;
+
constructor(data?: PartialMessage) {
super();
proto3.util.initPartial(data, this);
@@ -591,6 +601,7 @@ export class ArrayNode extends Message {
{ no: 6, name: "is_original_sub_node_interface", kind: "message", T: BoolValue },
{ no: 7, name: "data_mode", kind: "enum", T: proto3.getEnumType(ArrayNode_DataMode) },
{ no: 8, name: "bound_inputs", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
+ { no: 9, name: "run_all_sub_nodes", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
]);
static fromBinary(bytes: Uint8Array, options?: Partial): ArrayNode {
diff --git a/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts b/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts
index 0c0a33e0a1c..0fbba912515 100644
--- a/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts
+++ b/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts
@@ -5,7 +5,8 @@
import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
import { Message, proto3 } from "@bufbuild/protobuf";
-import { K8sPod } from "../core/tasks_pb.js";
+import { KeyValuePair } from "../core/literals_pb.js";
+import { K8sPod, Resources } from "../core/tasks_pb.js";
/**
* RayJobSpec defines the desired state of RayJob
@@ -83,6 +84,105 @@ export class RayJob extends Message {
}
}
+/**
+ * @generated from message flyteidl.plugins.AutoscalerOptions
+ */
+export class AutoscalerOptions extends Message {
+ /**
+ * @generated from field: flyteidl.plugins.AutoscalerOptions.UpscalingMode upscaling_mode = 1;
+ */
+ upscalingMode = AutoscalerOptions_UpscalingMode.UNSPECIFIED;
+
+ /**
+ * @generated from field: int32 idle_timeout_seconds = 2;
+ */
+ idleTimeoutSeconds = 0;
+
+ /**
+ * autoscaler sidecar env vars
+ *
+ * @generated from field: repeated flyteidl.core.KeyValuePair env = 3;
+ */
+ env: KeyValuePair[] = [];
+
+ /**
+ * custom autoscaler image
+ *
+ * @generated from field: string image = 4;
+ */
+ image = "";
+
+ /**
+ * autoscaler container resources
+ *
+ * @generated from field: flyteidl.core.Resources resources = 5;
+ */
+ resources?: Resources;
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "flyteidl.plugins.AutoscalerOptions";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "upscaling_mode", kind: "enum", T: proto3.getEnumType(AutoscalerOptions_UpscalingMode) },
+ { no: 2, name: "idle_timeout_seconds", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
+ { no: 3, name: "env", kind: "message", T: KeyValuePair, repeated: true },
+ { no: 4, name: "image", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 5, name: "resources", kind: "message", T: Resources },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): AutoscalerOptions {
+ return new AutoscalerOptions().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): AutoscalerOptions {
+ return new AutoscalerOptions().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): AutoscalerOptions {
+ return new AutoscalerOptions().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: AutoscalerOptions | PlainMessage | undefined, b: AutoscalerOptions | PlainMessage | undefined): boolean {
+ return proto3.util.equals(AutoscalerOptions, a, b);
+ }
+}
+
+/**
+ * @generated from enum flyteidl.plugins.AutoscalerOptions.UpscalingMode
+ */
+export enum AutoscalerOptions_UpscalingMode {
+ /**
+ * @generated from enum value: UPSCALING_MODE_UNSPECIFIED = 0;
+ */
+ UNSPECIFIED = 0,
+
+ /**
+ * @generated from enum value: UPSCALING_MODE_DEFAULT = 1;
+ */
+ DEFAULT = 1,
+
+ /**
+ * @generated from enum value: UPSCALING_MODE_AGGRESSIVE = 2;
+ */
+ AGGRESSIVE = 2,
+
+ /**
+ * @generated from enum value: UPSCALING_MODE_CONSERVATIVE = 3;
+ */
+ CONSERVATIVE = 3,
+}
+// Retrieve enum metadata with: proto3.getEnumType(AutoscalerOptions_UpscalingMode)
+proto3.util.setEnumType(AutoscalerOptions_UpscalingMode, "flyteidl.plugins.AutoscalerOptions.UpscalingMode", [
+ { no: 0, name: "UPSCALING_MODE_UNSPECIFIED" },
+ { no: 1, name: "UPSCALING_MODE_DEFAULT" },
+ { no: 2, name: "UPSCALING_MODE_AGGRESSIVE" },
+ { no: 3, name: "UPSCALING_MODE_CONSERVATIVE" },
+]);
+
/**
* Define Ray cluster defines the desired state of RayCluster
*
@@ -110,6 +210,11 @@ export class RayCluster extends Message {
*/
enableAutoscaling = false;
+ /**
+ * @generated from field: flyteidl.plugins.AutoscalerOptions autoscaler_options = 4;
+ */
+ autoscalerOptions?: AutoscalerOptions;
+
constructor(data?: PartialMessage) {
super();
proto3.util.initPartial(data, this);
@@ -121,6 +226,7 @@ export class RayCluster extends Message {
{ no: 1, name: "head_group_spec", kind: "message", T: HeadGroupSpec },
{ no: 2, name: "worker_group_spec", kind: "message", T: WorkerGroupSpec, repeated: true },
{ no: 3, name: "enable_autoscaling", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
+ { no: 4, name: "autoscaler_options", kind: "message", T: AutoscalerOptions },
]);
static fromBinary(bytes: Uint8Array, options?: Partial): RayCluster {
diff --git a/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go b/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go
index 53b7a80b710..709cb975545 100644
--- a/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go
+++ b/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go
@@ -845,6 +845,11 @@ type ArrayNode struct {
DataMode ArrayNode_DataMode `protobuf:"varint,7,opt,name=data_mode,json=dataMode,proto3,enum=flyteidl.core.ArrayNode_DataMode" json:"data_mode,omitempty"`
// +optional. Specifies input bindings that are not mapped over for the node.
BoundInputs []string `protobuf:"bytes,8,rep,name=bound_inputs,json=boundInputs,proto3" json:"bound_inputs,omitempty"`
+ // +optional. If set to true, the ArrayNode will continue to run all sub-nodes even after the
+ // failure threshold has been met (i.e. it is no longer possible to meet min_successes or
+ // min_success_ratio). This is useful when you want to ensure all sub-nodes complete execution
+ // even if the overall array node will fail.
+ RunAllSubNodes bool `protobuf:"varint,9,opt,name=run_all_sub_nodes,json=runAllSubNodes,proto3" json:"run_all_sub_nodes,omitempty"`
}
func (x *ArrayNode) Reset() {
@@ -949,6 +954,13 @@ func (x *ArrayNode) GetBoundInputs() []string {
return nil
}
+func (x *ArrayNode) GetRunAllSubNodes() bool {
+ if x != nil {
+ return x.RunAllSubNodes
+ }
+ return false
+}
+
type isArrayNode_ParallelismOption interface {
isArrayNode_ParallelismOption()
}
@@ -1901,7 +1913,7 @@ var file_flyteidl_core_workflow_proto_rawDesc = []byte{
0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64,
0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x43, 0x6f, 0x6e, 0x64,
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x42, 0x0b,
- 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xdc, 0x04, 0x0a, 0x09,
+ 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x87, 0x05, 0x0a, 0x09,
0x41, 0x72, 0x72, 0x61, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x6e, 0x6f, 0x64,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69,
0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f,
@@ -1929,181 +1941,184 @@ var file_flyteidl_core_workflow_proto_rawDesc = []byte{
0x72, 0x61, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x65,
0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6f,
0x75, 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, 0x32, 0x0a,
- 0x0d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x11,
- 0x0a, 0x0d, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10,
- 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10,
- 0x01, 0x22, 0x3d, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x0a,
- 0x11, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x46, 0x49,
- 0x4c, 0x45, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x44, 0x49, 0x56, 0x49, 0x44, 0x55,
- 0x41, 0x4c, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x53, 0x10, 0x01,
- 0x42, 0x14, 0x0a, 0x12, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x5f,
- 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73,
- 0x73, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x22, 0x88, 0x04, 0x0a, 0x0c, 0x4e,
- 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d,
- 0x65, 0x6f, 0x75, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c,
- 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74,
- 0x65, 0x67, 0x79, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0d,
- 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74,
- 0x69, 0x62, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x09, 0x63, 0x61, 0x63, 0x68, 0x65, 0x61, 0x62, 0x6c,
- 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x09, 0x63, 0x61, 0x63, 0x68, 0x65,
- 0x61, 0x62, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x76, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x63,
- 0x61, 0x63, 0x68, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x12, 0x63,
- 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c,
- 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x11, 0x63, 0x61, 0x63, 0x68, 0x65,
- 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x06,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66,
+ 0x52, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x29, 0x0a,
+ 0x11, 0x72, 0x75, 0x6e, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x6e, 0x6f, 0x64,
+ 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x75, 0x6e, 0x41, 0x6c, 0x6c,
+ 0x53, 0x75, 0x62, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x32, 0x0a, 0x0d, 0x45, 0x78, 0x65, 0x63,
+ 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x49, 0x4e,
+ 0x49, 0x4d, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a,
+ 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x01, 0x22, 0x3d, 0x0a, 0x08,
+ 0x44, 0x61, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x49, 0x4e, 0x47,
+ 0x4c, 0x45, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x00, 0x12,
+ 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x44, 0x49, 0x56, 0x49, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x49, 0x4e,
+ 0x50, 0x55, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x53, 0x10, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x70,
+ 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x72, 0x69,
+ 0x74, 0x65, 0x72, 0x69, 0x61, 0x22, 0x88, 0x04, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69,
+ 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12,
+ 0x36, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65,
+ 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x07,
+ 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72,
+ 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00,
+ 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12,
+ 0x1e, 0x0a, 0x09, 0x63, 0x61, 0x63, 0x68, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01,
+ 0x28, 0x08, 0x48, 0x01, 0x52, 0x09, 0x63, 0x61, 0x63, 0x68, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x12,
+ 0x25, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x56,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x12, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f,
+ 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01,
+ 0x28, 0x08, 0x48, 0x03, 0x52, 0x11, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x72, 0x69, 0x61,
+ 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69,
+ 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+ 0x02, 0x38, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74,
+ 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x63, 0x61,
+ 0x63, 0x68, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x15, 0x0a,
+ 0x13, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x65,
+ 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x22, 0x2f, 0x0a, 0x05, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61,
+ 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61,
+ 0x73, 0x22, 0x9f, 0x04, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66,
0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64,
- 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x39, 0x0a,
- 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
- 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x65,
- 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42,
- 0x11, 0x0a, 0x0f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x63, 0x61, 0x63,
- 0x68, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x5f,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2f, 0x0a, 0x05, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x10,
- 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x72,
- 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x9f, 0x04, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12,
- 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
- 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72,
- 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08,
- 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2e, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75,
- 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65,
- 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
- 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x75, 0x70, 0x73, 0x74,
- 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x6f, 0x64,
- 0x65, 0x49, 0x64, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x61,
- 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x66,
- 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x6c, 0x69,
- 0x61, 0x73, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65,
- 0x73, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e,
- 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52,
- 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x77, 0x6f, 0x72,
- 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65,
- 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52,
- 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x3c, 0x0a,
- 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f,
- 0x72, 0x65, 0x2e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52,
- 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x67,
- 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
- 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47,
- 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x4e,
- 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x6e, 0x6f, 0x64,
- 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69,
- 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x4e, 0x6f, 0x64,
- 0x65, 0x48, 0x00, 0x52, 0x09, 0x61, 0x72, 0x72, 0x61, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x08,
- 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xfc, 0x02, 0x0a, 0x10, 0x57, 0x6f, 0x72,
- 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a,
- 0x12, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74,
- 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74,
- 0x79, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x10, 0x71, 0x75, 0x61, 0x6c,
- 0x69, 0x74, 0x79, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4e, 0x0a, 0x0a,
- 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65,
- 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x2e, 0x4f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x09, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x04,
- 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x66, 0x6c, 0x79,
- 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66,
- 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x67, 0x73,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54,
- 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x3a, 0x02, 0x38, 0x01, 0x22, 0x51, 0x0a, 0x0f, 0x4f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72,
- 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x49, 0x4c, 0x5f,
- 0x49, 0x4d, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x28, 0x0a,
- 0x24, 0x46, 0x41, 0x49, 0x4c, 0x5f, 0x41, 0x46, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x45, 0x43,
- 0x55, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x4d,
- 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x01, 0x22, 0x40, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x66,
- 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x66, 0x61, 0x75,
- 0x6c, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74,
- 0x69, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65,
- 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x22, 0xa2, 0x03, 0x0a, 0x10, 0x57, 0x6f,
- 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x29,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79,
- 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74,
- 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c,
+ 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x12, 0x2e, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63,
+ 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x69, 0x6e, 0x70,
+ 0x75, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f,
+ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f,
+ 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x12,
+ 0x3b, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65,
+ 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69,
+ 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0d, 0x6f,
+ 0x75, 0x74, 0x70, 0x75, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09,
+ 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e,
+ 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b,
+ 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77,
+ 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c,
+ 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
+ 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b,
+ 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e,
+ 0x63, 0x68, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+ 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x72,
+ 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e,
+ 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x6e,
+ 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74,
+ 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x4e, 0x6f,
+ 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x39,
+ 0x0a, 0x0a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f,
+ 0x72, 0x65, 0x2e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x09,
+ 0x61, 0x72, 0x72, 0x61, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x74, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x22, 0xfc, 0x02, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x12, 0x71, 0x75, 0x61, 0x6c,
+ 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e,
+ 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x53, 0x65,
+ 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x10, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66,
+ 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4e, 0x0a, 0x0a, 0x6f, 0x6e, 0x5f, 0x66, 0x61,
+ 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x66, 0x6c,
0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
- 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66,
- 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74,
- 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49,
- 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66,
- 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f,
- 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x30,
- 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e,
- 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73,
- 0x12, 0x36, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64,
- 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x66, 0x61, 0x69,
- 0x6c, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x07, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63,
- 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x10, 0x6d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xff,
- 0x01, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72,
- 0x69, 0x64, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69,
- 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x12,
- 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65,
- 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65,
- 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65,
- 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x27, 0x0a,
- 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x0c, 0x70, 0x6f, 0x64, 0x5f, 0x74, 0x65,
- 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66,
- 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73,
- 0x50, 0x6f, 0x64, 0x52, 0x0b, 0x70, 0x6f, 0x64, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
- 0x22, 0xba, 0x01, 0x0a, 0x12, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x54,
- 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63,
- 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02,
- 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c,
- 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72,
- 0x66, 0x61, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12,
- 0x3c, 0x0a, 0x0c, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c,
- 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70,
- 0x52, 0x0b, 0x66, 0x69, 0x78, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x42, 0xb3, 0x01,
- 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63,
- 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x6f,
- 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f,
- 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d,
- 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65,
- 0xa2, 0x02, 0x03, 0x46, 0x43, 0x58, 0xaa, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64,
- 0x6c, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64,
- 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x19, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64,
- 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0xea, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x43,
- 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x6e, 0x46,
+ 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x09, 0x6f, 0x6e,
+ 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18,
+ 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c,
+ 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
+ 0x51, 0x0a, 0x0f, 0x4f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x49, 0x4c, 0x5f, 0x49, 0x4d, 0x4d, 0x45, 0x44,
+ 0x49, 0x41, 0x54, 0x45, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x46, 0x41, 0x49, 0x4c,
+ 0x5f, 0x41, 0x46, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x41, 0x42, 0x4c,
+ 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45,
+ 0x10, 0x01, 0x22, 0x40, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x24,
+ 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74,
+ 0x69, 0x62, 0x6c, 0x65, 0x22, 0xa2, 0x03, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f,
+ 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c,
+ 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72,
+ 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64,
+ 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x12, 0x3b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e,
+ 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66,
+ 0x61, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x29,
+ 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e,
+ 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f,
+ 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x6f, 0x75, 0x74,
+ 0x70, 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79,
+ 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x0c, 0x66,
+ 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72,
+ 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4e,
+ 0x6f, 0x64, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f,
+ 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
+ 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57,
+ 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44,
+ 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xff, 0x01, 0x0a, 0x11, 0x54, 0x61,
+ 0x73, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12,
+ 0x36, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f,
+ 0x72, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x12, 0x65, 0x78, 0x74, 0x65, 0x6e,
+ 0x64, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63,
+ 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x12, 0x38, 0x0a, 0x0c, 0x70, 0x6f, 0x64, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
+ 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69,
+ 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x0b,
+ 0x70, 0x6f, 0x64, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x12,
+ 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
+ 0x74, 0x65, 0x12, 0x29, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
+ 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49,
+ 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, 0x0a,
+ 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65,
+ 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52,
+ 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x66, 0x69,
+ 0x78, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65,
+ 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x0b, 0x66, 0x69, 0x78,
+ 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x42, 0xb3, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d,
+ 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d,
+ 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,
+ 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74,
+ 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65,
+ 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c,
+ 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x46, 0x43,
+ 0x58, 0xaa, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x43, 0x6f, 0x72,
+ 0x65, 0xca, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, 0x6f, 0x72,
+ 0x65, 0xe2, 0x02, 0x19, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, 0x6f, 0x72,
+ 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e,
+ 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
diff --git a/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go b/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go
index 18d0c4c1cba..26f946a1efe 100644
--- a/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go
+++ b/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go
@@ -21,6 +21,58 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
+type AutoscalerOptions_UpscalingMode int32
+
+const (
+ AutoscalerOptions_UPSCALING_MODE_UNSPECIFIED AutoscalerOptions_UpscalingMode = 0
+ AutoscalerOptions_UPSCALING_MODE_DEFAULT AutoscalerOptions_UpscalingMode = 1
+ AutoscalerOptions_UPSCALING_MODE_AGGRESSIVE AutoscalerOptions_UpscalingMode = 2
+ AutoscalerOptions_UPSCALING_MODE_CONSERVATIVE AutoscalerOptions_UpscalingMode = 3
+)
+
+// Enum value maps for AutoscalerOptions_UpscalingMode.
+var (
+ AutoscalerOptions_UpscalingMode_name = map[int32]string{
+ 0: "UPSCALING_MODE_UNSPECIFIED",
+ 1: "UPSCALING_MODE_DEFAULT",
+ 2: "UPSCALING_MODE_AGGRESSIVE",
+ 3: "UPSCALING_MODE_CONSERVATIVE",
+ }
+ AutoscalerOptions_UpscalingMode_value = map[string]int32{
+ "UPSCALING_MODE_UNSPECIFIED": 0,
+ "UPSCALING_MODE_DEFAULT": 1,
+ "UPSCALING_MODE_AGGRESSIVE": 2,
+ "UPSCALING_MODE_CONSERVATIVE": 3,
+ }
+)
+
+func (x AutoscalerOptions_UpscalingMode) Enum() *AutoscalerOptions_UpscalingMode {
+ p := new(AutoscalerOptions_UpscalingMode)
+ *p = x
+ return p
+}
+
+func (x AutoscalerOptions_UpscalingMode) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (AutoscalerOptions_UpscalingMode) Descriptor() protoreflect.EnumDescriptor {
+ return file_flyteidl_plugins_ray_proto_enumTypes[0].Descriptor()
+}
+
+func (AutoscalerOptions_UpscalingMode) Type() protoreflect.EnumType {
+ return &file_flyteidl_plugins_ray_proto_enumTypes[0]
+}
+
+func (x AutoscalerOptions_UpscalingMode) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use AutoscalerOptions_UpscalingMode.Descriptor instead.
+func (AutoscalerOptions_UpscalingMode) EnumDescriptor() ([]byte, []int) {
+ return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{1, 0}
+}
+
// RayJobSpec defines the desired state of RayJob
type RayJob struct {
state protoimpl.MessageState
@@ -111,6 +163,88 @@ func (x *RayJob) GetRuntimeEnvYaml() string {
return ""
}
+type AutoscalerOptions struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ UpscalingMode AutoscalerOptions_UpscalingMode `protobuf:"varint,1,opt,name=upscaling_mode,json=upscalingMode,proto3,enum=flyteidl.plugins.AutoscalerOptions_UpscalingMode" json:"upscaling_mode,omitempty"`
+ IdleTimeoutSeconds int32 `protobuf:"varint,2,opt,name=idle_timeout_seconds,json=idleTimeoutSeconds,proto3" json:"idle_timeout_seconds,omitempty"`
+ // autoscaler sidecar env vars
+ Env []*core.KeyValuePair `protobuf:"bytes,3,rep,name=env,proto3" json:"env,omitempty"`
+ // custom autoscaler image
+ Image string `protobuf:"bytes,4,opt,name=image,proto3" json:"image,omitempty"`
+ // autoscaler container resources
+ Resources *core.Resources `protobuf:"bytes,5,opt,name=resources,proto3" json:"resources,omitempty"`
+}
+
+func (x *AutoscalerOptions) Reset() {
+ *x = AutoscalerOptions{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_flyteidl_plugins_ray_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AutoscalerOptions) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AutoscalerOptions) ProtoMessage() {}
+
+func (x *AutoscalerOptions) ProtoReflect() protoreflect.Message {
+ mi := &file_flyteidl_plugins_ray_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AutoscalerOptions.ProtoReflect.Descriptor instead.
+func (*AutoscalerOptions) Descriptor() ([]byte, []int) {
+ return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *AutoscalerOptions) GetUpscalingMode() AutoscalerOptions_UpscalingMode {
+ if x != nil {
+ return x.UpscalingMode
+ }
+ return AutoscalerOptions_UPSCALING_MODE_UNSPECIFIED
+}
+
+func (x *AutoscalerOptions) GetIdleTimeoutSeconds() int32 {
+ if x != nil {
+ return x.IdleTimeoutSeconds
+ }
+ return 0
+}
+
+func (x *AutoscalerOptions) GetEnv() []*core.KeyValuePair {
+ if x != nil {
+ return x.Env
+ }
+ return nil
+}
+
+func (x *AutoscalerOptions) GetImage() string {
+ if x != nil {
+ return x.Image
+ }
+ return ""
+}
+
+func (x *AutoscalerOptions) GetResources() *core.Resources {
+ if x != nil {
+ return x.Resources
+ }
+ return nil
+}
+
// Define Ray cluster defines the desired state of RayCluster
type RayCluster struct {
state protoimpl.MessageState
@@ -122,13 +256,14 @@ type RayCluster struct {
// WorkerGroupSpecs are the specs for the worker pods
WorkerGroupSpec []*WorkerGroupSpec `protobuf:"bytes,2,rep,name=worker_group_spec,json=workerGroupSpec,proto3" json:"worker_group_spec,omitempty"`
// Whether to enable autoscaling.
- EnableAutoscaling bool `protobuf:"varint,3,opt,name=enable_autoscaling,json=enableAutoscaling,proto3" json:"enable_autoscaling,omitempty"`
+ EnableAutoscaling bool `protobuf:"varint,3,opt,name=enable_autoscaling,json=enableAutoscaling,proto3" json:"enable_autoscaling,omitempty"`
+ AutoscalerOptions *AutoscalerOptions `protobuf:"bytes,4,opt,name=autoscaler_options,json=autoscalerOptions,proto3" json:"autoscaler_options,omitempty"`
}
func (x *RayCluster) Reset() {
*x = RayCluster{}
if protoimpl.UnsafeEnabled {
- mi := &file_flyteidl_plugins_ray_proto_msgTypes[1]
+ mi := &file_flyteidl_plugins_ray_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -141,7 +276,7 @@ func (x *RayCluster) String() string {
func (*RayCluster) ProtoMessage() {}
func (x *RayCluster) ProtoReflect() protoreflect.Message {
- mi := &file_flyteidl_plugins_ray_proto_msgTypes[1]
+ mi := &file_flyteidl_plugins_ray_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -154,7 +289,7 @@ func (x *RayCluster) ProtoReflect() protoreflect.Message {
// Deprecated: Use RayCluster.ProtoReflect.Descriptor instead.
func (*RayCluster) Descriptor() ([]byte, []int) {
- return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{1}
+ return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{2}
}
func (x *RayCluster) GetHeadGroupSpec() *HeadGroupSpec {
@@ -178,6 +313,13 @@ func (x *RayCluster) GetEnableAutoscaling() bool {
return false
}
+func (x *RayCluster) GetAutoscalerOptions() *AutoscalerOptions {
+ if x != nil {
+ return x.AutoscalerOptions
+ }
+ return nil
+}
+
// HeadGroupSpec are the spec for the head pod
type HeadGroupSpec struct {
state protoimpl.MessageState
@@ -194,7 +336,7 @@ type HeadGroupSpec struct {
func (x *HeadGroupSpec) Reset() {
*x = HeadGroupSpec{}
if protoimpl.UnsafeEnabled {
- mi := &file_flyteidl_plugins_ray_proto_msgTypes[2]
+ mi := &file_flyteidl_plugins_ray_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -207,7 +349,7 @@ func (x *HeadGroupSpec) String() string {
func (*HeadGroupSpec) ProtoMessage() {}
func (x *HeadGroupSpec) ProtoReflect() protoreflect.Message {
- mi := &file_flyteidl_plugins_ray_proto_msgTypes[2]
+ mi := &file_flyteidl_plugins_ray_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -220,7 +362,7 @@ func (x *HeadGroupSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use HeadGroupSpec.ProtoReflect.Descriptor instead.
func (*HeadGroupSpec) Descriptor() ([]byte, []int) {
- return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{2}
+ return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{3}
}
func (x *HeadGroupSpec) GetRayStartParams() map[string]string {
@@ -261,7 +403,7 @@ type WorkerGroupSpec struct {
func (x *WorkerGroupSpec) Reset() {
*x = WorkerGroupSpec{}
if protoimpl.UnsafeEnabled {
- mi := &file_flyteidl_plugins_ray_proto_msgTypes[3]
+ mi := &file_flyteidl_plugins_ray_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -274,7 +416,7 @@ func (x *WorkerGroupSpec) String() string {
func (*WorkerGroupSpec) ProtoMessage() {}
func (x *WorkerGroupSpec) ProtoReflect() protoreflect.Message {
- mi := &file_flyteidl_plugins_ray_proto_msgTypes[3]
+ mi := &file_flyteidl_plugins_ray_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -287,7 +429,7 @@ func (x *WorkerGroupSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use WorkerGroupSpec.ProtoReflect.Descriptor instead.
func (*WorkerGroupSpec) Descriptor() ([]byte, []int) {
- return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{3}
+ return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{4}
}
func (x *WorkerGroupSpec) GetGroupName() string {
@@ -339,87 +481,121 @@ var file_flyteidl_plugins_ray_proto_rawDesc = []byte{
0x6e, 0x73, 0x2f, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x66, 0x6c,
0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x1a, 0x19,
0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x61,
- 0x73, 0x6b, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x92, 0x02, 0x0a, 0x06, 0x52, 0x61,
- 0x79, 0x4a, 0x6f, 0x62, 0x12, 0x3d, 0x0a, 0x0b, 0x72, 0x61, 0x79, 0x5f, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74,
- 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x52, 0x61, 0x79,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0a, 0x72, 0x61, 0x79, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65,
- 0x6e, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x72, 0x75,
- 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x12, 0x3d, 0x0a, 0x1b, 0x73, 0x68, 0x75, 0x74,
- 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x66,
- 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x73,
- 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x41, 0x66, 0x74, 0x65, 0x72, 0x4a, 0x6f, 0x62, 0x46,
- 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x74, 0x74, 0x6c, 0x5f, 0x73,
- 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6e,
- 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x74, 0x74, 0x6c,
- 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69,
- 0x73, 0x68, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f,
- 0x65, 0x6e, 0x76, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
- 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x59, 0x61, 0x6d, 0x6c, 0x22, 0xd3,
- 0x01, 0x0a, 0x0a, 0x52, 0x61, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a,
- 0x0f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64,
- 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72,
- 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75,
- 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f,
- 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61,
- 0x6c, 0x69, 0x6e, 0x67, 0x22, 0xe1, 0x01, 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5d, 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67,
- 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65,
- 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50,
- 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64,
- 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b,
- 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72,
- 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
- 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe6, 0x02, 0x0a, 0x0f, 0x57, 0x6f, 0x72,
- 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72,
- 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72,
- 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72,
- 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d,
- 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61,
- 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x5f, 0x0a,
- 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d,
- 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69,
- 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65,
- 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74,
- 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e,
- 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e,
- 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e,
- 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41,
- 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
- 0x01, 0x42, 0xc0, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69,
- 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x42, 0x08, 0x52, 0x61, 0x79, 0x50,
- 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74,
- 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70,
- 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x70, 0x6c,
- 0x75, 0x67, 0x69, 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x46, 0x50, 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c,
- 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xca, 0x02,
- 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e,
- 0x73, 0xe2, 0x02, 0x1c, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75,
- 0x67, 0x69, 0x6e, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0xea, 0x02, 0x11, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x50, 0x6c, 0x75,
- 0x67, 0x69, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x73, 0x6b, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x66, 0x6c, 0x79, 0x74, 0x65,
+ 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c,
+ 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x92, 0x02, 0x0a, 0x06, 0x52, 0x61, 0x79, 0x4a,
+ 0x6f, 0x62, 0x12, 0x3d, 0x0a, 0x0b, 0x72, 0x61, 0x79, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69,
+ 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x52, 0x61, 0x79, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0a, 0x72, 0x61, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x12, 0x23, 0x0a, 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x76,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x74,
+ 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x12, 0x3d, 0x0a, 0x1b, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f,
+ 0x77, 0x6e, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x66, 0x69, 0x6e,
+ 0x69, 0x73, 0x68, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x73, 0x68, 0x75,
+ 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x41, 0x66, 0x74, 0x65, 0x72, 0x4a, 0x6f, 0x62, 0x46, 0x69, 0x6e,
+ 0x69, 0x73, 0x68, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63,
+ 0x6f, 0x6e, 0x64, 0x73, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73,
+ 0x68, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x74, 0x74, 0x6c, 0x53, 0x65,
+ 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68,
+ 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e,
+ 0x76, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x75,
+ 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x59, 0x61, 0x6d, 0x6c, 0x22, 0xaa, 0x03, 0x0a,
+ 0x11, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x0e, 0x75, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f,
+ 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x66, 0x6c, 0x79,
+ 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x41, 0x75,
+ 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x55, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x75,
+ 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x14,
+ 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63,
+ 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x69, 0x64, 0x6c, 0x65,
+ 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2d,
+ 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c,
+ 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x14, 0x0a,
+ 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d,
+ 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64,
+ 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
+ 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x0d,
+ 0x55, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a,
+ 0x1a, 0x55, 0x50, 0x53, 0x43, 0x41, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f,
+ 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a,
+ 0x16, 0x55, 0x50, 0x53, 0x43, 0x41, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f,
+ 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x55, 0x50, 0x53,
+ 0x43, 0x41, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x47, 0x47, 0x52,
+ 0x45, 0x53, 0x53, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x55, 0x50, 0x53, 0x43,
+ 0x41, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45,
+ 0x52, 0x56, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x03, 0x22, 0xa7, 0x02, 0x0a, 0x0a, 0x52, 0x61,
+ 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64,
+ 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75,
+ 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70,
+ 0x65, 0x63, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65,
+ 0x63, 0x12, 0x4d, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66,
+ 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e,
+ 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52,
+ 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63,
+ 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73,
+ 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e,
+ 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12,
+ 0x52, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x5f, 0x6f, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c,
+ 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x41,
+ 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x22, 0xe1, 0x01, 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5d, 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61,
+ 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69,
+ 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63,
+ 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61,
+ 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c,
+ 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38,
+ 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74,
+ 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+ 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe6, 0x02, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b,
+ 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65,
+ 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65,
+ 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65,
+ 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x69,
+ 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78,
+ 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x5f, 0x0a, 0x10,
+ 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73,
+ 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64,
+ 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61,
+ 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72,
+ 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a,
+ 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
+ 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b,
+ 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a,
+ 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
+ 0x42, 0xc0, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64,
+ 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x42, 0x08, 0x52, 0x61, 0x79, 0x50, 0x72,
+ 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
+ 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65,
+ 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62,
+ 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x70, 0x6c, 0x75,
+ 0x67, 0x69, 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x46, 0x50, 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c, 0x79,
+ 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xca, 0x02, 0x10,
+ 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73,
+ 0xe2, 0x02, 0x1c, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67,
+ 0x69, 0x6e, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea,
+ 0x02, 0x11, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x50, 0x6c, 0x75, 0x67,
+ 0x69, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -434,29 +610,38 @@ func file_flyteidl_plugins_ray_proto_rawDescGZIP() []byte {
return file_flyteidl_plugins_ray_proto_rawDescData
}
-var file_flyteidl_plugins_ray_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_flyteidl_plugins_ray_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_flyteidl_plugins_ray_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
var file_flyteidl_plugins_ray_proto_goTypes = []interface{}{
- (*RayJob)(nil), // 0: flyteidl.plugins.RayJob
- (*RayCluster)(nil), // 1: flyteidl.plugins.RayCluster
- (*HeadGroupSpec)(nil), // 2: flyteidl.plugins.HeadGroupSpec
- (*WorkerGroupSpec)(nil), // 3: flyteidl.plugins.WorkerGroupSpec
- nil, // 4: flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry
- nil, // 5: flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry
- (*core.K8SPod)(nil), // 6: flyteidl.core.K8sPod
+ (AutoscalerOptions_UpscalingMode)(0), // 0: flyteidl.plugins.AutoscalerOptions.UpscalingMode
+ (*RayJob)(nil), // 1: flyteidl.plugins.RayJob
+ (*AutoscalerOptions)(nil), // 2: flyteidl.plugins.AutoscalerOptions
+ (*RayCluster)(nil), // 3: flyteidl.plugins.RayCluster
+ (*HeadGroupSpec)(nil), // 4: flyteidl.plugins.HeadGroupSpec
+ (*WorkerGroupSpec)(nil), // 5: flyteidl.plugins.WorkerGroupSpec
+ nil, // 6: flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry
+ nil, // 7: flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry
+ (*core.KeyValuePair)(nil), // 8: flyteidl.core.KeyValuePair
+ (*core.Resources)(nil), // 9: flyteidl.core.Resources
+ (*core.K8SPod)(nil), // 10: flyteidl.core.K8sPod
}
var file_flyteidl_plugins_ray_proto_depIdxs = []int32{
- 1, // 0: flyteidl.plugins.RayJob.ray_cluster:type_name -> flyteidl.plugins.RayCluster
- 2, // 1: flyteidl.plugins.RayCluster.head_group_spec:type_name -> flyteidl.plugins.HeadGroupSpec
- 3, // 2: flyteidl.plugins.RayCluster.worker_group_spec:type_name -> flyteidl.plugins.WorkerGroupSpec
- 4, // 3: flyteidl.plugins.HeadGroupSpec.ray_start_params:type_name -> flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry
- 6, // 4: flyteidl.plugins.HeadGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod
- 5, // 5: flyteidl.plugins.WorkerGroupSpec.ray_start_params:type_name -> flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry
- 6, // 6: flyteidl.plugins.WorkerGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod
- 7, // [7:7] is the sub-list for method output_type
- 7, // [7:7] is the sub-list for method input_type
- 7, // [7:7] is the sub-list for extension type_name
- 7, // [7:7] is the sub-list for extension extendee
- 0, // [0:7] is the sub-list for field type_name
+ 3, // 0: flyteidl.plugins.RayJob.ray_cluster:type_name -> flyteidl.plugins.RayCluster
+ 0, // 1: flyteidl.plugins.AutoscalerOptions.upscaling_mode:type_name -> flyteidl.plugins.AutoscalerOptions.UpscalingMode
+ 8, // 2: flyteidl.plugins.AutoscalerOptions.env:type_name -> flyteidl.core.KeyValuePair
+ 9, // 3: flyteidl.plugins.AutoscalerOptions.resources:type_name -> flyteidl.core.Resources
+ 4, // 4: flyteidl.plugins.RayCluster.head_group_spec:type_name -> flyteidl.plugins.HeadGroupSpec
+ 5, // 5: flyteidl.plugins.RayCluster.worker_group_spec:type_name -> flyteidl.plugins.WorkerGroupSpec
+ 2, // 6: flyteidl.plugins.RayCluster.autoscaler_options:type_name -> flyteidl.plugins.AutoscalerOptions
+ 6, // 7: flyteidl.plugins.HeadGroupSpec.ray_start_params:type_name -> flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry
+ 10, // 8: flyteidl.plugins.HeadGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod
+ 7, // 9: flyteidl.plugins.WorkerGroupSpec.ray_start_params:type_name -> flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry
+ 10, // 10: flyteidl.plugins.WorkerGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod
+ 11, // [11:11] is the sub-list for method output_type
+ 11, // [11:11] is the sub-list for method input_type
+ 11, // [11:11] is the sub-list for extension type_name
+ 11, // [11:11] is the sub-list for extension extendee
+ 0, // [0:11] is the sub-list for field type_name
}
func init() { file_flyteidl_plugins_ray_proto_init() }
@@ -478,7 +663,7 @@ func file_flyteidl_plugins_ray_proto_init() {
}
}
file_flyteidl_plugins_ray_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RayCluster); i {
+ switch v := v.(*AutoscalerOptions); i {
case 0:
return &v.state
case 1:
@@ -490,7 +675,7 @@ func file_flyteidl_plugins_ray_proto_init() {
}
}
file_flyteidl_plugins_ray_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HeadGroupSpec); i {
+ switch v := v.(*RayCluster); i {
case 0:
return &v.state
case 1:
@@ -502,6 +687,18 @@ func file_flyteidl_plugins_ray_proto_init() {
}
}
file_flyteidl_plugins_ray_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*HeadGroupSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_flyteidl_plugins_ray_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*WorkerGroupSpec); i {
case 0:
return &v.state
@@ -519,13 +716,14 @@ func file_flyteidl_plugins_ray_proto_init() {
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_flyteidl_plugins_ray_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 6,
+ NumEnums: 1,
+ NumMessages: 7,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_flyteidl_plugins_ray_proto_goTypes,
DependencyIndexes: file_flyteidl_plugins_ray_proto_depIdxs,
+ EnumInfos: file_flyteidl_plugins_ray_proto_enumTypes,
MessageInfos: file_flyteidl_plugins_ray_proto_msgTypes,
}.Build()
File_flyteidl_plugins_ray_proto = out.File
diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json
index 6e3aa65f81c..4f0b9e77d55 100644
--- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json
+++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json
@@ -6649,6 +6649,10 @@
"type": "string"
},
"description": "+optional. Specifies input bindings that are not mapped over for the node."
+ },
+ "run_all_sub_nodes": {
+ "type": "boolean",
+ "description": "+optional. If set to true, the ArrayNode will continue to run all sub-nodes even after the\nfailure threshold has been met (i.e. it is no longer possible to meet min_successes or\nmin_success_ratio). This is useful when you want to ensure all sub-nodes complete execution\neven if the overall array node will fail."
}
},
"description": "ArrayNode is a Flyte node type that simplifies the execution of a sub-node over a list of input\nvalues. An ArrayNode can be executed with configurable parallelism (separate from the parent\nworkflow) and can be configured to succeed when a certain number of sub-nodes succeed."
diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts
index d42bc601f07..e0e9f2b539f 100644
--- a/flyteidl/gen/pb-js/flyteidl.d.ts
+++ b/flyteidl/gen/pb-js/flyteidl.d.ts
@@ -4601,6 +4601,9 @@ export namespace flyteidl {
/** ArrayNode boundInputs */
boundInputs?: (string[]|null);
+
+ /** ArrayNode runAllSubNodes */
+ runAllSubNodes?: (boolean|null);
}
/** Represents an ArrayNode. */
@@ -4636,6 +4639,9 @@ export namespace flyteidl {
/** ArrayNode boundInputs. */
public boundInputs: string[];
+ /** ArrayNode runAllSubNodes. */
+ public runAllSubNodes: boolean;
+
/** ArrayNode parallelismOption. */
public parallelismOption?: "parallelism";
diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js
index 7e35168f471..310354ae309 100644
--- a/flyteidl/gen/pb-js/flyteidl.js
+++ b/flyteidl/gen/pb-js/flyteidl.js
@@ -11009,6 +11009,7 @@
* @property {google.protobuf.IBoolValue|null} [isOriginalSubNodeInterface] ArrayNode isOriginalSubNodeInterface
* @property {flyteidl.core.ArrayNode.DataMode|null} [dataMode] ArrayNode dataMode
* @property {Array.|null} [boundInputs] ArrayNode boundInputs
+ * @property {boolean|null} [runAllSubNodes] ArrayNode runAllSubNodes
*/
/**
@@ -11091,6 +11092,14 @@
*/
ArrayNode.prototype.boundInputs = $util.emptyArray;
+ /**
+ * ArrayNode runAllSubNodes.
+ * @member {boolean} runAllSubNodes
+ * @memberof flyteidl.core.ArrayNode
+ * @instance
+ */
+ ArrayNode.prototype.runAllSubNodes = false;
+
// OneOf field names bound to virtual getters and setters
var $oneOfFields;
@@ -11157,6 +11166,8 @@
if (message.boundInputs != null && message.boundInputs.length)
for (var i = 0; i < message.boundInputs.length; ++i)
writer.uint32(/* id 8, wireType 2 =*/66).string(message.boundInputs[i]);
+ if (message.runAllSubNodes != null && message.hasOwnProperty("runAllSubNodes"))
+ writer.uint32(/* id 9, wireType 0 =*/72).bool(message.runAllSubNodes);
return writer;
};
@@ -11204,6 +11215,9 @@
message.boundInputs = [];
message.boundInputs.push(reader.string());
break;
+ case 9:
+ message.runAllSubNodes = reader.bool();
+ break;
default:
reader.skipType(tag & 7);
break;
@@ -11274,6 +11288,9 @@
if (!$util.isString(message.boundInputs[i]))
return "boundInputs: string[] expected";
}
+ if (message.runAllSubNodes != null && message.hasOwnProperty("runAllSubNodes"))
+ if (typeof message.runAllSubNodes !== "boolean")
+ return "runAllSubNodes: boolean expected";
return null;
};
diff --git a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py
index 52d89cd2589..aae050714e4 100644
--- a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py
+++ b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py
@@ -23,7 +23,7 @@
from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/workflow.proto\x12\rflyteidl.core\x1a\x1d\x66lyteidl/core/condition.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x19\x66lyteidl/core/types.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\"{\n\x07IfBlock\x12>\n\tcondition\x18\x01 \x01(\x0b\x32 .flyteidl.core.BooleanExpressionR\tcondition\x12\x30\n\tthen_node\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x08thenNode\"\xd4\x01\n\x0bIfElseBlock\x12*\n\x04\x63\x61se\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.IfBlockR\x04\x63\x61se\x12,\n\x05other\x18\x02 \x03(\x0b\x32\x16.flyteidl.core.IfBlockR\x05other\x12\x32\n\telse_node\x18\x03 \x01(\x0b\x32\x13.flyteidl.core.NodeH\x00R\x08\x65lseNode\x12,\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rrorB\t\n\x07\x64\x65\x66\x61ult\"A\n\nBranchNode\x12\x33\n\x07if_else\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.IfElseBlockR\x06ifElse\"\x97\x01\n\x08TaskNode\x12>\n\x0creference_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0breferenceId\x12>\n\toverrides\x18\x02 \x01(\x0b\x32 .flyteidl.core.TaskNodeOverridesR\toverridesB\x0b\n\treference\"\xa6\x01\n\x0cWorkflowNode\x12\x42\n\x0elaunchplan_ref\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\rlaunchplanRef\x12\x45\n\x10sub_workflow_ref\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0esubWorkflowRefB\x0b\n\treference\"/\n\x10\x41pproveCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\"\x90\x01\n\x0fSignalCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\x12\x30\n\x14output_variable_name\x18\x03 \x01(\tR\x12outputVariableName\"G\n\x0eSleepCondition\x12\x35\n\x08\x64uration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\"\xc5\x01\n\x08GateNode\x12;\n\x07\x61pprove\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.ApproveConditionH\x00R\x07\x61pprove\x12\x38\n\x06signal\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.SignalConditionH\x00R\x06signal\x12\x35\n\x05sleep\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.SleepConditionH\x00R\x05sleepB\x0b\n\tcondition\"\xdc\x04\n\tArrayNode\x12\'\n\x04node\x18\x01 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x04node\x12\"\n\x0bparallelism\x18\x02 \x01(\rH\x00R\x0bparallelism\x12%\n\rmin_successes\x18\x03 \x01(\rH\x01R\x0cminSuccesses\x12,\n\x11min_success_ratio\x18\x04 \x01(\x02H\x01R\x0fminSuccessRatio\x12M\n\x0e\x65xecution_mode\x18\x05 \x01(\x0e\x32&.flyteidl.core.ArrayNode.ExecutionModeR\rexecutionMode\x12^\n\x1eis_original_sub_node_interface\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x1aisOriginalSubNodeInterface\x12>\n\tdata_mode\x18\x07 \x01(\x0e\x32!.flyteidl.core.ArrayNode.DataModeR\x08\x64\x61taMode\x12!\n\x0c\x62ound_inputs\x18\x08 \x03(\tR\x0b\x62oundInputs\"2\n\rExecutionMode\x12\x11\n\rMINIMAL_STATE\x10\x00\x12\x0e\n\nFULL_STATE\x10\x01\"=\n\x08\x44\x61taMode\x12\x15\n\x11SINGLE_INPUT_FILE\x10\x00\x12\x1a\n\x16INDIVIDUAL_INPUT_FILES\x10\x01\x42\x14\n\x12parallelism_optionB\x12\n\x10success_criteria\"\x88\x04\n\x0cNodeMetadata\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x33\n\x07timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x07timeout\x12\x36\n\x07retries\x18\x05 \x01(\x0b\x32\x1c.flyteidl.core.RetryStrategyR\x07retries\x12&\n\rinterruptible\x18\x06 \x01(\x08H\x00R\rinterruptible\x12\x1e\n\tcacheable\x18\x07 \x01(\x08H\x01R\tcacheable\x12%\n\rcache_version\x18\x08 \x01(\tH\x02R\x0c\x63\x61\x63heVersion\x12/\n\x12\x63\x61\x63he_serializable\x18\t \x01(\x08H\x03R\x11\x63\x61\x63heSerializable\x12?\n\x06\x63onfig\x18\n \x03(\x0b\x32\'.flyteidl.core.NodeMetadata.ConfigEntryR\x06\x63onfig\x1a\x39\n\x0b\x43onfigEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x15\n\x13interruptible_valueB\x11\n\x0f\x63\x61\x63heable_valueB\x15\n\x13\x63\x61\x63he_version_valueB\x1a\n\x18\x63\x61\x63he_serializable_value\"/\n\x05\x41lias\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x14\n\x05\x61lias\x18\x02 \x01(\tR\x05\x61lias\"\x9f\x04\n\x04Node\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x37\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.NodeMetadataR\x08metadata\x12.\n\x06inputs\x18\x03 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x06inputs\x12*\n\x11upstream_node_ids\x18\x04 \x03(\tR\x0fupstreamNodeIds\x12;\n\x0eoutput_aliases\x18\x05 \x03(\x0b\x32\x14.flyteidl.core.AliasR\routputAliases\x12\x36\n\ttask_node\x18\x06 \x01(\x0b\x32\x17.flyteidl.core.TaskNodeH\x00R\x08taskNode\x12\x42\n\rworkflow_node\x18\x07 \x01(\x0b\x32\x1b.flyteidl.core.WorkflowNodeH\x00R\x0cworkflowNode\x12<\n\x0b\x62ranch_node\x18\x08 \x01(\x0b\x32\x19.flyteidl.core.BranchNodeH\x00R\nbranchNode\x12\x36\n\tgate_node\x18\t \x01(\x0b\x32\x17.flyteidl.core.GateNodeH\x00R\x08gateNode\x12\x39\n\narray_node\x18\n \x01(\x0b\x32\x18.flyteidl.core.ArrayNodeH\x00R\tarrayNodeB\x08\n\x06target\"\xfc\x02\n\x10WorkflowMetadata\x12M\n\x12quality_of_service\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceR\x10qualityOfService\x12N\n\non_failure\x18\x02 \x01(\x0e\x32/.flyteidl.core.WorkflowMetadata.OnFailurePolicyR\tonFailure\x12=\n\x04tags\x18\x03 \x03(\x0b\x32).flyteidl.core.WorkflowMetadata.TagsEntryR\x04tags\x1a\x37\n\tTagsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"Q\n\x0fOnFailurePolicy\x12\x14\n\x10\x46\x41IL_IMMEDIATELY\x10\x00\x12(\n$FAIL_AFTER_EXECUTABLE_NODES_COMPLETE\x10\x01\"@\n\x18WorkflowMetadataDefaults\x12$\n\rinterruptible\x18\x01 \x01(\x08R\rinterruptible\"\xa2\x03\n\x10WorkflowTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\x08metadata\x18\x02 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowMetadataR\x08metadata\x12;\n\tinterface\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterface\x12)\n\x05nodes\x18\x04 \x03(\x0b\x32\x13.flyteidl.core.NodeR\x05nodes\x12\x30\n\x07outputs\x18\x05 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x07outputs\x12\x36\n\x0c\x66\x61ilure_node\x18\x06 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x0b\x66\x61ilureNode\x12T\n\x11metadata_defaults\x18\x07 \x01(\x0b\x32\'.flyteidl.core.WorkflowMetadataDefaultsR\x10metadataDefaults\"\xff\x01\n\x11TaskNodeOverrides\x12\x36\n\tresources\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.ResourcesR\tresources\x12O\n\x12\x65xtended_resources\x18\x02 \x01(\x0b\x32 .flyteidl.core.ExtendedResourcesR\x11\x65xtendedResources\x12\'\n\x0f\x63ontainer_image\x18\x03 \x01(\tR\x0e\x63ontainerImage\x12\x38\n\x0cpod_template\x18\x04 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x0bpodTemplate\"\xba\x01\n\x12LaunchPlanTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\tinterface\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterface\x12<\n\x0c\x66ixed_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x0b\x66ixedInputsB\xb3\x01\n\x11\x63om.flyteidl.coreB\rWorkflowProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/workflow.proto\x12\rflyteidl.core\x1a\x1d\x66lyteidl/core/condition.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x19\x66lyteidl/core/types.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\"{\n\x07IfBlock\x12>\n\tcondition\x18\x01 \x01(\x0b\x32 .flyteidl.core.BooleanExpressionR\tcondition\x12\x30\n\tthen_node\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x08thenNode\"\xd4\x01\n\x0bIfElseBlock\x12*\n\x04\x63\x61se\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.IfBlockR\x04\x63\x61se\x12,\n\x05other\x18\x02 \x03(\x0b\x32\x16.flyteidl.core.IfBlockR\x05other\x12\x32\n\telse_node\x18\x03 \x01(\x0b\x32\x13.flyteidl.core.NodeH\x00R\x08\x65lseNode\x12,\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rrorB\t\n\x07\x64\x65\x66\x61ult\"A\n\nBranchNode\x12\x33\n\x07if_else\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.IfElseBlockR\x06ifElse\"\x97\x01\n\x08TaskNode\x12>\n\x0creference_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0breferenceId\x12>\n\toverrides\x18\x02 \x01(\x0b\x32 .flyteidl.core.TaskNodeOverridesR\toverridesB\x0b\n\treference\"\xa6\x01\n\x0cWorkflowNode\x12\x42\n\x0elaunchplan_ref\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\rlaunchplanRef\x12\x45\n\x10sub_workflow_ref\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0esubWorkflowRefB\x0b\n\treference\"/\n\x10\x41pproveCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\"\x90\x01\n\x0fSignalCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\x12\x30\n\x14output_variable_name\x18\x03 \x01(\tR\x12outputVariableName\"G\n\x0eSleepCondition\x12\x35\n\x08\x64uration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\"\xc5\x01\n\x08GateNode\x12;\n\x07\x61pprove\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.ApproveConditionH\x00R\x07\x61pprove\x12\x38\n\x06signal\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.SignalConditionH\x00R\x06signal\x12\x35\n\x05sleep\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.SleepConditionH\x00R\x05sleepB\x0b\n\tcondition\"\x87\x05\n\tArrayNode\x12\'\n\x04node\x18\x01 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x04node\x12\"\n\x0bparallelism\x18\x02 \x01(\rH\x00R\x0bparallelism\x12%\n\rmin_successes\x18\x03 \x01(\rH\x01R\x0cminSuccesses\x12,\n\x11min_success_ratio\x18\x04 \x01(\x02H\x01R\x0fminSuccessRatio\x12M\n\x0e\x65xecution_mode\x18\x05 \x01(\x0e\x32&.flyteidl.core.ArrayNode.ExecutionModeR\rexecutionMode\x12^\n\x1eis_original_sub_node_interface\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x1aisOriginalSubNodeInterface\x12>\n\tdata_mode\x18\x07 \x01(\x0e\x32!.flyteidl.core.ArrayNode.DataModeR\x08\x64\x61taMode\x12!\n\x0c\x62ound_inputs\x18\x08 \x03(\tR\x0b\x62oundInputs\x12)\n\x11run_all_sub_nodes\x18\t \x01(\x08R\x0erunAllSubNodes\"2\n\rExecutionMode\x12\x11\n\rMINIMAL_STATE\x10\x00\x12\x0e\n\nFULL_STATE\x10\x01\"=\n\x08\x44\x61taMode\x12\x15\n\x11SINGLE_INPUT_FILE\x10\x00\x12\x1a\n\x16INDIVIDUAL_INPUT_FILES\x10\x01\x42\x14\n\x12parallelism_optionB\x12\n\x10success_criteria\"\x88\x04\n\x0cNodeMetadata\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x33\n\x07timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x07timeout\x12\x36\n\x07retries\x18\x05 \x01(\x0b\x32\x1c.flyteidl.core.RetryStrategyR\x07retries\x12&\n\rinterruptible\x18\x06 \x01(\x08H\x00R\rinterruptible\x12\x1e\n\tcacheable\x18\x07 \x01(\x08H\x01R\tcacheable\x12%\n\rcache_version\x18\x08 \x01(\tH\x02R\x0c\x63\x61\x63heVersion\x12/\n\x12\x63\x61\x63he_serializable\x18\t \x01(\x08H\x03R\x11\x63\x61\x63heSerializable\x12?\n\x06\x63onfig\x18\n \x03(\x0b\x32\'.flyteidl.core.NodeMetadata.ConfigEntryR\x06\x63onfig\x1a\x39\n\x0b\x43onfigEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x15\n\x13interruptible_valueB\x11\n\x0f\x63\x61\x63heable_valueB\x15\n\x13\x63\x61\x63he_version_valueB\x1a\n\x18\x63\x61\x63he_serializable_value\"/\n\x05\x41lias\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x14\n\x05\x61lias\x18\x02 \x01(\tR\x05\x61lias\"\x9f\x04\n\x04Node\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x37\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.NodeMetadataR\x08metadata\x12.\n\x06inputs\x18\x03 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x06inputs\x12*\n\x11upstream_node_ids\x18\x04 \x03(\tR\x0fupstreamNodeIds\x12;\n\x0eoutput_aliases\x18\x05 \x03(\x0b\x32\x14.flyteidl.core.AliasR\routputAliases\x12\x36\n\ttask_node\x18\x06 \x01(\x0b\x32\x17.flyteidl.core.TaskNodeH\x00R\x08taskNode\x12\x42\n\rworkflow_node\x18\x07 \x01(\x0b\x32\x1b.flyteidl.core.WorkflowNodeH\x00R\x0cworkflowNode\x12<\n\x0b\x62ranch_node\x18\x08 \x01(\x0b\x32\x19.flyteidl.core.BranchNodeH\x00R\nbranchNode\x12\x36\n\tgate_node\x18\t \x01(\x0b\x32\x17.flyteidl.core.GateNodeH\x00R\x08gateNode\x12\x39\n\narray_node\x18\n \x01(\x0b\x32\x18.flyteidl.core.ArrayNodeH\x00R\tarrayNodeB\x08\n\x06target\"\xfc\x02\n\x10WorkflowMetadata\x12M\n\x12quality_of_service\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceR\x10qualityOfService\x12N\n\non_failure\x18\x02 \x01(\x0e\x32/.flyteidl.core.WorkflowMetadata.OnFailurePolicyR\tonFailure\x12=\n\x04tags\x18\x03 \x03(\x0b\x32).flyteidl.core.WorkflowMetadata.TagsEntryR\x04tags\x1a\x37\n\tTagsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"Q\n\x0fOnFailurePolicy\x12\x14\n\x10\x46\x41IL_IMMEDIATELY\x10\x00\x12(\n$FAIL_AFTER_EXECUTABLE_NODES_COMPLETE\x10\x01\"@\n\x18WorkflowMetadataDefaults\x12$\n\rinterruptible\x18\x01 \x01(\x08R\rinterruptible\"\xa2\x03\n\x10WorkflowTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\x08metadata\x18\x02 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowMetadataR\x08metadata\x12;\n\tinterface\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterface\x12)\n\x05nodes\x18\x04 \x03(\x0b\x32\x13.flyteidl.core.NodeR\x05nodes\x12\x30\n\x07outputs\x18\x05 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x07outputs\x12\x36\n\x0c\x66\x61ilure_node\x18\x06 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x0b\x66\x61ilureNode\x12T\n\x11metadata_defaults\x18\x07 \x01(\x0b\x32\'.flyteidl.core.WorkflowMetadataDefaultsR\x10metadataDefaults\"\xff\x01\n\x11TaskNodeOverrides\x12\x36\n\tresources\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.ResourcesR\tresources\x12O\n\x12\x65xtended_resources\x18\x02 \x01(\x0b\x32 .flyteidl.core.ExtendedResourcesR\x11\x65xtendedResources\x12\'\n\x0f\x63ontainer_image\x18\x03 \x01(\tR\x0e\x63ontainerImage\x12\x38\n\x0cpod_template\x18\x04 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x0bpodTemplate\"\xba\x01\n\x12LaunchPlanTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\tinterface\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterface\x12<\n\x0c\x66ixed_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x0b\x66ixedInputsB\xb3\x01\n\x11\x63om.flyteidl.coreB\rWorkflowProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -55,31 +55,31 @@
_globals['_GATENODE']._serialized_start=1350
_globals['_GATENODE']._serialized_end=1547
_globals['_ARRAYNODE']._serialized_start=1550
- _globals['_ARRAYNODE']._serialized_end=2154
- _globals['_ARRAYNODE_EXECUTIONMODE']._serialized_start=1999
- _globals['_ARRAYNODE_EXECUTIONMODE']._serialized_end=2049
- _globals['_ARRAYNODE_DATAMODE']._serialized_start=2051
- _globals['_ARRAYNODE_DATAMODE']._serialized_end=2112
- _globals['_NODEMETADATA']._serialized_start=2157
- _globals['_NODEMETADATA']._serialized_end=2677
- _globals['_NODEMETADATA_CONFIGENTRY']._serialized_start=2527
- _globals['_NODEMETADATA_CONFIGENTRY']._serialized_end=2584
- _globals['_ALIAS']._serialized_start=2679
- _globals['_ALIAS']._serialized_end=2726
- _globals['_NODE']._serialized_start=2729
- _globals['_NODE']._serialized_end=3272
- _globals['_WORKFLOWMETADATA']._serialized_start=3275
- _globals['_WORKFLOWMETADATA']._serialized_end=3655
- _globals['_WORKFLOWMETADATA_TAGSENTRY']._serialized_start=3517
- _globals['_WORKFLOWMETADATA_TAGSENTRY']._serialized_end=3572
- _globals['_WORKFLOWMETADATA_ONFAILUREPOLICY']._serialized_start=3574
- _globals['_WORKFLOWMETADATA_ONFAILUREPOLICY']._serialized_end=3655
- _globals['_WORKFLOWMETADATADEFAULTS']._serialized_start=3657
- _globals['_WORKFLOWMETADATADEFAULTS']._serialized_end=3721
- _globals['_WORKFLOWTEMPLATE']._serialized_start=3724
- _globals['_WORKFLOWTEMPLATE']._serialized_end=4142
- _globals['_TASKNODEOVERRIDES']._serialized_start=4145
- _globals['_TASKNODEOVERRIDES']._serialized_end=4400
- _globals['_LAUNCHPLANTEMPLATE']._serialized_start=4403
- _globals['_LAUNCHPLANTEMPLATE']._serialized_end=4589
+ _globals['_ARRAYNODE']._serialized_end=2197
+ _globals['_ARRAYNODE_EXECUTIONMODE']._serialized_start=2042
+ _globals['_ARRAYNODE_EXECUTIONMODE']._serialized_end=2092
+ _globals['_ARRAYNODE_DATAMODE']._serialized_start=2094
+ _globals['_ARRAYNODE_DATAMODE']._serialized_end=2155
+ _globals['_NODEMETADATA']._serialized_start=2200
+ _globals['_NODEMETADATA']._serialized_end=2720
+ _globals['_NODEMETADATA_CONFIGENTRY']._serialized_start=2570
+ _globals['_NODEMETADATA_CONFIGENTRY']._serialized_end=2627
+ _globals['_ALIAS']._serialized_start=2722
+ _globals['_ALIAS']._serialized_end=2769
+ _globals['_NODE']._serialized_start=2772
+ _globals['_NODE']._serialized_end=3315
+ _globals['_WORKFLOWMETADATA']._serialized_start=3318
+ _globals['_WORKFLOWMETADATA']._serialized_end=3698
+ _globals['_WORKFLOWMETADATA_TAGSENTRY']._serialized_start=3560
+ _globals['_WORKFLOWMETADATA_TAGSENTRY']._serialized_end=3615
+ _globals['_WORKFLOWMETADATA_ONFAILUREPOLICY']._serialized_start=3617
+ _globals['_WORKFLOWMETADATA_ONFAILUREPOLICY']._serialized_end=3698
+ _globals['_WORKFLOWMETADATADEFAULTS']._serialized_start=3700
+ _globals['_WORKFLOWMETADATADEFAULTS']._serialized_end=3764
+ _globals['_WORKFLOWTEMPLATE']._serialized_start=3767
+ _globals['_WORKFLOWTEMPLATE']._serialized_end=4185
+ _globals['_TASKNODEOVERRIDES']._serialized_start=4188
+ _globals['_TASKNODEOVERRIDES']._serialized_end=4443
+ _globals['_LAUNCHPLANTEMPLATE']._serialized_start=4446
+ _globals['_LAUNCHPLANTEMPLATE']._serialized_end=4632
# @@protoc_insertion_point(module_scope)
diff --git a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi
index 6ada639928d..c0cfda6058a 100644
--- a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi
+++ b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi
@@ -91,7 +91,7 @@ class GateNode(_message.Message):
def __init__(self, approve: _Optional[_Union[ApproveCondition, _Mapping]] = ..., signal: _Optional[_Union[SignalCondition, _Mapping]] = ..., sleep: _Optional[_Union[SleepCondition, _Mapping]] = ...) -> None: ...
class ArrayNode(_message.Message):
- __slots__ = ["node", "parallelism", "min_successes", "min_success_ratio", "execution_mode", "is_original_sub_node_interface", "data_mode", "bound_inputs"]
+ __slots__ = ["node", "parallelism", "min_successes", "min_success_ratio", "execution_mode", "is_original_sub_node_interface", "data_mode", "bound_inputs", "run_all_sub_nodes"]
class ExecutionMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
MINIMAL_STATE: _ClassVar[ArrayNode.ExecutionMode]
@@ -112,6 +112,7 @@ class ArrayNode(_message.Message):
IS_ORIGINAL_SUB_NODE_INTERFACE_FIELD_NUMBER: _ClassVar[int]
DATA_MODE_FIELD_NUMBER: _ClassVar[int]
BOUND_INPUTS_FIELD_NUMBER: _ClassVar[int]
+ RUN_ALL_SUB_NODES_FIELD_NUMBER: _ClassVar[int]
node: Node
parallelism: int
min_successes: int
@@ -120,7 +121,8 @@ class ArrayNode(_message.Message):
is_original_sub_node_interface: _wrappers_pb2.BoolValue
data_mode: ArrayNode.DataMode
bound_inputs: _containers.RepeatedScalarFieldContainer[str]
- def __init__(self, node: _Optional[_Union[Node, _Mapping]] = ..., parallelism: _Optional[int] = ..., min_successes: _Optional[int] = ..., min_success_ratio: _Optional[float] = ..., execution_mode: _Optional[_Union[ArrayNode.ExecutionMode, str]] = ..., is_original_sub_node_interface: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., data_mode: _Optional[_Union[ArrayNode.DataMode, str]] = ..., bound_inputs: _Optional[_Iterable[str]] = ...) -> None: ...
+ run_all_sub_nodes: bool
+ def __init__(self, node: _Optional[_Union[Node, _Mapping]] = ..., parallelism: _Optional[int] = ..., min_successes: _Optional[int] = ..., min_success_ratio: _Optional[float] = ..., execution_mode: _Optional[_Union[ArrayNode.ExecutionMode, str]] = ..., is_original_sub_node_interface: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., data_mode: _Optional[_Union[ArrayNode.DataMode, str]] = ..., bound_inputs: _Optional[_Iterable[str]] = ..., run_all_sub_nodes: bool = ...) -> None: ...
class NodeMetadata(_message.Message):
__slots__ = ["name", "timeout", "retries", "interruptible", "cacheable", "cache_version", "cache_serializable", "config"]
diff --git a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py
index c625fd957b6..b1df12499f5 100644
--- a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py
+++ b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py
@@ -12,9 +12,10 @@
from flyteidl.core import tasks_pb2 as flyteidl_dot_core_dot_tasks__pb2
+from flyteidl.core import literals_pb2 as flyteidl_dot_core_dot_literals__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/plugins/ray.proto\x12\x10\x66lyteidl.plugins\x1a\x19\x66lyteidl/core/tasks.proto\"\x92\x02\n\x06RayJob\x12=\n\x0bray_cluster\x18\x01 \x01(\x0b\x32\x1c.flyteidl.plugins.RayClusterR\nrayCluster\x12#\n\x0bruntime_env\x18\x02 \x01(\tB\x02\x18\x01R\nruntimeEnv\x12=\n\x1bshutdown_after_job_finishes\x18\x03 \x01(\x08R\x18shutdownAfterJobFinishes\x12;\n\x1attl_seconds_after_finished\x18\x04 \x01(\x05R\x17ttlSecondsAfterFinished\x12(\n\x10runtime_env_yaml\x18\x05 \x01(\tR\x0eruntimeEnvYaml\"\xd3\x01\n\nRayCluster\x12G\n\x0fhead_group_spec\x18\x01 \x01(\x0b\x32\x1f.flyteidl.plugins.HeadGroupSpecR\rheadGroupSpec\x12M\n\x11worker_group_spec\x18\x02 \x03(\x0b\x32!.flyteidl.plugins.WorkerGroupSpecR\x0fworkerGroupSpec\x12-\n\x12\x65nable_autoscaling\x18\x03 \x01(\x08R\x11\x65nableAutoscaling\"\xe1\x01\n\rHeadGroupSpec\x12]\n\x10ray_start_params\x18\x01 \x03(\x0b\x32\x33.flyteidl.plugins.HeadGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x02 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xe6\x02\n\x0fWorkerGroupSpec\x12\x1d\n\ngroup_name\x18\x01 \x01(\tR\tgroupName\x12\x1a\n\x08replicas\x18\x02 \x01(\x05R\x08replicas\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12!\n\x0cmax_replicas\x18\x04 \x01(\x05R\x0bmaxReplicas\x12_\n\x10ray_start_params\x18\x05 \x03(\x0b\x32\x35.flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x06 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\xc0\x01\n\x14\x63om.flyteidl.pluginsB\x08RayProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\xa2\x02\x03\x46PX\xaa\x02\x10\x46lyteidl.Plugins\xca\x02\x10\x46lyteidl\\Plugins\xe2\x02\x1c\x46lyteidl\\Plugins\\GPBMetadata\xea\x02\x11\x46lyteidl::Pluginsb\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/plugins/ray.proto\x12\x10\x66lyteidl.plugins\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x1c\x66lyteidl/core/literals.proto\"\x92\x02\n\x06RayJob\x12=\n\x0bray_cluster\x18\x01 \x01(\x0b\x32\x1c.flyteidl.plugins.RayClusterR\nrayCluster\x12#\n\x0bruntime_env\x18\x02 \x01(\tB\x02\x18\x01R\nruntimeEnv\x12=\n\x1bshutdown_after_job_finishes\x18\x03 \x01(\x08R\x18shutdownAfterJobFinishes\x12;\n\x1attl_seconds_after_finished\x18\x04 \x01(\x05R\x17ttlSecondsAfterFinished\x12(\n\x10runtime_env_yaml\x18\x05 \x01(\tR\x0eruntimeEnvYaml\"\xaa\x03\n\x11\x41utoscalerOptions\x12X\n\x0eupscaling_mode\x18\x01 \x01(\x0e\x32\x31.flyteidl.plugins.AutoscalerOptions.UpscalingModeR\rupscalingMode\x12\x30\n\x14idle_timeout_seconds\x18\x02 \x01(\x05R\x12idleTimeoutSeconds\x12-\n\x03\x65nv\x18\x03 \x03(\x0b\x32\x1b.flyteidl.core.KeyValuePairR\x03\x65nv\x12\x14\n\x05image\x18\x04 \x01(\tR\x05image\x12\x36\n\tresources\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.ResourcesR\tresources\"\x8b\x01\n\rUpscalingMode\x12\x1e\n\x1aUPSCALING_MODE_UNSPECIFIED\x10\x00\x12\x1a\n\x16UPSCALING_MODE_DEFAULT\x10\x01\x12\x1d\n\x19UPSCALING_MODE_AGGRESSIVE\x10\x02\x12\x1f\n\x1bUPSCALING_MODE_CONSERVATIVE\x10\x03\"\xa7\x02\n\nRayCluster\x12G\n\x0fhead_group_spec\x18\x01 \x01(\x0b\x32\x1f.flyteidl.plugins.HeadGroupSpecR\rheadGroupSpec\x12M\n\x11worker_group_spec\x18\x02 \x03(\x0b\x32!.flyteidl.plugins.WorkerGroupSpecR\x0fworkerGroupSpec\x12-\n\x12\x65nable_autoscaling\x18\x03 \x01(\x08R\x11\x65nableAutoscaling\x12R\n\x12\x61utoscaler_options\x18\x04 \x01(\x0b\x32#.flyteidl.plugins.AutoscalerOptionsR\x11\x61utoscalerOptions\"\xe1\x01\n\rHeadGroupSpec\x12]\n\x10ray_start_params\x18\x01 \x03(\x0b\x32\x33.flyteidl.plugins.HeadGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x02 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xe6\x02\n\x0fWorkerGroupSpec\x12\x1d\n\ngroup_name\x18\x01 \x01(\tR\tgroupName\x12\x1a\n\x08replicas\x18\x02 \x01(\x05R\x08replicas\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12!\n\x0cmax_replicas\x18\x04 \x01(\x05R\x0bmaxReplicas\x12_\n\x10ray_start_params\x18\x05 \x03(\x0b\x32\x35.flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x06 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\xc0\x01\n\x14\x63om.flyteidl.pluginsB\x08RayProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\xa2\x02\x03\x46PX\xaa\x02\x10\x46lyteidl.Plugins\xca\x02\x10\x46lyteidl\\Plugins\xe2\x02\x1c\x46lyteidl\\Plugins\\GPBMetadata\xea\x02\x11\x46lyteidl::Pluginsb\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -29,16 +30,20 @@
_HEADGROUPSPEC_RAYSTARTPARAMSENTRY._serialized_options = b'8\001'
_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY._options = None
_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY._serialized_options = b'8\001'
- _globals['_RAYJOB']._serialized_start=76
- _globals['_RAYJOB']._serialized_end=350
- _globals['_RAYCLUSTER']._serialized_start=353
- _globals['_RAYCLUSTER']._serialized_end=564
- _globals['_HEADGROUPSPEC']._serialized_start=567
- _globals['_HEADGROUPSPEC']._serialized_end=792
- _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=727
- _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=792
- _globals['_WORKERGROUPSPEC']._serialized_start=795
- _globals['_WORKERGROUPSPEC']._serialized_end=1153
- _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=727
- _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=792
+ _globals['_RAYJOB']._serialized_start=106
+ _globals['_RAYJOB']._serialized_end=380
+ _globals['_AUTOSCALEROPTIONS']._serialized_start=383
+ _globals['_AUTOSCALEROPTIONS']._serialized_end=809
+ _globals['_AUTOSCALEROPTIONS_UPSCALINGMODE']._serialized_start=670
+ _globals['_AUTOSCALEROPTIONS_UPSCALINGMODE']._serialized_end=809
+ _globals['_RAYCLUSTER']._serialized_start=812
+ _globals['_RAYCLUSTER']._serialized_end=1107
+ _globals['_HEADGROUPSPEC']._serialized_start=1110
+ _globals['_HEADGROUPSPEC']._serialized_end=1335
+ _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1270
+ _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1335
+ _globals['_WORKERGROUPSPEC']._serialized_start=1338
+ _globals['_WORKERGROUPSPEC']._serialized_end=1696
+ _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1270
+ _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1335
# @@protoc_insertion_point(module_scope)
diff --git a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi
index 239e2fbc1ac..9846b4e0e75 100644
--- a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi
+++ b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi
@@ -1,5 +1,7 @@
from flyteidl.core import tasks_pb2 as _tasks_pb2
+from flyteidl.core import literals_pb2 as _literals_pb2
from google.protobuf.internal import containers as _containers
+from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
@@ -20,15 +22,41 @@ class RayJob(_message.Message):
runtime_env_yaml: str
def __init__(self, ray_cluster: _Optional[_Union[RayCluster, _Mapping]] = ..., runtime_env: _Optional[str] = ..., shutdown_after_job_finishes: bool = ..., ttl_seconds_after_finished: _Optional[int] = ..., runtime_env_yaml: _Optional[str] = ...) -> None: ...
+class AutoscalerOptions(_message.Message):
+ __slots__ = ["upscaling_mode", "idle_timeout_seconds", "env", "image", "resources"]
+ class UpscalingMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
+ __slots__ = []
+ UPSCALING_MODE_UNSPECIFIED: _ClassVar[AutoscalerOptions.UpscalingMode]
+ UPSCALING_MODE_DEFAULT: _ClassVar[AutoscalerOptions.UpscalingMode]
+ UPSCALING_MODE_AGGRESSIVE: _ClassVar[AutoscalerOptions.UpscalingMode]
+ UPSCALING_MODE_CONSERVATIVE: _ClassVar[AutoscalerOptions.UpscalingMode]
+ UPSCALING_MODE_UNSPECIFIED: AutoscalerOptions.UpscalingMode
+ UPSCALING_MODE_DEFAULT: AutoscalerOptions.UpscalingMode
+ UPSCALING_MODE_AGGRESSIVE: AutoscalerOptions.UpscalingMode
+ UPSCALING_MODE_CONSERVATIVE: AutoscalerOptions.UpscalingMode
+ UPSCALING_MODE_FIELD_NUMBER: _ClassVar[int]
+ IDLE_TIMEOUT_SECONDS_FIELD_NUMBER: _ClassVar[int]
+ ENV_FIELD_NUMBER: _ClassVar[int]
+ IMAGE_FIELD_NUMBER: _ClassVar[int]
+ RESOURCES_FIELD_NUMBER: _ClassVar[int]
+ upscaling_mode: AutoscalerOptions.UpscalingMode
+ idle_timeout_seconds: int
+ env: _containers.RepeatedCompositeFieldContainer[_literals_pb2.KeyValuePair]
+ image: str
+ resources: _tasks_pb2.Resources
+ def __init__(self, upscaling_mode: _Optional[_Union[AutoscalerOptions.UpscalingMode, str]] = ..., idle_timeout_seconds: _Optional[int] = ..., env: _Optional[_Iterable[_Union[_literals_pb2.KeyValuePair, _Mapping]]] = ..., image: _Optional[str] = ..., resources: _Optional[_Union[_tasks_pb2.Resources, _Mapping]] = ...) -> None: ...
+
class RayCluster(_message.Message):
- __slots__ = ["head_group_spec", "worker_group_spec", "enable_autoscaling"]
+ __slots__ = ["head_group_spec", "worker_group_spec", "enable_autoscaling", "autoscaler_options"]
HEAD_GROUP_SPEC_FIELD_NUMBER: _ClassVar[int]
WORKER_GROUP_SPEC_FIELD_NUMBER: _ClassVar[int]
ENABLE_AUTOSCALING_FIELD_NUMBER: _ClassVar[int]
+ AUTOSCALER_OPTIONS_FIELD_NUMBER: _ClassVar[int]
head_group_spec: HeadGroupSpec
worker_group_spec: _containers.RepeatedCompositeFieldContainer[WorkerGroupSpec]
enable_autoscaling: bool
- def __init__(self, head_group_spec: _Optional[_Union[HeadGroupSpec, _Mapping]] = ..., worker_group_spec: _Optional[_Iterable[_Union[WorkerGroupSpec, _Mapping]]] = ..., enable_autoscaling: bool = ...) -> None: ...
+ autoscaler_options: AutoscalerOptions
+ def __init__(self, head_group_spec: _Optional[_Union[HeadGroupSpec, _Mapping]] = ..., worker_group_spec: _Optional[_Iterable[_Union[WorkerGroupSpec, _Mapping]]] = ..., enable_autoscaling: bool = ..., autoscaler_options: _Optional[_Union[AutoscalerOptions, _Mapping]] = ...) -> None: ...
class HeadGroupSpec(_message.Message):
__slots__ = ["ray_start_params", "k8s_pod"]
diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs
index 4975baeb564..f3163496bd4 100644
--- a/flyteidl/gen/pb_rust/flyteidl.core.rs
+++ b/flyteidl/gen/pb_rust/flyteidl.core.rs
@@ -2540,6 +2540,12 @@ pub struct ArrayNode {
/// +optional. Specifies input bindings that are not mapped over for the node.
#[prost(string, repeated, tag="8")]
pub bound_inputs: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ /// +optional. If set to true, the ArrayNode will continue to run all sub-nodes even after the
+ /// failure threshold has been met (i.e. it is no longer possible to meet min_successes or
+ /// min_success_ratio). This is useful when you want to ensure all sub-nodes complete execution
+ /// even if the overall array node will fail.
+ #[prost(bool, tag="9")]
+ pub run_all_sub_nodes: bool,
#[prost(oneof="array_node::ParallelismOption", tags="2")]
pub parallelism_option: ::core::option::Option,
#[prost(oneof="array_node::SuccessCriteria", tags="3, 4")]
diff --git a/flyteidl/gen/pb_rust/flyteidl.plugins.rs b/flyteidl/gen/pb_rust/flyteidl.plugins.rs
index 16589b3e60c..e118930748f 100644
--- a/flyteidl/gen/pb_rust/flyteidl.plugins.rs
+++ b/flyteidl/gen/pb_rust/flyteidl.plugins.rs
@@ -233,6 +233,58 @@ pub struct RayJob {
#[prost(string, tag="5")]
pub runtime_env_yaml: ::prost::alloc::string::String,
}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct AutoscalerOptions {
+ #[prost(enumeration="autoscaler_options::UpscalingMode", tag="1")]
+ pub upscaling_mode: i32,
+ #[prost(int32, tag="2")]
+ pub idle_timeout_seconds: i32,
+ /// autoscaler sidecar env vars
+ #[prost(message, repeated, tag="3")]
+ pub env: ::prost::alloc::vec::Vec,
+ /// custom autoscaler image
+ #[prost(string, tag="4")]
+ pub image: ::prost::alloc::string::String,
+ /// autoscaler container resources
+ #[prost(message, optional, tag="5")]
+ pub resources: ::core::option::Option,
+}
+/// Nested message and enum types in `AutoscalerOptions`.
+pub mod autoscaler_options {
+ #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
+ #[repr(i32)]
+ pub enum UpscalingMode {
+ Unspecified = 0,
+ Default = 1,
+ Aggressive = 2,
+ Conservative = 3,
+ }
+ impl UpscalingMode {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ UpscalingMode::Unspecified => "UPSCALING_MODE_UNSPECIFIED",
+ UpscalingMode::Default => "UPSCALING_MODE_DEFAULT",
+ UpscalingMode::Aggressive => "UPSCALING_MODE_AGGRESSIVE",
+ UpscalingMode::Conservative => "UPSCALING_MODE_CONSERVATIVE",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option {
+ match value {
+ "UPSCALING_MODE_UNSPECIFIED" => Some(Self::Unspecified),
+ "UPSCALING_MODE_DEFAULT" => Some(Self::Default),
+ "UPSCALING_MODE_AGGRESSIVE" => Some(Self::Aggressive),
+ "UPSCALING_MODE_CONSERVATIVE" => Some(Self::Conservative),
+ _ => None,
+ }
+ }
+ }
+}
/// Define Ray cluster defines the desired state of RayCluster
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
@@ -246,6 +298,8 @@ pub struct RayCluster {
/// Whether to enable autoscaling.
#[prost(bool, tag="3")]
pub enable_autoscaling: bool,
+ #[prost(message, optional, tag="4")]
+ pub autoscaler_options: ::core::option::Option,
}
/// HeadGroupSpec are the spec for the head pod
#[allow(clippy::derive_partial_eq_without_eq)]
diff --git a/flyteidl/go.mod b/flyteidl/go.mod
index cabf826dbc0..63cefc47517 100644
--- a/flyteidl/go.mod
+++ b/flyteidl/go.mod
@@ -1,35 +1,34 @@
module github.com/flyteorg/flyte/flyteidl
-go 1.22
+go 1.26.0
require (
github.com/flyteorg/flyte/flytestdlib v0.0.0-00010101000000-000000000000
github.com/go-test/deep v1.0.7
+ github.com/go-viper/mapstructure/v2 v2.4.0
github.com/golang-jwt/jwt/v5 v5.2.2
- github.com/golang/protobuf v1.5.3
+ github.com/golang/protobuf v1.5.4
github.com/grpc-ecosystem/go-grpc-middleware v1.1.0
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0
github.com/jinzhu/copier v0.3.5
- github.com/mitchellh/mapstructure v1.5.0
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
github.com/pkg/errors v0.9.1
github.com/shamaton/msgpack/v2 v2.2.2
- github.com/spf13/pflag v1.0.5
- github.com/stretchr/testify v1.9.0
- golang.org/x/net v0.33.0
- golang.org/x/oauth2 v0.18.0
- google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80
- google.golang.org/grpc v1.62.1
- google.golang.org/protobuf v1.34.1
- k8s.io/apimachinery v0.28.2
- k8s.io/client-go v0.28.1
+ github.com/spf13/pflag v1.0.10
+ github.com/stretchr/testify v1.11.1
+ golang.org/x/net v0.52.0
+ golang.org/x/oauth2 v0.35.0
+ google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9
+ google.golang.org/grpc v1.80.0
+ google.golang.org/protobuf v1.36.11
+ k8s.io/apimachinery v0.34.1
+ k8s.io/client-go v0.34.1
)
require (
cloud.google.com/go v0.112.0 // indirect
- cloud.google.com/go/compute v1.23.3 // indirect
- cloud.google.com/go/compute/metadata v0.2.3 // indirect
+ cloud.google.com/go/compute/metadata v0.9.0 // indirect
cloud.google.com/go/iam v1.1.5 // indirect
cloud.google.com/go/storage v1.36.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 // indirect
@@ -39,27 +38,28 @@ require (
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
github.com/aws/aws-sdk-go v1.47.11 // indirect
github.com/beorn7/perks v1.0.1 // indirect
- github.com/cenkalti/backoff/v4 v4.2.1 // indirect
+ github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/coocood/freecache v1.1.1 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/emicklei/go-restful/v3 v3.9.0 // indirect
- github.com/evanphx/json-patch/v5 v5.6.0 // indirect
+ github.com/emicklei/go-restful/v3 v3.12.2 // indirect
+ github.com/evanphx/json-patch/v5 v5.9.11 // indirect
github.com/fatih/color v1.13.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/flyteorg/stow v0.3.11 // indirect
+ github.com/flyteorg/stow v0.3.12 // indirect
+ github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/ghodss/yaml v1.0.0 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
+ github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
- github.com/go-openapi/jsonpointer v0.19.6 // indirect
+ github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.20.2 // indirect
- github.com/go-openapi/swag v0.22.3 // indirect
+ github.com/go-openapi/swag v0.23.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/google/gnostic-models v0.6.8 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
+ github.com/google/gnostic-models v0.7.0 // indirect
+ github.com/google/go-cmp v0.7.0 // indirect
github.com/google/s2a-go v0.1.7 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
@@ -73,52 +73,55 @@ require (
github.com/mattn/go-colorable v0.1.12 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/ncw/swift v1.0.53 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/prometheus/client_golang v1.19.1 // indirect
+ github.com/prometheus/client_golang v1.22.0 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
- github.com/prometheus/common v0.53.0 // indirect
+ github.com/prometheus/common v0.62.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
- github.com/spf13/cobra v1.7.0 // indirect
+ github.com/spf13/cobra v1.9.1 // indirect
github.com/stretchr/objx v0.5.2 // indirect
+ github.com/x448/float16 v0.8.4 // indirect
go.opencensus.io v0.24.0 // indirect
+ go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
- go.opentelemetry.io/otel v1.24.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect
+ go.opentelemetry.io/otel v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 // indirect
- go.opentelemetry.io/otel/metric v1.24.0 // indirect
- go.opentelemetry.io/otel/sdk v1.24.0 // indirect
- go.opentelemetry.io/otel/trace v1.24.0 // indirect
- go.opentelemetry.io/proto/otlp v1.1.0 // indirect
- golang.org/x/crypto v0.31.0 // indirect
- golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
- golang.org/x/sync v0.10.0 // indirect
- golang.org/x/sys v0.28.0 // indirect
- golang.org/x/term v0.27.0 // indirect
- golang.org/x/text v0.21.0 // indirect
- golang.org/x/time v0.5.0 // indirect
+ go.opentelemetry.io/otel/metric v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.43.0 // indirect
+ go.opentelemetry.io/otel/trace v1.43.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.10.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.49.0 // indirect
+ golang.org/x/sync v0.20.0 // indirect
+ golang.org/x/sys v0.42.0 // indirect
+ golang.org/x/term v0.41.0 // indirect
+ golang.org/x/text v0.35.0 // indirect
+ golang.org/x/time v0.9.0 // indirect
google.golang.org/api v0.155.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- k8s.io/api v0.28.2 // indirect
- k8s.io/klog/v2 v2.100.1 // indirect
- k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect
- k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 // indirect
- sigs.k8s.io/controller-runtime v0.0.0-00010101000000-000000000000 // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
- sigs.k8s.io/yaml v1.3.0 // indirect
+ k8s.io/api v0.34.1 // indirect
+ k8s.io/klog/v2 v2.130.1 // indirect
+ k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
+ k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect
+ sigs.k8s.io/controller-runtime v0.22.4 // indirect
+ sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
+ sigs.k8s.io/randfill v1.0.0 // indirect
+ sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
+ sigs.k8s.io/yaml v1.6.0 // indirect
)
// These 2 versions were wrongly published.
@@ -127,15 +130,4 @@ retract (
v1.4.0
)
-replace (
- github.com/flyteorg/flyte/datacatalog => ../datacatalog
- github.com/flyteorg/flyte/flyteadmin => ../flyteadmin
- github.com/flyteorg/flyte/flyteidl => ../flyteidl
- github.com/flyteorg/flyte/flyteplugins => ../flyteplugins
- github.com/flyteorg/flyte/flytepropeller => ../flytepropeller
- github.com/flyteorg/flyte/flytestdlib => ../flytestdlib
- k8s.io/api => k8s.io/api v0.28.2
- k8s.io/apimachinery => k8s.io/apimachinery v0.28.2
- k8s.io/client-go => k8s.io/client-go v0.28.2
- sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.16.2
-)
+replace github.com/flyteorg/flyte/flytestdlib => ../flytestdlib
diff --git a/flyteidl/go.sum b/flyteidl/go.sum
index 5d043fcc845..14fba14ce3c 100644
--- a/flyteidl/go.sum
+++ b/flyteidl/go.sum
@@ -1,10 +1,8 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM=
cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4=
-cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=
-cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI=
-cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
-cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
+cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
+cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI=
cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8=
cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8=
@@ -28,8 +26,10 @@ github.com/aws/aws-sdk-go v1.47.11 h1:Dol+MA+hQblbnXUI3Vk9qvoekU6O1uDEuAItezjiWN
github.com/aws/aws-sdk-go v1.47.11/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
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/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
-github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+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 v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
@@ -39,53 +39,61 @@ github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927 h1:SKI1/fuSdodxmNNyV
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
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/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
github.com/coocood/freecache v1.1.1 h1:uukNF7QKCZEdZ9gAV7WQzvh0SbjwdMF6m3x3rxEkaPc=
github.com/coocood/freecache v1.1.1/go.mod h1:OKrEjkGVoxZhyWAJoeFi5BMLUJm2Tit0kpGkIr7NGYY=
-github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE=
-github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU=
+github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/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.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
+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.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
-github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
-github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww=
-github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4=
+github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=
+github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
+github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
+github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/flyteorg/stow v0.3.11 h1:Uf4fzVbghCqMNvx50XvYzwdNeQDBSKQJ7zddWu7p3eI=
-github.com/flyteorg/stow v0.3.11/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
-github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
-github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
+github.com/flyteorg/stow v0.3.12 h1:RRXI5RUdxaK6A46HrO0D2r14cRlW1lJRL6qyzqpVMPU=
+github.com/flyteorg/stow v0.3.12/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
+github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
+github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
+github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+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-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo=
-github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA=
-github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
+github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
+github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
+github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
+github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
-github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/go-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-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
+github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
+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/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
@@ -105,28 +113,25 @@ 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.3/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.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
-github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
-github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
+github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
+github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
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.3/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.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-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/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/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=
github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
+github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -140,13 +145,10 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdR
github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE=
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/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
-github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28=
-github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg=
github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
@@ -180,40 +182,41 @@ github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
-github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
-github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/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 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/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/ncw/swift v1.0.53 h1:luHjjTNtekIEvHg5KdAFIBaH7bWfNkefwFnpDffSIks=
github.com/ncw/swift v1.0.53/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM=
-github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU=
-github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM=
-github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
-github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
+github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg=
+github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
+github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw=
+github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
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 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
-github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
+github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
+github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE=
-github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U=
+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/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+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/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/shamaton/msgpack/v2 v2.2.2 h1:GOIg0c9LV04VwzOOqZSrmsv/JzjNOOMxnS/HvOHGdgs=
github.com/shamaton/msgpack/v2 v2.2.2/go.mod h1:6khjYnkx73f7VQU7wjcFS9DFjs+59naVWJv1TB7qdOI=
@@ -222,10 +225,11 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
-github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
-github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
+github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
+github.com/spf13/pflag v1.0.6/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/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=
@@ -239,37 +243,42 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+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/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
+github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
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.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
+go.opentelemetry.io/auto/sdk v1.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.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
-go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
-go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q=
+go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
+go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 h1:zr8ymM5OWWjjiWRzwTfZ67c905+2TMHYp2lMJ52QTyM=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0/go.mod h1:sQs7FT2iLVJ+67vYngGJkPe1qr39IzaBzaj9IDNNY8k=
-go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
-go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
-go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
-go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
-go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
-go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI=
-go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY=
+go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
+go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
+go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
+go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
+go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
+go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
+go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
+go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
+go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=
+go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
@@ -277,23 +286,23 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/
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.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c=
-go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk=
+go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
+go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
+go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
+go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v3 v3.0.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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
-golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
+golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
+golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
-golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
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/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.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
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-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -303,21 +312,18 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/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-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
-golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
+golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
-golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
+golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
+golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
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-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-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
-golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
+golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -325,28 +331,20 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w
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-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-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-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
-golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
-golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
+golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
+golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=
+golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=
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.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
+golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
+golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
+golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -356,9 +354,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
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.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
+golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=
+golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
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=
@@ -367,28 +364,28 @@ golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3j
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
+gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
+gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA=
google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk=
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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
-google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 h1:VPWxll4HlMw1Vs/qXtN7BvhZqsS9cdAittCNvVENElA=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
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.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
-google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
+google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM=
+google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4=
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=
@@ -398,13 +395,13 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.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.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
-google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+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/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4=
+gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
@@ -416,27 +413,27 @@ 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/api v0.28.2 h1:9mpl5mOb6vXZvqbQmankOfPIGiudghwCoLl1EYfUZbw=
-k8s.io/api v0.28.2/go.mod h1:RVnJBsjU8tcMq7C3iaRSGMeaKt2TWEUXcpIt/90fjEg=
-k8s.io/apiextensions-apiserver v0.28.0 h1:CszgmBL8CizEnj4sj7/PtLGey6Na3YgWyGCPONv7E9E=
-k8s.io/apiextensions-apiserver v0.28.0/go.mod h1:uRdYiwIuu0SyqJKriKmqEN2jThIJPhVmOWETm8ud1VE=
-k8s.io/apimachinery v0.28.2 h1:KCOJLrc6gu+wV1BYgwik4AF4vXOlVJPdiqn0yAWWwXQ=
-k8s.io/apimachinery v0.28.2/go.mod h1:RdzF87y/ngqk9H4z3EL2Rppv5jj95vGS/HaFXrLDApU=
-k8s.io/client-go v0.28.2 h1:DNoYI1vGq0slMBN/SWKMZMw0Rq+0EQW6/AK4v9+3VeY=
-k8s.io/client-go v0.28.2/go.mod h1:sMkApowspLuc7omj1FOSUxSoqjr+d5Q0Yc0LOFnYFJY=
-k8s.io/component-base v0.28.1 h1:LA4AujMlK2mr0tZbQDZkjWbdhTV5bRyEyAFe0TJxlWg=
-k8s.io/component-base v0.28.1/go.mod h1:jI11OyhbX21Qtbav7JkhehyBsIRfnO8oEgoAR12ArIU=
-k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
-k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
-k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ=
-k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM=
-k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk=
-k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU=
-sigs.k8s.io/controller-runtime v0.16.2/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
-sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
-sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
+k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
+k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
+k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI=
+k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc=
+k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4=
+k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
+k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY=
+k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8=
+k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
+k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
+k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA=
+k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
+k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y=
+k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A=
+sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
+sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
+sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
diff --git a/flyteidl/protos/flyteidl/core/workflow.proto b/flyteidl/protos/flyteidl/core/workflow.proto
index ba0fcab7589..f2e45e05d4d 100644
--- a/flyteidl/protos/flyteidl/core/workflow.proto
+++ b/flyteidl/protos/flyteidl/core/workflow.proto
@@ -170,6 +170,12 @@ message ArrayNode {
//+optional. Specifies input bindings that are not mapped over for the node.
repeated string bound_inputs = 8;
+
+ // +optional. If set to true, the ArrayNode will continue to run all sub-nodes even after the
+ // failure threshold has been met (i.e. it is no longer possible to meet min_successes or
+ // min_success_ratio). This is useful when you want to ensure all sub-nodes complete execution
+ // even if the overall array node will fail.
+ bool run_all_sub_nodes = 9;
}
// Defines extra information about the Node.
diff --git a/flyteidl/protos/flyteidl/plugins/ray.proto b/flyteidl/protos/flyteidl/plugins/ray.proto
index 749444ee049..d5c969f6873 100644
--- a/flyteidl/protos/flyteidl/plugins/ray.proto
+++ b/flyteidl/protos/flyteidl/plugins/ray.proto
@@ -5,6 +5,7 @@ package flyteidl.plugins;
option go_package = "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins";
import "flyteidl/core/tasks.proto";
+import "flyteidl/core/literals.proto";
// RayJobSpec defines the desired state of RayJob
message RayJob {
@@ -22,6 +23,23 @@ message RayJob {
string runtime_env_yaml = 5;
}
+message AutoscalerOptions {
+ enum UpscalingMode {
+ UPSCALING_MODE_UNSPECIFIED = 0;
+ UPSCALING_MODE_DEFAULT = 1;
+ UPSCALING_MODE_AGGRESSIVE = 2;
+ UPSCALING_MODE_CONSERVATIVE = 3;
+ }
+ UpscalingMode upscaling_mode = 1;
+ int32 idle_timeout_seconds = 2;
+ // autoscaler sidecar env vars
+ repeated core.KeyValuePair env = 3;
+ // custom autoscaler image
+ string image = 4;
+ // autoscaler container resources
+ core.Resources resources = 5;
+}
+
// Define Ray cluster defines the desired state of RayCluster
message RayCluster {
// HeadGroupSpecs are the spec for the head pod
@@ -30,6 +48,7 @@ message RayCluster {
repeated WorkerGroupSpec worker_group_spec = 2;
// Whether to enable autoscaling.
bool enable_autoscaling = 3;
+ AutoscalerOptions autoscaler_options = 4;
}
// HeadGroupSpec are the spec for the head pod
diff --git a/flyteidl/pyproject.toml b/flyteidl/pyproject.toml
index 2274b1da2f5..4766699c83e 100644
--- a/flyteidl/pyproject.toml
+++ b/flyteidl/pyproject.toml
@@ -9,26 +9,27 @@ authors = [{ name = "Flyte Contributors", email = "admin@flyte.org" }]
description = "IDL for Flyte Platform"
license = { text = "Apache-2.0" }
readme = { file = "README.md", content-type = "text/markdown" }
-requires-python = ">=3.8,<3.13"
+requires-python = ">=3.8,<3.14"
dependencies = [
- 'googleapis-common-protos',
- 'protoc-gen-openapiv2',
- 'protobuf>=4.21.1',
+ 'googleapis-common-protos',
+ 'protoc-gen-openapiv2',
+ 'protobuf>=4.21.1',
]
classifiers = [
- "Intended Audience :: Science/Research",
- "Intended Audience :: Developers",
- "License :: OSI Approved :: Apache Software License",
- "Programming Language :: Python :: 3.8",
- "Programming Language :: Python :: 3.9",
- "Programming Language :: Python :: 3.10",
- "Programming Language :: Python :: 3.11",
- "Programming Language :: Python :: 3.12",
- "Topic :: Scientific/Engineering",
- "Topic :: Scientific/Engineering :: Artificial Intelligence",
- "Topic :: Software Development",
- "Topic :: Software Development :: Libraries",
- "Topic :: Software Development :: Libraries :: Python Modules",
+ "Intended Audience :: Science/Research",
+ "Intended Audience :: Developers",
+ "License :: OSI Approved :: Apache Software License",
+ "Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: 3.9",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3.13",
+ "Topic :: Scientific/Engineering",
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
+ "Topic :: Software Development",
+ "Topic :: Software Development :: Libraries",
+ "Topic :: Software Development :: Libraries :: Python Modules",
]
[project.urls]
diff --git a/flyteplugins/.golangci.yml b/flyteplugins/.golangci.yml
index 9b6ab1e86d7..245843576ef 100644
--- a/flyteplugins/.golangci.yml
+++ b/flyteplugins/.golangci.yml
@@ -1,33 +1,38 @@
-run:
- skip-dirs:
- - pkg/client
+version: "2"
linters:
- disable-all: true
+ default: none
enable:
- errcheck
- - gosec
- - gci
- goconst
- - goimports
- - gosimple
+ - gosec
- govet
- ineffassign
- misspell
- nakedret
- - staticcheck
- - typecheck
+ - protogetter
- unconvert
- unparam
- unused
- - protogetter
-linters-settings:
- gci:
- custom-order: true
- sections:
- - standard
- - default
- - prefix(github.com/flyteorg)
- skip-generated: true
-issues:
- exclude:
- - copylocks
+ exclusions:
+ generated: lax
+ presets:
+ - comments
+ - common-false-positives
+ - legacy
+ - std-error-handling
+ rules:
+ - path: (.+)\.go$
+ text: copylocks
+formatters:
+ enable:
+ - gci
+ - goimports
+ settings:
+ gci:
+ sections:
+ - standard
+ - default
+ - prefix(github.com/flyteorg)
+ custom-order: true
+ exclusions:
+ generated: lax
\ No newline at end of file
diff --git a/flyteplugins/go.mod b/flyteplugins/go.mod
index 43364f5f44e..b89b377407f 100644
--- a/flyteplugins/go.mod
+++ b/flyteplugins/go.mod
@@ -1,12 +1,11 @@
module github.com/flyteorg/flyte/flyteplugins
-go 1.22
+go 1.26.0
require (
- github.com/GoogleCloudPlatform/spark-on-k8s-operator v0.0.0-20200723154620-6f35a1152625
- github.com/aws/aws-sdk-go v1.47.11
- github.com/aws/aws-sdk-go-v2 v1.2.0
- github.com/aws/aws-sdk-go-v2/config v1.0.0
+ github.com/aws/aws-sdk-go v1.55.5
+ github.com/aws/aws-sdk-go-v2 v1.36.3
+ github.com/aws/aws-sdk-go-v2/config v1.29.9
github.com/aws/aws-sdk-go-v2/service/athena v1.0.0
github.com/coocood/freecache v1.1.1
github.com/dask/dask-kubernetes/v2023 v2023.0.0-20230626103304-abd02cd17b26
@@ -14,157 +13,170 @@ require (
github.com/flyteorg/flyte/flytepropeller v0.0.0-00010101000000-000000000000
github.com/flyteorg/flyte/flytestdlib v0.0.0-00010101000000-000000000000
github.com/go-test/deep v1.0.7
+ github.com/go-viper/mapstructure/v2 v2.4.0
github.com/golang/protobuf v1.5.4
github.com/hashicorp/golang-lru v0.5.4
github.com/imdario/mergo v0.3.13
+ github.com/kubeflow/spark-operator v0.0.0-20250325114751-1905be6e1dbd
github.com/kubeflow/training-operator v1.8.0
- github.com/magiconair/properties v1.8.6
- github.com/mitchellh/mapstructure v1.5.0
+ github.com/magiconair/properties v1.8.7
github.com/pkg/errors v0.9.1
- github.com/prometheus/client_golang v1.19.1
- github.com/ray-project/kuberay/ray-operator v1.1.0-rc.1
+ github.com/prometheus/client_golang v1.23.0
+ github.com/ray-project/kuberay/ray-operator v1.5.1
github.com/shamaton/msgpack/v2 v2.2.2
- github.com/spf13/pflag v1.0.5
- github.com/stretchr/testify v1.9.0
- golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8
- golang.org/x/net v0.33.0
- golang.org/x/oauth2 v0.18.0
- golang.org/x/time v0.5.0
- google.golang.org/api v0.155.0
- google.golang.org/grpc v1.62.1
- google.golang.org/protobuf v1.34.1
+ github.com/spf13/pflag v1.0.10
+ github.com/stretchr/testify v1.11.1
+ golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
+ golang.org/x/net v0.52.0
+ golang.org/x/oauth2 v0.35.0
+ golang.org/x/time v0.12.0
+ google.golang.org/api v0.197.0
+ google.golang.org/grpc v1.80.0
+ google.golang.org/protobuf v1.36.11
gopkg.in/yaml.v2 v2.4.0
gotest.tools v2.2.0+incompatible
- k8s.io/api v0.29.3
- k8s.io/apimachinery v0.29.3
- k8s.io/client-go v0.29.3
- k8s.io/utils v0.0.0-20230726121419-3b25d923346b
- sigs.k8s.io/controller-runtime v0.17.2
+ k8s.io/api v0.34.1
+ k8s.io/apimachinery v0.34.1
+ k8s.io/client-go v0.34.1
+ k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d
+ sigs.k8s.io/controller-runtime v0.22.4
)
require (
- cloud.google.com/go v0.112.0 // indirect
- cloud.google.com/go/compute v1.23.3 // indirect
- cloud.google.com/go/compute/metadata v0.2.3 // indirect
- cloud.google.com/go/iam v1.1.5 // indirect
- cloud.google.com/go/storage v1.36.0 // indirect
+ cel.dev/expr v0.25.1 // indirect
+ cloud.google.com/go v0.115.1 // indirect
+ cloud.google.com/go/auth v0.9.3 // indirect
+ cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
+ cloud.google.com/go/compute/metadata v0.9.0 // indirect
+ cloud.google.com/go/iam v1.2.1 // indirect
+ cloud.google.com/go/monitoring v1.21.0 // indirect
+ cloud.google.com/go/storage v1.45.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect
github.com/Masterminds/semver v1.5.0 // indirect
- github.com/aws/aws-sdk-go-v2/credentials v1.0.0 // indirect
- github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.0 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.0 // indirect
- github.com/aws/aws-sdk-go-v2/service/sts v1.0.0 // indirect
- github.com/aws/smithy-go v1.1.0 // indirect
+ github.com/OneOfOne/xxhash v1.2.8 // 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/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
- github.com/cenkalti/backoff/v4 v4.2.1 // indirect
+ github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/emicklei/go-restful/v3 v3.11.0 // indirect
- github.com/evanphx/json-patch v5.6.0+incompatible // indirect
- github.com/evanphx/json-patch/v5 v5.8.0 // indirect
- github.com/fatih/color v1.13.0 // indirect
+ github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect
+ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
+ github.com/emicklei/go-restful/v3 v3.13.0 // indirect
+ github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect
+ github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect
+ github.com/evanphx/json-patch/v5 v5.9.11 // indirect
+ github.com/fatih/color v1.18.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/flyteorg/stow v0.3.11 // indirect
- github.com/fsnotify/fsnotify v1.7.0 // indirect
+ github.com/flyteorg/stow v0.3.12 // indirect
+ github.com/fsnotify/fsnotify v1.9.0 // indirect
+ github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/ghodss/yaml v1.0.0 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
+ github.com/go-jose/go-jose/v4 v4.1.4 // indirect
+ github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
- github.com/go-openapi/jsonpointer v0.19.6 // indirect
- github.com/go-openapi/jsonreference v0.20.2 // indirect
- github.com/go-openapi/swag v0.22.3 // indirect
+ github.com/go-openapi/jsonpointer v0.21.2 // indirect
+ github.com/go-openapi/jsonreference v0.21.0 // indirect
+ github.com/go-openapi/swag v0.23.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/google/gnostic-models v0.6.8 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
- github.com/google/s2a-go v0.1.7 // indirect
+ github.com/google/gnostic-models v0.7.0 // indirect
+ github.com/google/go-cmp v0.7.0 // indirect
+ github.com/google/s2a-go v0.1.8 // indirect
github.com/google/uuid v1.6.0 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
- github.com/googleapis/gax-go/v2 v2.12.0 // indirect
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect
- github.com/hashicorp/hcl v1.0.0 // indirect
+ github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect
+ github.com/googleapis/gax-go/v2 v2.13.0 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
- github.com/mailru/easyjson v0.7.7 // indirect
- github.com/mattn/go-colorable v0.1.12 // indirect
- github.com/mattn/go-isatty v0.0.16 // indirect
+ github.com/mailru/easyjson v0.9.0 // indirect
+ github.com/mattn/go-colorable v0.1.13 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/ncw/swift v1.0.53 // indirect
- github.com/pelletier/go-toml v1.9.4 // indirect
- github.com/pelletier/go-toml/v2 v2.0.0-beta.8 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/prometheus/client_model v0.6.1 // indirect
- github.com/prometheus/common v0.53.0 // indirect
- github.com/prometheus/procfs v0.15.1 // indirect
+ 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/prometheus/client_model v0.6.2 // indirect
+ github.com/prometheus/common v0.65.0 // indirect
+ github.com/prometheus/procfs v0.17.0 // indirect
+ github.com/sagikazarmark/locafero v0.11.0 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
- github.com/spf13/afero v1.8.2 // indirect
- github.com/spf13/cast v1.4.1 // indirect
- github.com/spf13/cobra v1.7.0 // indirect
- github.com/spf13/jwalterweatherman v1.1.0 // indirect
- github.com/spf13/viper v1.11.0 // indirect
+ github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
+ github.com/spf13/afero v1.15.0 // indirect
+ github.com/spf13/cast v1.10.0 // indirect
+ github.com/spf13/cobra v1.9.1 // indirect
+ github.com/spf13/viper v1.21.0 // indirect
+ github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
- github.com/subosito/gotenv v1.2.0 // indirect
+ github.com/subosito/gotenv v1.6.0 // indirect
+ github.com/x448/float16 v0.8.4 // indirect
go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
- go.opentelemetry.io/otel v1.24.0 // indirect
+ go.opentelemetry.io/auto/sdk v1.2.1 // indirect
+ go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect
+ go.opentelemetry.io/otel v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 // indirect
- go.opentelemetry.io/otel/metric v1.24.0 // indirect
- go.opentelemetry.io/otel/sdk v1.24.0 // indirect
- go.opentelemetry.io/otel/trace v1.24.0 // indirect
- go.opentelemetry.io/proto/otlp v1.1.0 // indirect
- golang.org/x/crypto v0.31.0 // indirect
- golang.org/x/sync v0.10.0 // indirect
- golang.org/x/sys v0.28.0 // indirect
- golang.org/x/term v0.27.0 // indirect
- golang.org/x/text v0.21.0 // indirect
- gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
- google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
+ go.opentelemetry.io/otel/metric v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect
+ go.opentelemetry.io/otel/trace v1.43.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.10.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.49.0 // indirect
+ golang.org/x/sync v0.20.0 // indirect
+ golang.org/x/sys v0.42.0 // indirect
+ golang.org/x/term v0.41.0 // indirect
+ golang.org/x/text v0.35.0 // indirect
+ google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
- gopkg.in/ini.v1 v1.66.4 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- k8s.io/apiextensions-apiserver v0.29.0 // indirect
- k8s.io/component-base v0.29.0 // indirect
- k8s.io/klog/v2 v2.110.1 // indirect
- k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
- sigs.k8s.io/yaml v1.4.0 // indirect
+ k8s.io/klog/v2 v2.130.1 // indirect
+ k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3 // indirect
+ sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
+ sigs.k8s.io/randfill v1.0.0 // indirect
+ sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
+ sigs.k8s.io/yaml v1.6.0 // indirect
)
replace (
- github.com/flyteorg/flyte/datacatalog => ../datacatalog
- github.com/flyteorg/flyte/flyteadmin => ../flyteadmin
github.com/flyteorg/flyte/flyteidl => ../flyteidl
- github.com/flyteorg/flyte/flyteplugins => ../flyteplugins
github.com/flyteorg/flyte/flytepropeller => ../flytepropeller
github.com/flyteorg/flyte/flytestdlib => ../flytestdlib
- github.com/google/gnostic-models => github.com/google/gnostic-models v0.6.8
github.com/robfig/cron/v3 => github.com/unionai/cron/v3 v3.0.2-0.20220915080349-5790c370e63a
- k8s.io/api => k8s.io/api v0.28.2
- k8s.io/apimachinery => k8s.io/apimachinery v0.28.2
- k8s.io/client-go => k8s.io/client-go v0.28.2
k8s.io/klog/v2 => k8s.io/klog/v2 v2.60.1
- k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f
- sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.16.2
)
diff --git a/flyteplugins/go.sum b/flyteplugins/go.sum
index 3ba0b8eedbb..0faf46735d9 100644
--- a/flyteplugins/go.sum
+++ b/flyteplugins/go.sum
@@ -1,51 +1,26 @@
+cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
+cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
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.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
-cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
-cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
-cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
-cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
-cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
-cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
-cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
-cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
-cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
-cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
-cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
-cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
-cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM=
-cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4=
-cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
-cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
-cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
-cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
-cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
-cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=
-cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI=
-cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
-cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
-cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
-cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
-cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI=
-cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8=
-cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
-cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
-cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
-cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
-cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
-cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
-cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
-cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
-cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
-cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8=
-cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8=
-dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ=
+cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc=
+cloud.google.com/go/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U=
+cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk=
+cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
+cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
+cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
+cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
+cloud.google.com/go/iam v1.2.1 h1:QFct02HRb7H12J/3utj0qf5tobFh9V4vR6h9eX5EBRU=
+cloud.google.com/go/iam v1.2.1/go.mod h1:3VUIJDPpwT6p/amXRC5GY8fCCh70lxPygguVtI0Z4/g=
+cloud.google.com/go/logging v1.11.0 h1:v3ktVzXMV7CwHq1MBF65wcqLMA7i+z3YxbUsoK7mOKs=
+cloud.google.com/go/logging v1.11.0/go.mod h1:5LDiJC/RxTt+fHc1LAt20R9TKiUTReDg6RuuFOZ67+A=
+cloud.google.com/go/longrunning v0.6.1 h1:lOLTFxYpr8hcRtcwWir5ITh1PAKUD/sG2lKrTSYjyMc=
+cloud.google.com/go/longrunning v0.6.1/go.mod h1:nHISoOZpBcmlwbJmiVk5oDRz0qG/ZxPynEGs1iZ79s0=
+cloud.google.com/go/monitoring v1.21.0 h1:EMc0tB+d3lUewT2NzKC/hr8cSR9WsUieVywzIHetGro=
+cloud.google.com/go/monitoring v1.21.0/go.mod h1:tuJ+KNDdJbetSsbSGTqnaBvbauS5kr3Q/koy3Up6r+4=
+cloud.google.com/go/storage v1.45.0 h1:5av0QcIVj77t+44mV4gffFC/LscFRUhto6UBMB5SimM=
+cloud.google.com/go/storage v1.45.0/go.mod h1:wpPblkIuMP5jCB/E48Pz9zIo2S/zD8g+ITmxKkPCITE=
+cloud.google.com/go/trace v1.11.0 h1:UHX6cOJm45Zw/KIbqHe4kII8PupLt/V5tscZUkeiJVI=
+cloud.google.com/go/trace v1.11.0/go.mod h1:Aiemdi52635dBR7o3zuc9lLjXo3BwGaChEjCa3tJNmM=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc=
@@ -59,39 +34,59 @@ github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0/go.mod h1:WCPBHsOXfB
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
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/GoogleCloudPlatform/spark-on-k8s-operator v0.0.0-20200723154620-6f35a1152625 h1:cQyO5JQ2iuHnEcF3v24kdDMsgh04RjyFPDtuvD6PCE0=
-github.com/GoogleCloudPlatform/spark-on-k8s-operator v0.0.0-20200723154620-6f35a1152625/go.mod h1:6PnrZv6zUDkrNMw0mIoGRmGBR7i9LulhKPmxFq4rUiM=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1/go.mod h1:jyqM3eLpJ3IbIFDTKVz2rF9T/xWGW0rIriGwnz8l9Tk=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1 h1:oTX4vsorBZo/Zdum6OKPA4o7544hm6smoRv1QjpTwGo=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1/go.mod h1:0wEl7vrAD8mehJyohS9HZy+WyEOaQO2mJx86Cvh93kM=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 h1:8nn+rsCvTq9axyEh382S0PFLBeaFwNsT43IrPWzctRU=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1/go.mod h1:viRWSEhtMZqz1rhwmOVKkWl6SwmVowfL9O2YR5gI2PE=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
-github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/aws/aws-sdk-go v1.47.11 h1:Dol+MA+hQblbnXUI3Vk9qvoekU6O1uDEuAItezjiWNQ=
-github.com/aws/aws-sdk-go v1.47.11/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
+github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8=
+github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
+github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
+github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
github.com/aws/aws-sdk-go-v2 v1.0.0/go.mod h1:smfAbmpW+tcRVuNUjo3MOArSZmW72t62rkCzc2i0TWM=
-github.com/aws/aws-sdk-go-v2 v1.2.0 h1:BS+UYpbsElC82gB+2E2jiCBg36i8HlubTB/dO/moQ9c=
-github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo=
-github.com/aws/aws-sdk-go-v2/config v1.0.0 h1:x6vSFAwqAvhYPeSu60f0ZUlGHo3PKKmwDOTL8aMXtv4=
-github.com/aws/aws-sdk-go-v2/config v1.0.0/go.mod h1:WysE/OpUgE37tjtmtJd8GXgT8s1euilE5XtUkRNUQ1w=
-github.com/aws/aws-sdk-go-v2/credentials v1.0.0 h1:0M7netgZ8gCV4v7z1km+Fbl7j6KQYyZL7SS0/l5Jn/4=
-github.com/aws/aws-sdk-go-v2/credentials v1.0.0/go.mod h1:/SvsiqBf509hG4Bddigr3NB12MIpfHhZapyBurJe8aY=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.0 h1:lO7fH5n7Q1dKcDBpuTmwJylD1bOQiRig8LI6TD9yVQk=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.0/go.mod h1:wpMHDCXvOXZxGCRSidyepa8uJHY4vaBGfY2/+oKU/Bc=
+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/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/athena v1.0.0 h1:UfrZP3NMTTKpOsf/P8uCaOxz3U2CNGEizdQKcObY7Ds=
github.com/aws/aws-sdk-go-v2/service/athena v1.0.0/go.mod h1:qY8QFbemf2ceqweXcS6hQqiiIe1z42WqTvHsK2Lb0rE=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.0 h1:IAutMPSrynpvKOpHG6HyWHmh1xmxWAmYOK84NrQVqVQ=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.0/go.mod h1:3jExOmpbjgPnz2FJaMOfbSk1heTkZ66aD3yNtVhnjvI=
-github.com/aws/aws-sdk-go-v2/service/sts v1.0.0 h1:6XCgxNfE4L/Fnq+InhVNd16DKc6Ue1f3dJl3IwwJRUQ=
-github.com/aws/aws-sdk-go-v2/service/sts v1.0.0/go.mod h1:5f+cELGATgill5Pu3/vK3Ebuigstc+qYEHW5MvGWZO4=
+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.0.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw=
-github.com/aws/smithy-go v1.1.0 h1:D6CSsM3gdxaGaqXnPgOBCeL6Mophqzu7KJOu7zW78sU=
-github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw=
+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/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1 h1:VRtJdDi2lqc3MFwmouppm2jlm6icF+7H3WYKpLENMTo=
github.com/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1/go.mod h1:jvdWlw8vowVGnZqSDC7yhPd7AifQeQbRDkZcQXV2nRg=
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/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
-github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+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 v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
@@ -99,166 +94,124 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927 h1:SKI1/fuSdodxmNNyVBR8d7X/HuLnRpvvFO0AgyQk764=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
-github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
github.com/coocood/freecache v1.1.1 h1:uukNF7QKCZEdZ9gAV7WQzvh0SbjwdMF6m3x3rxEkaPc=
github.com/coocood/freecache v1.1.1/go.mod h1:OKrEjkGVoxZhyWAJoeFi5BMLUJm2Tit0kpGkIr7NGYY=
-github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
-github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/dask/dask-kubernetes/v2023 v2023.0.0-20230626103304-abd02cd17b26 h1:6RByIva89lKEvwIzNQSUNcu8NG1p1wwwC4mJfVk/kqw=
github.com/dask/dask-kubernetes/v2023 v2023.0.0-20230626103304-abd02cd17b26/go.mod h1:OqIYr2QnxR3sQK2XahJIyWVcjz38LQ4GNcUzqezFpRg=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
-github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+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/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes=
+github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
+github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=
+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/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=
+github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
-github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
-github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
-github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/evanphx/json-patch/v5 v5.8.0 h1:lRj6N9Nci7MvzrXuX6HFzU8XjmhPiXPlsKEy1u0KQro=
-github.com/evanphx/json-patch/v5 v5.8.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
-github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
-github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
+github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=
+github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
+github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
+github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
+github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
+github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/flyteorg/stow v0.3.11 h1:Uf4fzVbghCqMNvx50XvYzwdNeQDBSKQJ7zddWu7p3eI=
-github.com/flyteorg/stow v0.3.11/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
-github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
-github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/flyteorg/stow v0.3.12 h1:RRXI5RUdxaK6A46HrO0D2r14cRlW1lJRL6qyzqpVMPU=
+github.com/flyteorg/stow v0.3.12/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
+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.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
+github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
+github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA=
+github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+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-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
-github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
-github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
-github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
-github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
-github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
-github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
+github.com/go-openapi/jsonpointer v0.21.2 h1:AqQaNADVwq/VnkCmQg6ogE+M3FOsKTytwges0JdwVuA=
+github.com/go-openapi/jsonpointer v0.21.2/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk=
+github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
+github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
+github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU=
+github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0=
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
+github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
+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/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-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/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
-github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
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.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
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.4.3/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/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/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
-github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
+github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
+github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.4.1/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.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/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.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-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/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 h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
-github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
-github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=
-github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
-github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
-github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
+github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=
+github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
+github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8=
+github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
+github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM=
+github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
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/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
-github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
-github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
-github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
-github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
-github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
-github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
-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/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw=
+github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA=
+github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s=
+github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=
github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
-github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
@@ -271,472 +224,242 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
-github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/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/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
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/kubeflow/spark-operator v0.0.0-20250325114751-1905be6e1dbd h1:nNH2CU4UhtLUgq29LGcdpvkaPmtFM5gyjX8T+smXZRw=
+github.com/kubeflow/spark-operator v0.0.0-20250325114751-1905be6e1dbd/go.mod h1:qlTEw23y9A1Q5eGYCcM3nvv9wRvrQ0jTTLLYVueE95c=
github.com/kubeflow/training-operator v1.8.0 h1:cHXIz7BV3Ayp7W5Rqe20/ukmVEzraI+O/XRYKBHQcrg=
github.com/kubeflow/training-operator v1.8.0/go.mod h1:T6I15h1S09ncH5C6St/QEC7Dy6dpHZA5sPFo+VoJAvE=
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/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
-github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
-github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
-github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
-github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
-github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
-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/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
+github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
+github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
+github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
+github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
-github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/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 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/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/ncw/swift v1.0.53 h1:luHjjTNtekIEvHg5KdAFIBaH7bWfNkefwFnpDffSIks=
github.com/ncw/swift v1.0.53/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
-github.com/onsi/ginkgo/v2 v2.14.0 h1:vSmGj2Z5YPb9JwCWT6z6ihcUvDhuXLc3sJiqd3jMKAY=
-github.com/onsi/ginkgo/v2 v2.14.0/go.mod h1:JkUdW7JkN0V6rFvsHcJ478egV3XH9NxpD27Hal/PhZw=
-github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8=
-github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
-github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM=
-github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
+github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus=
+github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8=
+github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y=
+github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0=
+github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
+github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+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/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
-github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
+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.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc=
+github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
-github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE=
-github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U=
-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/ray-project/kuberay/ray-operator v1.1.0-rc.1 h1:skD8MXnQMO3QGUeTKt09VOXvuch/gJh8+6q3OLm0kAQ=
-github.com/ray-project/kuberay/ray-operator v1.1.0-rc.1/go.mod h1:ZqyKKvMP5nKDldQoKmur+Wcx7wVlV9Q98phFqHzr+KY=
-github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+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.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE=
+github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
+github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0=
+github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw=
+github.com/ray-project/kuberay/ray-operator v1.5.1 h1:7FJYmB8oM+cnjv1VYCj/TfzRZG4XHvvt5Ayn5pZ5A1c=
+github.com/ray-project/kuberay/ray-operator v1.5.1/go.mod h1:itUPJnr3QwoZT70gRgsWFpBolquuZtDRCkdA1lrAb7Y=
+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/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc=
+github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik=
github.com/shamaton/msgpack/v2 v2.2.2 h1:GOIg0c9LV04VwzOOqZSrmsv/JzjNOOMxnS/HvOHGdgs=
github.com/shamaton/msgpack/v2 v2.2.2/go.mod h1:6khjYnkx73f7VQU7wjcFS9DFjs+59naVWJv1TB7qdOI=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
-github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
-github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
-github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
-github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
-github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
-github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
-github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44=
-github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk=
+github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
+github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
+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 v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
+github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
+github.com/spf13/pflag v1.0.6/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.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
+github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
+github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=
+github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=
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/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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
-github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
-github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+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.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
+github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
+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/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
-go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
-go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
-go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
-go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
+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/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE=
+go.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk=
+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/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q=
+go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
+go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 h1:zr8ymM5OWWjjiWRzwTfZ67c905+2TMHYp2lMJ52QTyM=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0/go.mod h1:sQs7FT2iLVJ+67vYngGJkPe1qr39IzaBzaj9IDNNY8k=
-go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
-go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
-go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
-go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
-go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
-go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI=
-go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY=
+go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
+go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
+go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
+go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
+go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
+go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
+go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
+go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
+go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=
+go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=
+go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
+go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
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.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
-go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
-go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
+go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
+go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
+go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
+go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v3 v3.0.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-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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
-golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
+golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
+golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
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-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
-golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
-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/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
+golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
golang.org/x/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-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
-golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/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.1.1-0.20191107180719-034126e5016b/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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
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-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-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-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/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-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200707034311-ab3426394381/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-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=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
-golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
+golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
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-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
-golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
+golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
+golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
-golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
+golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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-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-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-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-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-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
-golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
-golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
-golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
+golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=
+golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=
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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
-golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
+golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
+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-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-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-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
-golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
-golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
+golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=
+golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
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=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
-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/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
-google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
-google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
-google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
-google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
-google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA=
-google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk=
+gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
+gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
+google.golang.org/api v0.197.0 h1:x6CwqQLsFiA5JKAiGyGBjc2bNtHtLddhJCE2IKuhhcQ=
+google.golang.org/api v0.197.0/go.mod h1:AuOuo20GoQ331nq7DquGHlU6d+2wN2fZ8O0ta60nRNw=
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/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-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-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
-google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
-google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
-google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
+google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU=
+google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 h1:VPWxll4HlMw1Vs/qXtN7BvhZqsS9cdAittCNvVENElA=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
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.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
-google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
-google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
-google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
+google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM=
+google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4=
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=
@@ -745,22 +468,16 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi
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.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
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.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
-google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo=
+gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
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.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4=
-gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/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=
@@ -771,36 +488,28 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
-honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-k8s.io/api v0.28.2 h1:9mpl5mOb6vXZvqbQmankOfPIGiudghwCoLl1EYfUZbw=
-k8s.io/api v0.28.2/go.mod h1:RVnJBsjU8tcMq7C3iaRSGMeaKt2TWEUXcpIt/90fjEg=
-k8s.io/apiextensions-apiserver v0.29.0 h1:0VuspFG7Hj+SxyF/Z/2T0uFbI5gb5LRgEyUVE3Q4lV0=
-k8s.io/apiextensions-apiserver v0.29.0/go.mod h1:TKmpy3bTS0mr9pylH0nOt/QzQRrW7/h7yLdRForMZwc=
-k8s.io/apimachinery v0.28.2 h1:KCOJLrc6gu+wV1BYgwik4AF4vXOlVJPdiqn0yAWWwXQ=
-k8s.io/apimachinery v0.28.2/go.mod h1:RdzF87y/ngqk9H4z3EL2Rppv5jj95vGS/HaFXrLDApU=
-k8s.io/client-go v0.28.2 h1:DNoYI1vGq0slMBN/SWKMZMw0Rq+0EQW6/AK4v9+3VeY=
-k8s.io/client-go v0.28.2/go.mod h1:sMkApowspLuc7omj1FOSUxSoqjr+d5Q0Yc0LOFnYFJY=
-k8s.io/component-base v0.29.0 h1:T7rjd5wvLnPBV1vC4zWd/iWRbV8Mdxs+nGaoaFzGw3s=
-k8s.io/component-base v0.29.0/go.mod h1:sADonFTQ9Zc9yFLghpDpmNXEdHyQmFIGbiuZbqAXQ1M=
+k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
+k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
+k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI=
+k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc=
+k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4=
+k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
+k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY=
+k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8=
k8s.io/klog/v2 v2.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc=
k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
-k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f h1:eeEUOoGYWhOz7EyXqhlR2zHKNw2mNJ9vzJmub6YN6kk=
-k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
-k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
-k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
-rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
-rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
-sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU=
-sigs.k8s.io/controller-runtime v0.16.2/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
-sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
-sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
+k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3 h1:liMHz39T5dJO1aOKHLvwaCjDbf07wVh6yaUlTpunnkE=
+k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
+k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d h1:wAhiDyZ4Tdtt7e46e9M5ZSAJ/MnPGPs+Ki1gHw4w1R0=
+k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A=
+sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
+sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
+sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
diff --git a/flyteplugins/go/tasks/aws/config_flags_test.go b/flyteplugins/go/tasks/aws/config_flags_test.go
index 4a62659b852..065db7fa147 100755
--- a/flyteplugins/go/tasks/aws/config_flags_test.go
+++ b/flyteplugins/go/tasks/aws/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/config_load_test.go b/flyteplugins/go/tasks/config_load_test.go
index 9d27afb26ad..de028716ff5 100644
--- a/flyteplugins/go/tasks/config_load_test.go
+++ b/flyteplugins/go/tasks/config_load_test.go
@@ -51,7 +51,7 @@ func TestLoadConfig(t *testing.T) {
Effect: v1.TaintEffectNoSchedule,
}
- assert.Equal(t, []v1.Toleration{tolGPU}, k8sConfig.ResourceTolerations[v1.ResourceName("nvidia.com/gpu")])
+ assert.Equal(t, []v1.Toleration{tolGPU}, k8sConfig.ResourceTolerations["nvidia.com/gpu"])
expectedCPU := resource.MustParse("1000m")
assert.True(t, expectedCPU.Equal(k8sConfig.DefaultCPURequest))
expectedMemory := resource.MustParse("1024Mi")
diff --git a/flyteplugins/go/tasks/errors/errors.go b/flyteplugins/go/tasks/errors/errors.go
index 47af0ca9f6d..1acd47525bd 100644
--- a/flyteplugins/go/tasks/errors/errors.go
+++ b/flyteplugins/go/tasks/errors/errors.go
@@ -9,9 +9,7 @@ const (
DownstreamSystemError errors.ErrorCode = "DownstreamSystemError"
TaskFailedUnknownError errors.ErrorCode = "TaskFailedUnknownError"
BadTaskSpecification errors.ErrorCode = "BadTaskSpecification"
- TaskEventRecordingFailed errors.ErrorCode = "TaskEventRecordingFailed"
MetadataAccessFailed errors.ErrorCode = "MetadataAccessFailed"
- MetadataTooLarge errors.ErrorCode = "MetadataTooLarge"
PluginInitializationFailed errors.ErrorCode = "PluginInitializationFailed"
CacheFailed errors.ErrorCode = "AutoRefreshCacheFailed"
RuntimeFailure errors.ErrorCode = "RuntimeFailure"
diff --git a/flyteplugins/go/tasks/logs/logconfig_flags_test.go b/flyteplugins/go/tasks/logs/logconfig_flags_test.go
index 8bb775df1f0..3320849ad76 100755
--- a/flyteplugins/go/tasks/logs/logconfig_flags_test.go
+++ b/flyteplugins/go/tasks/logs/logconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/pluginmachinery/catalog/config_flags_test.go b/flyteplugins/go/tasks/pluginmachinery/catalog/config_flags_test.go
index 57a43973615..73fee3a64c0 100755
--- a/flyteplugins/go/tasks/pluginmachinery/catalog/config_flags_test.go
+++ b/flyteplugins/go/tasks/pluginmachinery/catalog/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/async_client.go b/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/async_client.go
index 1c31dfc162e..e8ef755ce6c 100644
--- a/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/async_client.go
+++ b/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/async_client.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/client.go b/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/client.go
index df5f0e713f4..7ba4dd19c42 100644
--- a/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/client.go
+++ b/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/client.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/download_future.go b/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/download_future.go
index 6f90c27a90b..bf9c3194bde 100644
--- a/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/download_future.go
+++ b/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/download_future.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *DownloadFuture) EXPECT() *DownloadFuture_Expecter {
return &DownloadFuture_Expecter{mock: &_m.Mock}
}
-// GetResponse provides a mock function with given fields:
+// GetResponse provides a mock function with no fields
func (_m *DownloadFuture) GetResponse() (catalog.DownloadResponse, error) {
ret := _m.Called()
@@ -77,7 +77,7 @@ func (_c *DownloadFuture_GetResponse_Call) RunAndReturn(run func() (catalog.Down
return _c
}
-// GetResponseError provides a mock function with given fields:
+// GetResponseError provides a mock function with no fields
func (_m *DownloadFuture) GetResponseError() error {
ret := _m.Called()
@@ -122,7 +122,7 @@ func (_c *DownloadFuture_GetResponseError_Call) RunAndReturn(run func() error) *
return _c
}
-// GetResponseStatus provides a mock function with given fields:
+// GetResponseStatus provides a mock function with no fields
func (_m *DownloadFuture) GetResponseStatus() catalog.ResponseStatus {
ret := _m.Called()
@@ -196,7 +196,7 @@ func (_c *DownloadFuture_OnReady_Call) Return() *DownloadFuture_OnReady_Call {
}
func (_c *DownloadFuture_OnReady_Call) RunAndReturn(run func(catalog.ReadyHandler)) *DownloadFuture_OnReady_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/download_response.go b/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/download_response.go
index 54b0e1a03e6..5c628adb37a 100644
--- a/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/download_response.go
+++ b/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/download_response.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -21,7 +21,7 @@ func (_m *DownloadResponse) EXPECT() *DownloadResponse_Expecter {
return &DownloadResponse_Expecter{mock: &_m.Mock}
}
-// GetCachedCount provides a mock function with given fields:
+// GetCachedCount provides a mock function with no fields
func (_m *DownloadResponse) GetCachedCount() int {
ret := _m.Called()
@@ -66,7 +66,7 @@ func (_c *DownloadResponse_GetCachedCount_Call) RunAndReturn(run func() int) *Do
return _c
}
-// GetCachedResults provides a mock function with given fields:
+// GetCachedResults provides a mock function with no fields
func (_m *DownloadResponse) GetCachedResults() *bitarray.BitSet {
ret := _m.Called()
@@ -113,7 +113,7 @@ func (_c *DownloadResponse_GetCachedResults_Call) RunAndReturn(run func() *bitar
return _c
}
-// GetResultsSize provides a mock function with given fields:
+// GetResultsSize provides a mock function with no fields
func (_m *DownloadResponse) GetResultsSize() int {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/future.go b/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/future.go
index c91862bc16b..7ca9c51f6e8 100644
--- a/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/future.go
+++ b/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/future.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *Future) EXPECT() *Future_Expecter {
return &Future_Expecter{mock: &_m.Mock}
}
-// GetResponseError provides a mock function with given fields:
+// GetResponseError provides a mock function with no fields
func (_m *Future) GetResponseError() error {
ret := _m.Called()
@@ -65,7 +65,7 @@ func (_c *Future_GetResponseError_Call) RunAndReturn(run func() error) *Future_G
return _c
}
-// GetResponseStatus provides a mock function with given fields:
+// GetResponseStatus provides a mock function with no fields
func (_m *Future) GetResponseStatus() catalog.ResponseStatus {
ret := _m.Called()
@@ -139,7 +139,7 @@ func (_c *Future_OnReady_Call) Return() *Future_OnReady_Call {
}
func (_c *Future_OnReady_Call) RunAndReturn(run func(catalog.ReadyHandler)) *Future_OnReady_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/ready_handler.go b/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/ready_handler.go
index 476d8ed010c..a1b6cb97b53 100644
--- a/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/ready_handler.go
+++ b/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/ready_handler.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -53,7 +53,7 @@ func (_c *ReadyHandler_Execute_Call) Return() *ReadyHandler_Execute_Call {
}
func (_c *ReadyHandler_Execute_Call) RunAndReturn(run func(context.Context, catalog.Future)) *ReadyHandler_Execute_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/upload_future.go b/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/upload_future.go
index 9d272390697..9118e22e596 100644
--- a/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/upload_future.go
+++ b/flyteplugins/go/tasks/pluginmachinery/catalog/mocks/upload_future.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *UploadFuture) EXPECT() *UploadFuture_Expecter {
return &UploadFuture_Expecter{mock: &_m.Mock}
}
-// GetResponseError provides a mock function with given fields:
+// GetResponseError provides a mock function with no fields
func (_m *UploadFuture) GetResponseError() error {
ret := _m.Called()
@@ -65,7 +65,7 @@ func (_c *UploadFuture_GetResponseError_Call) RunAndReturn(run func() error) *Up
return _c
}
-// GetResponseStatus provides a mock function with given fields:
+// GetResponseStatus provides a mock function with no fields
func (_m *UploadFuture) GetResponseStatus() catalog.ResponseStatus {
ret := _m.Called()
@@ -139,7 +139,7 @@ func (_c *UploadFuture_OnReady_Call) Return() *UploadFuture_OnReady_Call {
}
func (_c *UploadFuture_OnReady_Call) RunAndReturn(run func(catalog.ReadyHandler)) *UploadFuture_OnReady_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/enqueue_owner.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/enqueue_owner.go
index 3b8193c8ece..59d12fa6a6e 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/enqueue_owner.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/enqueue_owner.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/events_recorder.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/events_recorder.go
index 7a6a0f33a88..c41db7ae34e 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/events_recorder.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/events_recorder.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/kube_client.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/kube_client.go
index 42f7dd55dcb..185bf8f5807 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/kube_client.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/kube_client.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -22,7 +22,7 @@ func (_m *KubeClient) EXPECT() *KubeClient_Expecter {
return &KubeClient_Expecter{mock: &_m.Mock}
}
-// GetCache provides a mock function with given fields:
+// GetCache provides a mock function with no fields
func (_m *KubeClient) GetCache() cache.Cache {
ret := _m.Called()
@@ -69,7 +69,7 @@ func (_c *KubeClient_GetCache_Call) RunAndReturn(run func() cache.Cache) *KubeCl
return _c
}
-// GetClient provides a mock function with given fields:
+// GetClient provides a mock function with no fields
func (_m *KubeClient) GetClient() client.Client {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin.go
index 4315c38ce83..5f65802c460 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -116,7 +116,7 @@ func (_c *Plugin_Finalize_Call) RunAndReturn(run func(context.Context, core.Task
return _c
}
-// GetID provides a mock function with given fields:
+// GetID provides a mock function with no fields
func (_m *Plugin) GetID() string {
ret := _m.Called()
@@ -161,7 +161,7 @@ func (_c *Plugin_GetID_Call) RunAndReturn(run func() string) *Plugin_GetID_Call
return _c
}
-// GetProperties provides a mock function with given fields:
+// GetProperties provides a mock function with no fields
func (_m *Plugin) GetProperties() core.PluginProperties {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin_loader.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin_loader.go
index 83a4acb1e87..95b6798f9df 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin_loader.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin_loader.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin_state_reader.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin_state_reader.go
index 1c63b636a42..ebd9d91a933 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin_state_reader.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin_state_reader.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -73,7 +73,7 @@ func (_c *PluginStateReader_Get_Call) RunAndReturn(run func(interface{}) (uint8,
return _c
}
-// GetStateVersion provides a mock function with given fields:
+// GetStateVersion provides a mock function with no fields
func (_m *PluginStateReader) GetStateVersion() uint8 {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin_state_writer.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin_state_writer.go
index 94c11a08d76..9278652c155 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin_state_writer.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/plugin_state_writer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -64,7 +64,7 @@ func (_c *PluginStateWriter_Put_Call) RunAndReturn(run func(uint8, interface{})
return _c
}
-// Reset provides a mock function with given fields:
+// Reset provides a mock function with no fields
func (_m *PluginStateWriter) Reset() error {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/resource_manager.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/resource_manager.go
index b1258e576b1..7e8ebc7beec 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/resource_manager.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/resource_manager.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -81,7 +81,7 @@ func (_c *ResourceManager_AllocateResource_Call) RunAndReturn(run func(context.C
return _c
}
-// GetID provides a mock function with given fields:
+// GetID provides a mock function with no fields
func (_m *ResourceManager) GetID() string {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/resource_registrar.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/resource_registrar.go
index a3b46a5575b..0b5c9298a2d 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/resource_registrar.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/resource_registrar.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/secret_manager.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/secret_manager.go
index 1b79e5e199e..a87cdc8200f 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/secret_manager.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/secret_manager.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/setup_context.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/setup_context.go
index 4a44bd01c1f..b6f89a28d20 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/setup_context.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/setup_context.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -22,7 +22,7 @@ func (_m *SetupContext) EXPECT() *SetupContext_Expecter {
return &SetupContext_Expecter{mock: &_m.Mock}
}
-// EnqueueOwner provides a mock function with given fields:
+// EnqueueOwner provides a mock function with no fields
func (_m *SetupContext) EnqueueOwner() core.EnqueueOwner {
ret := _m.Called()
@@ -69,7 +69,7 @@ func (_c *SetupContext_EnqueueOwner_Call) RunAndReturn(run func() core.EnqueueOw
return _c
}
-// KubeClient provides a mock function with given fields:
+// KubeClient provides a mock function with no fields
func (_m *SetupContext) KubeClient() core.KubeClient {
ret := _m.Called()
@@ -116,7 +116,7 @@ func (_c *SetupContext_KubeClient_Call) RunAndReturn(run func() core.KubeClient)
return _c
}
-// MetricsScope provides a mock function with given fields:
+// MetricsScope provides a mock function with no fields
func (_m *SetupContext) MetricsScope() promutils.Scope {
ret := _m.Called()
@@ -163,7 +163,7 @@ func (_c *SetupContext_MetricsScope_Call) RunAndReturn(run func() promutils.Scop
return _c
}
-// OwnerKind provides a mock function with given fields:
+// OwnerKind provides a mock function with no fields
func (_m *SetupContext) OwnerKind() string {
ret := _m.Called()
@@ -208,7 +208,7 @@ func (_c *SetupContext_OwnerKind_Call) RunAndReturn(run func() string) *SetupCon
return _c
}
-// ResourceRegistrar provides a mock function with given fields:
+// ResourceRegistrar provides a mock function with no fields
func (_m *SetupContext) ResourceRegistrar() core.ResourceRegistrar {
ret := _m.Called()
@@ -255,7 +255,7 @@ func (_c *SetupContext_ResourceRegistrar_Call) RunAndReturn(run func() core.Reso
return _c
}
-// SecretManager provides a mock function with given fields:
+// SecretManager provides a mock function with no fields
func (_m *SetupContext) SecretManager() core.SecretManager {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/signal_async.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/signal_async.go
index 63d5470d798..03e2de35002 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/signal_async.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/signal_async.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -50,7 +50,7 @@ func (_c *SignalAsync_Execute_Call) Return() *SignalAsync_Execute_Call {
}
func (_c *SignalAsync_Execute_Call) RunAndReturn(run func(context.Context)) *SignalAsync_Execute_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_execution_context.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_execution_context.go
index 9073c15c2b9..cba88513a2d 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_execution_context.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_execution_context.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -26,7 +26,7 @@ func (_m *TaskExecutionContext) EXPECT() *TaskExecutionContext_Expecter {
return &TaskExecutionContext_Expecter{mock: &_m.Mock}
}
-// Catalog provides a mock function with given fields:
+// Catalog provides a mock function with no fields
func (_m *TaskExecutionContext) Catalog() catalog.AsyncClient {
ret := _m.Called()
@@ -73,7 +73,7 @@ func (_c *TaskExecutionContext_Catalog_Call) RunAndReturn(run func() catalog.Asy
return _c
}
-// DataStore provides a mock function with given fields:
+// DataStore provides a mock function with no fields
func (_m *TaskExecutionContext) DataStore() *storage.DataStore {
ret := _m.Called()
@@ -120,7 +120,7 @@ func (_c *TaskExecutionContext_DataStore_Call) RunAndReturn(run func() *storage.
return _c
}
-// EventsRecorder provides a mock function with given fields:
+// EventsRecorder provides a mock function with no fields
func (_m *TaskExecutionContext) EventsRecorder() core.EventsRecorder {
ret := _m.Called()
@@ -167,7 +167,7 @@ func (_c *TaskExecutionContext_EventsRecorder_Call) RunAndReturn(run func() core
return _c
}
-// InputReader provides a mock function with given fields:
+// InputReader provides a mock function with no fields
func (_m *TaskExecutionContext) InputReader() io.InputReader {
ret := _m.Called()
@@ -214,7 +214,7 @@ func (_c *TaskExecutionContext_InputReader_Call) RunAndReturn(run func() io.Inpu
return _c
}
-// OutputWriter provides a mock function with given fields:
+// OutputWriter provides a mock function with no fields
func (_m *TaskExecutionContext) OutputWriter() io.OutputWriter {
ret := _m.Called()
@@ -261,7 +261,7 @@ func (_c *TaskExecutionContext_OutputWriter_Call) RunAndReturn(run func() io.Out
return _c
}
-// PluginStateReader provides a mock function with given fields:
+// PluginStateReader provides a mock function with no fields
func (_m *TaskExecutionContext) PluginStateReader() core.PluginStateReader {
ret := _m.Called()
@@ -308,7 +308,7 @@ func (_c *TaskExecutionContext_PluginStateReader_Call) RunAndReturn(run func() c
return _c
}
-// PluginStateWriter provides a mock function with given fields:
+// PluginStateWriter provides a mock function with no fields
func (_m *TaskExecutionContext) PluginStateWriter() core.PluginStateWriter {
ret := _m.Called()
@@ -355,7 +355,7 @@ func (_c *TaskExecutionContext_PluginStateWriter_Call) RunAndReturn(run func() c
return _c
}
-// ResourceManager provides a mock function with given fields:
+// ResourceManager provides a mock function with no fields
func (_m *TaskExecutionContext) ResourceManager() core.ResourceManager {
ret := _m.Called()
@@ -402,7 +402,7 @@ func (_c *TaskExecutionContext_ResourceManager_Call) RunAndReturn(run func() cor
return _c
}
-// SecretManager provides a mock function with given fields:
+// SecretManager provides a mock function with no fields
func (_m *TaskExecutionContext) SecretManager() core.SecretManager {
ret := _m.Called()
@@ -449,7 +449,7 @@ func (_c *TaskExecutionContext_SecretManager_Call) RunAndReturn(run func() core.
return _c
}
-// TaskExecutionMetadata provides a mock function with given fields:
+// TaskExecutionMetadata provides a mock function with no fields
func (_m *TaskExecutionContext) TaskExecutionMetadata() core.TaskExecutionMetadata {
ret := _m.Called()
@@ -496,7 +496,7 @@ func (_c *TaskExecutionContext_TaskExecutionMetadata_Call) RunAndReturn(run func
return _c
}
-// TaskReader provides a mock function with given fields:
+// TaskReader provides a mock function with no fields
func (_m *TaskExecutionContext) TaskReader() core.TaskReader {
ret := _m.Called()
@@ -543,7 +543,7 @@ func (_c *TaskExecutionContext_TaskReader_Call) RunAndReturn(run func() core.Tas
return _c
}
-// TaskRefreshIndicator provides a mock function with given fields:
+// TaskRefreshIndicator provides a mock function with no fields
func (_m *TaskExecutionContext) TaskRefreshIndicator() core.SignalAsync {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_execution_id.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_execution_id.go
index d3ec0472e7f..edafde711dc 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_execution_id.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_execution_id.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *TaskExecutionID) EXPECT() *TaskExecutionID_Expecter {
return &TaskExecutionID_Expecter{mock: &_m.Mock}
}
-// GetGeneratedName provides a mock function with given fields:
+// GetGeneratedName provides a mock function with no fields
func (_m *TaskExecutionID) GetGeneratedName() string {
ret := _m.Called()
@@ -122,7 +122,7 @@ func (_c *TaskExecutionID_GetGeneratedNameWith_Call) RunAndReturn(run func(int,
return _c
}
-// GetID provides a mock function with given fields:
+// GetID provides a mock function with no fields
func (_m *TaskExecutionID) GetID() flyteidlcore.TaskExecutionIdentifier {
ret := _m.Called()
@@ -167,7 +167,7 @@ func (_c *TaskExecutionID_GetID_Call) RunAndReturn(run func() flyteidlcore.TaskE
return _c
}
-// GetUniqueNodeID provides a mock function with given fields:
+// GetUniqueNodeID provides a mock function with no fields
func (_m *TaskExecutionID) GetUniqueNodeID() string {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_execution_metadata.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_execution_metadata.go
index 57ca0466161..8c6c13d3b58 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_execution_metadata.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_execution_metadata.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -28,7 +28,7 @@ func (_m *TaskExecutionMetadata) EXPECT() *TaskExecutionMetadata_Expecter {
return &TaskExecutionMetadata_Expecter{mock: &_m.Mock}
}
-// GetAnnotations provides a mock function with given fields:
+// GetAnnotations provides a mock function with no fields
func (_m *TaskExecutionMetadata) GetAnnotations() map[string]string {
ret := _m.Called()
@@ -75,7 +75,7 @@ func (_c *TaskExecutionMetadata_GetAnnotations_Call) RunAndReturn(run func() map
return _c
}
-// GetConsoleURL provides a mock function with given fields:
+// GetConsoleURL provides a mock function with no fields
func (_m *TaskExecutionMetadata) GetConsoleURL() string {
ret := _m.Called()
@@ -120,7 +120,7 @@ func (_c *TaskExecutionMetadata_GetConsoleURL_Call) RunAndReturn(run func() stri
return _c
}
-// GetEnvironmentVariables provides a mock function with given fields:
+// GetEnvironmentVariables provides a mock function with no fields
func (_m *TaskExecutionMetadata) GetEnvironmentVariables() map[string]string {
ret := _m.Called()
@@ -167,7 +167,7 @@ func (_c *TaskExecutionMetadata_GetEnvironmentVariables_Call) RunAndReturn(run f
return _c
}
-// GetInterruptibleFailureThreshold provides a mock function with given fields:
+// GetInterruptibleFailureThreshold provides a mock function with no fields
func (_m *TaskExecutionMetadata) GetInterruptibleFailureThreshold() int32 {
ret := _m.Called()
@@ -212,7 +212,7 @@ func (_c *TaskExecutionMetadata_GetInterruptibleFailureThreshold_Call) RunAndRet
return _c
}
-// GetK8sServiceAccount provides a mock function with given fields:
+// GetK8sServiceAccount provides a mock function with no fields
func (_m *TaskExecutionMetadata) GetK8sServiceAccount() string {
ret := _m.Called()
@@ -257,7 +257,7 @@ func (_c *TaskExecutionMetadata_GetK8sServiceAccount_Call) RunAndReturn(run func
return _c
}
-// GetLabels provides a mock function with given fields:
+// GetLabels provides a mock function with no fields
func (_m *TaskExecutionMetadata) GetLabels() map[string]string {
ret := _m.Called()
@@ -304,7 +304,7 @@ func (_c *TaskExecutionMetadata_GetLabels_Call) RunAndReturn(run func() map[stri
return _c
}
-// GetMaxAttempts provides a mock function with given fields:
+// GetMaxAttempts provides a mock function with no fields
func (_m *TaskExecutionMetadata) GetMaxAttempts() uint32 {
ret := _m.Called()
@@ -349,7 +349,7 @@ func (_c *TaskExecutionMetadata_GetMaxAttempts_Call) RunAndReturn(run func() uin
return _c
}
-// GetNamespace provides a mock function with given fields:
+// GetNamespace provides a mock function with no fields
func (_m *TaskExecutionMetadata) GetNamespace() string {
ret := _m.Called()
@@ -394,7 +394,7 @@ func (_c *TaskExecutionMetadata_GetNamespace_Call) RunAndReturn(run func() strin
return _c
}
-// GetOverrides provides a mock function with given fields:
+// GetOverrides provides a mock function with no fields
func (_m *TaskExecutionMetadata) GetOverrides() core.TaskOverrides {
ret := _m.Called()
@@ -441,7 +441,7 @@ func (_c *TaskExecutionMetadata_GetOverrides_Call) RunAndReturn(run func() core.
return _c
}
-// GetOwnerID provides a mock function with given fields:
+// GetOwnerID provides a mock function with no fields
func (_m *TaskExecutionMetadata) GetOwnerID() types.NamespacedName {
ret := _m.Called()
@@ -486,7 +486,7 @@ func (_c *TaskExecutionMetadata_GetOwnerID_Call) RunAndReturn(run func() types.N
return _c
}
-// GetOwnerReference provides a mock function with given fields:
+// GetOwnerReference provides a mock function with no fields
func (_m *TaskExecutionMetadata) GetOwnerReference() v1.OwnerReference {
ret := _m.Called()
@@ -531,7 +531,7 @@ func (_c *TaskExecutionMetadata_GetOwnerReference_Call) RunAndReturn(run func()
return _c
}
-// GetPlatformResources provides a mock function with given fields:
+// GetPlatformResources provides a mock function with no fields
func (_m *TaskExecutionMetadata) GetPlatformResources() *corev1.ResourceRequirements {
ret := _m.Called()
@@ -578,7 +578,7 @@ func (_c *TaskExecutionMetadata_GetPlatformResources_Call) RunAndReturn(run func
return _c
}
-// GetSecurityContext provides a mock function with given fields:
+// GetSecurityContext provides a mock function with no fields
func (_m *TaskExecutionMetadata) GetSecurityContext() flyteidlcore.SecurityContext {
ret := _m.Called()
@@ -623,7 +623,7 @@ func (_c *TaskExecutionMetadata_GetSecurityContext_Call) RunAndReturn(run func()
return _c
}
-// GetTaskExecutionID provides a mock function with given fields:
+// GetTaskExecutionID provides a mock function with no fields
func (_m *TaskExecutionMetadata) GetTaskExecutionID() core.TaskExecutionID {
ret := _m.Called()
@@ -670,7 +670,7 @@ func (_c *TaskExecutionMetadata_GetTaskExecutionID_Call) RunAndReturn(run func()
return _c
}
-// IsInterruptible provides a mock function with given fields:
+// IsInterruptible provides a mock function with no fields
func (_m *TaskExecutionMetadata) IsInterruptible() bool {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_overrides.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_overrides.go
index 93f626282b9..9c31edea739 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_overrides.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_overrides.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -22,7 +22,7 @@ func (_m *TaskOverrides) EXPECT() *TaskOverrides_Expecter {
return &TaskOverrides_Expecter{mock: &_m.Mock}
}
-// GetConfig provides a mock function with given fields:
+// GetConfig provides a mock function with no fields
func (_m *TaskOverrides) GetConfig() *v1.ConfigMap {
ret := _m.Called()
@@ -69,7 +69,7 @@ func (_c *TaskOverrides_GetConfig_Call) RunAndReturn(run func() *v1.ConfigMap) *
return _c
}
-// GetContainerImage provides a mock function with given fields:
+// GetContainerImage provides a mock function with no fields
func (_m *TaskOverrides) GetContainerImage() string {
ret := _m.Called()
@@ -114,7 +114,7 @@ func (_c *TaskOverrides_GetContainerImage_Call) RunAndReturn(run func() string)
return _c
}
-// GetExtendedResources provides a mock function with given fields:
+// GetExtendedResources provides a mock function with no fields
func (_m *TaskOverrides) GetExtendedResources() *flyteidlcore.ExtendedResources {
ret := _m.Called()
@@ -161,7 +161,7 @@ func (_c *TaskOverrides_GetExtendedResources_Call) RunAndReturn(run func() *flyt
return _c
}
-// GetPodTemplate provides a mock function with given fields:
+// GetPodTemplate provides a mock function with no fields
func (_m *TaskOverrides) GetPodTemplate() *flyteidlcore.K8SPod {
ret := _m.Called()
@@ -208,7 +208,7 @@ func (_c *TaskOverrides_GetPodTemplate_Call) RunAndReturn(run func() *flyteidlco
return _c
}
-// GetResources provides a mock function with given fields:
+// GetResources provides a mock function with no fields
func (_m *TaskOverrides) GetResources() *v1.ResourceRequirements {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_reader.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_reader.go
index 86974d41827..6aecff76e85 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_reader.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_reader.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_template_path.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_template_path.go
index e1684526261..3f0b60b25f0 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_template_path.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_template_path.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/core/phase.go b/flyteplugins/go/tasks/pluginmachinery/core/phase.go
index 5929a1f2e31..99851234d28 100644
--- a/flyteplugins/go/tasks/pluginmachinery/core/phase.go
+++ b/flyteplugins/go/tasks/pluginmachinery/core/phase.go
@@ -208,15 +208,8 @@ func PhaseInfoNotReady(t time.Time, version uint32, reason string) PhaseInfo {
return pi
}
-// Deprecated: Please use PhaseInfoWaitingForResourcesInfo instead
-func PhaseInfoWaitingForResources(t time.Time, version uint32, reason string) PhaseInfo {
- pi := phaseInfo(PhaseWaitingForResources, version, nil, &TaskInfo{OccurredAt: &t}, false)
- pi.reason = reason
- return pi
-}
-
// PhaseInfoWaitingForResourcesInfo represents the case the plugin is not ready to start
-func PhaseInfoWaitingForResourcesInfo(t time.Time, version uint32, reason string, info *TaskInfo) PhaseInfo {
+func PhaseInfoWaitingForResourcesInfo(version uint32, reason string, info *TaskInfo) PhaseInfo {
pi := phaseInfo(PhaseWaitingForResources, version, nil, info, false)
pi.reason = reason
return pi
@@ -228,13 +221,13 @@ func PhaseInfoQueued(t time.Time, version uint32, reason string) PhaseInfo {
return pi
}
-func PhaseInfoQueuedWithTaskInfo(t time.Time, version uint32, reason string, info *TaskInfo) PhaseInfo {
+func PhaseInfoQueuedWithTaskInfo(version uint32, reason string, info *TaskInfo) PhaseInfo {
pi := phaseInfo(PhaseQueued, version, nil, info, false)
pi.reason = reason
return pi
}
-func PhaseInfoInitializing(t time.Time, version uint32, reason string, info *TaskInfo) PhaseInfo {
+func PhaseInfoInitializing(version uint32, reason string, info *TaskInfo) PhaseInfo {
pi := phaseInfo(PhaseInitializing, version, nil, info, false)
pi.reason = reason
return pi
diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/config/k8spluginconfig_flags_test.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/config/k8spluginconfig_flags_test.go
index 3f68cfa1d7e..f2d75d89870 100755
--- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/config/k8spluginconfig_flags_test.go
+++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/config/k8spluginconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper_test.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper_test.go
index 420c098b82e..9ba4afb9088 100644
--- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper_test.go
+++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper_test.go
@@ -377,8 +377,8 @@ func TestToK8sContainer(t *testing.T) {
taskReader.On("Read", mock.Anything).Return(taskTemplate, nil)
inputReader := &mocks2.InputReader{}
- inputReader.EXPECT().GetInputPath().Return(storage.DataReference("test-data-reference"))
- inputReader.EXPECT().GetInputPrefixPath().Return(storage.DataReference("test-data-reference-prefix"))
+ inputReader.EXPECT().GetInputPath().Return("test-data-reference")
+ inputReader.EXPECT().GetInputPrefixPath().Return("test-data-reference-prefix")
inputReader.EXPECT().Get(mock.Anything).Return(&core.LiteralMap{}, nil)
outputWriter := &mocks2.OutputWriter{}
@@ -525,7 +525,7 @@ func TestAddFlyteCustomizationsToContainer(t *testing.T) {
assert.EqualValues(t, container.Command, []string{"s3://input/path"})
assert.Len(t, container.Resources.Limits, 3)
assert.Len(t, container.Resources.Requests, 3)
- assert.Len(t, container.Env, 12)
+ assert.Len(t, container.Env, 8)
}
func TestAddFlyteCustomizationsToContainer_Resources(t *testing.T) {
diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot.go
index cbeeaa982fb..b2f0aab4812 100644
--- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot.go
+++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot.go
@@ -219,7 +219,7 @@ func AddCoPilotToPod(ctx context.Context, cfg config.FlyteCoPilotConfig, coPilot
// TODO we should calculate input volume size based on the size of the inputs which is known ahead of time. We should store that as part of the metadata
size := CalculateStorageSize(taskExecMetadata.GetOverrides().GetResources())
//nolint:protogetter
- logger.Infof(ctx, "Adding Input path [%s] of Size [%d] for Task [%s]", inPath, size, taskExecMetadata.GetTaskExecutionID().GetID().TaskId.GetName())
+ logger.Infof(ctx, "Adding Input path [%s] of Size [%v] for Task [%s]", inPath, size, taskExecMetadata.GetTaskExecutionID().GetID().TaskId.GetName())
inputsVolumeMount := v1.VolumeMount{
Name: cfg.InputVolumeName,
MountPath: inPath,
@@ -250,7 +250,7 @@ func AddCoPilotToPod(ctx context.Context, cfg config.FlyteCoPilotConfig, coPilot
size := CalculateStorageSize(taskExecMetadata.GetOverrides().GetResources())
//nolint:protogetter
- logger.Infof(ctx, "Adding Output path [%s] of size [%d] for Task [%s]", size, outPath, taskExecMetadata.GetTaskExecutionID().GetID().TaskId.GetName())
+ logger.Infof(ctx, "Adding Output path [%s] of size [%v] for Task [%s]", size, outPath, taskExecMetadata.GetTaskExecutionID().GetID().TaskId.GetName())
outputsVolumeMount := v1.VolumeMount{
Name: cfg.OutputVolumeName,
@@ -274,7 +274,7 @@ func AddCoPilotToPod(ctx context.Context, cfg config.FlyteCoPilotConfig, coPilot
// Let the sidecar container start before the downloader; it will ensure the signal watcher is started before the main container finishes.
coPilotPod.InitContainers = append([]v1.Container{sidecar}, coPilotPod.InitContainers...)
- coPilotPod.TerminationGracePeriodSeconds = (*int64)(&cfg.Timeout.Duration)
+ coPilotPod.TerminationGracePeriodSeconds = ptr.To(int64(cfg.Timeout.Duration.Seconds()))
}
}
diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot_test.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot_test.go
index f6b2537614a..ec90c063a13 100644
--- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot_test.go
+++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot_test.go
@@ -595,4 +595,27 @@ func TestAddCoPilotToPod(t *testing.T) {
assert.NoError(t, err)
assert.Empty(t, primaryInitContainerName)
})
+
+ t.Run("grace-period", func(t *testing.T) {
+ cfgWithTimeout := cfg
+ cfgWithTimeout.Timeout = config2.Duration{Duration: time.Hour}
+
+ pod := v1.PodSpec{}
+ // TerminationGracePeriodSeconds is only set when the copilot sidecar is added,
+ // which requires outputs in the interface and an enabled DataLoadingConfig.
+ iface := &core.TypedInterface{
+ Outputs: &core.VariableMap{
+ Variables: map[string]*core.Variable{
+ "o": {Type: &core.LiteralType{Type: &core.LiteralType_Simple{Simple: core.SimpleType_INTEGER}}},
+ },
+ },
+ }
+ pilot := &core.DataLoadingConfig{
+ Enabled: true,
+ OutputPath: "out",
+ }
+ _, err := AddCoPilotToPod(ctx, cfgWithTimeout, &pod, iface, taskMetadata, inputPaths, opath, pilot)
+ assert.NoError(t, err)
+ assert.Equal(t, int64(3600), *pod.TerminationGracePeriodSeconds)
+ })
}
diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds.go
index df74771961a..c638c92701b 100644
--- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds.go
+++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds.go
@@ -99,24 +99,6 @@ func GetExecutionEnvVars(id pluginsCore.TaskExecutionID, consoleURL string) []v1
v1.EnvVar{
Name: "FLYTE_INTERNAL_TASK_VERSION",
Value: taskID.GetVersion(),
- },
- // Historic Task Definition Level env variables.
- // Remove these once SDK is migrated to use the new ones.
- v1.EnvVar{
- Name: "FLYTE_INTERNAL_PROJECT",
- Value: taskID.GetProject(),
- },
- v1.EnvVar{
- Name: "FLYTE_INTERNAL_DOMAIN",
- Value: taskID.GetDomain(),
- },
- v1.EnvVar{
- Name: "FLYTE_INTERNAL_NAME",
- Value: taskID.GetName(),
- },
- v1.EnvVar{
- Name: "FLYTE_INTERNAL_VERSION",
- Value: taskID.GetVersion(),
})
}
diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds_test.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds_test.go
index 0ed5fc0337d..50aaf2f2186 100644
--- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds_test.go
+++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds_test.go
@@ -28,13 +28,13 @@ func TestGetExecutionEnvVars(t *testing.T) {
}{
{
"no-console-url",
- 12,
+ 8,
"",
nil,
},
{
"with-console-url",
- 13,
+ 9,
"scheme://host/path",
&v12.EnvVar{
Name: "FLYTE_EXECUTION_URL",
@@ -43,7 +43,7 @@ func TestGetExecutionEnvVars(t *testing.T) {
},
{
"with-console-url-ending-in-single-slash",
- 13,
+ 9,
"scheme://host/path/",
&v12.EnvVar{
Name: "FLYTE_EXECUTION_URL",
@@ -52,7 +52,7 @@ func TestGetExecutionEnvVars(t *testing.T) {
},
{
"with-console-url-ending-in-multiple-slashes",
- 13,
+ 9,
"scheme://host/path////",
&v12.EnvVar{
Name: "FLYTE_EXECUTION_URL",
diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper.go
index 4bd5c3052d3..de60f0c3f70 100644
--- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper.go
+++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper.go
@@ -74,25 +74,6 @@ func AddRequiredNodeSelectorRequirements(base *v1.Affinity, new ...v1.NodeSelect
}
}
-// AddPreferredNodeSelectorRequirements appends the provided v1.NodeSelectorRequirement
-// objects to an existing v1.Affinity object's list of preferred scheduling terms.
-// See: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity-weight
-// for how weights are used during scheduling.
-func AddPreferredNodeSelectorRequirements(base *v1.Affinity, weight int32, new ...v1.NodeSelectorRequirement) {
- if base.NodeAffinity == nil {
- base.NodeAffinity = &v1.NodeAffinity{}
- }
- base.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution = append(
- base.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution,
- v1.PreferredSchedulingTerm{
- Weight: weight,
- Preference: v1.NodeSelectorTerm{
- MatchExpressions: new,
- },
- },
- )
-}
-
// ApplyInterruptibleNodeSelectorRequirement configures the node selector requirement of the node-affinity using the configuration specified.
func ApplyInterruptibleNodeSelectorRequirement(interruptible bool, affinity *v1.Affinity) {
// Determine node selector terms to add to node affinity
@@ -711,7 +692,7 @@ func MergeWithBasePodTemplate(ctx context.Context, tCtx pluginsCore.TaskExecutio
}
// merge PodTemplate PodSpec with podSpec
- var mergedObjectMeta *metav1.ObjectMeta = podTemplate.Template.ObjectMeta.DeepCopy()
+ var mergedObjectMeta = podTemplate.Template.ObjectMeta.DeepCopy()
if err := mergo.Merge(mergedObjectMeta, objectMeta, mergo.WithOverride, mergo.WithAppendSlice); err != nil {
return nil, nil, err
}
@@ -780,7 +761,8 @@ func MergeBasePodSpecOntoTemplate(templatePodSpec *v1.PodSpec, basePodSpec *v1.P
// Check for any name matching template containers
for _, templateContainer := range templatePodSpec.Containers {
- if templateContainer.Name != container.Name {
+ // skip default and primary template containers as they are handled above
+ if container.Name == primaryContainerName || container.Name == defaultContainerTemplateName || templateContainer.Name != container.Name {
continue
}
@@ -833,7 +815,8 @@ func MergeBasePodSpecOntoTemplate(templatePodSpec *v1.PodSpec, basePodSpec *v1.P
// Check for any name matching template containers
for _, templateInitContainer := range templatePodSpec.InitContainers {
- if templateInitContainer.Name != initContainer.Name {
+ // skip default and primary template init containers as they are handled above
+ if initContainer.Name == primaryInitContainerName || initContainer.Name == defaultInitContainerTemplateName || templateInitContainer.Name != initContainer.Name {
continue
}
@@ -961,13 +944,13 @@ func DemystifyPending(status v1.PodStatus, info pluginsCore.TaskInfo) (pluginsCo
return phaseInfo, nil
}
- return pluginsCore.PhaseInfoQueuedWithTaskInfo(time.Now(), pluginsCore.DefaultPhaseVersion, "Scheduling", phaseInfo.Info()), nil
+ return pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginsCore.DefaultPhaseVersion, "Scheduling", phaseInfo.Info()), nil
}
func demystifyPendingHelper(status v1.PodStatus, info pluginsCore.TaskInfo) (pluginsCore.PhaseInfo, time.Time) {
// Search over the difference conditions in the status object. Note that the 'Pending' this function is
// demystifying is the 'phase' of the pod status. This is different than the PodReady condition type also used below
- phaseInfo := pluginsCore.PhaseInfoQueuedWithTaskInfo(time.Now(), pluginsCore.DefaultPhaseVersion, "Demistify Pending", &info)
+ phaseInfo := pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginsCore.DefaultPhaseVersion, "Demistify Pending", &info)
t := time.Now()
for _, c := range status.Conditions {
@@ -976,7 +959,7 @@ func demystifyPendingHelper(status v1.PodStatus, info pluginsCore.TaskInfo) (plu
case v1.PodScheduled:
if c.Status == v1.ConditionFalse {
// Waiting to be scheduled. This usually refers to inability to acquire resources.
- return pluginsCore.PhaseInfoQueuedWithTaskInfo(t, pluginsCore.DefaultPhaseVersion, fmt.Sprintf("%s:%s", c.Reason, c.Message), phaseInfo.Info()), t
+ return pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginsCore.DefaultPhaseVersion, fmt.Sprintf("%s:%s", c.Reason, c.Message), phaseInfo.Info()), t
}
case v1.PodReasonUnschedulable:
@@ -989,7 +972,7 @@ func demystifyPendingHelper(status v1.PodStatus, info pluginsCore.TaskInfo) (plu
// reason: Unschedulable
// status: "False"
// type: PodScheduled
- return pluginsCore.PhaseInfoQueuedWithTaskInfo(t, pluginsCore.DefaultPhaseVersion, fmt.Sprintf("%s:%s", c.Reason, c.Message), phaseInfo.Info()), t
+ return pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginsCore.DefaultPhaseVersion, fmt.Sprintf("%s:%s", c.Reason, c.Message), phaseInfo.Info()), t
case v1.PodReady:
if c.Status == v1.ConditionFalse {
@@ -1034,7 +1017,7 @@ func demystifyPendingHelper(status v1.PodStatus, info pluginsCore.TaskInfo) (plu
// ErrImagePull -> Transitionary phase to ImagePullBackOff
// ContainerCreating -> Image is being downloaded
// PodInitializing -> Init containers are running
- return pluginsCore.PhaseInfoInitializing(t, pluginsCore.DefaultPhaseVersion, fmt.Sprintf("[%s]: %s", finalReason, finalMessage), &pluginsCore.TaskInfo{OccurredAt: &t}), t
+ return pluginsCore.PhaseInfoInitializing(pluginsCore.DefaultPhaseVersion, fmt.Sprintf("[%s]: %s", finalReason, finalMessage), &pluginsCore.TaskInfo{OccurredAt: &t}), t
case "CreateContainerError":
// This may consist of:
@@ -1063,12 +1046,7 @@ func demystifyPendingHelper(status v1.PodStatus, info pluginsCore.TaskInfo) (plu
OccurredAt: &t,
}), t
}
- return pluginsCore.PhaseInfoInitializing(
- t,
- pluginsCore.DefaultPhaseVersion,
- fmt.Sprintf("[%s]: %s", finalReason, finalMessage),
- &pluginsCore.TaskInfo{OccurredAt: &t},
- ), t
+ return pluginsCore.PhaseInfoInitializing(pluginsCore.DefaultPhaseVersion, fmt.Sprintf("[%s]: %s", finalReason, finalMessage), &pluginsCore.TaskInfo{OccurredAt: &t}), t
case "CreateContainerConfigError":
gracePeriod := config.GetK8sPluginConfig().CreateContainerConfigErrorGracePeriod.Duration
@@ -1077,12 +1055,7 @@ func demystifyPendingHelper(status v1.PodStatus, info pluginsCore.TaskInfo) (plu
OccurredAt: &t,
}), t
}
- return pluginsCore.PhaseInfoInitializing(
- t,
- pluginsCore.DefaultPhaseVersion,
- fmt.Sprintf("[%s]: %s", finalReason, finalMessage),
- &pluginsCore.TaskInfo{OccurredAt: &t},
- ), t
+ return pluginsCore.PhaseInfoInitializing(pluginsCore.DefaultPhaseVersion, fmt.Sprintf("[%s]: %s", finalReason, finalMessage), &pluginsCore.TaskInfo{OccurredAt: &t}), t
case "InvalidImageName":
return pluginsCore.PhaseInfoFailureWithCleanup(finalReason, finalMessage, &pluginsCore.TaskInfo{
@@ -1097,12 +1070,7 @@ func demystifyPendingHelper(status v1.PodStatus, info pluginsCore.TaskInfo) (plu
}), t
}
- return pluginsCore.PhaseInfoInitializing(
- t,
- pluginsCore.DefaultPhaseVersion,
- fmt.Sprintf("[%s]: %s", finalReason, finalMessage),
- &pluginsCore.TaskInfo{OccurredAt: &t},
- ), t
+ return pluginsCore.PhaseInfoInitializing(pluginsCore.DefaultPhaseVersion, fmt.Sprintf("[%s]: %s", finalReason, finalMessage), &pluginsCore.TaskInfo{OccurredAt: &t}), t
default:
// Since we are not checking for all error states, we may end up perpetually
diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper_test.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper_test.go
index 44d1c56e858..5a8f0cad63f 100644
--- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper_test.go
+++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper_test.go
@@ -79,8 +79,8 @@ func dummyTaskTemplate() *core.TaskTemplate {
func dummyInputReader() io.InputReader {
inputReader := &pluginsIOMock.InputReader{}
- inputReader.EXPECT().GetInputPath().Return(storage.DataReference("test-data-reference"))
- inputReader.EXPECT().GetInputPrefixPath().Return(storage.DataReference("test-data-reference-prefix"))
+ inputReader.EXPECT().GetInputPath().Return("test-data-reference")
+ inputReader.EXPECT().GetInputPrefixPath().Return("test-data-reference-prefix")
inputReader.EXPECT().Get(mock.Anything).Return(&core.LiteralMap{}, nil)
return inputReader
}
@@ -221,121 +221,6 @@ func TestAddRequiredNodeSelectorRequirements(t *testing.T) {
})
}
-func TestAddPreferredNodeSelectorRequirements(t *testing.T) {
- t.Run("with empty node affinity", func(t *testing.T) {
- affinity := v1.Affinity{}
- nst := v1.NodeSelectorRequirement{
- Key: "new",
- Operator: v1.NodeSelectorOpIn,
- Values: []string{"new"},
- }
- AddPreferredNodeSelectorRequirements(&affinity, 10, nst)
- assert.EqualValues(
- t,
- []v1.PreferredSchedulingTerm{
- v1.PreferredSchedulingTerm{
- Weight: 10,
- Preference: v1.NodeSelectorTerm{
- MatchExpressions: []v1.NodeSelectorRequirement{
- v1.NodeSelectorRequirement{
- Key: "new",
- Operator: v1.NodeSelectorOpIn,
- Values: []string{"new"},
- },
- },
- },
- },
- },
- affinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution,
- )
- })
-
- t.Run("with existing node affinity", func(t *testing.T) {
- affinity := v1.Affinity{
- NodeAffinity: &v1.NodeAffinity{
- RequiredDuringSchedulingIgnoredDuringExecution: &v1.NodeSelector{
- NodeSelectorTerms: []v1.NodeSelectorTerm{
- v1.NodeSelectorTerm{
- MatchExpressions: []v1.NodeSelectorRequirement{
- v1.NodeSelectorRequirement{
- Key: "required",
- Operator: v1.NodeSelectorOpIn,
- Values: []string{"required"},
- },
- },
- },
- },
- },
- PreferredDuringSchedulingIgnoredDuringExecution: []v1.PreferredSchedulingTerm{
- v1.PreferredSchedulingTerm{
- Weight: 1,
- Preference: v1.NodeSelectorTerm{
- MatchExpressions: []v1.NodeSelectorRequirement{
- v1.NodeSelectorRequirement{
- Key: "preferred",
- Operator: v1.NodeSelectorOpIn,
- Values: []string{"preferred"},
- },
- },
- },
- },
- },
- },
- }
- nst := v1.NodeSelectorRequirement{
- Key: "new",
- Operator: v1.NodeSelectorOpIn,
- Values: []string{"new"},
- }
- AddPreferredNodeSelectorRequirements(&affinity, 10, nst)
- assert.EqualValues(
- t,
- []v1.NodeSelectorTerm{
- v1.NodeSelectorTerm{
- MatchExpressions: []v1.NodeSelectorRequirement{
- v1.NodeSelectorRequirement{
- Key: "required",
- Operator: v1.NodeSelectorOpIn,
- Values: []string{"required"},
- },
- },
- },
- },
- affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms,
- )
- assert.EqualValues(
- t,
- []v1.PreferredSchedulingTerm{
- v1.PreferredSchedulingTerm{
- Weight: 1,
- Preference: v1.NodeSelectorTerm{
- MatchExpressions: []v1.NodeSelectorRequirement{
- v1.NodeSelectorRequirement{
- Key: "preferred",
- Operator: v1.NodeSelectorOpIn,
- Values: []string{"preferred"},
- },
- },
- },
- },
- v1.PreferredSchedulingTerm{
- Weight: 10,
- Preference: v1.NodeSelectorTerm{
- MatchExpressions: []v1.NodeSelectorRequirement{
- v1.NodeSelectorRequirement{
- Key: "new",
- Operator: v1.NodeSelectorOpIn,
- Values: []string{"new"},
- },
- },
- },
- },
- },
- affinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution,
- )
- })
-}
-
func TestApplyInterruptibleNodeAffinity(t *testing.T) {
t.Run("WithInterruptibleNodeSelectorRequirement", func(t *testing.T) {
podSpec := v1.PodSpec{}
@@ -2446,6 +2331,116 @@ func TestMergeBasePodSpecsOntoTemplate(t *testing.T) {
primaryContainerName: "task-1",
primaryInitContainerName: "task-init-1",
},
+ {
+ name: "template with default container with env vars, base with default container",
+ templatePodSpec: &v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "default",
+ Image: "default-task-image",
+ Env: []v1.EnvVar{{Name: "FOO", Value: "BAR"}},
+ },
+ },
+ InitContainers: []v1.Container{
+ {
+ Name: "default-init",
+ Image: "default-task-init-image",
+ Env: []v1.EnvVar{{Name: "INIT_FOO", Value: "INIT_BAR"}},
+ },
+ },
+ },
+ basePodSpec: &v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "default",
+ Image: "task-image",
+ },
+ },
+ InitContainers: []v1.Container{
+ {
+ Name: "default-init",
+ Image: "task-init-image",
+ },
+ },
+ },
+ expectedResult: &v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "default",
+ Image: "task-image",
+ Env: []v1.EnvVar{
+ {Name: "FOO", Value: "BAR"},
+ },
+ },
+ },
+ InitContainers: []v1.Container{
+ {
+ Name: "default-init",
+ Image: "task-init-image",
+ Env: []v1.EnvVar{
+ {Name: "INIT_FOO", Value: "INIT_BAR"},
+ },
+ },
+ },
+ },
+ primaryContainerName: "primary",
+ primaryInitContainerName: "primary-init",
+ },
+ {
+ name: "template with primary container with env vars, base with primary container",
+ templatePodSpec: &v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "primary",
+ Image: "default-task-image",
+ Env: []v1.EnvVar{{Name: "FOO", Value: "BAR"}},
+ },
+ },
+ InitContainers: []v1.Container{
+ {
+ Name: "primary-init",
+ Image: "default-task-init-image",
+ Env: []v1.EnvVar{{Name: "INIT_FOO", Value: "INIT_BAR"}},
+ },
+ },
+ },
+ basePodSpec: &v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "primary",
+ Image: "task-image",
+ },
+ },
+ InitContainers: []v1.Container{
+ {
+ Name: "primary-init",
+ Image: "task-init-image",
+ },
+ },
+ },
+ expectedResult: &v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "primary",
+ Image: "task-image",
+ Env: []v1.EnvVar{
+ {Name: "FOO", Value: "BAR"},
+ },
+ },
+ },
+ InitContainers: []v1.Container{
+ {
+ Name: "primary-init",
+ Image: "task-init-image",
+ Env: []v1.EnvVar{
+ {Name: "INIT_FOO", Value: "INIT_BAR"},
+ },
+ },
+ },
+ },
+ primaryContainerName: "primary",
+ primaryInitContainerName: "primary-init",
+ },
}
for _, tt := range tests {
diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_template_store.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_template_store.go
index 83fa5960cb1..6f7a789a125 100644
--- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_template_store.go
+++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_template_store.go
@@ -10,7 +10,7 @@ import (
"github.com/flyteorg/flyte/flytestdlib/logger"
)
-var DefaultPodTemplateStore PodTemplateStore = NewPodTemplateStore()
+var DefaultPodTemplateStore = NewPodTemplateStore()
// PodTemplateStore maintains a thread-safe mapping of active PodTemplates with their associated
// namespaces.
diff --git a/flyteplugins/go/tasks/pluginmachinery/internal/webapi/allocation_token.go b/flyteplugins/go/tasks/pluginmachinery/internal/webapi/allocation_token.go
index 4beaaad91fb..59c216cc946 100644
--- a/flyteplugins/go/tasks/pluginmachinery/internal/webapi/allocation_token.go
+++ b/flyteplugins/go/tasks/pluginmachinery/internal/webapi/allocation_token.go
@@ -62,10 +62,9 @@ func (a tokenAllocator) allocateToken(ctx context.Context, p webapi.AsyncPlugin,
}
return &State{
- AllocationTokenRequestStartTime: startTime,
- Phase: PhaseNotStarted,
- }, core.PhaseInfoWaitingForResourcesInfo(
- a.clock.Now(), 0, "Quota for task has exceeded. Waiting for the resource.", nil), nil
+ AllocationTokenRequestStartTime: startTime,
+ Phase: PhaseNotStarted,
+ }, core.PhaseInfoWaitingForResourcesInfo(0, "Quota for task has exceeded. Waiting for the resource.", nil), nil
}
return nil, core.PhaseInfo{}, fmt.Errorf("allocation status undefined [%v]", allocationStatus)
diff --git a/flyteplugins/go/tasks/pluginmachinery/internal/webapi/cache.go b/flyteplugins/go/tasks/pluginmachinery/internal/webapi/cache.go
index 956848ed7ae..6d673e1f8ec 100644
--- a/flyteplugins/go/tasks/pluginmachinery/internal/webapi/cache.go
+++ b/flyteplugins/go/tasks/pluginmachinery/internal/webapi/cache.go
@@ -85,7 +85,7 @@ func (q *ResourceCache) SyncResource(ctx context.Context, batch cache.Batch) (
resource.GetID())
if cacheItem.IsTerminal() {
- logger.Debugf(ctx, "Sync loop - resource cache key [%v] in terminal state [%s]",
+ logger.Debugf(ctx, "Sync loop - resource cache key [%s] in terminal state",
resource.GetID())
resp = append(resp, cache.ItemSyncResponse{
ID: resource.GetID(),
@@ -97,8 +97,8 @@ func (q *ResourceCache) SyncResource(ctx context.Context, batch cache.Batch) (
}
if cacheItem.SyncFailureCount > q.cfg.MaxSystemFailures {
- logger.Debugf(ctx, "Sync loop - Item with key [%v] has failed to sync [%v] time(s). More than the allowed [%v] time(s). Marking as failure.",
- cacheItem.SyncFailureCount, q.cfg.MaxSystemFailures)
+ logger.Debugf(ctx, "Sync loop - Item with key [%s] has failed to sync [%d] time(s). More than the allowed [%d] time(s). Marking as failure.",
+ resource.GetID(), cacheItem.SyncFailureCount, q.cfg.MaxSystemFailures)
cacheItem.State.Phase = PhaseSystemFailure
resp = append(resp, cache.ItemSyncResponse{
ID: resource.GetID(),
diff --git a/flyteplugins/go/tasks/pluginmachinery/internal/webapi/mocks/client.go b/flyteplugins/go/tasks/pluginmachinery/internal/webapi/mocks/client.go
index e5ab6284e4b..662863fa67a 100644
--- a/flyteplugins/go/tasks/pluginmachinery/internal/webapi/mocks/client.go
+++ b/flyteplugins/go/tasks/pluginmachinery/internal/webapi/mocks/client.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/io/mocks/checkpoint_paths.go b/flyteplugins/go/tasks/pluginmachinery/io/mocks/checkpoint_paths.go
index e75769aa62c..3469c322d9a 100644
--- a/flyteplugins/go/tasks/pluginmachinery/io/mocks/checkpoint_paths.go
+++ b/flyteplugins/go/tasks/pluginmachinery/io/mocks/checkpoint_paths.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *CheckpointPaths) EXPECT() *CheckpointPaths_Expecter {
return &CheckpointPaths_Expecter{mock: &_m.Mock}
}
-// GetCheckpointPrefix provides a mock function with given fields:
+// GetCheckpointPrefix provides a mock function with no fields
func (_m *CheckpointPaths) GetCheckpointPrefix() storage.DataReference {
ret := _m.Called()
@@ -65,7 +65,7 @@ func (_c *CheckpointPaths_GetCheckpointPrefix_Call) RunAndReturn(run func() stor
return _c
}
-// GetPreviousCheckpointsPrefix provides a mock function with given fields:
+// GetPreviousCheckpointsPrefix provides a mock function with no fields
func (_m *CheckpointPaths) GetPreviousCheckpointsPrefix() storage.DataReference {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/io/mocks/error_reader.go b/flyteplugins/go/tasks/pluginmachinery/io/mocks/error_reader.go
index 073bf1fbdfd..eb9d120859e 100644
--- a/flyteplugins/go/tasks/pluginmachinery/io/mocks/error_reader.go
+++ b/flyteplugins/go/tasks/pluginmachinery/io/mocks/error_reader.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_file_paths.go b/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_file_paths.go
index 8f913a84af0..d010ae81286 100644
--- a/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_file_paths.go
+++ b/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_file_paths.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *InputFilePaths) EXPECT() *InputFilePaths_Expecter {
return &InputFilePaths_Expecter{mock: &_m.Mock}
}
-// GetInputPath provides a mock function with given fields:
+// GetInputPath provides a mock function with no fields
func (_m *InputFilePaths) GetInputPath() storage.DataReference {
ret := _m.Called()
@@ -65,7 +65,7 @@ func (_c *InputFilePaths_GetInputPath_Call) RunAndReturn(run func() storage.Data
return _c
}
-// GetInputPrefixPath provides a mock function with given fields:
+// GetInputPrefixPath provides a mock function with no fields
func (_m *InputFilePaths) GetInputPrefixPath() storage.DataReference {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_reader.go b/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_reader.go
index 878903588e2..93523fad50a 100644
--- a/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_reader.go
+++ b/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_reader.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -83,7 +83,7 @@ func (_c *InputReader_Get_Call) RunAndReturn(run func(context.Context) (*core.Li
return _c
}
-// GetInputPath provides a mock function with given fields:
+// GetInputPath provides a mock function with no fields
func (_m *InputReader) GetInputPath() storage.DataReference {
ret := _m.Called()
@@ -128,7 +128,7 @@ func (_c *InputReader_GetInputPath_Call) RunAndReturn(run func() storage.DataRef
return _c
}
-// GetInputPrefixPath provides a mock function with given fields:
+// GetInputPrefixPath provides a mock function with no fields
func (_m *InputReader) GetInputPrefixPath() storage.DataReference {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_file_paths.go b/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_file_paths.go
index a9f553804e8..8a8d7ac4fe0 100644
--- a/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_file_paths.go
+++ b/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_file_paths.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *OutputFilePaths) EXPECT() *OutputFilePaths_Expecter {
return &OutputFilePaths_Expecter{mock: &_m.Mock}
}
-// GetCheckpointPrefix provides a mock function with given fields:
+// GetCheckpointPrefix provides a mock function with no fields
func (_m *OutputFilePaths) GetCheckpointPrefix() storage.DataReference {
ret := _m.Called()
@@ -65,7 +65,7 @@ func (_c *OutputFilePaths_GetCheckpointPrefix_Call) RunAndReturn(run func() stor
return _c
}
-// GetDeckPath provides a mock function with given fields:
+// GetDeckPath provides a mock function with no fields
func (_m *OutputFilePaths) GetDeckPath() storage.DataReference {
ret := _m.Called()
@@ -110,7 +110,7 @@ func (_c *OutputFilePaths_GetDeckPath_Call) RunAndReturn(run func() storage.Data
return _c
}
-// GetErrorPath provides a mock function with given fields:
+// GetErrorPath provides a mock function with no fields
func (_m *OutputFilePaths) GetErrorPath() storage.DataReference {
ret := _m.Called()
@@ -155,7 +155,7 @@ func (_c *OutputFilePaths_GetErrorPath_Call) RunAndReturn(run func() storage.Dat
return _c
}
-// GetOutputPath provides a mock function with given fields:
+// GetOutputPath provides a mock function with no fields
func (_m *OutputFilePaths) GetOutputPath() storage.DataReference {
ret := _m.Called()
@@ -200,7 +200,7 @@ func (_c *OutputFilePaths_GetOutputPath_Call) RunAndReturn(run func() storage.Da
return _c
}
-// GetOutputPrefixPath provides a mock function with given fields:
+// GetOutputPrefixPath provides a mock function with no fields
func (_m *OutputFilePaths) GetOutputPrefixPath() storage.DataReference {
ret := _m.Called()
@@ -245,7 +245,7 @@ func (_c *OutputFilePaths_GetOutputPrefixPath_Call) RunAndReturn(run func() stor
return _c
}
-// GetPreviousCheckpointsPrefix provides a mock function with given fields:
+// GetPreviousCheckpointsPrefix provides a mock function with no fields
func (_m *OutputFilePaths) GetPreviousCheckpointsPrefix() storage.DataReference {
ret := _m.Called()
@@ -290,7 +290,7 @@ func (_c *OutputFilePaths_GetPreviousCheckpointsPrefix_Call) RunAndReturn(run fu
return _c
}
-// GetRawOutputPrefix provides a mock function with given fields:
+// GetRawOutputPrefix provides a mock function with no fields
func (_m *OutputFilePaths) GetRawOutputPrefix() storage.DataReference {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_reader.go b/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_reader.go
index fb380dfaec3..52706a2b6ef 100644
--- a/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_reader.go
+++ b/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_reader.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_writer.go b/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_writer.go
index d3dd8da041c..64ab6a06c72 100644
--- a/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_writer.go
+++ b/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_writer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -24,7 +24,7 @@ func (_m *OutputWriter) EXPECT() *OutputWriter_Expecter {
return &OutputWriter_Expecter{mock: &_m.Mock}
}
-// GetCheckpointPrefix provides a mock function with given fields:
+// GetCheckpointPrefix provides a mock function with no fields
func (_m *OutputWriter) GetCheckpointPrefix() storage.DataReference {
ret := _m.Called()
@@ -69,7 +69,7 @@ func (_c *OutputWriter_GetCheckpointPrefix_Call) RunAndReturn(run func() storage
return _c
}
-// GetDeckPath provides a mock function with given fields:
+// GetDeckPath provides a mock function with no fields
func (_m *OutputWriter) GetDeckPath() storage.DataReference {
ret := _m.Called()
@@ -114,7 +114,7 @@ func (_c *OutputWriter_GetDeckPath_Call) RunAndReturn(run func() storage.DataRef
return _c
}
-// GetErrorPath provides a mock function with given fields:
+// GetErrorPath provides a mock function with no fields
func (_m *OutputWriter) GetErrorPath() storage.DataReference {
ret := _m.Called()
@@ -159,7 +159,7 @@ func (_c *OutputWriter_GetErrorPath_Call) RunAndReturn(run func() storage.DataRe
return _c
}
-// GetOutputPath provides a mock function with given fields:
+// GetOutputPath provides a mock function with no fields
func (_m *OutputWriter) GetOutputPath() storage.DataReference {
ret := _m.Called()
@@ -204,7 +204,7 @@ func (_c *OutputWriter_GetOutputPath_Call) RunAndReturn(run func() storage.DataR
return _c
}
-// GetOutputPrefixPath provides a mock function with given fields:
+// GetOutputPrefixPath provides a mock function with no fields
func (_m *OutputWriter) GetOutputPrefixPath() storage.DataReference {
ret := _m.Called()
@@ -249,7 +249,7 @@ func (_c *OutputWriter_GetOutputPrefixPath_Call) RunAndReturn(run func() storage
return _c
}
-// GetPreviousCheckpointsPrefix provides a mock function with given fields:
+// GetPreviousCheckpointsPrefix provides a mock function with no fields
func (_m *OutputWriter) GetPreviousCheckpointsPrefix() storage.DataReference {
ret := _m.Called()
@@ -294,7 +294,7 @@ func (_c *OutputWriter_GetPreviousCheckpointsPrefix_Call) RunAndReturn(run func(
return _c
}
-// GetRawOutputPrefix provides a mock function with given fields:
+// GetRawOutputPrefix provides a mock function with no fields
func (_m *OutputWriter) GetRawOutputPrefix() storage.DataReference {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/io/mocks/raw_output_paths.go b/flyteplugins/go/tasks/pluginmachinery/io/mocks/raw_output_paths.go
index 79af89df31d..593760252f8 100644
--- a/flyteplugins/go/tasks/pluginmachinery/io/mocks/raw_output_paths.go
+++ b/flyteplugins/go/tasks/pluginmachinery/io/mocks/raw_output_paths.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *RawOutputPaths) EXPECT() *RawOutputPaths_Expecter {
return &RawOutputPaths_Expecter{mock: &_m.Mock}
}
-// GetRawOutputPrefix provides a mock function with given fields:
+// GetRawOutputPrefix provides a mock function with no fields
func (_m *RawOutputPaths) GetRawOutputPrefix() storage.DataReference {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/plugin.go b/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/plugin.go
index caf9a6c55e5..11d82e6de0a 100644
--- a/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/plugin.go
+++ b/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/plugin.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -145,7 +145,7 @@ func (_c *Plugin_BuildResource_Call) RunAndReturn(run func(context.Context, core
return _c
}
-// GetProperties provides a mock function with given fields:
+// GetProperties provides a mock function with no fields
func (_m *Plugin) GetProperties() k8s.PluginProperties {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/plugin_abort_override.go b/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/plugin_abort_override.go
index 764010c9c6a..43266d810cb 100644
--- a/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/plugin_abort_override.go
+++ b/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/plugin_abort_override.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/plugin_context.go b/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/plugin_context.go
index c50cd7a3b90..3d0f658ee4e 100644
--- a/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/plugin_context.go
+++ b/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/plugin_context.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -24,7 +24,7 @@ func (_m *PluginContext) EXPECT() *PluginContext_Expecter {
return &PluginContext_Expecter{mock: &_m.Mock}
}
-// DataStore provides a mock function with given fields:
+// DataStore provides a mock function with no fields
func (_m *PluginContext) DataStore() *storage.DataStore {
ret := _m.Called()
@@ -71,7 +71,7 @@ func (_c *PluginContext_DataStore_Call) RunAndReturn(run func() *storage.DataSto
return _c
}
-// InputReader provides a mock function with given fields:
+// InputReader provides a mock function with no fields
func (_m *PluginContext) InputReader() io.InputReader {
ret := _m.Called()
@@ -118,7 +118,7 @@ func (_c *PluginContext_InputReader_Call) RunAndReturn(run func() io.InputReader
return _c
}
-// OutputWriter provides a mock function with given fields:
+// OutputWriter provides a mock function with no fields
func (_m *PluginContext) OutputWriter() io.OutputWriter {
ret := _m.Called()
@@ -165,7 +165,7 @@ func (_c *PluginContext_OutputWriter_Call) RunAndReturn(run func() io.OutputWrit
return _c
}
-// PluginStateReader provides a mock function with given fields:
+// PluginStateReader provides a mock function with no fields
func (_m *PluginContext) PluginStateReader() core.PluginStateReader {
ret := _m.Called()
@@ -212,7 +212,7 @@ func (_c *PluginContext_PluginStateReader_Call) RunAndReturn(run func() core.Plu
return _c
}
-// TaskExecutionMetadata provides a mock function with given fields:
+// TaskExecutionMetadata provides a mock function with no fields
func (_m *PluginContext) TaskExecutionMetadata() core.TaskExecutionMetadata {
ret := _m.Called()
@@ -259,7 +259,7 @@ func (_c *PluginContext_TaskExecutionMetadata_Call) RunAndReturn(run func() core
return _c
}
-// TaskReader provides a mock function with given fields:
+// TaskReader provides a mock function with no fields
func (_m *PluginContext) TaskReader() core.TaskReader {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/tasklog/plugin.go b/flyteplugins/go/tasks/pluginmachinery/tasklog/plugin.go
index 85a5961f0f4..bb02842d696 100644
--- a/flyteplugins/go/tasks/pluginmachinery/tasklog/plugin.go
+++ b/flyteplugins/go/tasks/pluginmachinery/tasklog/plugin.go
@@ -11,11 +11,6 @@ import (
type TemplateScheme int
-const (
- TemplateSchemePod TemplateScheme = iota
- TemplateSchemeTaskExecution
-)
-
// TemplateURI is a URI that accepts templates. See: go/tasks/pluginmachinery/tasklog/template.go for available templates.
type TemplateURI = string
diff --git a/flyteplugins/go/tasks/pluginmachinery/utils/secrets/marshaler_test.go b/flyteplugins/go/tasks/pluginmachinery/utils/secrets/marshaler_test.go
index de5265fda64..acec251ef8e 100644
--- a/flyteplugins/go/tasks/pluginmachinery/utils/secrets/marshaler_test.go
+++ b/flyteplugins/go/tasks/pluginmachinery/utils/secrets/marshaler_test.go
@@ -34,14 +34,14 @@ func TestMarshalSecretsToMapStrings(t *testing.T) {
{
Group: ";':/\\",
},
- }}, want: map[string]string{
+ }}, want: map[string]string{ //nolint:gosec
"flyte.secrets/s0": "m4zg54lqhiqceozhhixvyxbcbi",
}, wantErr: false},
{name: "Without group", args: args{secrets: []*core.Secret{
{
Key: "my_key",
},
- }}, want: map[string]string{
+ }}, want: map[string]string{ //nolint:gosec
"flyte.secrets/s0": "nnsxsoraejwxsx2lmv3secq",
}, wantErr: false},
}
diff --git a/flyteplugins/go/tasks/pluginmachinery/webapi/example/config_flags_test.go b/flyteplugins/go/tasks/pluginmachinery/webapi/example/config_flags_test.go
index 34416af196a..ea92e0bc491 100755
--- a/flyteplugins/go/tasks/pluginmachinery/webapi/example/config_flags_test.go
+++ b/flyteplugins/go/tasks/pluginmachinery/webapi/example/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/pluginmachinery/webapi/example/plugin.go b/flyteplugins/go/tasks/pluginmachinery/webapi/example/plugin.go
index 0ec6c2066e4..7a80489dde9 100644
--- a/flyteplugins/go/tasks/pluginmachinery/webapi/example/plugin.go
+++ b/flyteplugins/go/tasks/pluginmachinery/webapi/example/plugin.go
@@ -8,16 +8,9 @@ import (
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/webapi"
- "github.com/flyteorg/flyte/flytestdlib/errors"
"github.com/flyteorg/flyte/flytestdlib/promutils"
)
-const (
- ErrRemoteSystem errors.ErrorCode = "RemoteSystem"
- ErrRemoteUser errors.ErrorCode = "RemoteUser"
- ErrSystem errors.ErrorCode = "System"
-)
-
type Plugin struct {
metricScope promutils.Scope
cfg *Config
diff --git a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/async_plugin.go b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/async_plugin.go
index 8e84dba71da..230111a3324 100644
--- a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/async_plugin.go
+++ b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/async_plugin.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -198,7 +198,7 @@ func (_c *AsyncPlugin_Get_Call) RunAndReturn(run func(context.Context, webapi.Ge
return _c
}
-// GetConfig provides a mock function with given fields:
+// GetConfig provides a mock function with no fields
func (_m *AsyncPlugin) GetConfig() webapi.PluginConfig {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/delete_context.go b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/delete_context.go
index 7095d80d21e..ecf9b79f1b5 100644
--- a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/delete_context.go
+++ b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/delete_context.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *DeleteContext) EXPECT() *DeleteContext_Expecter {
return &DeleteContext_Expecter{mock: &_m.Mock}
}
-// Reason provides a mock function with given fields:
+// Reason provides a mock function with no fields
func (_m *DeleteContext) Reason() string {
ret := _m.Called()
@@ -62,7 +62,7 @@ func (_c *DeleteContext_Reason_Call) RunAndReturn(run func() string) *DeleteCont
return _c
}
-// ResourceMeta provides a mock function with given fields:
+// ResourceMeta provides a mock function with no fields
func (_m *DeleteContext) ResourceMeta() interface{} {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/get_context.go b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/get_context.go
index cc88a4925d4..15143feec56 100644
--- a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/get_context.go
+++ b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/get_context.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *GetContext) EXPECT() *GetContext_Expecter {
return &GetContext_Expecter{mock: &_m.Mock}
}
-// ResourceMeta provides a mock function with given fields:
+// ResourceMeta provides a mock function with no fields
func (_m *GetContext) ResourceMeta() interface{} {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/plugin_loader.go b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/plugin_loader.go
index 6efb2a0fed0..3b144065f34 100644
--- a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/plugin_loader.go
+++ b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/plugin_loader.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/plugin_setup_context.go b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/plugin_setup_context.go
index 64fe7bf5123..fbbb44a3194 100644
--- a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/plugin_setup_context.go
+++ b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/plugin_setup_context.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *PluginSetupContext) EXPECT() *PluginSetupContext_Expecter {
return &PluginSetupContext_Expecter{mock: &_m.Mock}
}
-// MetricsScope provides a mock function with given fields:
+// MetricsScope provides a mock function with no fields
func (_m *PluginSetupContext) MetricsScope() promutils.Scope {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/status_context.go b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/status_context.go
index 75d854c216c..a67fdeaa40e 100644
--- a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/status_context.go
+++ b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/status_context.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -24,7 +24,7 @@ func (_m *StatusContext) EXPECT() *StatusContext_Expecter {
return &StatusContext_Expecter{mock: &_m.Mock}
}
-// DataStore provides a mock function with given fields:
+// DataStore provides a mock function with no fields
func (_m *StatusContext) DataStore() *storage.DataStore {
ret := _m.Called()
@@ -71,7 +71,7 @@ func (_c *StatusContext_DataStore_Call) RunAndReturn(run func() *storage.DataSto
return _c
}
-// InputReader provides a mock function with given fields:
+// InputReader provides a mock function with no fields
func (_m *StatusContext) InputReader() io.InputReader {
ret := _m.Called()
@@ -118,7 +118,7 @@ func (_c *StatusContext_InputReader_Call) RunAndReturn(run func() io.InputReader
return _c
}
-// OutputWriter provides a mock function with given fields:
+// OutputWriter provides a mock function with no fields
func (_m *StatusContext) OutputWriter() io.OutputWriter {
ret := _m.Called()
@@ -165,7 +165,7 @@ func (_c *StatusContext_OutputWriter_Call) RunAndReturn(run func() io.OutputWrit
return _c
}
-// Resource provides a mock function with given fields:
+// Resource provides a mock function with no fields
func (_m *StatusContext) Resource() interface{} {
ret := _m.Called()
@@ -212,7 +212,7 @@ func (_c *StatusContext_Resource_Call) RunAndReturn(run func() interface{}) *Sta
return _c
}
-// ResourceMeta provides a mock function with given fields:
+// ResourceMeta provides a mock function with no fields
func (_m *StatusContext) ResourceMeta() interface{} {
ret := _m.Called()
@@ -259,7 +259,7 @@ func (_c *StatusContext_ResourceMeta_Call) RunAndReturn(run func() interface{})
return _c
}
-// SecretManager provides a mock function with given fields:
+// SecretManager provides a mock function with no fields
func (_m *StatusContext) SecretManager() core.SecretManager {
ret := _m.Called()
@@ -306,7 +306,7 @@ func (_c *StatusContext_SecretManager_Call) RunAndReturn(run func() core.SecretM
return _c
}
-// TaskExecutionMetadata provides a mock function with given fields:
+// TaskExecutionMetadata provides a mock function with no fields
func (_m *StatusContext) TaskExecutionMetadata() core.TaskExecutionMetadata {
ret := _m.Called()
@@ -353,7 +353,7 @@ func (_c *StatusContext_TaskExecutionMetadata_Call) RunAndReturn(run func() core
return _c
}
-// TaskReader provides a mock function with given fields:
+// TaskReader provides a mock function with no fields
func (_m *StatusContext) TaskReader() core.TaskReader {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/sync_plugin.go b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/sync_plugin.go
index 86626c13ecd..4aa3204393d 100644
--- a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/sync_plugin.go
+++ b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/sync_plugin.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -81,7 +81,7 @@ func (_c *SyncPlugin_Do_Call) RunAndReturn(run func(context.Context, webapi.Task
return _c
}
-// GetConfig provides a mock function with given fields:
+// GetConfig provides a mock function with no fields
func (_m *SyncPlugin) GetConfig() webapi.PluginConfig {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/task_execution_context.go b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/task_execution_context.go
index 12afe29ab58..d6047dbaf0f 100644
--- a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/task_execution_context.go
+++ b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/task_execution_context.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -24,7 +24,7 @@ func (_m *TaskExecutionContext) EXPECT() *TaskExecutionContext_Expecter {
return &TaskExecutionContext_Expecter{mock: &_m.Mock}
}
-// DataStore provides a mock function with given fields:
+// DataStore provides a mock function with no fields
func (_m *TaskExecutionContext) DataStore() *storage.DataStore {
ret := _m.Called()
@@ -71,7 +71,7 @@ func (_c *TaskExecutionContext_DataStore_Call) RunAndReturn(run func() *storage.
return _c
}
-// InputReader provides a mock function with given fields:
+// InputReader provides a mock function with no fields
func (_m *TaskExecutionContext) InputReader() io.InputReader {
ret := _m.Called()
@@ -118,7 +118,7 @@ func (_c *TaskExecutionContext_InputReader_Call) RunAndReturn(run func() io.Inpu
return _c
}
-// OutputWriter provides a mock function with given fields:
+// OutputWriter provides a mock function with no fields
func (_m *TaskExecutionContext) OutputWriter() io.OutputWriter {
ret := _m.Called()
@@ -165,7 +165,7 @@ func (_c *TaskExecutionContext_OutputWriter_Call) RunAndReturn(run func() io.Out
return _c
}
-// SecretManager provides a mock function with given fields:
+// SecretManager provides a mock function with no fields
func (_m *TaskExecutionContext) SecretManager() core.SecretManager {
ret := _m.Called()
@@ -212,7 +212,7 @@ func (_c *TaskExecutionContext_SecretManager_Call) RunAndReturn(run func() core.
return _c
}
-// TaskExecutionMetadata provides a mock function with given fields:
+// TaskExecutionMetadata provides a mock function with no fields
func (_m *TaskExecutionContext) TaskExecutionMetadata() core.TaskExecutionMetadata {
ret := _m.Called()
@@ -259,7 +259,7 @@ func (_c *TaskExecutionContext_TaskExecutionMetadata_Call) RunAndReturn(run func
return _c
}
-// TaskReader provides a mock function with given fields:
+// TaskReader provides a mock function with no fields
func (_m *TaskExecutionContext) TaskReader() core.TaskReader {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/task_execution_context_reader.go b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/task_execution_context_reader.go
index eaaa379e4a3..20616d5fe58 100644
--- a/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/task_execution_context_reader.go
+++ b/flyteplugins/go/tasks/pluginmachinery/webapi/mocks/task_execution_context_reader.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -22,7 +22,7 @@ func (_m *TaskExecutionContextReader) EXPECT() *TaskExecutionContextReader_Expec
return &TaskExecutionContextReader_Expecter{mock: &_m.Mock}
}
-// InputReader provides a mock function with given fields:
+// InputReader provides a mock function with no fields
func (_m *TaskExecutionContextReader) InputReader() io.InputReader {
ret := _m.Called()
@@ -69,7 +69,7 @@ func (_c *TaskExecutionContextReader_InputReader_Call) RunAndReturn(run func() i
return _c
}
-// OutputWriter provides a mock function with given fields:
+// OutputWriter provides a mock function with no fields
func (_m *TaskExecutionContextReader) OutputWriter() io.OutputWriter {
ret := _m.Called()
@@ -116,7 +116,7 @@ func (_c *TaskExecutionContextReader_OutputWriter_Call) RunAndReturn(run func()
return _c
}
-// SecretManager provides a mock function with given fields:
+// SecretManager provides a mock function with no fields
func (_m *TaskExecutionContextReader) SecretManager() core.SecretManager {
ret := _m.Called()
@@ -163,7 +163,7 @@ func (_c *TaskExecutionContextReader_SecretManager_Call) RunAndReturn(run func()
return _c
}
-// TaskExecutionMetadata provides a mock function with given fields:
+// TaskExecutionMetadata provides a mock function with no fields
func (_m *TaskExecutionContextReader) TaskExecutionMetadata() core.TaskExecutionMetadata {
ret := _m.Called()
@@ -210,7 +210,7 @@ func (_c *TaskExecutionContextReader_TaskExecutionMetadata_Call) RunAndReturn(ru
return _c
}
-// TaskReader provides a mock function with given fields:
+// TaskReader provides a mock function with no fields
func (_m *TaskExecutionContextReader) TaskReader() core.TaskReader {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/pluginmachinery/webapi/pluginconfig_flags_test.go b/flyteplugins/go/tasks/pluginmachinery/webapi/pluginconfig_flags_test.go
index 27ae995a117..f0b16e88476 100755
--- a/flyteplugins/go/tasks/pluginmachinery/webapi/pluginconfig_flags_test.go
+++ b/flyteplugins/go/tasks/pluginmachinery/webapi/pluginconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/indexed_work_queue.go b/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/indexed_work_queue.go
index b5bf3ca9196..193b89e5ca5 100644
--- a/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/indexed_work_queue.go
+++ b/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/indexed_work_queue.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/processor.go b/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/processor.go
index 065bc950977..dc2c2ae8c70 100644
--- a/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/processor.go
+++ b/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/processor.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/work_item.go b/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/work_item.go
index f9657e326d6..a9c1f976dc5 100644
--- a/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/work_item.go
+++ b/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/work_item.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/work_item_info.go b/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/work_item_info.go
index 079d36f898a..9edf551a00b 100644
--- a/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/work_item_info.go
+++ b/flyteplugins/go/tasks/pluginmachinery/workqueue/mocks/work_item_info.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *WorkItemInfo) EXPECT() *WorkItemInfo_Expecter {
return &WorkItemInfo_Expecter{mock: &_m.Mock}
}
-// Error provides a mock function with given fields:
+// Error provides a mock function with no fields
func (_m *WorkItemInfo) Error() error {
ret := _m.Called()
@@ -65,7 +65,7 @@ func (_c *WorkItemInfo_Error_Call) RunAndReturn(run func() error) *WorkItemInfo_
return _c
}
-// ID provides a mock function with given fields:
+// ID provides a mock function with no fields
func (_m *WorkItemInfo) ID() string {
ret := _m.Called()
@@ -110,7 +110,7 @@ func (_c *WorkItemInfo_ID_Call) RunAndReturn(run func() string) *WorkItemInfo_ID
return _c
}
-// Item provides a mock function with given fields:
+// Item provides a mock function with no fields
func (_m *WorkItemInfo) Item() workqueue.WorkItem {
ret := _m.Called()
@@ -157,7 +157,7 @@ func (_c *WorkItemInfo_Item_Call) RunAndReturn(run func() workqueue.WorkItem) *W
return _c
}
-// Status provides a mock function with given fields:
+// Status provides a mock function with no fields
func (_m *WorkItemInfo) Status() workqueue.WorkStatus {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/plugins/array/awsbatch/config/config_flags_test.go b/flyteplugins/go/tasks/plugins/array/awsbatch/config/config_flags_test.go
index 9d068389119..7912ac98834 100755
--- a/flyteplugins/go/tasks/plugins/array/awsbatch/config/config_flags_test.go
+++ b/flyteplugins/go/tasks/plugins/array/awsbatch/config/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/plugins/array/awsbatch/executor.go b/flyteplugins/go/tasks/plugins/array/awsbatch/executor.go
index 1e987361298..f3a3f9b49f1 100644
--- a/flyteplugins/go/tasks/plugins/array/awsbatch/executor.go
+++ b/flyteplugins/go/tasks/plugins/array/awsbatch/executor.go
@@ -153,7 +153,7 @@ func NewExecutor(ctx context.Context, awsClient aws.Client, cfg *batchConfig.Con
Updated: func(ctx context.Context, event Event) {
err := enqueueOwner(event.NewJob.OwnerReference)
if err != nil {
- logger.Warnf(ctx, "Failed to enqueue owner [%v] of job [%v]. Error: %v", event.NewJob.OwnerReference, event.NewJob.ID)
+ logger.Warnf(ctx, "Failed to enqueue owner [%v] of job [%v]. Error: %v", event.NewJob.OwnerReference, event.NewJob.ID, err)
}
},
}, scope)
diff --git a/flyteplugins/go/tasks/plugins/array/awsbatch/jobs_store.go b/flyteplugins/go/tasks/plugins/array/awsbatch/jobs_store.go
index e3bd4c70dbf..aee99687b2c 100644
--- a/flyteplugins/go/tasks/plugins/array/awsbatch/jobs_store.go
+++ b/flyteplugins/go/tasks/plugins/array/awsbatch/jobs_store.go
@@ -254,7 +254,7 @@ func syncBatches(_ context.Context, client Client, handler EventHandler, batchCh
res := make([]cache.ItemSyncResponse, 0, len(jobIds))
startIdx, endIdx := toRanges(len(jobIds), batchChunkSize)
for i := 0; i < len(startIdx); i++ {
- logger.Debugf(ctx, "Syncing chunk [%v, %v) out of [%v] job ids.", startIdx[i], endIdx[i])
+ logger.Debugf(ctx, "Syncing chunk [%v, %v) out of [%v] job ids.", startIdx[i], endIdx[i], len(jobIds))
response, err := client.GetJobDetailsBatch(ctx, jobIds[startIdx[i]:endIdx[i]])
if err != nil {
logger.Errorf(ctx, "Failed to get job details from AWS. Error: %v", err)
diff --git a/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/batch_service_client.go b/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/batch_service_client.go
index 99029970dd0..c57c30b5244 100644
--- a/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/batch_service_client.go
+++ b/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/batch_service_client.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/cache.go b/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/cache.go
index 612fc466a83..00b82b15a76 100644
--- a/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/cache.go
+++ b/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/cache.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/cache_key.go b/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/cache_key.go
index 64a4f45b08b..a0bb50399a8 100644
--- a/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/cache_key.go
+++ b/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/cache_key.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *CacheKey) EXPECT() *CacheKey_Expecter {
return &CacheKey_Expecter{mock: &_m.Mock}
}
-// String provides a mock function with given fields:
+// String provides a mock function with no fields
func (_m *CacheKey) String() string {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/client.go b/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/client.go
index 5b1c7b1b3ba..2b35acf833a 100644
--- a/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/client.go
+++ b/flyteplugins/go/tasks/plugins/array/awsbatch/mocks/client.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -23,7 +23,7 @@ func (_m *Client) EXPECT() *Client_Expecter {
return &Client_Expecter{mock: &_m.Mock}
}
-// GetAccountID provides a mock function with given fields:
+// GetAccountID provides a mock function with no fields
func (_m *Client) GetAccountID() string {
ret := _m.Called()
@@ -127,7 +127,7 @@ func (_c *Client_GetJobDetailsBatch_Call) RunAndReturn(run func(context.Context,
return _c
}
-// GetRegion provides a mock function with given fields:
+// GetRegion provides a mock function with no fields
func (_m *Client) GetRegion() string {
ret := _m.Called()
diff --git a/flyteplugins/go/tasks/plugins/array/core/state.go b/flyteplugins/go/tasks/plugins/array/core/state.go
index ca31e471e93..fdb961c0f8b 100644
--- a/flyteplugins/go/tasks/plugins/array/core/state.go
+++ b/flyteplugins/go/tasks/plugins/array/core/state.go
@@ -185,10 +185,10 @@ func MapArrayStateToPluginPhase(_ context.Context, state *State, logLinks []*idl
switch p, version := state.GetPhase(); p {
case PhaseStart:
- phaseInfo = core.PhaseInfoInitializing(t, core.DefaultPhaseVersion, state.GetReason(), nowTaskInfo)
+ phaseInfo = core.PhaseInfoInitializing(core.DefaultPhaseVersion, state.GetReason(), nowTaskInfo)
case PhaseWaitingForResources:
- phaseInfo = core.PhaseInfoWaitingForResourcesInfo(t, version, state.GetReason(), nowTaskInfo)
+ phaseInfo = core.PhaseInfoWaitingForResourcesInfo(version, state.GetReason(), nowTaskInfo)
case PhasePreLaunch:
fallthrough
diff --git a/flyteplugins/go/tasks/plugins/array/k8s/config_flags_test.go b/flyteplugins/go/tasks/plugins/array/k8s/config_flags_test.go
index 3737c45c3be..5135e455624 100755
--- a/flyteplugins/go/tasks/plugins/array/k8s/config_flags_test.go
+++ b/flyteplugins/go/tasks/plugins/array/k8s/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/plugins/array/k8s/executor.go b/flyteplugins/go/tasks/plugins/array/k8s/executor.go
index 32325846744..131a37e01a7 100644
--- a/flyteplugins/go/tasks/plugins/array/k8s/executor.go
+++ b/flyteplugins/go/tasks/plugins/array/k8s/executor.go
@@ -159,7 +159,7 @@ func (e Executor) Abort(ctx context.Context, tCtx core.TaskExecutionContext) err
return errors.Wrapf(errors.CorruptedPluginState, err, "Failed to read unmarshal custom state")
}
- return TerminateSubTasksOnAbort(ctx, tCtx, e.kubeClient, GetConfig(), abortSubtask, pluginState)
+ return TerminateSubTasksOnAbort(ctx, tCtx, e.kubeClient, abortSubtask, pluginState)
}
func (e Executor) Finalize(ctx context.Context, tCtx core.TaskExecutionContext) error {
diff --git a/flyteplugins/go/tasks/plugins/array/k8s/integration_test.go b/flyteplugins/go/tasks/plugins/array/k8s/integration_test.go
index a2beae520af..776f3c19405 100644
--- a/flyteplugins/go/tasks/plugins/array/k8s/integration_test.go
+++ b/flyteplugins/go/tasks/plugins/array/k8s/integration_test.go
@@ -135,8 +135,6 @@ func advancePodPhases(ctx context.Context, store *storage.DataStore, outputWrite
func nextHappyPodPhase(phase v1.PodPhase) v1.PodPhase {
switch phase {
- case v1.PodUnknown:
- fallthrough
case v1.PodPending:
fallthrough
case "":
@@ -147,5 +145,5 @@ func nextHappyPodPhase(phase v1.PodPhase) v1.PodPhase {
return v1.PodSucceeded
}
- return v1.PodUnknown
+ return ""
}
diff --git a/flyteplugins/go/tasks/plugins/array/k8s/management.go b/flyteplugins/go/tasks/plugins/array/k8s/management.go
index e64c3e601ad..94e3fc16850 100644
--- a/flyteplugins/go/tasks/plugins/array/k8s/management.go
+++ b/flyteplugins/go/tasks/plugins/array/k8s/management.go
@@ -2,11 +2,10 @@ package k8s
import (
"context"
- "fmt"
- "time"
+ "errors"
idlCore "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/errors"
+ flyteErr "github.com/flyteorg/flyte/flyteplugins/go/tasks/errors"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/logs"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io"
@@ -131,7 +130,7 @@ func LaunchAndCheckSubTasksState(ctx context.Context, tCtx core.TaskExecutionCon
if err != nil {
return currentState, externalResources, err
} else if taskTemplate == nil {
- return currentState, externalResources, errors.Errorf(errors.BadTaskSpecification, "Required value not set, taskTemplate is nil")
+ return currentState, externalResources, flyteErr.Errorf(flyteErr.BadTaskSpecification, "Required value not set, taskTemplate is nil")
}
arrayJob, err := arrayCore.ToArrayJob(taskTemplate.GetCustom(), taskTemplate.GetTaskTypeVersion())
@@ -175,14 +174,14 @@ func LaunchAndCheckSubTasksState(ctx context.Context, tCtx core.TaskExecutionCon
// attempt to allocateResource
allocationStatus, err := allocateResource(ctx, stCtx, config, podName)
if err != nil {
- logger.Errorf(ctx, "Resource manager failed for TaskExecId [%s] token [%s]. error %s",
+ logger.Errorf(ctx, "Resource manager failed for TaskExecId [%v] token [%s]. error %s",
stCtx.TaskExecutionMetadata().GetTaskExecutionID().GetID(), podName, err)
return currentState, externalResources, err
}
logger.Infof(ctx, "Allocation result for [%s] is [%s]", podName, allocationStatus)
if allocationStatus != core.AllocationStatusGranted {
- phaseInfo = core.PhaseInfoWaitingForResourcesInfo(time.Now(), core.DefaultPhaseVersion, "Exceeded ResourceManager quota", nil)
+ phaseInfo = core.PhaseInfoWaitingForResourcesInfo(core.DefaultPhaseVersion, "Exceeded ResourceManager quota", nil)
} else {
phaseInfo, perr = launchSubtask(ctx, stCtx, config, kubeClient)
@@ -325,8 +324,7 @@ func LaunchAndCheckSubTasksState(ctx context.Context, tCtx core.TaskExecutionCon
return newState, externalResources, nil
}
-func TerminateSubTasksOnAbort(ctx context.Context, tCtx core.TaskExecutionContext, kubeClient core.KubeClient, config *Config,
- terminateFunction func(context.Context, SubTaskExecutionContext, *Config, core.KubeClient) error, currentState *arrayCore.State) error {
+func TerminateSubTasksOnAbort(ctx context.Context, tCtx core.TaskExecutionContext, kubeClient core.KubeClient, terminateFunction func(context.Context, SubTaskExecutionContext, *Config, core.KubeClient) error, currentState *arrayCore.State) error {
_, externalResources, err := TerminateSubTasks(ctx, tCtx, kubeClient, GetConfig(), terminateFunction, currentState)
if err != nil {
@@ -355,7 +353,7 @@ func TerminateSubTasks(ctx context.Context, tCtx core.TaskExecutionContext, kube
if err != nil {
return currentState, externalResources, err
} else if taskTemplate == nil {
- return currentState, externalResources, errors.Errorf(errors.BadTaskSpecification, "Required value not set, taskTemplate is nil")
+ return currentState, externalResources, flyteErr.Errorf(flyteErr.BadTaskSpecification, "Required value not set, taskTemplate is nil")
}
messageCollector := errorcollector.NewErrorMessageCollector()
@@ -392,7 +390,7 @@ func TerminateSubTasks(ctx context.Context, tCtx core.TaskExecutionContext, kube
}
if messageCollector.Length() > 0 {
- return currentState, externalResources, fmt.Errorf(messageCollector.Summary(config.MaxErrorStringLength)) //nolint
+ return currentState, externalResources, errors.New(messageCollector.Summary(config.MaxErrorStringLength))
}
return currentState.SetPhase(arrayCore.PhaseWriteToDiscoveryThenFail, currentState.PhaseVersion+1), externalResources, nil
diff --git a/flyteplugins/go/tasks/plugins/array/k8s/management_test.go b/flyteplugins/go/tasks/plugins/array/k8s/management_test.go
index 518816c2d36..131822a986a 100644
--- a/flyteplugins/go/tasks/plugins/array/k8s/management_test.go
+++ b/flyteplugins/go/tasks/plugins/array/k8s/management_test.go
@@ -565,13 +565,6 @@ func TestCheckSubTasksState(t *testing.T) {
func TestTerminateSubTasksOnAbort(t *testing.T) {
ctx := context.Background()
subtaskCount := 3
- config := Config{
- MaxArrayJobSize: int64(subtaskCount * 10),
- ResourceConfig: ResourceConfig{
- PrimaryLabel: "p",
- Limit: subtaskCount,
- },
- }
kubeClient := mocks.KubeClient{}
kubeClient.EXPECT().GetClient().Return(mocks.NewFakeKubeClient())
kubeClient.EXPECT().GetCache().Return(mocks.NewFakeKubeCache())
@@ -603,7 +596,7 @@ func TestTerminateSubTasksOnAbort(t *testing.T) {
return nil
}
- err := TerminateSubTasksOnAbort(ctx, tCtx, &kubeClient, &config, mockTerminateFunction, currentState)
+ err := TerminateSubTasksOnAbort(ctx, tCtx, &kubeClient, mockTerminateFunction, currentState)
assert.Nil(t, err)
eventRecorder.AssertCalled(t, "RecordRaw", mock.Anything, mock.Anything)
@@ -619,7 +612,7 @@ func TestTerminateSubTasksOnAbort(t *testing.T) {
return fmt.Errorf("termination error")
}
- err := TerminateSubTasksOnAbort(ctx, tCtx, &kubeClient, &config, mockTerminateFunction, currentState)
+ err := TerminateSubTasksOnAbort(ctx, tCtx, &kubeClient, mockTerminateFunction, currentState)
assert.NotNil(t, err)
eventRecorder.AssertNotCalled(t, "RecordRaw", mock.Anything, mock.Anything)
diff --git a/flyteplugins/go/tasks/plugins/array/k8s/subtask.go b/flyteplugins/go/tasks/plugins/array/k8s/subtask.go
index bdc1c716b70..3cbaad40fc2 100644
--- a/flyteplugins/go/tasks/plugins/array/k8s/subtask.go
+++ b/flyteplugins/go/tasks/plugins/array/k8s/subtask.go
@@ -198,7 +198,7 @@ func launchSubtask(ctx context.Context, stCtx SubTaskExecutionContext, cfg *Conf
if k8serrors.IsForbidden(err) {
if strings.Contains(err.Error(), "exceeded quota") {
logger.Warnf(ctx, "Failed to launch job, resource quota exceeded and the operation is not guarded by back-off. err: %v", err)
- return pluginsCore.PhaseInfoWaitingForResourcesInfo(time.Now(), pluginsCore.DefaultPhaseVersion, fmt.Sprintf("Exceeded resourcequota: %s", err.Error()), nil), nil
+ return pluginsCore.PhaseInfoWaitingForResourcesInfo(pluginsCore.DefaultPhaseVersion, fmt.Sprintf("Exceeded resourcequota: %s", err.Error()), nil), nil
}
return pluginsCore.PhaseInfoRetryableFailure("RuntimeFailure", err.Error(), nil), nil
} else if k8serrors.IsBadRequest(err) || k8serrors.IsInvalid(err) {
diff --git a/flyteplugins/go/tasks/plugins/hive/client/mocks/qubole_client.go b/flyteplugins/go/tasks/plugins/hive/client/mocks/qubole_client.go
deleted file mode 100644
index c36079b8b55..00000000000
--- a/flyteplugins/go/tasks/plugins/hive/client/mocks/qubole_client.go
+++ /dev/null
@@ -1,208 +0,0 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
-
-package mocks
-
-import (
- context "context"
-
- client "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/client"
-
- mock "github.com/stretchr/testify/mock"
-)
-
-// QuboleClient is an autogenerated mock type for the QuboleClient type
-type QuboleClient struct {
- mock.Mock
-}
-
-type QuboleClient_Expecter struct {
- mock *mock.Mock
-}
-
-func (_m *QuboleClient) EXPECT() *QuboleClient_Expecter {
- return &QuboleClient_Expecter{mock: &_m.Mock}
-}
-
-// ExecuteHiveCommand provides a mock function with given fields: ctx, commandStr, timeoutVal, clusterPrimaryLabel, accountKey, tags, commandMetadata
-func (_m *QuboleClient) ExecuteHiveCommand(ctx context.Context, commandStr string, timeoutVal uint32, clusterPrimaryLabel string, accountKey string, tags []string, commandMetadata client.CommandMetadata) (*client.QuboleCommandDetails, error) {
- ret := _m.Called(ctx, commandStr, timeoutVal, clusterPrimaryLabel, accountKey, tags, commandMetadata)
-
- if len(ret) == 0 {
- panic("no return value specified for ExecuteHiveCommand")
- }
-
- var r0 *client.QuboleCommandDetails
- var r1 error
- if rf, ok := ret.Get(0).(func(context.Context, string, uint32, string, string, []string, client.CommandMetadata) (*client.QuboleCommandDetails, error)); ok {
- return rf(ctx, commandStr, timeoutVal, clusterPrimaryLabel, accountKey, tags, commandMetadata)
- }
- if rf, ok := ret.Get(0).(func(context.Context, string, uint32, string, string, []string, client.CommandMetadata) *client.QuboleCommandDetails); ok {
- r0 = rf(ctx, commandStr, timeoutVal, clusterPrimaryLabel, accountKey, tags, commandMetadata)
- } else {
- if ret.Get(0) != nil {
- r0 = ret.Get(0).(*client.QuboleCommandDetails)
- }
- }
-
- if rf, ok := ret.Get(1).(func(context.Context, string, uint32, string, string, []string, client.CommandMetadata) error); ok {
- r1 = rf(ctx, commandStr, timeoutVal, clusterPrimaryLabel, accountKey, tags, commandMetadata)
- } else {
- r1 = ret.Error(1)
- }
-
- return r0, r1
-}
-
-// QuboleClient_ExecuteHiveCommand_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ExecuteHiveCommand'
-type QuboleClient_ExecuteHiveCommand_Call struct {
- *mock.Call
-}
-
-// ExecuteHiveCommand is a helper method to define mock.On call
-// - ctx context.Context
-// - commandStr string
-// - timeoutVal uint32
-// - clusterPrimaryLabel string
-// - accountKey string
-// - tags []string
-// - commandMetadata client.CommandMetadata
-func (_e *QuboleClient_Expecter) ExecuteHiveCommand(ctx interface{}, commandStr interface{}, timeoutVal interface{}, clusterPrimaryLabel interface{}, accountKey interface{}, tags interface{}, commandMetadata interface{}) *QuboleClient_ExecuteHiveCommand_Call {
- return &QuboleClient_ExecuteHiveCommand_Call{Call: _e.mock.On("ExecuteHiveCommand", ctx, commandStr, timeoutVal, clusterPrimaryLabel, accountKey, tags, commandMetadata)}
-}
-
-func (_c *QuboleClient_ExecuteHiveCommand_Call) Run(run func(ctx context.Context, commandStr string, timeoutVal uint32, clusterPrimaryLabel string, accountKey string, tags []string, commandMetadata client.CommandMetadata)) *QuboleClient_ExecuteHiveCommand_Call {
- _c.Call.Run(func(args mock.Arguments) {
- run(args[0].(context.Context), args[1].(string), args[2].(uint32), args[3].(string), args[4].(string), args[5].([]string), args[6].(client.CommandMetadata))
- })
- return _c
-}
-
-func (_c *QuboleClient_ExecuteHiveCommand_Call) Return(_a0 *client.QuboleCommandDetails, _a1 error) *QuboleClient_ExecuteHiveCommand_Call {
- _c.Call.Return(_a0, _a1)
- return _c
-}
-
-func (_c *QuboleClient_ExecuteHiveCommand_Call) RunAndReturn(run func(context.Context, string, uint32, string, string, []string, client.CommandMetadata) (*client.QuboleCommandDetails, error)) *QuboleClient_ExecuteHiveCommand_Call {
- _c.Call.Return(run)
- return _c
-}
-
-// GetCommandStatus provides a mock function with given fields: ctx, commandID, accountKey
-func (_m *QuboleClient) GetCommandStatus(ctx context.Context, commandID string, accountKey string) (client.QuboleStatus, error) {
- ret := _m.Called(ctx, commandID, accountKey)
-
- if len(ret) == 0 {
- panic("no return value specified for GetCommandStatus")
- }
-
- var r0 client.QuboleStatus
- var r1 error
- if rf, ok := ret.Get(0).(func(context.Context, string, string) (client.QuboleStatus, error)); ok {
- return rf(ctx, commandID, accountKey)
- }
- if rf, ok := ret.Get(0).(func(context.Context, string, string) client.QuboleStatus); ok {
- r0 = rf(ctx, commandID, accountKey)
- } else {
- r0 = ret.Get(0).(client.QuboleStatus)
- }
-
- if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
- r1 = rf(ctx, commandID, accountKey)
- } else {
- r1 = ret.Error(1)
- }
-
- return r0, r1
-}
-
-// QuboleClient_GetCommandStatus_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetCommandStatus'
-type QuboleClient_GetCommandStatus_Call struct {
- *mock.Call
-}
-
-// GetCommandStatus is a helper method to define mock.On call
-// - ctx context.Context
-// - commandID string
-// - accountKey string
-func (_e *QuboleClient_Expecter) GetCommandStatus(ctx interface{}, commandID interface{}, accountKey interface{}) *QuboleClient_GetCommandStatus_Call {
- return &QuboleClient_GetCommandStatus_Call{Call: _e.mock.On("GetCommandStatus", ctx, commandID, accountKey)}
-}
-
-func (_c *QuboleClient_GetCommandStatus_Call) Run(run func(ctx context.Context, commandID string, accountKey string)) *QuboleClient_GetCommandStatus_Call {
- _c.Call.Run(func(args mock.Arguments) {
- run(args[0].(context.Context), args[1].(string), args[2].(string))
- })
- return _c
-}
-
-func (_c *QuboleClient_GetCommandStatus_Call) Return(_a0 client.QuboleStatus, _a1 error) *QuboleClient_GetCommandStatus_Call {
- _c.Call.Return(_a0, _a1)
- return _c
-}
-
-func (_c *QuboleClient_GetCommandStatus_Call) RunAndReturn(run func(context.Context, string, string) (client.QuboleStatus, error)) *QuboleClient_GetCommandStatus_Call {
- _c.Call.Return(run)
- return _c
-}
-
-// KillCommand provides a mock function with given fields: ctx, commandID, accountKey
-func (_m *QuboleClient) KillCommand(ctx context.Context, commandID string, accountKey string) error {
- ret := _m.Called(ctx, commandID, accountKey)
-
- if len(ret) == 0 {
- panic("no return value specified for KillCommand")
- }
-
- var r0 error
- if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok {
- r0 = rf(ctx, commandID, accountKey)
- } else {
- r0 = ret.Error(0)
- }
-
- return r0
-}
-
-// QuboleClient_KillCommand_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'KillCommand'
-type QuboleClient_KillCommand_Call struct {
- *mock.Call
-}
-
-// KillCommand is a helper method to define mock.On call
-// - ctx context.Context
-// - commandID string
-// - accountKey string
-func (_e *QuboleClient_Expecter) KillCommand(ctx interface{}, commandID interface{}, accountKey interface{}) *QuboleClient_KillCommand_Call {
- return &QuboleClient_KillCommand_Call{Call: _e.mock.On("KillCommand", ctx, commandID, accountKey)}
-}
-
-func (_c *QuboleClient_KillCommand_Call) Run(run func(ctx context.Context, commandID string, accountKey string)) *QuboleClient_KillCommand_Call {
- _c.Call.Run(func(args mock.Arguments) {
- run(args[0].(context.Context), args[1].(string), args[2].(string))
- })
- return _c
-}
-
-func (_c *QuboleClient_KillCommand_Call) Return(_a0 error) *QuboleClient_KillCommand_Call {
- _c.Call.Return(_a0)
- return _c
-}
-
-func (_c *QuboleClient_KillCommand_Call) RunAndReturn(run func(context.Context, string, string) error) *QuboleClient_KillCommand_Call {
- _c.Call.Return(run)
- return _c
-}
-
-// NewQuboleClient creates a new instance of QuboleClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func NewQuboleClient(t interface {
- mock.TestingT
- Cleanup(func())
-}) *QuboleClient {
- mock := &QuboleClient{}
- mock.Mock.Test(t)
-
- t.Cleanup(func() { mock.AssertExpectations(t) })
-
- return mock
-}
diff --git a/flyteplugins/go/tasks/plugins/hive/client/qubole_client.go b/flyteplugins/go/tasks/plugins/hive/client/qubole_client.go
deleted file mode 100644
index 6e96258131b..00000000000
--- a/flyteplugins/go/tasks/plugins/hive/client/qubole_client.go
+++ /dev/null
@@ -1,303 +0,0 @@
-package client
-
-import (
- "bytes"
- "context"
- "encoding/json"
- "fmt"
- "io"
- "io/ioutil"
- "net/http"
- "net/url"
- "strconv"
- "time"
-
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/config"
- errors2 "github.com/flyteorg/flyte/flytestdlib/errors"
- "github.com/flyteorg/flyte/flytestdlib/logger"
-)
-
-const (
- logLinkFormat = "?command_id=%s"
- acceptHeaderKey = "Accept"
- hiveCommandType = "HiveCommand"
- killStatus = "kill"
- httpRequestTimeoutSecs = 30
- hostHeaderKey = "Host"
- HeaderContentType = "Content-Type"
- ContentTypeJSON = "application/json"
- ErrRequestFailed = "REQUEST_FAILED"
-)
-
-// QuboleClient CommandStatus Response Format, only used to unmarshal the response
-type quboleCmdDetailsInternal struct {
- ID int64
- Status string
-}
-
-type QuboleCommandDetails struct {
- ID int64
- Status QuboleStatus
- URI url.URL
-}
-
-type CommandMetadata struct {
- TaskName string
- Domain string
- Project string
- Labels map[string]string
- AttemptNumber uint32
- MaxAttempts uint32
- WorkflowID string
- WorkflowExecutionID string
-}
-
-// QuboleClient API Request Body, meant to be passed into JSON.marshal
-// Any nil, 0 or "" fields will not be marshaled
-type RequestBody struct {
- Query string `json:"query,omitempty"`
- ClusterLabel string `json:"label,omitempty"`
- CommandType string `json:"command_type,omitempty"`
- Retry uint32 `json:"retry,omitempty"`
- Status string `json:"status,omitempty"`
- Tags []string `json:"tags,omitempty"`
- Timeout uint32 `json:"timeout,omitempty"`
- InlineScript string `json:"inline,omitempty"`
- Files string `json:"files,omitempty"`
-}
-
-//go:generate mockery --all --case=snake --with-expecter
-
-// Interface to interact with QuboleClient for hive tasks
-type QuboleClient interface {
- ExecuteHiveCommand(ctx context.Context, commandStr string, timeoutVal uint32, clusterPrimaryLabel string,
- accountKey string, tags []string, commandMetadata CommandMetadata) (*QuboleCommandDetails, error)
- KillCommand(ctx context.Context, commandID string, accountKey string) error
- GetCommandStatus(ctx context.Context, commandID string, accountKey string) (QuboleStatus, error)
-}
-
-// TODO: The Qubole client needs a rate limiter
-type quboleClient struct {
- client *http.Client
- commandURL *url.URL
- analyzeURL *url.URL
-}
-
-func (q *quboleClient) getHeaders(url *url.URL, accountKey string) http.Header {
- headers := make(http.Header)
- headers.Set("X-AUTH-TOKEN", accountKey)
- headers.Set(HeaderContentType, ContentTypeJSON)
- headers.Set(acceptHeaderKey, ContentTypeJSON)
- headers.Set(hostHeaderKey, url.Host)
-
- return headers
-}
-
-// no-op closer for in-memory buffers used as io.Reader
-type nopCloser struct {
- io.Reader
-}
-
-func (nopCloser) Close() error { return nil }
-
-func addJSONBody(req *http.Request, body interface{}) error {
- // marshals body into JSON and set the request body
- js, err := json.Marshal(body)
- if err != nil {
- return err
- }
-
- req.Header.Add(HeaderContentType, ContentTypeJSON)
- req.Body = &nopCloser{bytes.NewReader(js)}
- return nil
-}
-
-func unmarshalBody(res *http.Response, t interface{}) error {
- bts, err := ioutil.ReadAll(res.Body)
- if err != nil {
- return err
- }
-
- return json.Unmarshal(bts, t)
-}
-
-func closeBody(ctx context.Context, response *http.Response) {
- _, err := io.Copy(ioutil.Discard, response.Body)
- if err != nil {
- logger.Errorf(ctx, "unexpected failure writing to devNull: %v", err)
- }
- err = response.Body.Close()
- if err != nil {
- logger.Warnf(ctx, "failure closing response body: %v", err)
- }
-}
-
-// Helper method to execute the requests
-func (q *quboleClient) executeRequest(ctx context.Context, method string, u *url.URL,
- body *RequestBody, accountKey string) (*http.Response, error) {
- var req *http.Request
- var err error
-
- switch method {
- case http.MethodGet:
- req, err = http.NewRequest("GET", u.String(), nil)
- case http.MethodPost:
- req, err = http.NewRequest("POST", u.String(), nil)
- case http.MethodPut:
- req, err = http.NewRequest("PUT", u.String(), nil)
- }
-
- if err != nil {
- return nil, err
- }
-
- if body != nil {
- err := addJSONBody(req, body)
- if err != nil {
- return nil, err
- }
- }
-
- logger.Debugf(ctx, "Qubole endpoint: %v", u.String())
- req.Header = q.getHeaders(u, accountKey)
- return q.client.Do(req)
-}
-
-/*
-Execute Hive Command on the QuboleClient Hive Cluster and return the CommandID
-param: context.Context ctx: The default go context.
-param: string commandStr: the query to execute
-param: uint32 timeoutVal: timeout for the query to execute in seconds
-param: string ClusterLabel: label for cluster on which to execute the Hive Command.
-param: CommandMetadata _: additional labels for the command
-return: *int64: CommandID for the command executed
-return: error: error in-case of a failure
-*/
-func (q *quboleClient) ExecuteHiveCommand(
- ctx context.Context,
- commandStr string,
- timeoutVal uint32,
- clusterPrimaryLabel string,
- accountKey string,
- tags []string,
- _ CommandMetadata) (*QuboleCommandDetails, error) {
-
- requestBody := RequestBody{
- CommandType: hiveCommandType,
- Query: commandStr,
- Timeout: timeoutVal,
- ClusterLabel: clusterPrimaryLabel,
- Tags: tags,
- }
-
- response, err := q.executeRequest(ctx, http.MethodPost, q.commandURL, &requestBody, accountKey)
- if err != nil {
- return nil, err
- }
- defer closeBody(ctx, response)
-
- if response.StatusCode != 200 {
- bts, err := ioutil.ReadAll(response.Body)
- if err != nil {
- return nil, errors2.Wrapf(ErrRequestFailed, err, "request failed. Response code [%v]", response.StatusCode)
- }
-
- return nil, fmt.Errorf("bad response from Qubole creating query: %d %s",
- response.StatusCode, string(bts))
- }
-
- var cmd quboleCmdDetailsInternal
- if err = unmarshalBody(response, &cmd); err != nil {
- return nil, err
- }
-
- u, err := q.GetLogLinkPath(ctx, strconv.FormatInt(cmd.ID, 10))
- if err != nil {
- return nil, err
- }
-
- if u == nil {
- return nil, fmt.Errorf("failed to build log link for command [%v]", cmd.ID)
- }
-
- status := NewQuboleStatus(ctx, cmd.Status)
- return &QuboleCommandDetails{
- ID: cmd.ID,
- Status: status,
- URI: *u,
- }, nil
-}
-
-/*
-Terminate a QuboleClient command
-param: context.Context ctx: The default go context.
-param: string CommandID: the CommandID to terminate.
-return: error: error in-case of a failure
-*/
-func (q *quboleClient) KillCommand(ctx context.Context, commandID string, accountKey string) error {
- commandStatus, err := url.Parse(commandID)
- if err != nil {
- return err
- }
- killPath := q.commandURL.ResolveReference(commandStatus)
- requestBody := RequestBody{Status: killStatus}
- response, err := q.executeRequest(ctx, http.MethodPut, killPath, &requestBody, accountKey)
- defer closeBody(ctx, response)
- return err
-}
-
-/*
-Get the status of a QuboleClient command
-param: context.Context ctx: The default go context.
-param: string CommandID: the CommandID to fetch the status for
-return: *string: commandStatus for the CommandID passed
-return: error: error in-case of a failure
-*/
-func (q *quboleClient) GetCommandStatus(ctx context.Context, commandID string, accountKey string) (QuboleStatus, error) {
- commandStatus, err := url.Parse(commandID)
- if err != nil {
- return QuboleStatusUnknown, err
- }
- statusPath := q.commandURL.ResolveReference(commandStatus)
- response, err := q.executeRequest(ctx, http.MethodGet, statusPath, nil, accountKey)
- if err != nil {
- return QuboleStatusUnknown, err
- }
-
- defer closeBody(ctx, response)
-
- if response.StatusCode != 200 {
- bts, err := ioutil.ReadAll(response.Body)
- if err != nil {
- return QuboleStatusUnknown, err
- }
-
- return QuboleStatusUnknown, fmt.Errorf("bad response from Qubole getting command status: %d %s, path: %s, %s",
- response.StatusCode, string(bts), statusPath, q.commandURL.String())
- }
-
- var cmd quboleCmdDetailsInternal
- if err = unmarshalBody(response, &cmd); err != nil {
- return QuboleStatusUnknown, err
- }
-
- cmdStatus := NewQuboleStatus(ctx, cmd.Status)
- return cmdStatus, nil
-}
-
-func (q *quboleClient) GetLogLinkPath(ctx context.Context, commandID string) (*url.URL, error) {
- logLink := fmt.Sprintf(logLinkFormat, commandID)
- l, err := url.Parse(logLink)
- if err != nil {
- return nil, err
- }
- return q.analyzeURL.ResolveReference(l), nil
-}
-
-func NewQuboleClient(cfg *config.Config) QuboleClient {
- return &quboleClient{
- client: &http.Client{Timeout: httpRequestTimeoutSecs * time.Second},
- commandURL: cfg.Endpoint.ResolveReference(&cfg.CommandAPIPath.URL),
- analyzeURL: cfg.Endpoint.ResolveReference(&cfg.AnalyzeLinkPath.URL),
- }
-}
diff --git a/flyteplugins/go/tasks/plugins/hive/client/qubole_client_test.go b/flyteplugins/go/tasks/plugins/hive/client/qubole_client_test.go
deleted file mode 100644
index 6f910956511..00000000000
--- a/flyteplugins/go/tasks/plugins/hive/client/qubole_client_test.go
+++ /dev/null
@@ -1,151 +0,0 @@
-package client
-
-import (
- "bytes"
- "context"
- "io/ioutil"
- "net/http"
- "strings"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/config"
-)
-
-var getCommandResponse = `{
- "command": {
- "approx_mode": false,
- "approx_aggregations": false,
- "query": "select count(*) as num_rows from miniwikistats;",
- "sample": false
- },
- "qbol_session_id": 0,
- "created_at": "2012-10-11T16:54:57Z",
- "user_id": 0,
- "status": "{STATUS}",
- "command_type": "HiveCommand",
- "id": 3852,
- "progress": 100,
- "throttled": true
- }`
-
-var createCommandResponse = `{
- "command": {
- "approx_mode": false,
- "approx_aggregations": false,
- "query": "show tables",
- "sample": false
- },
- "qbol_session_id": 0,
- "created_at": "2012-10-11T16:01:09Z",
- "user_id": 0,
- "status": "waiting",
- "command_type": "HiveCommand",
- "id": 3850,
- "progress": 0
- }`
-
-func TestQuboleClient_GetCommandStatus(t *testing.T) {
- tests := []struct {
- Name string
- quboleInternalStatus string
- status QuboleStatus
- }{
- {
- Name: "done status",
- quboleInternalStatus: "done",
- status: QuboleStatusDone,
- },
- {
- Name: "unknown status",
- quboleInternalStatus: "bogus",
- status: QuboleStatusUnknown,
- },
- {
- Name: "running status",
- quboleInternalStatus: "running",
- status: QuboleStatusRunning,
- },
- }
-
- for _, test := range tests {
- tc := test
- t.Run(tc.Name, func(t *testing.T) {
- client := createQuboleClient(strings.Replace(getCommandResponse, "{STATUS}", tc.quboleInternalStatus, 1))
- status, err := client.GetCommandStatus(context.Background(), "", "")
- assert.NoError(t, err)
- assert.Equal(t, tc.status, status)
- })
- }
-}
-
-func TestQuboleClient_ExecuteHiveCommand(t *testing.T) {
- client := createQuboleClient(createCommandResponse)
- details, err := client.ExecuteHiveCommand(context.Background(),
- "", 0, "clusterLabel", "", nil, CommandMetadata{})
- assert.NoError(t, err)
- assert.Equal(t, int64(3850), details.ID)
- assert.Equal(t, QuboleStatusWaiting, details.Status)
-}
-
-func TestQuboleClient_KillCommand(t *testing.T) {
- client := createQuboleClient("OK")
- err := client.KillCommand(context.Background(), "", "")
- assert.NoError(t, err)
-}
-
-func TestQuboleClient_ExecuteHiveCommandError(t *testing.T) {
- client := createQuboleErrorClient("bad token")
- details, err := client.ExecuteHiveCommand(context.Background(),
- "", 0, "clusterLabel", "", nil, CommandMetadata{})
- assert.Error(t, err)
- assert.Nil(t, details)
-}
-
-func TestQuboleClient_GetCommandStatusError(t *testing.T) {
- client := createQuboleErrorClient("bad token")
- details, err := client.GetCommandStatus(context.Background(), "1234", "fake account key")
- assert.Error(t, err)
- assert.Equal(t, QuboleStatusUnknown, details)
-}
-
-func createQuboleClient(response string) quboleClient {
- hc := &http.Client{Transport: RoundTripFunc(func(req *http.Request) (*http.Response, error) {
- response := &http.Response{
- StatusCode: 200,
- Body: ioutil.NopCloser(bytes.NewBufferString(response)),
- Header: make(http.Header),
- }
- response.Header.Set("Content-Type", "application/json")
- return response, nil
-
- })}
-
- cfg := config.GetQuboleConfig()
- cmd := cfg.Endpoint.ResolveReference(&cfg.CommandAPIPath.URL)
- analyze := cfg.Endpoint.ResolveReference(&cfg.AnalyzeLinkPath.URL)
- return quboleClient{client: hc, commandURL: cmd, analyzeURL: analyze}
-}
-
-func createQuboleErrorClient(errorMsg string) quboleClient {
- hc := &http.Client{Transport: RoundTripFunc(func(req *http.Request) (*http.Response, error) {
- response := &http.Response{
- StatusCode: 400,
- Body: ioutil.NopCloser(bytes.NewBufferString(errorMsg)),
- Header: make(http.Header),
- }
- response.Header.Set("Content-Type", "application/json")
- return response, nil
-
- })}
-
- cfg := config.GetQuboleConfig()
- cmd := cfg.Endpoint.ResolveReference(&cfg.CommandAPIPath.URL)
- analyze := cfg.Endpoint.ResolveReference(&cfg.AnalyzeLinkPath.URL)
- return quboleClient{client: hc, commandURL: cmd, analyzeURL: analyze}
-}
-
-type RoundTripFunc func(*http.Request) (*http.Response, error)
-
-func (rt RoundTripFunc) RoundTrip(req *http.Request) (*http.Response, error) { return rt(req) }
diff --git a/flyteplugins/go/tasks/plugins/hive/client/qubole_status.go b/flyteplugins/go/tasks/plugins/hive/client/qubole_status.go
deleted file mode 100644
index 5a6f26dc263..00000000000
--- a/flyteplugins/go/tasks/plugins/hive/client/qubole_status.go
+++ /dev/null
@@ -1,39 +0,0 @@
-package client
-
-import (
- "context"
- "strings"
-
- "github.com/flyteorg/flyte/flytestdlib/logger"
-)
-
-// This type is meant only to encapsulate the response coming from Qubole as a type, it is
-// not meant to be stored locally.
-type QuboleStatus string
-
-const (
- QuboleStatusUnknown QuboleStatus = "UNKNOWN"
- QuboleStatusWaiting QuboleStatus = "WAITING"
- QuboleStatusRunning QuboleStatus = "RUNNING"
- QuboleStatusDone QuboleStatus = "DONE"
- QuboleStatusError QuboleStatus = "ERROR"
- QuboleStatusCancelled QuboleStatus = "CANCELLED"
-)
-
-var QuboleStatuses = map[QuboleStatus]struct{}{
- QuboleStatusUnknown: {},
- QuboleStatusWaiting: {},
- QuboleStatusRunning: {},
- QuboleStatusDone: {},
- QuboleStatusError: {},
- QuboleStatusCancelled: {},
-}
-
-func NewQuboleStatus(ctx context.Context, status string) QuboleStatus {
- upperCased := strings.ToUpper(status)
- if _, ok := QuboleStatuses[QuboleStatus(upperCased)]; ok {
- return QuboleStatus(upperCased)
- }
- logger.Warnf(ctx, "Invalid Qubole Status found: %v", status)
- return QuboleStatusUnknown
-}
diff --git a/flyteplugins/go/tasks/plugins/hive/config/config.go b/flyteplugins/go/tasks/plugins/hive/config/config.go
deleted file mode 100644
index 027e5df801b..00000000000
--- a/flyteplugins/go/tasks/plugins/hive/config/config.go
+++ /dev/null
@@ -1,78 +0,0 @@
-package config
-
-//go:generate pflags Config --default-var=defaultConfig
-
-import (
- "context"
- "net/url"
-
- pluginsConfig "github.com/flyteorg/flyte/flyteplugins/go/tasks/config"
- "github.com/flyteorg/flyte/flytestdlib/config"
- "github.com/flyteorg/flyte/flytestdlib/logger"
-)
-
-const quboleConfigSectionKey = "qubole"
-
-func MustParse(s string) config.URL {
- r, err := url.Parse(s)
- if err != nil {
- logger.Panicf(context.TODO(), "Bad Qubole URL Specified as default, error: %s", err)
- }
- if r != nil {
- return config.URL{URL: *r}
- }
- logger.Panicf(context.TODO(), "Nil Qubole URL specified.", err)
- return config.URL{}
-}
-
-type ClusterConfig struct {
- PrimaryLabel string `json:"primaryLabel" pflag:",The primary label of a given service cluster"`
- Labels []string `json:"labels" pflag:",Labels of a given service cluster"`
- Limit int `json:"limit" pflag:",Resource quota (in the number of outstanding requests) of the service cluster"`
- ProjectScopeQuotaProportionCap float64 `json:"projectScopeQuotaProportionCap" pflag:",A floating point number between 0 and 1, specifying the maximum proportion of quotas allowed to allocate to a project in the service cluster"`
- NamespaceScopeQuotaProportionCap float64 `json:"namespaceScopeQuotaProportionCap" pflag:",A floating point number between 0 and 1, specifying the maximum proportion of quotas allowed to allocate to a namespace in the service cluster"`
-}
-
-type DestinationClusterConfig struct {
- Project string `json:"project" pflag:",Project of the task which the query belongs to"`
- Domain string `json:"domain" pflag:",Domain of the task which the query belongs to"`
- ClusterLabel string `json:"clusterLabel" pflag:",The label of the destination cluster this query to be submitted to"`
-}
-
-var (
- defaultConfig = Config{
- Endpoint: MustParse("https://wellness.qubole.com"),
- CommandAPIPath: MustParse("/api/v1.2/commands/"),
- AnalyzeLinkPath: MustParse("/v2/analyze"),
- TokenKey: "FLYTE_QUBOLE_CLIENT_TOKEN",
- LruCacheSize: 2000,
- Workers: 15,
- DefaultClusterLabel: "default",
- ClusterConfigs: []ClusterConfig{{PrimaryLabel: "default", Labels: []string{"default"}, Limit: 100, ProjectScopeQuotaProportionCap: 0.7, NamespaceScopeQuotaProportionCap: 0.7}},
- DestinationClusterConfigs: []DestinationClusterConfig{},
- }
-
- quboleConfigSection = pluginsConfig.MustRegisterSubSection(quboleConfigSectionKey, &defaultConfig)
-)
-
-// Qubole plugin configs
-type Config struct {
- Endpoint config.URL `json:"endpoint" pflag:",Endpoint for qubole to use"`
- CommandAPIPath config.URL `json:"commandApiPath" pflag:",API Path where commands can be launched on Qubole. Should be a valid url."`
- AnalyzeLinkPath config.URL `json:"analyzeLinkPath" pflag:",URL path where queries can be visualized on qubole website. Should be a valid url."`
- TokenKey string `json:"quboleTokenKey" pflag:",Name of the key where to find Qubole token in the secret manager."`
- LruCacheSize int `json:"lruCacheSize" pflag:",Size of the AutoRefreshCache"`
- Workers int `json:"workers" pflag:",Number of parallel workers to refresh the cache"`
- DefaultClusterLabel string `json:"defaultClusterLabel" pflag:",The default cluster label. This will be used if label is not specified on the hive job."`
- ClusterConfigs []ClusterConfig `json:"clusterConfigs" pflag:"-,A list of cluster configs. Each of the configs corresponds to a service cluster"`
- DestinationClusterConfigs []DestinationClusterConfig `json:"destinationClusterConfigs" pflag:"-,A list configs specifying the destination service cluster for (project, domain)"`
-}
-
-// Retrieves the current config value or default.
-func GetQuboleConfig() *Config {
- return quboleConfigSection.GetConfig().(*Config)
-}
-
-func SetQuboleConfig(cfg *Config) error {
- return quboleConfigSection.SetConfig(cfg)
-}
diff --git a/flyteplugins/go/tasks/plugins/hive/execution_state.go b/flyteplugins/go/tasks/plugins/hive/execution_state.go
deleted file mode 100644
index b1d971d0d32..00000000000
--- a/flyteplugins/go/tasks/plugins/hive/execution_state.go
+++ /dev/null
@@ -1,546 +0,0 @@
-package hive
-
-import (
- "context"
- "fmt"
- "strconv"
- "time"
-
- idlCore "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/errors"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/template"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/ioutils"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/utils"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/client"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/config"
- "github.com/flyteorg/flyte/flytestdlib/cache"
- "github.com/flyteorg/flyte/flytestdlib/contextutils"
- "github.com/flyteorg/flyte/flytestdlib/logger"
-)
-
-type ExecutionPhase int
-
-const (
- PhaseNotStarted ExecutionPhase = iota
- PhaseQueued // resource manager token gotten
- PhaseSubmitted // Sent off to Qubole
- PhaseWriteOutputFile
- PhaseQuerySucceeded
- PhaseQueryFailed
-)
-
-func (p ExecutionPhase) IsTerminal() bool {
- return p == PhaseQuerySucceeded || p == PhaseQueryFailed
-}
-
-func (p ExecutionPhase) String() string {
- switch p {
- case PhaseNotStarted:
- return "PhaseNotStarted"
- case PhaseQueued:
- return "PhaseQueued"
- case PhaseSubmitted:
- return "PhaseSubmitted"
- case PhaseWriteOutputFile:
- return "PhaseWriteOutputFile"
- case PhaseQuerySucceeded:
- return "PhaseQuerySucceeded"
- case PhaseQueryFailed:
- return "PhaseQueryFailed"
- }
- return "Bad Qubole execution phase"
-}
-
-type ExecutionState struct {
- Phase ExecutionPhase
-
- // This will store the command ID from Qubole
- CommandID string `json:"command_id,omitempty"`
- URI string `json:"uri,omitempty"`
-
- // This number keeps track of the number of failures within the sync function. Without this, what happens in
- // the sync function is entirely opaque. Note that this field is completely orthogonal to Flyte system/node/task
- // level retries, just errors from hitting the Qubole API, inside the sync loop
- SyncFailureCount int `json:"sync_failure_count,omitempty"`
-
- // In kicking off the Qubole command, this is the number of failures
- CreationFailureCount int `json:"creation_failure_count,omitempty"`
-
- // The time the execution first requests for an allocation token
- AllocationTokenRequestStartTime time.Time `json:"allocation_token_request_start_time,omitempty"`
-}
-
-// This is the main state iteration
-func HandleExecutionState(ctx context.Context, tCtx core.TaskExecutionContext, currentState ExecutionState, quboleClient client.QuboleClient,
- executionsCache cache.AutoRefresh, cfg *config.Config, metrics QuboleHiveExecutorMetrics) (ExecutionState, error) {
-
- var transformError error
- var newState ExecutionState
-
- switch currentState.Phase {
- case PhaseNotStarted:
- newState, transformError = GetAllocationToken(ctx, tCtx, currentState, metrics)
-
- case PhaseQueued:
- newState, transformError = KickOffQuery(ctx, tCtx, currentState, quboleClient, executionsCache, cfg)
-
- case PhaseSubmitted:
- newState, transformError = MonitorQuery(ctx, tCtx, currentState, executionsCache)
-
- case PhaseWriteOutputFile:
- newState, transformError = WriteOutputs(ctx, tCtx, currentState)
-
- case PhaseQuerySucceeded:
- newState = currentState
- transformError = nil
-
- case PhaseQueryFailed:
- newState = currentState
- transformError = nil
- }
-
- return newState, transformError
-}
-
-func MapExecutionStateToPhaseInfo(state ExecutionState, _ client.QuboleClient) core.PhaseInfo {
- var phaseInfo core.PhaseInfo
- t := time.Now()
-
- switch state.Phase {
- case PhaseNotStarted:
- phaseInfo = core.PhaseInfoNotReady(t, core.DefaultPhaseVersion, "Haven't received allocation token")
- case PhaseQueued:
- // TODO: Turn into config
- if state.CreationFailureCount > 5 {
- phaseInfo = core.PhaseInfoSystemRetryableFailure("QuboleFailure", "Too many creation attempts", nil)
- } else {
- phaseInfo = core.PhaseInfoQueued(t, uint32(state.CreationFailureCount), "Waiting for Qubole launch") // #nosec G115
- }
- case PhaseSubmitted:
- phaseInfo = core.PhaseInfoRunning(core.DefaultPhaseVersion, ConstructTaskInfo(state))
-
- case PhaseWriteOutputFile:
- phaseInfo = core.PhaseInfoRunning(core.DefaultPhaseVersion+1, ConstructTaskInfo(state))
-
- case PhaseQuerySucceeded:
- phaseInfo = core.PhaseInfoSuccess(ConstructTaskInfo(state))
-
- case PhaseQueryFailed:
- phaseInfo = core.PhaseInfoRetryableFailure(errors.DownstreamSystemError, "Query failed", ConstructTaskInfo(state))
- }
-
- return phaseInfo
-}
-
-func ConstructTaskLog(e ExecutionState) *idlCore.TaskLog {
- return &idlCore.TaskLog{
- Name: fmt.Sprintf("Status: %s [%s]", e.Phase, e.CommandID),
- MessageFormat: idlCore.TaskLog_UNKNOWN,
- Uri: e.URI,
- }
-}
-
-func ConstructTaskInfo(e ExecutionState) *core.TaskInfo {
- logs := make([]*idlCore.TaskLog, 0, 1)
- t := time.Now()
-
- externalResources := []*core.ExternalResource{
- {
- ExternalID: e.CommandID,
- },
- }
-
- if e.CommandID != "" {
- logs = append(logs, ConstructTaskLog(e))
- return &core.TaskInfo{
- Logs: logs,
- OccurredAt: &t,
- ExternalResources: externalResources,
- }
- }
-
- return nil
-}
-
-func composeResourceNamespaceWithClusterPrimaryLabel(ctx context.Context, tCtx core.TaskExecutionContext) (core.ResourceNamespace, error) {
- _, clusterLabelOverride, _, _, _, err := GetQueryInfo(ctx, tCtx)
- if err != nil {
- return "", err
- }
- clusterPrimaryLabel := getClusterPrimaryLabel(ctx, tCtx, clusterLabelOverride)
- return core.ResourceNamespace(clusterPrimaryLabel), nil
-}
-
-func createResourceConstraintsSpec(ctx context.Context, _ core.TaskExecutionContext, targetClusterPrimaryLabel core.ResourceNamespace) core.ResourceConstraintsSpec {
- cfg := config.GetQuboleConfig()
- constraintsSpec := core.ResourceConstraintsSpec{
- ProjectScopeResourceConstraint: nil,
- NamespaceScopeResourceConstraint: nil,
- }
- if cfg.ClusterConfigs == nil {
- logger.Infof(ctx, "No cluster config is found. Returning an empty resource constraints spec")
- return constraintsSpec
- }
- for _, cluster := range cfg.ClusterConfigs {
- if cluster.PrimaryLabel == string(targetClusterPrimaryLabel) {
- constraintsSpec.ProjectScopeResourceConstraint = &core.ResourceConstraint{Value: int64(float64(cluster.Limit) * cluster.ProjectScopeQuotaProportionCap)}
- constraintsSpec.NamespaceScopeResourceConstraint = &core.ResourceConstraint{Value: int64(float64(cluster.Limit) * cluster.NamespaceScopeQuotaProportionCap)}
- break
- }
- }
- logger.Infof(ctx, "Created a resource constraints spec: [%v]", constraintsSpec)
- return constraintsSpec
-}
-
-func GetAllocationToken(ctx context.Context, tCtx core.TaskExecutionContext, currentState ExecutionState, metric QuboleHiveExecutorMetrics) (ExecutionState, error) {
- newState := ExecutionState{}
- uniqueID := tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetGeneratedName()
-
- clusterPrimaryLabel, err := composeResourceNamespaceWithClusterPrimaryLabel(ctx, tCtx)
- if err != nil {
- return newState, errors.Wrapf(errors.ResourceManagerFailure, err, "Error getting query info when requesting allocation token %s", uniqueID)
- }
-
- resourceConstraintsSpec := createResourceConstraintsSpec(ctx, tCtx, clusterPrimaryLabel)
-
- allocationStatus, err := tCtx.ResourceManager().AllocateResource(ctx, clusterPrimaryLabel, uniqueID, resourceConstraintsSpec)
- if err != nil {
- logger.Errorf(ctx, "Resource manager failed for TaskExecId [%s] token [%s]. error %s",
- tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetID(), uniqueID, err)
- return newState, errors.Wrapf(errors.ResourceManagerFailure, err, "Error requesting allocation token %s", uniqueID)
- }
- logger.Infof(ctx, "Allocation result for [%s] is [%s]", uniqueID, allocationStatus)
-
- // Emitting the duration this execution has been waiting for a token allocation
- if currentState.AllocationTokenRequestStartTime.IsZero() {
- newState.AllocationTokenRequestStartTime = time.Now()
- } else {
- newState.AllocationTokenRequestStartTime = currentState.AllocationTokenRequestStartTime
- }
- waitTime := time.Since(newState.AllocationTokenRequestStartTime)
- metric.ResourceWaitTime.Observe(waitTime.Seconds())
-
- if allocationStatus == core.AllocationStatusGranted {
- metric.AllocationGranted.Inc(ctx)
- newState.Phase = PhaseQueued
- } else if allocationStatus == core.AllocationStatusExhausted {
- metric.AllocationNotGranted.Inc(ctx)
- newState.Phase = PhaseNotStarted
- } else if allocationStatus == core.AllocationStatusNamespaceQuotaExceeded {
- metric.AllocationNotGranted.Inc(ctx)
- newState.Phase = PhaseNotStarted
- } else {
- return newState, errors.Errorf(errors.ResourceManagerFailure, "Got bad allocation result [%s] for token [%s]",
- allocationStatus, uniqueID)
- }
-
- return newState, nil
-}
-
-func validateQuboleHiveJob(hiveJob plugins.QuboleHiveJob) error {
- if hiveJob.GetQuery() == nil {
- return errors.Errorf(errors.BadTaskSpecification,
- "Query could not be found. Please ensure that you are at least on Flytekit version 0.3.0 or later.")
- }
- return nil
-}
-
-// This function is the link between the output written by the SDK, and the execution side. It extracts the query
-// out of the task template.
-func GetQueryInfo(ctx context.Context, tCtx core.TaskExecutionContext) (
- formattedQuery string, cluster string, tags []string, timeoutSec uint32, taskName string, err error) {
-
- taskTemplate, err := tCtx.TaskReader().Read(ctx)
- if err != nil {
- return "", "", []string{}, 0, "", err
- }
-
- hiveJob := plugins.QuboleHiveJob{}
- err = utils.UnmarshalStruct(taskTemplate.GetCustom(), &hiveJob)
- if err != nil {
- return "", "", []string{}, 0, "", err
- }
-
- if err := validateQuboleHiveJob(hiveJob); err != nil {
- return "", "", []string{}, 0, "", err
- }
-
- query := hiveJob.GetQuery().GetQuery()
-
- outputs, err := template.Render(ctx, []string{query},
- template.Parameters{
- TaskExecMetadata: tCtx.TaskExecutionMetadata(),
- Inputs: tCtx.InputReader(),
- OutputPath: tCtx.OutputWriter(),
- Task: tCtx.TaskReader(),
- })
- if err != nil {
- return "", "", []string{}, 0, "", err
- }
- formattedQuery = outputs[0]
-
- cluster = hiveJob.GetClusterLabel()
- timeoutSec = hiveJob.GetQuery().GetTimeoutSec()
- taskName = taskTemplate.GetId().GetName()
- tags = hiveJob.GetTags()
- tags = append(tags, fmt.Sprintf("ns:%s", tCtx.TaskExecutionMetadata().GetNamespace()))
- for k, v := range tCtx.TaskExecutionMetadata().GetLabels() {
- tags = append(tags, fmt.Sprintf("%s:%s", k, v))
- }
- logger.Debugf(ctx, "QueryInfo: original query [%s], query: [%s], cluster: [%s], timeoutSec: [%d], tags: [%v]",
- query, formattedQuery, cluster, timeoutSec, tags)
-
- return formattedQuery, cluster, tags, timeoutSec, taskName, err
-}
-
-func mapLabelToPrimaryLabel(ctx context.Context, quboleCfg *config.Config, label string) (primaryLabel string, found bool) {
- primaryLabel = quboleCfg.DefaultClusterLabel
- found = false
-
- if label == "" {
- logger.Debugf(ctx, "Input cluster label is an empty string; falling back to using the default primary label [%v]", label, primaryLabel)
- return
- }
-
- // Using a linear search because N is small and because of ClusterConfig's struct definition
- // which is determined specifically for the readability of the corresponding configmap yaml file
- for _, clusterCfg := range quboleCfg.ClusterConfigs {
- for _, l := range clusterCfg.Labels {
- if label != "" && l == label {
- logger.Debugf(ctx, "Found the primary label [%v] for label [%v]", clusterCfg.PrimaryLabel, label)
- primaryLabel, found = clusterCfg.PrimaryLabel, true
- break
- }
- }
- }
-
- if !found {
- logger.Debugf(ctx, "Cannot find the primary cluster label for label [%v] in configmap; "+
- "falling back to using the default primary label [%v]", label, primaryLabel)
- }
-
- return primaryLabel, found
-}
-
-func mapProjectDomainToDestinationClusterLabel(ctx context.Context, tCtx core.TaskExecutionContext, quboleCfg *config.Config) (string, bool) {
- tExecID := tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetID()
- project := tExecID.GetNodeExecutionId().GetExecutionId().GetProject()
- domain := tExecID.GetNodeExecutionId().GetExecutionId().GetDomain()
- logger.Debugf(ctx, "No clusterLabelOverride. Finding the pre-defined cluster label for (project: %v, domain: %v)", project, domain)
- // Using a linear search because N is small
- for _, m := range quboleCfg.DestinationClusterConfigs {
- if project == m.Project && domain == m.Domain {
- logger.Debugf(ctx, "Found the pre-defined cluster label [%v] for (project: %v, domain: %v)", m.ClusterLabel, project, domain)
- return m.ClusterLabel, true
- }
- }
-
- // This function finds the label, not primary label, so in the case where no mapping is found, this function should return an empty string
- return "", false
-}
-
-func getClusterPrimaryLabel(ctx context.Context, tCtx core.TaskExecutionContext, clusterLabelOverride string) string {
- cfg := config.GetQuboleConfig()
-
- // If override is not empty and if it has a mapping, we return the mapped primary label
- if clusterLabelOverride != "" {
- if primaryLabel, found := mapLabelToPrimaryLabel(ctx, cfg, clusterLabelOverride); found {
- return primaryLabel
- }
- }
-
- // If override is empty or if the override does not have a mapping, we return the primary label mapped using (project, domain)
- if clusterLabel, found := mapProjectDomainToDestinationClusterLabel(ctx, tCtx, cfg); found {
- primaryLabel, _ := mapLabelToPrimaryLabel(ctx, cfg, clusterLabel)
- return primaryLabel
- }
-
- // Else we return the default primary label
- return cfg.DefaultClusterLabel
-}
-
-func KickOffQuery(ctx context.Context, tCtx core.TaskExecutionContext, currentState ExecutionState, quboleClient client.QuboleClient,
- cache cache.AutoRefresh, cfg *config.Config) (ExecutionState, error) {
-
- uniqueID := tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetGeneratedName()
- apiKey, err := tCtx.SecretManager().Get(ctx, cfg.TokenKey)
- if err != nil {
- return currentState, errors.Wrapf(errors.RuntimeFailure, err, "Failed to read token from secrets manager")
- }
-
- query, clusterLabelOverride, tags, timeoutSec, taskName, err := GetQueryInfo(ctx, tCtx)
- if err != nil {
- return currentState, err
- }
-
- clusterPrimaryLabel := getClusterPrimaryLabel(ctx, tCtx, clusterLabelOverride)
-
- taskExecutionIdentifier := tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetID()
- commandMetadata := client.CommandMetadata{TaskName: taskName,
- Domain: taskExecutionIdentifier.GetNodeExecutionId().GetExecutionId().GetDomain(),
- Project: taskExecutionIdentifier.GetNodeExecutionId().GetExecutionId().GetProject(),
- Labels: tCtx.TaskExecutionMetadata().GetLabels(),
- AttemptNumber: taskExecutionIdentifier.GetRetryAttempt(),
- MaxAttempts: tCtx.TaskExecutionMetadata().GetMaxAttempts(),
- WorkflowExecutionID: taskExecutionIdentifier.GetNodeExecutionId().GetExecutionId().GetName(),
- WorkflowID: contextutils.Value(ctx, contextutils.WorkflowIDKey),
- }
-
- cmdDetails, err := quboleClient.ExecuteHiveCommand(ctx, query, timeoutSec,
- clusterPrimaryLabel, apiKey, tags, commandMetadata)
- if err != nil {
- // If we failed, we'll keep the NotStarted state
- currentState.CreationFailureCount = currentState.CreationFailureCount + 1
- logger.Warnf(ctx, "Error creating Qubole query for %s, failure counts %d. Error: %s", uniqueID, currentState.CreationFailureCount, err)
- } else {
- // If we succeed, then store the command id returned from Qubole, and update our state. Also, add to the
- // AutoRefreshCache so we start getting updates.
- commandID := strconv.FormatInt(cmdDetails.ID, 10)
- logger.Infof(ctx, "Created Qubole ID [%s] for token %s", commandID, uniqueID)
- currentState.CommandID = commandID
- currentState.Phase = PhaseSubmitted
- currentState.URI = cmdDetails.URI.String()
-
- executionStateCacheItem := ExecutionStateCacheItem{
- ExecutionState: currentState,
- Identifier: uniqueID,
- }
-
- // The first time we put it in the cache, we know it won't have succeeded so we don't need to look at it
- _, err := cache.GetOrCreate(uniqueID, executionStateCacheItem)
- if err != nil {
- // This means that our cache has fundamentally broken... return a system error
- logger.Errorf(ctx, "Cache failed to GetOrCreate for execution [%s] cache key [%s], owner [%s]. Error %s",
- taskExecutionIdentifier, uniqueID,
- tCtx.TaskExecutionMetadata().GetOwnerReference(), err)
- return currentState, err
- }
- }
-
- return currentState, nil
-}
-
-func MonitorQuery(ctx context.Context, tCtx core.TaskExecutionContext, currentState ExecutionState, cache cache.AutoRefresh) (
- ExecutionState, error) {
-
- uniqueID := tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetGeneratedName()
- executionStateCacheItem := ExecutionStateCacheItem{
- ExecutionState: currentState,
- Identifier: uniqueID,
- }
-
- cachedItem, err := cache.GetOrCreate(uniqueID, executionStateCacheItem)
- if err != nil {
- // This means that our cache has fundamentally broken... return a system error
- logger.Errorf(ctx, "Cache is broken on execution [%s] cache key [%s], owner [%s]. Error %s",
- tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetID(), uniqueID,
- tCtx.TaskExecutionMetadata().GetOwnerReference(), err)
- return currentState, errors.Wrapf(errors.CacheFailed, err, "Error when GetOrCreate while monitoring")
- }
-
- cachedExecutionState, ok := cachedItem.(ExecutionStateCacheItem)
- if !ok {
- logger.Errorf(ctx, "Error casting cache object into ExecutionState")
- return currentState, errors.Errorf(errors.CacheFailed, "Failed to cast [%v]", cachedItem)
- }
-
- // TODO: Add a couple of debug lines here - did it change or did it not?
-
- // If there were updates made to the state, we'll have picked them up automatically. Nothing more to do.
- return cachedExecutionState.ExecutionState, nil
-}
-
-func Abort(ctx context.Context, tCtx core.TaskExecutionContext, currentState ExecutionState, qubole client.QuboleClient, apiKey string) error {
- // Cancel Qubole query if non-terminal state
- if !InTerminalState(currentState) && currentState.CommandID != "" {
- err := qubole.KillCommand(ctx, currentState.CommandID, apiKey)
- if err != nil {
- logger.Errorf(ctx, "Error terminating Qubole command in Finalize [%s]", err)
- return err
- }
- }
- return nil
-}
-
-func Finalize(ctx context.Context, tCtx core.TaskExecutionContext, _ ExecutionState, metrics QuboleHiveExecutorMetrics) error {
- // Release allocation token
- uniqueID := tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetGeneratedName()
- clusterPrimaryLabel, err := composeResourceNamespaceWithClusterPrimaryLabel(ctx, tCtx)
- if err != nil {
- return errors.Wrapf(errors.ResourceManagerFailure, err, "Error getting query info when releasing allocation token %s", uniqueID)
- }
-
- err = tCtx.ResourceManager().ReleaseResource(ctx, clusterPrimaryLabel, uniqueID)
-
- if err != nil {
- metrics.ResourceReleaseFailed.Inc(ctx)
- logger.Errorf(ctx, "Error releasing allocation token [%s] in Finalize [%s]", uniqueID, err)
- return err
- }
- metrics.ResourceReleased.Inc(ctx)
- return nil
-}
-
-func InTerminalState(e ExecutionState) bool {
- return e.Phase.IsTerminal()
-}
-
-func IsNotYetSubmitted(e ExecutionState) bool {
- if e.Phase == PhaseNotStarted || e.Phase == PhaseQueued {
- return true
- }
- return false
-}
-
-func WriteOutputs(ctx context.Context, tCtx core.TaskExecutionContext, currentState ExecutionState) (
- ExecutionState, error) {
-
- taskTemplate, err := tCtx.TaskReader().Read(ctx)
- if err != nil {
- logger.Errorf(ctx, "Error reading task template: [%s]", err)
- return currentState, err
- }
-
- externalLocation := tCtx.OutputWriter().GetRawOutputPrefix()
- outputs := taskTemplate.GetInterface().GetOutputs().GetVariables()
- if len(outputs) != 0 && len(outputs) != 1 {
- return currentState, errors.Errorf(errors.BadTaskSpecification, "Hive tasks must have zero or one output: [%d] found", len(outputs))
- }
- if len(outputs) == 1 {
- if results, ok := outputs["results"]; ok {
- if results.GetType().GetSchema() == nil {
- return currentState, errors.Errorf(errors.BadTaskSpecification, "A non-SchemaType was found [%v]", results.GetType())
- }
- logger.Debugf(ctx, "Writing outputs file for Hive task at [%s]", tCtx.OutputWriter().GetOutputPrefixPath())
- err = tCtx.OutputWriter().Put(ctx, ioutils.NewInMemoryOutputReader(
- &idlCore.LiteralMap{
- Literals: map[string]*idlCore.Literal{
- "results": {
- Value: &idlCore.Literal_Scalar{
- Scalar: &idlCore.Scalar{Value: &idlCore.Scalar_Schema{
- Schema: &idlCore.Schema{
- Uri: externalLocation.String(),
- Type: results.GetType().GetSchema(),
- },
- },
- },
- },
- },
- },
- }, nil, nil))
- if err != nil {
- logger.Errorf(ctx, "Error writing outputs file: [%s]", err)
- return currentState, err
- }
- } else {
- logger.Errorf(ctx, "Wrong name for output [%s]", err)
- return currentState, errors.Errorf(errors.BadTaskSpecification, "One output found but wrong name [%s]", outputs)
- }
- }
-
- logger.Debugf(ctx, "Moving hive task to succeeded")
- currentState.Phase = PhaseQuerySucceeded
- return currentState, nil
-}
diff --git a/flyteplugins/go/tasks/plugins/hive/execution_state_test.go b/flyteplugins/go/tasks/plugins/hive/execution_state_test.go
deleted file mode 100644
index 04b742ff453..00000000000
--- a/flyteplugins/go/tasks/plugins/hive/execution_state_test.go
+++ /dev/null
@@ -1,467 +0,0 @@
-package hive
-
-import (
- "context"
- "fmt"
- "net/url"
- "testing"
- "time"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/mock"
-
- idlCore "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/mocks"
- pluginsCoreMocks "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/mocks"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io"
- ioMock "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io/mocks"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/client"
- quboleMocks "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/client/mocks"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/config"
- "github.com/flyteorg/flyte/flytestdlib/cache"
- mocks2 "github.com/flyteorg/flyte/flytestdlib/cache/mocks"
- "github.com/flyteorg/flyte/flytestdlib/contextutils"
- "github.com/flyteorg/flyte/flytestdlib/promutils"
- "github.com/flyteorg/flyte/flytestdlib/promutils/labeled"
-)
-
-func init() {
- labeled.SetMetricKeys(contextutils.NamespaceKey)
-}
-
-func TestInTerminalState(t *testing.T) {
- var stateTests = []struct {
- phase ExecutionPhase
- isTerminal bool
- }{
- {phase: PhaseNotStarted, isTerminal: false},
- {phase: PhaseQueued, isTerminal: false},
- {phase: PhaseSubmitted, isTerminal: false},
- {phase: PhaseQuerySucceeded, isTerminal: true},
- {phase: PhaseQueryFailed, isTerminal: true},
- }
-
- for _, tt := range stateTests {
- t.Run(tt.phase.String(), func(t *testing.T) {
- e := ExecutionState{Phase: tt.phase}
- res := InTerminalState(e)
- assert.Equal(t, tt.isTerminal, res)
- assert.Equal(t, tt.phase.IsTerminal(), res)
- })
- }
-}
-
-func TestIsNotYetSubmitted(t *testing.T) {
- var stateTests = []struct {
- phase ExecutionPhase
- isNotYetSubmitted bool
- }{
- {phase: PhaseNotStarted, isNotYetSubmitted: true},
- {phase: PhaseQueued, isNotYetSubmitted: true},
- {phase: PhaseSubmitted, isNotYetSubmitted: false},
- {phase: PhaseQuerySucceeded, isNotYetSubmitted: false},
- {phase: PhaseQueryFailed, isNotYetSubmitted: false},
- }
-
- for _, tt := range stateTests {
- t.Run(tt.phase.String(), func(t *testing.T) {
- e := ExecutionState{Phase: tt.phase}
- res := IsNotYetSubmitted(e)
- assert.Equal(t, tt.isNotYetSubmitted, res)
- })
- }
-}
-
-func TestGetQueryInfo(t *testing.T) {
- ctx := context.Background()
- tCtx := GetMockTaskExecutionContext()
-
- query, cluster, tags, timeout, taskName, err := GetQueryInfo(ctx, tCtx)
- assert.NoError(t, err)
- assert.Equal(t, "select 'one'", query)
- assert.Equal(t, "default", cluster)
- assert.Equal(t, []string{"flyte_plugin_test", "ns:test-namespace", "label-1:val1"}, tags)
- assert.Equal(t, 500, int(timeout))
- assert.Equal(t, "sample_hive_task_test_name", taskName)
-}
-
-func TestValidateQuboleHiveJob(t *testing.T) {
- hiveJob := plugins.QuboleHiveJob{
- ClusterLabel: "default",
- Tags: []string{"flyte_plugin_test", "sample:label"},
- Query: nil,
- }
- err := validateQuboleHiveJob(hiveJob)
- assert.Error(t, err)
-}
-
-func TestConstructTaskLog(t *testing.T) {
- expected := "https://wellness.qubole.com/v2/analyze?command_id=123"
- u, err := url.Parse(expected)
- assert.NoError(t, err)
- taskLog := ConstructTaskLog(ExecutionState{CommandID: "123", URI: u.String()})
- assert.Equal(t, expected, taskLog.GetUri())
-}
-
-func TestConstructTaskInfo(t *testing.T) {
- empty := ConstructTaskInfo(ExecutionState{})
- assert.Nil(t, empty)
-
- expected := "https://wellness.qubole.com/v2/analyze?command_id=123"
- u, err := url.Parse(expected)
- assert.NoError(t, err)
-
- e := ExecutionState{
- Phase: PhaseQuerySucceeded,
- CommandID: "123",
- SyncFailureCount: 0,
- URI: u.String(),
- }
-
- taskInfo := ConstructTaskInfo(e)
- assert.Equal(t, "https://wellness.qubole.com/v2/analyze?command_id=123", taskInfo.Logs[0].GetUri())
- assert.Len(t, taskInfo.ExternalResources, 1)
- assert.Equal(t, taskInfo.ExternalResources[0].ExternalID, "123")
-}
-
-func TestMapExecutionStateToPhaseInfo(t *testing.T) {
- c := client.NewQuboleClient(config.GetQuboleConfig())
- t.Run("NotStarted", func(t *testing.T) {
- e := ExecutionState{
- Phase: PhaseNotStarted,
- }
- phaseInfo := MapExecutionStateToPhaseInfo(e, c)
- assert.Equal(t, core.PhaseNotReady, phaseInfo.Phase())
- })
-
- t.Run("Queued", func(t *testing.T) {
- e := ExecutionState{
- Phase: PhaseQueued,
- CreationFailureCount: 0,
- }
- phaseInfo := MapExecutionStateToPhaseInfo(e, c)
- assert.Equal(t, core.PhaseQueued, phaseInfo.Phase())
-
- e = ExecutionState{
- Phase: PhaseQueued,
- CreationFailureCount: 100,
- }
- phaseInfo = MapExecutionStateToPhaseInfo(e, c)
- assert.Equal(t, core.PhaseRetryableFailure, phaseInfo.Phase())
-
- })
-
- t.Run("Submitted", func(t *testing.T) {
- e := ExecutionState{
- Phase: PhaseSubmitted,
- }
- phaseInfo := MapExecutionStateToPhaseInfo(e, c)
- assert.Equal(t, core.PhaseRunning, phaseInfo.Phase())
- })
-
- t.Run("Write outputs file", func(t *testing.T) {
- e := ExecutionState{
- Phase: PhaseWriteOutputFile,
- }
- phaseInfo := MapExecutionStateToPhaseInfo(e, c)
- assert.Equal(t, core.PhaseRunning, phaseInfo.Phase())
- assert.Equal(t, uint32(1), phaseInfo.Version())
- })
-}
-
-func TestGetAllocationToken(t *testing.T) {
- ctx := context.Background()
-
- t.Run("allocation granted", func(t *testing.T) {
- tCtx := GetMockTaskExecutionContext()
- mockResourceManager := tCtx.ResourceManager()
- x := mockResourceManager.(*mocks.ResourceManager)
- x.On("AllocateResource", mock.Anything, mock.Anything, mock.Anything, mock.Anything).
- Return(core.AllocationStatusGranted, nil)
-
- mockCurrentState := ExecutionState{AllocationTokenRequestStartTime: time.Now()}
- mockMetrics := getQuboleHiveExecutorMetrics(promutils.NewTestScope())
- state, err := GetAllocationToken(ctx, tCtx, mockCurrentState, mockMetrics)
- assert.NoError(t, err)
- assert.Equal(t, PhaseQueued, state.Phase)
- })
-
- t.Run("exhausted", func(t *testing.T) {
- tCtx := GetMockTaskExecutionContext()
- mockResourceManager := tCtx.ResourceManager()
- x := mockResourceManager.(*mocks.ResourceManager)
- x.On("AllocateResource", mock.Anything, mock.Anything, mock.Anything, mock.Anything).
- Return(core.AllocationStatusExhausted, nil)
-
- mockCurrentState := ExecutionState{AllocationTokenRequestStartTime: time.Now()}
- mockMetrics := getQuboleHiveExecutorMetrics(promutils.NewTestScope())
- state, err := GetAllocationToken(ctx, tCtx, mockCurrentState, mockMetrics)
- assert.NoError(t, err)
- assert.Equal(t, PhaseNotStarted, state.Phase)
- })
-
- t.Run("namespace exhausted", func(t *testing.T) {
- tCtx := GetMockTaskExecutionContext()
- mockResourceManager := tCtx.ResourceManager()
- x := mockResourceManager.(*mocks.ResourceManager)
- x.On("AllocateResource", mock.Anything, mock.Anything, mock.Anything, mock.Anything).
- Return(core.AllocationStatusNamespaceQuotaExceeded, nil)
-
- mockCurrentState := ExecutionState{AllocationTokenRequestStartTime: time.Now()}
- mockMetrics := getQuboleHiveExecutorMetrics(promutils.NewTestScope())
- state, err := GetAllocationToken(ctx, tCtx, mockCurrentState, mockMetrics)
- assert.NoError(t, err)
- assert.Equal(t, PhaseNotStarted, state.Phase)
- })
-
- t.Run("Request start time, if empty in current state, should be set", func(t *testing.T) {
- tCtx := GetMockTaskExecutionContext()
- mockResourceManager := tCtx.ResourceManager()
- x := mockResourceManager.(*mocks.ResourceManager)
- x.On("AllocateResource", mock.Anything, mock.Anything, mock.Anything, mock.Anything).
- Return(core.AllocationStatusNamespaceQuotaExceeded, nil)
-
- mockCurrentState := ExecutionState{}
- mockMetrics := getQuboleHiveExecutorMetrics(promutils.NewTestScope())
- state, err := GetAllocationToken(ctx, tCtx, mockCurrentState, mockMetrics)
- assert.NoError(t, err)
- assert.Equal(t, state.AllocationTokenRequestStartTime.IsZero(), false)
- })
-
- t.Run("Request start time, if already set in current state, should be maintained", func(t *testing.T) {
- tCtx := GetMockTaskExecutionContext()
- mockResourceManager := tCtx.ResourceManager()
- x := mockResourceManager.(*mocks.ResourceManager)
- x.On("AllocateResource", mock.Anything, mock.Anything, mock.Anything, mock.Anything).
- Return(core.AllocationStatusGranted, nil)
-
- startTime := time.Now()
- mockCurrentState := ExecutionState{AllocationTokenRequestStartTime: startTime}
- mockMetrics := getQuboleHiveExecutorMetrics(promutils.NewTestScope())
- state, err := GetAllocationToken(ctx, tCtx, mockCurrentState, mockMetrics)
- assert.NoError(t, err)
- assert.Equal(t, state.AllocationTokenRequestStartTime.IsZero(), false)
- assert.Equal(t, state.AllocationTokenRequestStartTime, startTime)
- })
-}
-
-func TestAbort(t *testing.T) {
- ctx := context.Background()
-
- t.Run("Terminate called when not in terminal state", func(t *testing.T) {
- var x = false
- mockQubole := &quboleMocks.QuboleClient{}
- mockQubole.On("KillCommand", mock.Anything, mock.MatchedBy(func(commandId string) bool {
- return commandId == "123456"
- }), mock.Anything).Run(func(_ mock.Arguments) {
- x = true
- }).Return(nil)
-
- err := Abort(ctx, GetMockTaskExecutionContext(), ExecutionState{Phase: PhaseSubmitted, CommandID: "123456"}, mockQubole, "fake-key")
- assert.NoError(t, err)
- assert.True(t, x)
- })
-
- t.Run("Terminate not called when in terminal state", func(t *testing.T) {
- var x = false
- mockQubole := &quboleMocks.QuboleClient{}
- mockQubole.On("KillCommand", mock.Anything, mock.Anything, mock.Anything).Run(func(_ mock.Arguments) {
- x = true
- }).Return(nil)
-
- err := Abort(ctx, GetMockTaskExecutionContext(), ExecutionState{
- Phase: PhaseQuerySucceeded,
- CommandID: "123456",
- }, mockQubole, "fake-key")
- assert.NoError(t, err)
- assert.False(t, x)
- })
-}
-
-func TestFinalize(t *testing.T) {
- // Test that Finalize releases resources
- ctx := context.Background()
- tCtx := GetMockTaskExecutionContext()
- state := ExecutionState{}
- var called = false
- mockResourceManager := tCtx.ResourceManager()
- x := mockResourceManager.(*mocks.ResourceManager)
- x.On("ReleaseResource", mock.Anything, mock.Anything, mock.Anything).Run(func(_ mock.Arguments) {
- called = true
- }).Return(nil)
-
- err := Finalize(ctx, tCtx, state, getQuboleHiveExecutorMetrics(promutils.NewTestScope()))
- assert.NoError(t, err)
- assert.True(t, called)
-}
-
-func TestMonitorQuery(t *testing.T) {
- ctx := context.Background()
- tCtx := GetMockTaskExecutionContext()
- state := ExecutionState{
- Phase: PhaseSubmitted,
- }
- var getOrCreateCalled = false
- mockCache := &mocks2.AutoRefresh{}
- mockCache.EXPECT().GetOrCreate("my_wf_exec_project:my_wf_exec_domain:my_wf_exec_name", mock.Anything).Return(ExecutionStateCacheItem{
- ExecutionState: ExecutionState{Phase: PhaseQuerySucceeded},
- Identifier: "my_wf_exec_project:my_wf_exec_domain:my_wf_exec_name",
- }, nil).Run(func(id string, item cache.Item) {
- getOrCreateCalled = true
- })
-
- newState, err := MonitorQuery(ctx, tCtx, state, mockCache)
- assert.NoError(t, err)
- assert.True(t, getOrCreateCalled)
- assert.Equal(t, PhaseQuerySucceeded, newState.Phase)
-}
-
-func TestKickOffQuery(t *testing.T) {
- ctx := context.Background()
- tCtx := GetMockTaskExecutionContext()
-
- var quboleCalled = false
- quboleCommandDetails := &client.QuboleCommandDetails{
- ID: int64(453298043),
- Status: client.QuboleStatusWaiting,
- }
- mockQubole := &quboleMocks.QuboleClient{}
- mockQubole.EXPECT().ExecuteHiveCommand(mock.Anything, mock.Anything, mock.Anything, mock.Anything,
- mock.Anything, mock.Anything, mock.Anything).Run(func(ctx context.Context, commandStr string, timeoutVal uint32, clusterPrimaryLabel string, accountKey string, tags []string, commandMetadata client.CommandMetadata) {
- quboleCalled = true
- }).Return(quboleCommandDetails, nil)
-
- var getOrCreateCalled = false
- mockCache := &mocks2.AutoRefresh{}
- mockCache.EXPECT().GetOrCreate(mock.Anything,
- ExecutionStateCacheItem{
- ExecutionState: ExecutionState{Phase: PhaseSubmitted, CommandID: "453298043"},
- Identifier: "my_wf_exec_project:my_wf_exec_domain:my_wf_exec_name"}).Run(func(id string, item cache.Item) {
- getOrCreateCalled = true
- }).Return(ExecutionStateCacheItem{}, nil)
-
- state := ExecutionState{}
- newState, err := KickOffQuery(ctx, tCtx, state, mockQubole, mockCache, config.GetQuboleConfig())
- assert.NoError(t, err)
- assert.Equal(t, PhaseSubmitted, newState.Phase)
- assert.Equal(t, "453298043", newState.CommandID)
- assert.True(t, getOrCreateCalled)
- assert.True(t, quboleCalled)
-}
-
-func TestWriteOutputs(t *testing.T) {
- ctx := context.Background()
- tCtx := GetMockTaskExecutionContext()
- tCtx.OutputWriter().(*ioMock.OutputWriter).On("Put", mock.Anything, mock.Anything).Return(nil).Run(func(arguments mock.Arguments) {
- reader := arguments.Get(1).(io.OutputReader)
- literals, err1, err2 := reader.Read(context.Background())
- assert.Nil(t, err1)
- assert.NoError(t, err2)
- assert.NotNil(t, literals.GetLiterals()["results"].GetScalar().GetSchema())
- })
-
- state := ExecutionState{}
- newState, _ := WriteOutputs(ctx, tCtx, state)
- fmt.Println(newState)
-}
-
-func createMockQuboleCfg() *config.Config {
- return &config.Config{
- DefaultClusterLabel: "default",
- ClusterConfigs: []config.ClusterConfig{
- {PrimaryLabel: "primary A", Labels: []string{"primary A", "A", "label A", "A-prod"}, Limit: 10},
- {PrimaryLabel: "primary B", Labels: []string{"B"}, Limit: 10},
- {PrimaryLabel: "primary C", Labels: []string{"C-prod"}, Limit: 1},
- },
- DestinationClusterConfigs: []config.DestinationClusterConfig{
- {Project: "project A", Domain: "domain X", ClusterLabel: "A-prod"},
- {Project: "project A", Domain: "domain Y", ClusterLabel: "A"},
- {Project: "project A", Domain: "domain Z", ClusterLabel: "B"},
- {Project: "project C", Domain: "domain X", ClusterLabel: "C-prod"},
- },
- }
-}
-
-func Test_mapLabelToPrimaryLabel(t *testing.T) {
- ctx := context.TODO()
- mockQuboleCfg := createMockQuboleCfg()
-
- type args struct {
- ctx context.Context
- quboleCfg *config.Config
- label string
- }
- tests := []struct {
- name string
- args args
- want string
- wantFound bool
- }{
- {name: "Label has a mapping", args: args{ctx: ctx, quboleCfg: mockQuboleCfg, label: "A-prod"}, want: "primary A", wantFound: true},
- {name: "Label has a typo", args: args{ctx: ctx, quboleCfg: mockQuboleCfg, label: "a"}, want: DefaultClusterPrimaryLabel, wantFound: false},
- {name: "Label has a mapping 2", args: args{ctx: ctx, quboleCfg: mockQuboleCfg, label: "C-prod"}, want: "primary C", wantFound: true},
- {name: "Label has a typo 2", args: args{ctx: ctx, quboleCfg: mockQuboleCfg, label: "C_prod"}, want: DefaultClusterPrimaryLabel, wantFound: false},
- {name: "Label has a mapping 3", args: args{ctx: ctx, quboleCfg: mockQuboleCfg, label: "primary A"}, want: "primary A", wantFound: true},
- {name: "Label has no mapping", args: args{ctx: ctx, quboleCfg: mockQuboleCfg, label: "D"}, want: DefaultClusterPrimaryLabel, wantFound: false},
- {name: "Label is an empty string", args: args{ctx: ctx, quboleCfg: mockQuboleCfg, label: ""}, want: DefaultClusterPrimaryLabel, wantFound: false},
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if got, found := mapLabelToPrimaryLabel(tt.args.ctx, tt.args.quboleCfg, tt.args.label); got != tt.want || found != tt.wantFound {
- t.Errorf("mapLabelToPrimaryLabel() = (%v, %v), want (%v, %v)", got, found, tt.want, tt.wantFound)
- }
- })
- }
-}
-
-func createMockTaskExecutionContextWithProjectDomain(project string, domain string) *mocks.TaskExecutionContext {
- mockTaskExecutionContext := mocks.TaskExecutionContext{}
- taskExecID := &pluginsCoreMocks.TaskExecutionID{}
- taskExecID.EXPECT().GetID().Return(idlCore.TaskExecutionIdentifier{
- NodeExecutionId: &idlCore.NodeExecutionIdentifier{ExecutionId: &idlCore.WorkflowExecutionIdentifier{
- Project: project,
- Domain: domain,
- Name: "random name",
- }},
- })
-
- taskMetadata := &pluginsCoreMocks.TaskExecutionMetadata{}
- taskMetadata.EXPECT().GetTaskExecutionID().Return(taskExecID)
- mockTaskExecutionContext.On("TaskExecutionMetadata").Return(taskMetadata)
- return &mockTaskExecutionContext
-}
-
-func Test_getClusterPrimaryLabel(t *testing.T) {
- ctx := context.TODO()
- err := config.SetQuboleConfig(createMockQuboleCfg())
- assert.Nil(t, err)
-
- type args struct {
- ctx context.Context
- tCtx core.TaskExecutionContext
- clusterLabelOverride string
- }
- tests := []struct {
- name string
- args args
- want string
- }{
- {name: "Override is not empty + override has NO existing mapping + project-domain has an existing mapping", args: args{ctx: ctx, tCtx: createMockTaskExecutionContextWithProjectDomain("project A", "domain Z"), clusterLabelOverride: "AAAA"}, want: "primary B"},
- {name: "Override is not empty + override has NO existing mapping + project-domain has NO existing mapping", args: args{ctx: ctx, tCtx: createMockTaskExecutionContextWithProjectDomain("project A", "domain blah"), clusterLabelOverride: "blh"}, want: DefaultClusterPrimaryLabel},
- {name: "Override is not empty + override has an existing mapping + project-domain has NO existing mapping", args: args{ctx: ctx, tCtx: createMockTaskExecutionContextWithProjectDomain("project blah", "domain blah"), clusterLabelOverride: "C-prod"}, want: "primary C"},
- {name: "Override is not empty + override has an existing mapping + project-domain has an existing mapping", args: args{ctx: ctx, tCtx: createMockTaskExecutionContextWithProjectDomain("project A", "domain A"), clusterLabelOverride: "C-prod"}, want: "primary C"},
- {name: "Override is empty + project-domain has an existing mapping", args: args{ctx: ctx, tCtx: createMockTaskExecutionContextWithProjectDomain("project A", "domain X"), clusterLabelOverride: ""}, want: "primary A"},
- {name: "Override is empty + project-domain has an existing mapping2", args: args{ctx: ctx, tCtx: createMockTaskExecutionContextWithProjectDomain("project A", "domain Z"), clusterLabelOverride: ""}, want: "primary B"},
- {name: "Override is empty + project-domain has NO existing mapping", args: args{ctx: ctx, tCtx: createMockTaskExecutionContextWithProjectDomain("project A", "domain blah"), clusterLabelOverride: ""}, want: DefaultClusterPrimaryLabel},
- {name: "Override is empty + project-domain has NO existing mapping2", args: args{ctx: ctx, tCtx: createMockTaskExecutionContextWithProjectDomain("project blah", "domain X"), clusterLabelOverride: ""}, want: DefaultClusterPrimaryLabel},
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if got := getClusterPrimaryLabel(tt.args.ctx, tt.args.tCtx, tt.args.clusterLabelOverride); got != tt.want {
- t.Errorf("getClusterPrimaryLabel() = %v, want %v", got, tt.want)
- }
- })
- }
-}
diff --git a/flyteplugins/go/tasks/plugins/hive/executions_cache.go b/flyteplugins/go/tasks/plugins/hive/executions_cache.go
deleted file mode 100644
index 6ce2fcf6e28..00000000000
--- a/flyteplugins/go/tasks/plugins/hive/executions_cache.go
+++ /dev/null
@@ -1,175 +0,0 @@
-package hive
-
-import (
- "context"
- "time"
-
- "k8s.io/client-go/util/workqueue"
-
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/errors"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/client"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/config"
- "github.com/flyteorg/flyte/flytestdlib/cache"
- stdErrors "github.com/flyteorg/flyte/flytestdlib/errors"
- "github.com/flyteorg/flyte/flytestdlib/logger"
- "github.com/flyteorg/flyte/flytestdlib/promutils"
-)
-
-const ResyncDuration = 30 * time.Second
-
-const (
- BadQuboleReturnCodeError stdErrors.ErrorCode = "QUBOLE_RETURNED_UNKNOWN"
-)
-
-type QuboleHiveExecutionsCache struct {
- cache.AutoRefresh
- quboleClient client.QuboleClient
- secretManager core.SecretManager
- scope promutils.Scope
- cfg *config.Config
-}
-
-func NewQuboleHiveExecutionsCache(ctx context.Context, quboleClient client.QuboleClient,
- secretManager core.SecretManager, cfg *config.Config, scope promutils.Scope) (QuboleHiveExecutionsCache, error) {
-
- q := QuboleHiveExecutionsCache{
- quboleClient: quboleClient,
- secretManager: secretManager,
- scope: scope,
- cfg: cfg,
- }
- // #nosec G115
- autoRefreshCache, err := cache.NewAutoRefreshCache("qubole", q.SyncQuboleQuery, workqueue.DefaultControllerRateLimiter(), ResyncDuration, uint(cfg.Workers), uint(cfg.LruCacheSize), scope)
- if err != nil {
- logger.Errorf(ctx, "Could not create AutoRefreshCache in QuboleHiveExecutor. [%s]", err)
- return q, errors.Wrapf(errors.CacheFailed, err, "Error creating AutoRefreshCache")
- }
- q.AutoRefresh = autoRefreshCache
- return q, nil
-}
-
-type ExecutionStateCacheItem struct {
- ExecutionState
-
- // This ID is the cache key and so will need to be unique across all objects in the cache (it will probably be
- // unique across all of Flyte) and needs to be deterministic.
- // This will also be used as the allocation token for now.
- Identifier string `json:"id"`
-}
-
-func (e ExecutionStateCacheItem) ID() string {
- return e.Identifier
-}
-
-func (e ExecutionStateCacheItem) IsTerminal() bool {
- return e.ExecutionState.Phase.IsTerminal()
-}
-
-// This basically grab an updated status from the Qubole API and store it in the cache
-// All other handling should be in the synchronous loop.
-func (q *QuboleHiveExecutionsCache) SyncQuboleQuery(ctx context.Context, batch cache.Batch) (
- updatedBatch []cache.ItemSyncResponse, err error) {
-
- resp := make([]cache.ItemSyncResponse, 0, len(batch))
- for _, query := range batch {
- // Cast the item back to the thing we want to work with.
- executionStateCacheItem, ok := query.GetItem().(ExecutionStateCacheItem)
- if !ok {
- logger.Errorf(ctx, "Sync loop - Error casting cache object into ExecutionState")
- return nil, errors.Errorf(errors.CacheFailed, "Failed to cast [%v]", batch[0].GetID())
- }
-
- if executionStateCacheItem.CommandID == "" {
- logger.Warnf(ctx, "Sync loop - CommandID is blank for [%s] skipping", executionStateCacheItem.Identifier)
- resp = append(resp, cache.ItemSyncResponse{
- ID: query.GetID(),
- Item: query.GetItem(),
- Action: cache.Unchanged,
- })
-
- continue
- }
-
- logger.Debugf(ctx, "Sync loop - processing Hive job [%s] - cache key [%s]",
- executionStateCacheItem.CommandID, executionStateCacheItem.Identifier)
-
- quboleAPIKey, err := q.secretManager.Get(ctx, q.cfg.TokenKey)
- if err != nil {
- return nil, err
- }
-
- if InTerminalState(executionStateCacheItem.ExecutionState) {
- logger.Debugf(ctx, "Sync loop - Qubole id [%s] in terminal state [%s]",
- executionStateCacheItem.CommandID, executionStateCacheItem.Identifier)
-
- resp = append(resp, cache.ItemSyncResponse{
- ID: query.GetID(),
- Item: query.GetItem(),
- Action: cache.Unchanged,
- })
-
- continue
- }
-
- // Get an updated status from Qubole
- logger.Debugf(ctx, "Querying Qubole for %s - %s", executionStateCacheItem.CommandID, executionStateCacheItem.Identifier)
- commandStatus, err := q.quboleClient.GetCommandStatus(ctx, executionStateCacheItem.CommandID, quboleAPIKey)
- if err != nil {
- logger.Errorf(ctx, "Error from Qubole command %s", executionStateCacheItem.CommandID)
- executionStateCacheItem.SyncFailureCount++
- // Make sure we don't return nil for the first argument, because that deletes it from the cache.
- resp = append(resp, cache.ItemSyncResponse{
- ID: query.GetID(),
- Item: executionStateCacheItem,
- Action: cache.Update,
- })
-
- continue
- }
-
- newExecutionPhase, err := QuboleStatusToExecutionPhase(commandStatus)
- if err != nil {
- return nil, err
- }
-
- if newExecutionPhase > executionStateCacheItem.Phase {
- logger.Infof(ctx, "Moving ExecutionPhase for %s %s from %s to %s", executionStateCacheItem.CommandID,
- executionStateCacheItem.Identifier, executionStateCacheItem.Phase, newExecutionPhase)
-
- executionStateCacheItem.Phase = newExecutionPhase
-
- resp = append(resp, cache.ItemSyncResponse{
- ID: query.GetID(),
- Item: executionStateCacheItem,
- Action: cache.Update,
- })
- }
- }
-
- return resp, nil
-}
-
-// We need some way to translate results we get from Qubole, into a plugin phase
-// NB: This function should only return plugin phases that are greater than (">") phases that represent states before
-//
-// the query was kicked off. That is, it will never make sense to go back to PhaseNotStarted, after we've
-// submitted the query to Qubole.
-func QuboleStatusToExecutionPhase(s client.QuboleStatus) (ExecutionPhase, error) {
- switch s {
- case client.QuboleStatusDone:
- return PhaseWriteOutputFile, nil
- case client.QuboleStatusCancelled:
- return PhaseQueryFailed, nil
- case client.QuboleStatusError:
- return PhaseQueryFailed, nil
- case client.QuboleStatusWaiting:
- return PhaseSubmitted, nil
- case client.QuboleStatusRunning:
- return PhaseSubmitted, nil
- case client.QuboleStatusUnknown:
- return PhaseQueryFailed, errors.Errorf(BadQuboleReturnCodeError, "Qubole returned status Unknown")
- default:
- return PhaseQueryFailed, errors.Errorf(BadQuboleReturnCodeError, "default fallthrough case")
- }
-}
diff --git a/flyteplugins/go/tasks/plugins/hive/executions_cache_test.go b/flyteplugins/go/tasks/plugins/hive/executions_cache_test.go
deleted file mode 100644
index 504eedf2965..00000000000
--- a/flyteplugins/go/tasks/plugins/hive/executions_cache_test.go
+++ /dev/null
@@ -1,90 +0,0 @@
-package hive
-
-import (
- "context"
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/mock"
-
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/mocks"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/client"
- quboleMocks "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/client/mocks"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/config"
- "github.com/flyteorg/flyte/flytestdlib/cache"
- cacheMocks "github.com/flyteorg/flyte/flytestdlib/cache/mocks"
- "github.com/flyteorg/flyte/flytestdlib/promutils"
-)
-
-func TestQuboleHiveExecutionsCache_SyncQuboleQuery(t *testing.T) {
- ctx := context.Background()
-
- t.Run("terminal state return unchanged", func(t *testing.T) {
- mockCache := &cacheMocks.AutoRefresh{}
- mockQubole := &quboleMocks.QuboleClient{}
- testScope := promutils.NewTestScope()
-
- q := QuboleHiveExecutionsCache{
- AutoRefresh: mockCache,
- quboleClient: mockQubole,
- scope: testScope,
- cfg: config.GetQuboleConfig(),
- }
-
- state := ExecutionState{
- Phase: PhaseQuerySucceeded,
- }
- cacheItem := ExecutionStateCacheItem{
- ExecutionState: state,
- Identifier: "some-id",
- }
-
- iw := &cacheMocks.ItemWrapper{}
- iw.EXPECT().GetItem().Return(cacheItem)
- iw.EXPECT().GetID().Return("some-id")
-
- newCacheItem, err := q.SyncQuboleQuery(ctx, []cache.ItemWrapper{iw})
- assert.NoError(t, err)
- assert.Equal(t, cache.Unchanged, newCacheItem[0].Action)
- assert.Equal(t, cacheItem, newCacheItem[0].Item)
- })
-
- t.Run("move to success", func(t *testing.T) {
- mockCache := &cacheMocks.AutoRefresh{}
- mockQubole := &quboleMocks.QuboleClient{}
- mockSecretManager := &mocks.SecretManager{}
- mockSecretManager.EXPECT().Get(mock.Anything, mock.Anything).Return("fake key", nil)
-
- testScope := promutils.NewTestScope()
-
- q := QuboleHiveExecutionsCache{
- AutoRefresh: mockCache,
- quboleClient: mockQubole,
- scope: testScope,
- secretManager: mockSecretManager,
- cfg: config.GetQuboleConfig(),
- }
-
- state := ExecutionState{
- CommandID: "123456",
- Phase: PhaseSubmitted,
- }
- cacheItem := ExecutionStateCacheItem{
- ExecutionState: state,
- Identifier: "some-id",
- }
- mockQubole.EXPECT().GetCommandStatus(mock.Anything, mock.MatchedBy(func(commandId string) bool {
- return commandId == state.CommandID
- }), mock.Anything).Return(client.QuboleStatusDone, nil)
-
- iw := &cacheMocks.ItemWrapper{}
- iw.EXPECT().GetItem().Return(cacheItem)
- iw.EXPECT().GetID().Return("some-id")
-
- newCacheItem, err := q.SyncQuboleQuery(ctx, []cache.ItemWrapper{iw})
- newExecutionState := newCacheItem[0].Item.(ExecutionStateCacheItem)
- assert.NoError(t, err)
- assert.Equal(t, cache.Update, newCacheItem[0].Action)
- assert.Equal(t, PhaseWriteOutputFile, newExecutionState.Phase)
- })
-}
diff --git a/flyteplugins/go/tasks/plugins/hive/executor.go b/flyteplugins/go/tasks/plugins/hive/executor.go
deleted file mode 100644
index 5e64c6ef93e..00000000000
--- a/flyteplugins/go/tasks/plugins/hive/executor.go
+++ /dev/null
@@ -1,166 +0,0 @@
-package hive
-
-import (
- "context"
-
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/errors"
- pluginMachinery "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/client"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive/config"
- "github.com/flyteorg/flyte/flytestdlib/cache"
- "github.com/flyteorg/flyte/flytestdlib/logger"
- "github.com/flyteorg/flyte/flytestdlib/promutils"
-)
-
-// This is the name of this plugin effectively. In Flyte plugin configuration, use this string to enable this plugin.
-const quboleHiveExecutorID = "qubole-hive-executor"
-
-// Version of the custom state this plugin stores. Useful for backwards compatibility if you one day need to update
-// the structure of the stored state
-const pluginStateVersion = 0
-
-const hiveTaskType = "hive" // This needs to match the type defined in Flytekit constants.py
-
-const DefaultClusterPrimaryLabel = "default"
-
-type QuboleHiveExecutor struct {
- id string
- metrics QuboleHiveExecutorMetrics
- quboleClient client.QuboleClient
- executionsCache cache.AutoRefresh
- cfg *config.Config
-}
-
-func (q QuboleHiveExecutor) GetID() string {
- return q.id
-}
-
-func (q QuboleHiveExecutor) Handle(ctx context.Context, tCtx core.TaskExecutionContext) (core.Transition, error) {
- incomingState := ExecutionState{}
-
- // We assume here that the first time this function is called, the custom state we get back is whatever we passed in,
- // namely the zero-value of our struct.
- if _, err := tCtx.PluginStateReader().Get(&incomingState); err != nil {
- logger.Errorf(ctx, "Plugin %s failed to unmarshal custom state when handling [%s] [%s]",
- q.id, tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetGeneratedName(), err)
- return core.UnknownTransition, errors.Wrapf(errors.CorruptedPluginState, err,
- "Failed to unmarshal custom state in Handle")
- }
-
- // Do what needs to be done, and give this function everything it needs to do its job properly
- // TODO: Play around with making this return a transition directly. How will that pattern affect the multi-Qubole plugin
- outgoingState, transformError := HandleExecutionState(ctx, tCtx, incomingState, q.quboleClient, q.executionsCache, q.cfg, q.metrics)
-
- // Return if there was an error
- if transformError != nil {
- return core.UnknownTransition, transformError
- }
-
- // If no error, then infer the new Phase from the various states
- phaseInfo := MapExecutionStateToPhaseInfo(outgoingState, q.quboleClient)
-
- if err := tCtx.PluginStateWriter().Put(pluginStateVersion, outgoingState); err != nil {
- return core.UnknownTransition, err
- }
-
- return core.DoTransition(phaseInfo), nil
-}
-
-func (q QuboleHiveExecutor) Abort(ctx context.Context, tCtx core.TaskExecutionContext) error {
- incomingState := ExecutionState{}
- if _, err := tCtx.PluginStateReader().Get(&incomingState); err != nil {
- logger.Errorf(ctx, "Plugin %s failed to unmarshal custom state in Finalize [%s] Err [%s]",
- q.id, tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetGeneratedName(), err)
- return errors.Wrapf(errors.CorruptedPluginState, err, "Failed to unmarshal custom state in Finalize")
- }
-
- key, err := tCtx.SecretManager().Get(ctx, q.cfg.TokenKey)
- if err != nil {
- logger.Errorf(ctx, "Error reading token in Finalize [%s]", err)
- return err
- }
-
- return Abort(ctx, tCtx, incomingState, q.quboleClient, key)
-}
-
-func (q QuboleHiveExecutor) Finalize(ctx context.Context, tCtx core.TaskExecutionContext) error {
- incomingState := ExecutionState{}
- if _, err := tCtx.PluginStateReader().Get(&incomingState); err != nil {
- logger.Errorf(ctx, "Plugin %s failed to unmarshal custom state in Finalize [%s] Err [%s]",
- q.id, tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetGeneratedName(), err)
- return errors.Wrapf(errors.CorruptedPluginState, err, "Failed to unmarshal custom state in Finalize")
- }
-
- return Finalize(ctx, tCtx, incomingState, q.metrics)
-}
-
-func (q QuboleHiveExecutor) GetProperties() core.PluginProperties {
- return core.PluginProperties{}
-}
-
-func QuboleHiveExecutorLoader(ctx context.Context, iCtx core.SetupContext) (core.Plugin, error) {
- cfg := config.GetQuboleConfig()
- return InitializeHiveExecutor(ctx, iCtx, cfg, BuildResourceConfig(cfg.ClusterConfigs), client.NewQuboleClient(cfg))
-}
-
-func BuildResourceConfig(cfg []config.ClusterConfig) map[core.ResourceNamespace]int {
- resourceConfig := make(map[core.ResourceNamespace]int, len(cfg))
-
- for _, clusterCfg := range cfg {
- resourceConfig[core.ResourceNamespace(clusterCfg.PrimaryLabel)] = clusterCfg.Limit
- }
- return resourceConfig
-}
-
-func InitializeHiveExecutor(ctx context.Context, iCtx core.SetupContext, cfg *config.Config, resourceConfig map[core.ResourceNamespace]int,
- quboleClient client.QuboleClient) (core.Plugin, error) {
- logger.Infof(ctx, "Initializing a Hive executor with a resource config [%v]", resourceConfig)
- q, err := NewQuboleHiveExecutor(ctx, cfg, quboleClient, iCtx.SecretManager(), iCtx.MetricsScope())
- if err != nil {
- logger.Errorf(ctx, "Failed to create a new QuboleHiveExecutor due to error: [%v]", err)
- return nil, err
- }
-
- for clusterPrimaryLabel, clusterLimit := range resourceConfig {
- logger.Infof(ctx, "Registering resource quota ([%v]) and namespace quota cap ([%v]) for cluster [%v]", clusterPrimaryLabel)
- if err := iCtx.ResourceRegistrar().RegisterResourceQuota(ctx, clusterPrimaryLabel, clusterLimit); err != nil {
- logger.Errorf(ctx, "Resource quota registration for [%v] failed due to error [%v]", clusterPrimaryLabel, err)
- return nil, err
- }
- }
-
- return q, nil
-}
-
-// type PluginLoader func(ctx context.Context, iCtx SetupContext) (Plugin, error)
-func NewQuboleHiveExecutor(ctx context.Context, cfg *config.Config, quboleClient client.QuboleClient, secretManager core.SecretManager, scope promutils.Scope) (QuboleHiveExecutor, error) {
- executionsAutoRefreshCache, err := NewQuboleHiveExecutionsCache(ctx, quboleClient, secretManager, cfg, scope.NewSubScope(hiveTaskType))
- if err != nil {
- logger.Errorf(ctx, "Failed to create AutoRefreshCache in QuboleHiveExecutor Setup. Error: %v", err)
- return QuboleHiveExecutor{}, err
- }
-
- err = executionsAutoRefreshCache.Start(ctx)
- if err != nil {
- logger.Errorf(ctx, "Failed to start AutoRefreshCache. Error: %v", err)
- }
-
- return QuboleHiveExecutor{
- id: quboleHiveExecutorID,
- cfg: cfg,
- metrics: getQuboleHiveExecutorMetrics(scope.NewSubScope("hive")),
- quboleClient: quboleClient,
- executionsCache: executionsAutoRefreshCache,
- }, nil
-}
-
-func init() {
- pluginMachinery.PluginRegistry().RegisterCorePlugin(
- core.PluginEntry{
- ID: quboleHiveExecutorID,
- RegisteredTaskTypes: []core.TaskType{hiveTaskType},
- LoadPlugin: QuboleHiveExecutorLoader,
- IsDefault: false,
- })
-}
diff --git a/flyteplugins/go/tasks/plugins/hive/executor_metrics.go b/flyteplugins/go/tasks/plugins/hive/executor_metrics.go
deleted file mode 100644
index 815e51135aa..00000000000
--- a/flyteplugins/go/tasks/plugins/hive/executor_metrics.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package hive
-
-import (
- "github.com/prometheus/client_golang/prometheus"
-
- "github.com/flyteorg/flyte/flytestdlib/promutils"
- "github.com/flyteorg/flyte/flytestdlib/promutils/labeled"
-)
-
-type QuboleHiveExecutorMetrics struct {
- Scope promutils.Scope
- ResourceReleased labeled.Counter
- ResourceReleaseFailed labeled.Counter
- AllocationGranted labeled.Counter
- AllocationNotGranted labeled.Counter
- ResourceWaitTime prometheus.Summary
-}
-
-var (
- tokenAgeObjectives = map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001, 1.0: 0.0}
-)
-
-func getQuboleHiveExecutorMetrics(scope promutils.Scope) QuboleHiveExecutorMetrics {
- return QuboleHiveExecutorMetrics{
- Scope: scope,
- ResourceReleased: labeled.NewCounter("resource_release_success",
- "Resource allocation token released", scope, labeled.EmitUnlabeledMetric),
- ResourceReleaseFailed: labeled.NewCounter("resource_release_failed",
- "Error releasing allocation token", scope, labeled.EmitUnlabeledMetric),
- AllocationGranted: labeled.NewCounter("allocation_grant_success",
- "Allocation request granted", scope, labeled.EmitUnlabeledMetric),
- AllocationNotGranted: labeled.NewCounter("allocation_grant_failed",
- "Allocation request did not fail but not granted", scope, labeled.EmitUnlabeledMetric),
- ResourceWaitTime: scope.MustNewSummaryWithOptions("resource_wait_time", "Duration the execution has been waiting for a resource allocation token",
- promutils.SummaryOptions{Objectives: tokenAgeObjectives}),
- }
-}
diff --git a/flyteplugins/go/tasks/plugins/hive/test_helpers.go b/flyteplugins/go/tasks/plugins/hive/test_helpers.go
deleted file mode 100644
index 15ea48d8338..00000000000
--- a/flyteplugins/go/tasks/plugins/hive/test_helpers.go
+++ /dev/null
@@ -1,146 +0,0 @@
-package hive
-
-import (
- structpb "github.com/golang/protobuf/ptypes/struct"
- "github.com/stretchr/testify/mock"
- v1 "k8s.io/api/core/v1"
- "k8s.io/apimachinery/pkg/api/resource"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/apimachinery/pkg/types"
-
- idlCore "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core"
- coreMock "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/mocks"
- ioMock "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io/mocks"
- "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/utils"
- "github.com/flyteorg/flyte/flytestdlib/storage"
-)
-
-func GetSingleHiveQueryTaskTemplate() idlCore.TaskTemplate {
- hiveJob := plugins.QuboleHiveJob{
- ClusterLabel: "default",
- Tags: []string{"flyte_plugin_test"},
- Query: &plugins.HiveQuery{
- TimeoutSec: 500,
- Query: "select 'one'",
- RetryCount: 0,
- },
- // Even though it's deprecated, we might have one element in the query collection for backwards compatibility
- QueryCollection: &plugins.HiveQueryCollection{
- Queries: []*plugins.HiveQuery{
- {
- TimeoutSec: 500,
- Query: "select 'one'",
- RetryCount: 0,
- },
- },
- },
- }
- stObj := &structpb.Struct{}
- _ = utils.MarshalStruct(&hiveJob, stObj)
- tt := idlCore.TaskTemplate{
- Type: "hive",
- Custom: stObj,
- Id: &idlCore.Identifier{
- Name: "sample_hive_task_test_name",
- Project: "flyteplugins",
- Version: "1",
- ResourceType: idlCore.ResourceType_TASK,
- },
- Interface: &idlCore.TypedInterface{
- Outputs: &idlCore.VariableMap{
- Variables: map[string]*idlCore.Variable{
- "results": &idlCore.Variable{
- Type: &idlCore.LiteralType{
- Type: &idlCore.LiteralType_Schema{Schema: &idlCore.SchemaType{}},
- },
- },
- },
- },
- },
- }
-
- return tt
-}
-
-var resourceRequirements = &v1.ResourceRequirements{
- Limits: v1.ResourceList{
- v1.ResourceCPU: resource.MustParse("1024m"),
- },
-}
-
-func GetMockTaskExecutionMetadata() core.TaskExecutionMetadata {
- taskMetadata := &coreMock.TaskExecutionMetadata{}
- taskMetadata.On("GetNamespace").Return("test-namespace")
- taskMetadata.On("GetAnnotations").Return(map[string]string{"annotation-1": "val1"})
- taskMetadata.On("GetLabels").Return(map[string]string{"label-1": "val1"})
- taskMetadata.On("GetMaxAttempts").Return(uint32(1))
- taskMetadata.On("GetOwnerReference").Return(metav1.OwnerReference{
- Kind: "node",
- Name: "blah",
- })
- taskMetadata.On("IsInterruptible").Return(true)
- taskMetadata.On("GetK8sServiceAccount").Return("service-account")
- taskMetadata.On("GetOwnerID").Return(types.NamespacedName{
- Namespace: "test-namespace",
- Name: "test-owner-name",
- })
-
- tID := &coreMock.TaskExecutionID{}
- tID.On("GetID").Return(idlCore.TaskExecutionIdentifier{
- TaskId: &idlCore.Identifier{
- Domain: "production",
- },
- NodeExecutionId: &idlCore.NodeExecutionIdentifier{
- ExecutionId: &idlCore.WorkflowExecutionIdentifier{
- Name: "my_wf_exec_name",
- Project: "my_wf_exec_project",
- Domain: "my_wf_exec_domain",
- },
- },
- RetryAttempt: 1,
- })
- tID.On("GetGeneratedName").Return("my_wf_exec_project:my_wf_exec_domain:my_wf_exec_name")
- taskMetadata.On("GetTaskExecutionID").Return(tID)
-
- to := &coreMock.TaskOverrides{}
- to.On("GetResources").Return(resourceRequirements)
- taskMetadata.On("GetOverrides").Return(to)
-
- return taskMetadata
-}
-
-func GetMockTaskExecutionContext() core.TaskExecutionContext {
- tt := GetSingleHiveQueryTaskTemplate()
-
- dummyTaskMetadata := GetMockTaskExecutionMetadata()
- taskCtx := &coreMock.TaskExecutionContext{}
- inputReader := &ioMock.InputReader{}
- inputReader.On("GetInputPrefixPath").Return(storage.DataReference("s3://test-input-prefix"))
- inputReader.On("GetInputPath").Return(storage.DataReference("test-data-reference"))
- inputReader.On("Get", mock.Anything).Return(&idlCore.LiteralMap{}, nil)
- taskCtx.On("InputReader").Return(inputReader)
-
- outputReader := &ioMock.OutputWriter{}
- outputReader.On("GetOutputPath").Return(storage.DataReference("/data/outputs.pb"))
- outputReader.On("GetOutputPrefixPath").Return(storage.DataReference("/data/"))
- outputReader.On("GetRawOutputPrefix").Return(storage.DataReference("gs://custom-output-bucket/b"))
- outputReader.EXPECT().GetCheckpointPrefix().Return("/checkpoint")
- outputReader.EXPECT().GetPreviousCheckpointsPrefix().Return("/prev")
- taskCtx.On("OutputWriter").Return(outputReader)
-
- taskReader := &coreMock.TaskReader{}
- taskReader.On("Read", mock.Anything).Return(&tt, nil)
- taskCtx.On("TaskReader").Return(taskReader)
-
- resourceManager := &coreMock.ResourceManager{}
- taskCtx.On("ResourceManager").Return(resourceManager)
-
- taskCtx.On("TaskExecutionMetadata").Return(dummyTaskMetadata)
- mockSecretManager := &coreMock.SecretManager{}
- mockSecretManager.On("Get", mock.Anything, mock.Anything).Return("fake key", nil)
- taskCtx.On("SecretManager").Return(mockSecretManager)
-
- return taskCtx
-}
diff --git a/flyteplugins/go/tasks/plugins/k8s/dask/config_flags_test.go b/flyteplugins/go/tasks/plugins/k8s/dask/config_flags_test.go
index 4cd2be2b44e..88205ba7a95 100755
--- a/flyteplugins/go/tasks/plugins/k8s/dask/config_flags_test.go
+++ b/flyteplugins/go/tasks/plugins/k8s/dask/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/plugins/k8s/dask/dask.go b/flyteplugins/go/tasks/plugins/k8s/dask/dask.go
index bdd0b5f4107..5fd58e8cb02 100644
--- a/flyteplugins/go/tasks/plugins/k8s/dask/dask.go
+++ b/flyteplugins/go/tasks/plugins/k8s/dask/dask.go
@@ -297,6 +297,11 @@ func (p daskResourceHandler) GetTaskPhase(ctx context.Context, pluginContext k8s
OccurredAt: &occurredAt,
}
+ taskTemplate, err := pluginContext.TaskReader().Read(ctx)
+ if err != nil {
+ return pluginsCore.PhaseInfoUndefined, err
+ }
+
taskExecID := pluginContext.TaskExecutionMetadata().GetTaskExecutionID()
o, err := logPlugin.GetTaskLogs(
tasklog.Input{
@@ -304,6 +309,7 @@ func (p daskResourceHandler) GetTaskPhase(ctx context.Context, pluginContext k8s
PodName: job.Status.JobRunnerPodName,
LogName: "(Dask Runner Logs)",
TaskExecutionID: taskExecID,
+ TaskTemplate: taskTemplate,
},
)
if err != nil {
@@ -315,11 +321,11 @@ func (p daskResourceHandler) GetTaskPhase(ctx context.Context, pluginContext k8s
switch status {
case "":
- phaseInfo = pluginsCore.PhaseInfoInitializing(occurredAt, pluginsCore.DefaultPhaseVersion, "unknown", &info)
+ phaseInfo = pluginsCore.PhaseInfoInitializing(pluginsCore.DefaultPhaseVersion, "unknown", &info)
case daskAPI.DaskJobCreated:
- phaseInfo = pluginsCore.PhaseInfoInitializing(occurredAt, pluginsCore.DefaultPhaseVersion, "job created", &info)
+ phaseInfo = pluginsCore.PhaseInfoInitializing(pluginsCore.DefaultPhaseVersion, "job created", &info)
case daskAPI.DaskJobClusterCreated:
- phaseInfo = pluginsCore.PhaseInfoInitializing(occurredAt, pluginsCore.DefaultPhaseVersion, "cluster created", &info)
+ phaseInfo = pluginsCore.PhaseInfoInitializing(pluginsCore.DefaultPhaseVersion, "cluster created", &info)
case daskAPI.DaskJobFailed:
reason := "Dask Job failed"
phaseInfo = pluginsCore.PhaseInfoRetryableFailure(errors.DownstreamSystemError, reason, &info)
diff --git a/flyteplugins/go/tasks/plugins/k8s/dask/dask_test.go b/flyteplugins/go/tasks/plugins/k8s/dask/dask_test.go
index bd347f38648..b5d34113408 100644
--- a/flyteplugins/go/tasks/plugins/k8s/dask/dask_test.go
+++ b/flyteplugins/go/tasks/plugins/k8s/dask/dask_test.go
@@ -18,12 +18,14 @@ import (
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins"
+ "github.com/flyteorg/flyte/flyteplugins/go/tasks/logs"
pluginsCore "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/mocks"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/flytek8s"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/flytek8s/config"
pluginIOMocks "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io/mocks"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/k8s"
+ "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/tasklog"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/utils"
stdlibUtils "github.com/flyteorg/flyte/flytestdlib/utils"
)
@@ -866,3 +868,41 @@ func TestGetTaskPhaseIncreasePhaseVersion(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, taskPhase.Version(), pluginsCore.DefaultPhaseVersion+1)
}
+
+func TestGetTaskPhase_DynamicLogLinks(t *testing.T) {
+ daskResourceHandler := daskResourceHandler{}
+ ctx := context.TODO()
+
+ dynamicLinks := map[string]tasklog.TemplateLogPlugin{
+ "test-dynamic-link": {
+ TemplateURIs: []tasklog.TemplateURI{"https://some-service.com/{{.taskConfig.dynamicParam}}"},
+ },
+ }
+
+ assert.NoError(t, SetConfig(&Config{
+ Logs: logs.LogConfig{
+ DynamicLogLinks: dynamicLinks,
+ },
+ }))
+
+ taskTemplate := dummyDaskTaskTemplate("", nil, "")
+ taskTemplate.Config = map[string]string{
+ "link_type": "test-dynamic-link",
+ "dynamicParam": "dynamic-value",
+ }
+ taskCtx := dummyDaskTaskContext(taskTemplate, &v1.ResourceRequirements{}, nil, false, k8s.PluginState{})
+
+ taskPhase, err := daskResourceHandler.GetTaskPhase(ctx, taskCtx, dummyDaskJob(daskAPI.DaskJobRunning))
+ assert.NoError(t, err)
+ assert.NotNil(t, taskPhase.Info())
+ assert.NotNil(t, taskPhase.Info().Logs)
+
+ var dynamicLog *core.TaskLog
+ for _, l := range taskPhase.Info().Logs {
+ if l.GetUri() == "https://some-service.com/dynamic-value" {
+ dynamicLog = l
+ break
+ }
+ }
+ assert.NotNil(t, dynamicLog, "expected dynamic log link in task logs")
+}
diff --git a/flyteplugins/go/tasks/plugins/k8s/kfoperators/common/common_operator.go b/flyteplugins/go/tasks/plugins/k8s/kfoperators/common/common_operator.go
index 4aff5d63be4..b7a1099e287 100644
--- a/flyteplugins/go/tasks/plugins/k8s/kfoperators/common/common_operator.go
+++ b/flyteplugins/go/tasks/plugins/k8s/kfoperators/common/common_operator.go
@@ -49,11 +49,11 @@ func ExtractCurrentCondition(jobConditions []kubeflowv1.JobCondition) (kubeflowv
func GetPhaseInfo(currentCondition kubeflowv1.JobCondition, occurredAt time.Time,
taskPhaseInfo pluginsCore.TaskInfo) (pluginsCore.PhaseInfo, error) {
if len(currentCondition.Type) == 0 {
- return pluginsCore.PhaseInfoQueuedWithTaskInfo(occurredAt, pluginsCore.DefaultPhaseVersion, "JobCreated", &taskPhaseInfo), nil
+ return pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginsCore.DefaultPhaseVersion, "JobCreated", &taskPhaseInfo), nil
}
switch currentCondition.Type {
case kubeflowv1.JobCreated:
- return pluginsCore.PhaseInfoQueuedWithTaskInfo(occurredAt, pluginsCore.DefaultPhaseVersion, "JobCreated", &taskPhaseInfo), nil
+ return pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginsCore.DefaultPhaseVersion, "JobCreated", &taskPhaseInfo), nil
case kubeflowv1.JobRunning:
return pluginsCore.PhaseInfoRunning(pluginsCore.DefaultPhaseVersion, &taskPhaseInfo), nil
case kubeflowv1.JobSucceeded:
@@ -63,6 +63,8 @@ func GetPhaseInfo(currentCondition kubeflowv1.JobCondition, occurredAt time.Time
return pluginsCore.PhaseInfoRetryableFailure(flyteerr.DownstreamSystemError, details, &taskPhaseInfo), nil
case kubeflowv1.JobRestarting:
return pluginsCore.PhaseInfoRunning(pluginsCore.DefaultPhaseVersion, &taskPhaseInfo), nil
+ case kubeflowv1.JobSuspended:
+ return pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginsCore.DefaultPhaseVersion, "Suspended", &taskPhaseInfo), nil
}
return pluginsCore.PhaseInfoUndefined, nil
@@ -73,7 +75,7 @@ func GetMPIPhaseInfo(currentCondition kubeflowv1.JobCondition, occurredAt time.T
taskPhaseInfo pluginsCore.TaskInfo) (pluginsCore.PhaseInfo, error) {
switch currentCondition.Type {
case kubeflowv1.JobCreated:
- return pluginsCore.PhaseInfoQueuedWithTaskInfo(occurredAt, pluginsCore.DefaultPhaseVersion, "New job name submitted to MPI operator", &taskPhaseInfo), nil
+ return pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginsCore.DefaultPhaseVersion, "New job name submitted to MPI operator", &taskPhaseInfo), nil
case kubeflowv1.JobRunning:
return pluginsCore.PhaseInfoRunning(pluginsCore.DefaultPhaseVersion, &taskPhaseInfo), nil
case kubeflowv1.JobSucceeded:
@@ -83,6 +85,8 @@ func GetMPIPhaseInfo(currentCondition kubeflowv1.JobCondition, occurredAt time.T
return pluginsCore.PhaseInfoRetryableFailure(flyteerr.DownstreamSystemError, details, &taskPhaseInfo), nil
case kubeflowv1.JobRestarting:
return pluginsCore.PhaseInfoRunning(pluginsCore.DefaultPhaseVersion, &taskPhaseInfo), nil
+ case kubeflowv1.JobSuspended:
+ return pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginsCore.DefaultPhaseVersion, "Suspended", &taskPhaseInfo), nil
}
return pluginsCore.PhaseInfoUndefined, nil
diff --git a/flyteplugins/go/tasks/plugins/k8s/kfoperators/common/common_operator_test.go b/flyteplugins/go/tasks/plugins/k8s/kfoperators/common/common_operator_test.go
index cdb5d35480d..aed6fd64ff1 100644
--- a/flyteplugins/go/tasks/plugins/k8s/kfoperators/common/common_operator_test.go
+++ b/flyteplugins/go/tasks/plugins/k8s/kfoperators/common/common_operator_test.go
@@ -114,6 +114,16 @@ func TestGetPhaseInfo(t *testing.T) {
assert.Equal(t, pluginsCore.PhaseRunning, taskPhase.Phase())
assert.NotNil(t, taskPhase.Info())
assert.Nil(t, err)
+
+ jobSuspended := kubeflowv1.JobCondition{
+ Type: kubeflowv1.JobSuspended,
+ }
+ taskPhase, err = GetPhaseInfo(jobSuspended, time.Now(), pluginsCore.TaskInfo{})
+ assert.NoError(t, err)
+ assert.Equal(t, pluginsCore.PhaseQueued, taskPhase.Phase())
+ assert.Equal(t, "Suspended", taskPhase.Reason())
+ assert.NotNil(t, taskPhase.Info())
+ assert.Nil(t, err)
}
func TestGetMPIPhaseInfo(t *testing.T) {
@@ -161,6 +171,16 @@ func TestGetMPIPhaseInfo(t *testing.T) {
assert.Equal(t, pluginsCore.PhaseRunning, taskPhase.Phase())
assert.NotNil(t, taskPhase.Info())
assert.Nil(t, err)
+
+ jobSuspended := kubeflowv1.JobCondition{
+ Type: kubeflowv1.JobSuspended,
+ }
+ taskPhase, err = GetMPIPhaseInfo(jobSuspended, time.Now(), pluginsCore.TaskInfo{})
+ assert.NoError(t, err)
+ assert.Equal(t, pluginsCore.PhaseQueued, taskPhase.Phase())
+ assert.Equal(t, "Suspended", taskPhase.Reason())
+ assert.NotNil(t, taskPhase.Info())
+ assert.Nil(t, err)
}
func TestGetLogs(t *testing.T) {
diff --git a/flyteplugins/go/tasks/plugins/k8s/kfoperators/common/config_flags_test.go b/flyteplugins/go/tasks/plugins/k8s/kfoperators/common/config_flags_test.go
index 0afdf456cdc..dfd3552cfb3 100755
--- a/flyteplugins/go/tasks/plugins/k8s/kfoperators/common/config_flags_test.go
+++ b/flyteplugins/go/tasks/plugins/k8s/kfoperators/common/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/plugins/k8s/kfoperators/mpi/mpi_test.go b/flyteplugins/go/tasks/plugins/k8s/kfoperators/mpi/mpi_test.go
index 9eeaa8fa58e..7d409a80e73 100644
--- a/flyteplugins/go/tasks/plugins/k8s/kfoperators/mpi/mpi_test.go
+++ b/flyteplugins/go/tasks/plugins/k8s/kfoperators/mpi/mpi_test.go
@@ -255,6 +255,18 @@ func dummyMPIJobResource(mpiResourceHandler mpiOperatorResourceHandler,
Time: now.Add(3 * time.Minute),
},
}
+ jobSuspended := kubeflowv1.JobCondition{
+ Type: kubeflowv1.JobSuspended,
+ Status: corev1.ConditionTrue,
+ Reason: "MPIJobSuspended",
+ Message: "MPIJob the-job is suspended.",
+ LastUpdateTime: v1.Time{
+ Time: now.Add(time.Minute),
+ },
+ LastTransitionTime: v1.Time{
+ Time: now.Add(time.Minute),
+ },
+ }
switch conditionType {
case kubeflowv1.JobCreated:
@@ -285,6 +297,11 @@ func dummyMPIJobResource(mpiResourceHandler mpiOperatorResourceHandler,
jobFailed,
jobRestarting,
}
+ case kubeflowv1.JobSuspended:
+ jobConditions = []kubeflowv1.JobCondition{
+ jobCreated,
+ jobSuspended,
+ }
}
mpiObj := dummyMPICustomObj(workers, launcher, slots)
@@ -546,6 +563,27 @@ func TestGetTaskPhase(t *testing.T) {
assert.NotNil(t, taskPhase.Info())
assert.Nil(t, err)
+ taskPhase, err = mpiResourceHandler.GetTaskPhase(ctx, taskCtx, dummyMPIJobResourceCreator(kubeflowv1.JobSuspended))
+ assert.NoError(t, err)
+ assert.Equal(t, pluginsCore.PhaseQueued, taskPhase.Phase())
+ assert.Equal(t, "Suspended", taskPhase.Reason())
+ assert.NotNil(t, taskPhase.Info())
+ assert.Nil(t, err)
+
+ // Resume-from-suspended lifecycle: Created -> Suspended -> Running.
+ resumedMPIJob := dummyMPIJobResourceCreator(kubeflowv1.JobSuspended)
+ resumedMPIJob.Status.Conditions = append(resumedMPIJob.Status.Conditions, kubeflowv1.JobCondition{
+ Type: kubeflowv1.JobRunning,
+ Status: corev1.ConditionTrue,
+ Reason: "MPIJobRunning",
+ Message: "MPIJob the-job is running.",
+ LastTransitionTime: v1.Time{Time: time.Now().Add(time.Minute)},
+ })
+ taskPhase, err = mpiResourceHandler.GetTaskPhase(ctx, taskCtx, resumedMPIJob)
+ assert.NoError(t, err)
+ assert.Equal(t, pluginsCore.PhaseRunning, taskPhase.Phase())
+ assert.NotNil(t, taskPhase.Info())
+
// Training operator did not modify the job even though it is not suspended
mpiJob := dummyMPIJobResourceCreator(kubeflowv1.JobCreated)
mpiJob.CreationTimestamp = v1.Time{Time: time.Now().Add(-time.Hour)}
diff --git a/flyteplugins/go/tasks/plugins/k8s/kfoperators/pytorch/pytorch_test.go b/flyteplugins/go/tasks/plugins/k8s/kfoperators/pytorch/pytorch_test.go
index 31eb7778bd6..69985c2bdb6 100644
--- a/flyteplugins/go/tasks/plugins/k8s/kfoperators/pytorch/pytorch_test.go
+++ b/flyteplugins/go/tasks/plugins/k8s/kfoperators/pytorch/pytorch_test.go
@@ -263,6 +263,18 @@ func dummyPytorchJobResource(pytorchResourceHandler pytorchOperatorResourceHandl
Time: now.Add(3 * time.Minute),
},
}
+ jobSuspended := kubeflowv1.JobCondition{
+ Type: kubeflowv1.JobSuspended,
+ Status: corev1.ConditionTrue,
+ Reason: "PyTorchJobSuspended",
+ Message: "PyTorchJob the-job is suspended.",
+ LastUpdateTime: v1.Time{
+ Time: now.Add(time.Minute),
+ },
+ LastTransitionTime: v1.Time{
+ Time: now.Add(time.Minute),
+ },
+ }
switch conditionType {
case kubeflowv1.JobCreated:
@@ -293,6 +305,11 @@ func dummyPytorchJobResource(pytorchResourceHandler pytorchOperatorResourceHandl
jobFailed,
jobRestarting,
}
+ case kubeflowv1.JobSuspended:
+ jobConditions = []kubeflowv1.JobCondition{
+ jobCreated,
+ jobSuspended,
+ }
}
ptObj := dummyPytorchCustomObj(workers)
@@ -667,6 +684,27 @@ func TestGetTaskPhase(t *testing.T) {
assert.NotNil(t, taskPhase.Info())
assert.Nil(t, err)
+ taskPhase, err = pytorchResourceHandler.GetTaskPhase(ctx, taskCtx, dummyPytorchJobResourceCreator(kubeflowv1.JobSuspended))
+ assert.NoError(t, err)
+ assert.Equal(t, pluginsCore.PhaseQueued, taskPhase.Phase())
+ assert.Equal(t, "Suspended", taskPhase.Reason())
+ assert.NotNil(t, taskPhase.Info())
+ assert.Nil(t, err)
+
+ // Resume-from-suspended lifecycle: Created -> Suspended -> Running.
+ resumedPytorchJob := dummyPytorchJobResourceCreator(kubeflowv1.JobSuspended)
+ resumedPytorchJob.Status.Conditions = append(resumedPytorchJob.Status.Conditions, kubeflowv1.JobCondition{
+ Type: kubeflowv1.JobRunning,
+ Status: corev1.ConditionTrue,
+ Reason: "PyTorchJobRunning",
+ Message: "PyTorchJob the-job is running.",
+ LastTransitionTime: v1.Time{Time: time.Now().Add(time.Minute)},
+ })
+ taskPhase, err = pytorchResourceHandler.GetTaskPhase(ctx, taskCtx, resumedPytorchJob)
+ assert.NoError(t, err)
+ assert.Equal(t, pluginsCore.PhaseRunning, taskPhase.Phase())
+ assert.NotNil(t, taskPhase.Info())
+
// Training operator did not modify the job even though it is not suspended
pytorchJob := dummyPytorchJobResourceCreator(kubeflowv1.JobCreated)
pytorchJob.CreationTimestamp = v1.Time{Time: time.Now().Add(-time.Hour)}
diff --git a/flyteplugins/go/tasks/plugins/k8s/kfoperators/tensorflow/tensorflow_test.go b/flyteplugins/go/tasks/plugins/k8s/kfoperators/tensorflow/tensorflow_test.go
index d76bf799d5d..84808aa882f 100644
--- a/flyteplugins/go/tasks/plugins/k8s/kfoperators/tensorflow/tensorflow_test.go
+++ b/flyteplugins/go/tasks/plugins/k8s/kfoperators/tensorflow/tensorflow_test.go
@@ -256,6 +256,18 @@ func dummyTensorFlowJobResource(tensorflowResourceHandler tensorflowOperatorReso
Time: now.Add(3 * time.Minute),
},
}
+ jobSuspended := kubeflowv1.JobCondition{
+ Type: kubeflowv1.JobSuspended,
+ Status: corev1.ConditionTrue,
+ Reason: "TensorFlowJobSuspended",
+ Message: "TensorFlowJob the-job is suspended.",
+ LastUpdateTime: v1.Time{
+ Time: now.Add(time.Minute),
+ },
+ LastTransitionTime: v1.Time{
+ Time: now.Add(time.Minute),
+ },
+ }
switch conditionType {
case kubeflowv1.JobCreated:
@@ -286,6 +298,11 @@ func dummyTensorFlowJobResource(tensorflowResourceHandler tensorflowOperatorReso
jobFailed,
jobRestarting,
}
+ case kubeflowv1.JobSuspended:
+ jobConditions = []kubeflowv1.JobCondition{
+ jobCreated,
+ jobSuspended,
+ }
}
tfObj := dummyTensorFlowCustomObj(workers, psReplicas, chiefReplicas, evaluatorReplicas)
@@ -592,6 +609,27 @@ func TestGetTaskPhase(t *testing.T) {
assert.NotNil(t, taskPhase.Info())
assert.Nil(t, err)
+ taskPhase, err = tensorflowResourceHandler.GetTaskPhase(ctx, taskCtx, dummyTensorFlowJobResourceCreator(kubeflowv1.JobSuspended))
+ assert.NoError(t, err)
+ assert.Equal(t, pluginsCore.PhaseQueued, taskPhase.Phase())
+ assert.Equal(t, "Suspended", taskPhase.Reason())
+ assert.NotNil(t, taskPhase.Info())
+ assert.Nil(t, err)
+
+ // Resume-from-suspended lifecycle: Created -> Suspended -> Running.
+ resumedTFJob := dummyTensorFlowJobResourceCreator(kubeflowv1.JobSuspended)
+ resumedTFJob.Status.Conditions = append(resumedTFJob.Status.Conditions, kubeflowv1.JobCondition{
+ Type: kubeflowv1.JobRunning,
+ Status: corev1.ConditionTrue,
+ Reason: "TensorFlowJobRunning",
+ Message: "TensorFlowJob the-job is running.",
+ LastTransitionTime: v1.Time{Time: time.Now().Add(time.Minute)},
+ })
+ taskPhase, err = tensorflowResourceHandler.GetTaskPhase(ctx, taskCtx, resumedTFJob)
+ assert.NoError(t, err)
+ assert.Equal(t, pluginsCore.PhaseRunning, taskPhase.Phase())
+ assert.NotNil(t, taskPhase.Info())
+
// Training operator did not modify the job even though it is not suspended
tfJob := dummyTensorFlowJobResourceCreator(kubeflowv1.JobCreated)
tfJob.CreationTimestamp = v1.Time{Time: time.Now().Add(-time.Hour)}
diff --git a/flyteplugins/go/tasks/plugins/k8s/pod/plugin.go b/flyteplugins/go/tasks/plugins/k8s/pod/plugin.go
index 8c8bdd7e620..b760ffe6367 100644
--- a/flyteplugins/go/tasks/plugins/k8s/pod/plugin.go
+++ b/flyteplugins/go/tasks/plugins/k8s/pod/plugin.go
@@ -122,7 +122,7 @@ func (p plugin) BuildResource(ctx context.Context, taskCtx pluginsCore.TaskExecu
// set primaryContainerKey annotation if this is a Sidecar task or, as an optimization, if there is only a single
// container. this plugin marks the task complete if the primary Container is complete, so if there is only one
// container we can mark the task as complete before the Pod has been marked complete.
- if taskTemplate.GetType() == SidecarTaskType || len(podSpec.Containers) == 1 {
+ if taskTemplate.GetType() == SidecarTaskType || (len(podSpec.Containers) == 1 && taskTemplate.GetType() != rawContainerTaskType) {
objectMeta.Annotations[flytek8s.PrimaryContainerKey] = primaryContainerName
}
@@ -172,13 +172,11 @@ func (plugin) GetTaskPhaseWithLogs(ctx context.Context, pluginContext k8s.Plugin
}
taskExecID := pluginContext.TaskExecutionMetadata().GetTaskExecutionID()
- if pod.Status.Phase != v1.PodUnknown {
- taskLogs, err := logs.GetLogsForContainerInPod(ctx, logPlugin, taskExecID, pod, 0, logSuffix, extraLogTemplateVarsByScheme, taskTemplate)
- if err != nil {
- return pluginsCore.PhaseInfoUndefined, err
- }
- info.Logs = taskLogs
+ taskLogs, err := logs.GetLogsForContainerInPod(ctx, logPlugin, taskExecID, pod, 0, logSuffix, extraLogTemplateVarsByScheme, taskTemplate)
+ if err != nil {
+ return pluginsCore.PhaseInfoUndefined, err
}
+ info.Logs = taskLogs
phaseInfo, err := DemystifyPodStatus(ctx, pod, info)
if err != nil {
@@ -190,7 +188,6 @@ func (plugin) GetTaskPhaseWithLogs(ctx context.Context, pluginContext k8s.Plugin
func DemystifyPodStatus(ctx context.Context, pod *v1.Pod, info pluginsCore.TaskInfo) (pluginsCore.PhaseInfo, error) {
pluginState := k8s.PluginState{}
- transitionOccurredAt := flytek8s.GetLastTransitionOccurredAt(pod).Time
phaseInfo := pluginsCore.PhaseInfoUndefined
var err error
primaryContainerName, primaryContainerExists := pod.GetAnnotations()[flytek8s.PrimaryContainerKey]
@@ -203,9 +200,7 @@ func DemystifyPodStatus(ctx context.Context, pod *v1.Pod, info pluginsCore.TaskI
case v1.PodPending:
phaseInfo, err = flytek8s.DemystifyPending(pod.Status, info)
case v1.PodReasonUnschedulable:
- phaseInfo = pluginsCore.PhaseInfoQueuedWithTaskInfo(transitionOccurredAt, pluginsCore.DefaultPhaseVersion, "pod unschedulable", &info)
- case v1.PodUnknown:
- // DO NOTHING
+ phaseInfo = pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginsCore.DefaultPhaseVersion, "pod unschedulable", &info)
default:
if !primaryContainerExists {
// if all of the containers and sidecars in the Pod are complete, as an optimization, we can declare the task as
diff --git a/flyteplugins/go/tasks/plugins/k8s/pod/sidecar_test.go b/flyteplugins/go/tasks/plugins/k8s/pod/sidecar_test.go
index 4e0ed7509c6..f135c543354 100644
--- a/flyteplugins/go/tasks/plugins/k8s/pod/sidecar_test.go
+++ b/flyteplugins/go/tasks/plugins/k8s/pod/sidecar_test.go
@@ -751,7 +751,6 @@ func TestGetTaskSidecarStatus(t *testing.T) {
v1.PodSucceeded: pluginsCore.PhaseSuccess,
v1.PodFailed: pluginsCore.PhaseRetryableFailure,
v1.PodReasonUnschedulable: pluginsCore.PhaseQueued,
- v1.PodUnknown: pluginsCore.PhaseUndefined,
}
for podPhase, expectedTaskPhase := range testCases {
diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/config.go b/flyteplugins/go/tasks/plugins/k8s/ray/config.go
index 3f79ed958e9..731182c6bb7 100644
--- a/flyteplugins/go/tasks/plugins/k8s/ray/config.go
+++ b/flyteplugins/go/tasks/plugins/k8s/ray/config.go
@@ -18,6 +18,7 @@ var (
defaultConfig = Config{
ShutdownAfterJobFinishes: true,
TTLSecondsAfterFinished: 3600,
+ EnableIngress: false,
ServiceType: "NodePort",
IncludeDashboard: true,
DashboardHost: "0.0.0.0",
@@ -69,6 +70,11 @@ type Config struct {
// Kubernetes Service Type, valid values are 'ClusterIP', 'NodePort' and 'LoadBalancer'
ServiceType string `json:"serviceType,omitempty"`
+ // EnableIngress controls whether KubeRay will create an Ingress for the head service.
+ // Nginx ingress is now officially retired, in favor of Gateway API.
+ // If false, ingress creation is disabled.
+ EnableIngress bool `json:"enableIngress,omitempty"`
+
// IncludeDashboard is used to start a Ray Dashboard if set to true
IncludeDashboard bool `json:"includeDashboard,omitempty"`
diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/config_flags.go b/flyteplugins/go/tasks/plugins/k8s/ray/config_flags.go
index 5048869eab3..0a07ca70c6e 100755
--- a/flyteplugins/go/tasks/plugins/k8s/ray/config_flags.go
+++ b/flyteplugins/go/tasks/plugins/k8s/ray/config_flags.go
@@ -54,6 +54,7 @@ func (cfg Config) GetPFlagSet(prefix string) *pflag.FlagSet {
cmdFlags.Int32(fmt.Sprintf("%v%v", prefix, "ttlSecondsAfterFinished"), defaultConfig.TTLSecondsAfterFinished, "")
cmdFlags.String(fmt.Sprintf("%v%v", prefix, "serviceType"), defaultConfig.ServiceType, "")
cmdFlags.Bool(fmt.Sprintf("%v%v", prefix, "includeDashboard"), defaultConfig.IncludeDashboard, "")
+ cmdFlags.Bool(fmt.Sprintf("%v%v", prefix, "enableIngress"), defaultConfig.EnableIngress, "")
cmdFlags.String(fmt.Sprintf("%v%v", prefix, "dashboardHost"), defaultConfig.DashboardHost, "")
cmdFlags.String(fmt.Sprintf("%v%v", prefix, "remoteClusterConfig.name"), defaultConfig.RemoteClusterConfig.Name, "Friendly name of the remote cluster")
cmdFlags.String(fmt.Sprintf("%v%v", prefix, "remoteClusterConfig.endpoint"), defaultConfig.RemoteClusterConfig.Endpoint, " Remote K8s cluster endpoint")
diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/config_flags_test.go b/flyteplugins/go/tasks/plugins/k8s/ray/config_flags_test.go
index 05871adc51c..6502180d041 100755
--- a/flyteplugins/go/tasks/plugins/k8s/ray/config_flags_test.go
+++ b/flyteplugins/go/tasks/plugins/k8s/ray/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
@@ -155,6 +155,20 @@ func TestConfig_SetFlags(t *testing.T) {
}
})
})
+ t.Run("Test_enableIngress", func(t *testing.T) {
+
+ t.Run("Override", func(t *testing.T) {
+ testValue := "1"
+
+ cmdFlags.Set("enableIngress", testValue)
+ if vBool, err := cmdFlags.GetBool("enableIngress"); err == nil {
+ testDecodeJson_Config(t, fmt.Sprintf("%v", vBool), &actual.EnableIngress)
+
+ } else {
+ assert.FailNow(t, err.Error())
+ }
+ })
+ })
t.Run("Test_dashboardHost", func(t *testing.T) {
t.Run("Override", func(t *testing.T) {
diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go
index c4f1c3f409c..a75c72716da 100644
--- a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go
+++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go
@@ -15,6 +15,7 @@ import (
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes/scheme"
+ "k8s.io/utils/ptr"
"sigs.k8s.io/controller-runtime/pkg/client"
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
@@ -54,7 +55,7 @@ var logTemplateRegexes = struct {
type rayJobResourceHandler struct{}
func (rayJobResourceHandler) GetProperties() k8s.PluginProperties {
- return k8s.PluginProperties{}
+ return k8s.PluginProperties{GeneratedNameMaxLength: ptr.To[int](47)}
}
// BuildResource Creates a new ray job resource
@@ -81,7 +82,6 @@ func (rayJobResourceHandler) BuildResource(ctx context.Context, taskCtx pluginsC
var primaryContainerIdx int
for idx, c := range podSpec.Containers {
if c.Name == primaryContainerName {
- c := c
primaryContainer = &c
primaryContainerIdx = idx
break
@@ -89,7 +89,7 @@ func (rayJobResourceHandler) BuildResource(ctx context.Context, taskCtx pluginsC
}
if primaryContainer == nil {
- return nil, flyteerr.Errorf(flyteerr.BadTaskSpecification, "Unable to get primary container from the pod: [%v]", err.Error())
+ return nil, flyteerr.Errorf(flyteerr.BadTaskSpecification, "Unable to get primary container %s from the pod spec", primaryContainerName)
}
cfg := GetConfig()
@@ -129,10 +129,41 @@ func (rayJobResourceHandler) BuildResource(ctx context.Context, taskCtx pluginsC
return rayjob, err
}
+func buildAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.AutoscalerOptions {
+ var autoScalerOptions *rayv1.AutoscalerOptions
+ if options != nil {
+ autoScalerOptions = &rayv1.AutoscalerOptions{}
+ if idleTimeoutTime := options.GetIdleTimeoutSeconds(); idleTimeoutTime > 0 {
+ autoScalerOptions.IdleTimeoutSeconds = &idleTimeoutTime
+ }
+ if upscalingMode := options.GetUpscalingMode(); upscalingMode != plugins.AutoscalerOptions_UPSCALING_MODE_UNSPECIFIED {
+ var mode rayv1.UpscalingMode
+ switch upscalingMode {
+ case plugins.AutoscalerOptions_UPSCALING_MODE_DEFAULT:
+ mode = rayv1.UpscalingMode("Default")
+ case plugins.AutoscalerOptions_UPSCALING_MODE_CONSERVATIVE:
+ mode = rayv1.UpscalingMode("Conservative")
+ case plugins.AutoscalerOptions_UPSCALING_MODE_AGGRESSIVE:
+ mode = rayv1.UpscalingMode("Aggressive")
+ }
+ autoScalerOptions.UpscalingMode = &mode
+ }
+ if image := options.GetImage(); image != "" {
+ autoScalerOptions.Image = &image
+ }
+ if res, err := flytek8s.ToK8sResourceRequirements(options.GetResources()); err == nil {
+ autoScalerOptions.Resources = res
+ }
+ autoScalerOptions.Env = flytek8s.ToK8sEnvVar(options.GetEnv())
+ }
+ return autoScalerOptions
+}
+
func constructRayJob(taskCtx pluginsCore.TaskExecutionContext, rayJob *plugins.RayJob, objectMeta *metav1.ObjectMeta, taskPodSpec v1.PodSpec, headNodeRayStartParams map[string]string, primaryContainerIdx int, primaryContainer v1.Container) (*rayv1.RayJob, error) {
- enableIngress := true
cfg := GetConfig()
+ enableIngress := cfg.EnableIngress
+
headPodSpec := taskPodSpec.DeepCopy()
headPodTemplate, err := buildHeadPodTemplate(
&headPodSpec.Containers[primaryContainerIdx],
@@ -154,6 +185,7 @@ func constructRayJob(taskCtx pluginsCore.TaskExecutionContext, rayJob *plugins.R
},
WorkerGroupSpecs: []rayv1.WorkerGroupSpec{},
EnableInTreeAutoscaling: &rayJob.RayCluster.EnableAutoscaling,
+ AutoscalerOptions: buildAutoscalerOptions(rayJob.GetRayCluster().GetAutoscalerOptions()),
}
for _, spec := range rayJob.GetRayCluster().GetWorkerGroupSpec() {
@@ -226,6 +258,17 @@ func constructRayJob(taskCtx pluginsCore.TaskExecutionContext, rayJob *plugins.R
}
}
+ // We mustn't drop empty string arguments when converting from the yaml
+ // array representation of K8s container args to the single string representation
+ // of RayJobSpec's Entrypoint field.
+ //
+ // Example: ["--resolver", "ArrayNodeMapTaskResolver", "--", "vars", "", "resolver", "DefaultResolver"]
+ for i, arg := range primaryContainer.Args {
+ if arg == "" {
+ primaryContainer.Args[i] = "''"
+ }
+ }
+
jobSpec := rayv1.RayJobSpec{
RayClusterSpec: &rayClusterSpec,
Entrypoint: strings.Join(primaryContainer.Args, " "),
@@ -280,7 +323,6 @@ func injectLogsSidecar(primaryContainer *v1.Container, podSpec *v1.PodSpec) {
// Look for an existing volume mount on the primary container, mounted at /tmp/ray
for _, vm := range primaryContainer.VolumeMounts {
if vm.MountPath == rayStateMountPath {
- vm := vm
rayStateVolMount = &vm
break
}
@@ -547,7 +589,7 @@ func (rayJobResourceHandler) BuildIdentityResource(ctx context.Context, taskCtx
}, nil
}
-func getEventInfoForRayJob(logConfig logs.LogConfig, pluginContext k8s.PluginContext, rayJob *rayv1.RayJob) (*pluginsCore.TaskInfo, error) {
+func getEventInfoForRayJob(logConfig logs.LogConfig, pluginContext k8s.PluginContext, rayJob *rayv1.RayJob, taskTemplate *core.TaskTemplate) (*pluginsCore.TaskInfo, error) {
logPlugin, err := logs.InitializeLogPlugins(&logConfig)
if err != nil {
return nil, fmt.Errorf("failed to initialize log plugins. Error: %w", err)
@@ -555,11 +597,25 @@ func getEventInfoForRayJob(logConfig logs.LogConfig, pluginContext k8s.PluginCon
var taskLogs []*core.TaskLog
+ // We use the creation timestamp of the RayJob as a proxy for the start time of the pods
+ startTime := rayJob.ObjectMeta.CreationTimestamp.Time.Unix()
+ // Don't have a good mechanism for this yet, but approximating with time.Now for now as is done in other plugins
+ finishTime := time.Now().Unix()
+ RFC3999StartTime := time.Unix(startTime, 0).Format(time.RFC3339)
+ RFC3999FinishTime := time.Unix(finishTime, 0).Format(time.RFC3339)
+
taskExecID := pluginContext.TaskExecutionMetadata().GetTaskExecutionID()
+ // Use PodRFC3339StartTime and PodUnixStartTime variable names with the term "Pod"
+ // for compatibility with existing log templates and documentation around task logs.
input := tasklog.Input{
- Namespace: rayJob.Namespace,
- TaskExecutionID: taskExecID,
- ExtraTemplateVars: []tasklog.TemplateVar{},
+ Namespace: rayJob.Namespace,
+ TaskExecutionID: taskExecID,
+ PodRFC3339StartTime: RFC3999StartTime,
+ PodRFC3339FinishTime: RFC3999FinishTime,
+ PodUnixStartTime: startTime,
+ PodUnixFinishTime: finishTime,
+ ExtraTemplateVars: []tasklog.TemplateVar{},
+ TaskTemplate: taskTemplate,
}
if rayJob.Status.JobId != "" {
input.ExtraTemplateVars = append(
@@ -605,13 +661,18 @@ func getEventInfoForRayJob(logConfig logs.LogConfig, pluginContext k8s.PluginCon
func (plugin rayJobResourceHandler) GetTaskPhase(ctx context.Context, pluginContext k8s.PluginContext, resource client.Object) (pluginsCore.PhaseInfo, error) {
rayJob := resource.(*rayv1.RayJob)
- info, err := getEventInfoForRayJob(GetConfig().Logs, pluginContext, rayJob)
+ taskTemplate, err := pluginContext.TaskReader().Read(ctx)
+ if err != nil {
+ return pluginsCore.PhaseInfoUndefined, err
+ }
+
+ info, err := getEventInfoForRayJob(GetConfig().Logs, pluginContext, rayJob, taskTemplate)
if err != nil {
return pluginsCore.PhaseInfoUndefined, err
}
if len(rayJob.Status.JobDeploymentStatus) == 0 {
- return pluginsCore.PhaseInfoQueuedWithTaskInfo(time.Now(), pluginsCore.DefaultPhaseVersion, "Scheduling", info), nil
+ return pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginsCore.DefaultPhaseVersion, "Scheduling", info), nil
}
var phaseInfo pluginsCore.PhaseInfo
@@ -619,18 +680,18 @@ func (plugin rayJobResourceHandler) GetTaskPhase(ctx context.Context, pluginCont
// KubeRay creates a Ray cluster first, and then submits a Ray job to the cluster
switch rayJob.Status.JobDeploymentStatus {
case rayv1.JobDeploymentStatusInitializing:
- phaseInfo, err = pluginsCore.PhaseInfoInitializing(rayJob.CreationTimestamp.Time, pluginsCore.DefaultPhaseVersion, "cluster is creating", info), nil
+ phaseInfo, err = pluginsCore.PhaseInfoInitializing(pluginsCore.DefaultPhaseVersion, "cluster is creating", info), nil
case rayv1.JobDeploymentStatusRunning:
phaseInfo, err = pluginsCore.PhaseInfoRunning(pluginsCore.DefaultPhaseVersion, info), nil
case rayv1.JobDeploymentStatusComplete:
phaseInfo, err = pluginsCore.PhaseInfoSuccess(info), nil
case rayv1.JobDeploymentStatusSuspended:
- phaseInfo, err = pluginsCore.PhaseInfoQueuedWithTaskInfo(time.Now(), pluginsCore.DefaultPhaseVersion, "Suspended", info), nil
+ phaseInfo, err = pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginsCore.DefaultPhaseVersion, "Suspended", info), nil
case rayv1.JobDeploymentStatusSuspending:
- phaseInfo, err = pluginsCore.PhaseInfoQueuedWithTaskInfo(time.Now(), pluginsCore.DefaultPhaseVersion, "Suspending", info), nil
+ phaseInfo, err = pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginsCore.DefaultPhaseVersion, "Suspending", info), nil
case rayv1.JobDeploymentStatusFailed:
failInfo := fmt.Sprintf("Failed to run Ray job %s with error: [%s] %s", rayJob.Name, rayJob.Status.Reason, rayJob.Status.Message)
- phaseInfo, err = pluginsCore.PhaseInfoFailure(flyteerr.TaskFailedWithError, failInfo, info), nil
+ phaseInfo, err = pluginsCore.PhaseInfoSystemRetryableFailureWithCleanup(flyteerr.TaskFailedWithError, failInfo, info), nil
default:
// We already handle all known deployment status, so this should never happen unless a future version of ray
// introduced a new job status.
diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go
index 0602978226a..485600b6fcf 100644
--- a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go
+++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go
@@ -3,6 +3,7 @@ package ray
import (
"context"
"encoding/json"
+ "fmt"
"reflect"
"testing"
"time"
@@ -15,6 +16,7 @@ import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/utils/ptr"
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins"
@@ -222,6 +224,50 @@ func TestBuildResourceRay(t *testing.T) {
assert.Equal(t, ray.Spec.RayClusterSpec.HeadGroupSpec.Template.Spec.ServiceAccountName, GetConfig().ServiceAccount)
}
+func TestBuildResourceRayEnableIngress(t *testing.T) {
+ assert.NoError(t, config.SetK8sPluginConfig(&config.K8sPluginConfig{}))
+
+ testCases := []struct {
+ name string
+ enableIngress bool
+ }{
+ {
+ name: "ingress enabled",
+ enableIngress: true,
+ },
+ {
+ name: "ingress disabled",
+ enableIngress: false,
+ },
+ }
+
+ for _, tc := range testCases {
+ t.Run(tc.name, func(t *testing.T) {
+ origConfig := *GetConfig()
+ t.Cleanup(func() { assert.NoError(t, SetConfig(&origConfig)) })
+
+ assert.NoError(t, SetConfig(&Config{
+ EnableIngress: tc.enableIngress,
+ }))
+
+ rayJobInput := dummyRayCustomObj()
+
+ taskTemplate := dummyRayTaskTemplate("ray-id", rayJobInput)
+ taskContext := dummyRayTaskContext(taskTemplate, resourceRequirements, nil, "", serviceAccount)
+ rayJobResourceHandler := rayJobResourceHandler{}
+ r, err := rayJobResourceHandler.BuildResource(context.TODO(), taskContext)
+ assert.Nil(t, err)
+ assert.NotNil(t, r)
+ rayJob, ok := r.(*rayv1.RayJob)
+ assert.True(t, ok)
+
+ // Verify that EnableIngress is set correctly on the HeadGroupSpec
+ assert.NotNil(t, rayJob.Spec.RayClusterSpec.HeadGroupSpec.EnableIngress)
+ assert.Equal(t, tc.enableIngress, *rayJob.Spec.RayClusterSpec.HeadGroupSpec.EnableIngress)
+ })
+ }
+}
+
func TestBuildResourceRayContainerImage(t *testing.T) {
assert.NoError(t, config.SetK8sPluginConfig(&config.K8sPluginConfig{}))
@@ -279,6 +325,31 @@ func TestBuildResourceRayContainerImage(t *testing.T) {
}
}
+func TestBuildResourceRayEntrypointPreservesEmptyArgs(t *testing.T) {
+ // Regression test: empty string args must be preserved when converting
+ // container args (yaml array) to the RayJob entrypoint string.
+ rayJobResourceHandler := rayJobResourceHandler{}
+ assert.NoError(t, config.SetK8sPluginConfig(&config.K8sPluginConfig{}))
+
+ rayJob := dummyRayCustomObj()
+ taskTemplate := dummyRayTaskTemplate("ray-id", rayJob)
+ taskTemplate.GetContainer().Args = []string{
+ "pyflyte-map-execute", "--resolver", "ArrayNodeMapTaskResolver",
+ "--", "vars", "", "resolver", "default_task_resolver",
+ "task-module", "some_module", "task-name", "some_task",
+ }
+
+ rayCtx := dummyRayTaskContext(taskTemplate, resourceRequirements, nil, "", serviceAccount)
+ r, err := rayJobResourceHandler.BuildResource(context.TODO(), rayCtx)
+ assert.Nil(t, err)
+ assert.NotNil(t, r)
+
+ rayJobObj, ok := r.(*rayv1.RayJob)
+ assert.True(t, ok)
+
+ assert.Contains(t, rayJobObj.Spec.Entrypoint, "vars '' resolver")
+}
+
func TestBuildPodTemplate(t *testing.T) {
taskTemplate := dummyRayTaskTemplate("id", dummyRayCustomObj())
resources := &corev1.ResourceRequirements{
@@ -1017,6 +1088,59 @@ func TestInjectLogsSidecar(t *testing.T) {
}
}
+func TestBuildResourceRayMissingPrimaryContainer(t *testing.T) {
+ // When the pod spec has no container matching the primary container name,
+ // BuildResource should return an error.
+ rayJobResourceHandler := rayJobResourceHandler{}
+ assert.NoError(t, config.SetK8sPluginConfig(&config.K8sPluginConfig{}))
+
+ rayJob := dummyRayCustomObj()
+ taskTemplate := &core.TaskTemplate{
+ Id: &core.Identifier{Name: "ray-id"},
+ Type: "container",
+ Target: transformPodSpecToTaskTemplateTarget(&corev1.PodSpec{
+ Containers: []corev1.Container{
+ {
+ Name: "not-the-primary",
+ Image: testImage,
+ },
+ },
+ }),
+ Custom: transformRayJobToCustomObj(rayJob),
+ Config: map[string]string{
+ flytek8s.PrimaryContainerKey: "my-primary",
+ },
+ }
+ rayCtx := dummyRayTaskContext(taskTemplate, resourceRequirements, nil, "", serviceAccount)
+ _, err := rayJobResourceHandler.BuildResource(context.TODO(), rayCtx)
+ assert.Error(t, err)
+ assert.Contains(t, err.Error(), "my-primary")
+}
+
+func TestGetTaskPhaseFailedRetryable(t *testing.T) {
+ // Verify that a failed Ray job returns a retryable failure with the
+ // reason and message from the RayJob status.
+ ctx := context.Background()
+ rayJobResourceHandler := rayJobResourceHandler{}
+ pluginCtx := newPluginContext(k8s.PluginState{})
+
+ rayObject := &rayv1.RayJob{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "test-ray-job",
+ },
+ }
+ rayObject.Status.JobDeploymentStatus = rayv1.JobDeploymentStatusFailed
+ rayObject.Status.Reason = "OOMKilled"
+ rayObject.Status.Message = "head node ran out of memory"
+
+ phaseInfo, err := rayJobResourceHandler.GetTaskPhase(ctx, pluginCtx, rayObject)
+ assert.NoError(t, err)
+ assert.Equal(t, pluginsCore.PhaseRetryableFailure, phaseInfo.Phase())
+ assert.Contains(t, phaseInfo.Err().GetMessage(), "test-ray-job")
+ assert.Contains(t, phaseInfo.Err().GetMessage(), "OOMKilled")
+ assert.Contains(t, phaseInfo.Err().GetMessage(), "head node ran out of memory")
+}
+
func newPluginContext(pluginState k8s.PluginState) k8s.PluginContext {
plg := &mocks2.PluginContext{}
@@ -1057,6 +1181,10 @@ func newPluginContext(pluginState k8s.PluginState) k8s.PluginContext {
plg.EXPECT().PluginStateReader().Return(&pluginStateReaderMock)
+ taskReader := &mocks.TaskReader{}
+ taskReader.EXPECT().Read(mock.Anything).Return(&core.TaskTemplate{}, nil)
+ plg.EXPECT().TaskReader().Return(taskReader)
+
return plg
}
@@ -1084,7 +1212,7 @@ func TestGetTaskPhase(t *testing.T) {
{rayv1.JobDeploymentStatusInitializing, pluginsCore.PhaseInitializing, false},
{rayv1.JobDeploymentStatusRunning, pluginsCore.PhaseRunning, false},
{rayv1.JobDeploymentStatusComplete, pluginsCore.PhaseSuccess, false},
- {rayv1.JobDeploymentStatusFailed, pluginsCore.PhasePermanentFailure, false},
+ {rayv1.JobDeploymentStatusFailed, pluginsCore.PhaseRetryableFailure, false},
{rayv1.JobDeploymentStatusSuspended, pluginsCore.PhaseQueued, false},
{rayv1.JobDeploymentStatusSuspending, pluginsCore.PhaseQueued, false},
}
@@ -1210,14 +1338,40 @@ func TestGetEventInfo_LogTemplates(t *testing.T) {
},
},
},
+ {
+ name: "ray job start time",
+ rayJob: rayv1.RayJob{
+ ObjectMeta: metav1.ObjectMeta{
+ Namespace: "test-namespace",
+ CreationTimestamp: metav1.Time{
+ Time: time.Unix(0, 0),
+ },
+ },
+ Status: rayv1.RayJobStatus{
+ JobId: "ray-job-1",
+ },
+ },
+ logPlugin: tasklog.TemplateLogPlugin{
+ DisplayName: "ray job ID",
+ TemplateURIs: []tasklog.TemplateURI{"http://test/{{ .PodRFC3339StartTime }}/{{ .PodUnixStartTime }}"},
+ },
+ expectedTaskLogs: []*core.TaskLog{
+ {
+ Name: "ray job ID",
+ Uri: fmt.Sprintf("http://test/%s/0", time.Unix(0, 0).Format(time.RFC3339)),
+ },
+ },
+ },
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
+ taskTemplate := dummyRayTaskTemplate("ray-id", dummyRayCustomObj())
ti, err := getEventInfoForRayJob(
logs.LogConfig{Templates: []tasklog.TemplateLogPlugin{tc.logPlugin}},
pluginCtx,
&tc.rayJob,
+ taskTemplate,
)
assert.NoError(t, err)
assert.Equal(t, tc.expectedTaskLogs, ti.Logs)
@@ -1313,10 +1467,13 @@ func TestGetEventInfo_LogTemplates_V1(t *testing.T) {
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
+ taskTemplate := dummyRayTaskTemplate("ray-id", dummyRayCustomObj())
+
ti, err := getEventInfoForRayJob(
logs.LogConfig{Templates: []tasklog.TemplateLogPlugin{tc.logPlugin}},
pluginCtx,
&tc.rayJob,
+ taskTemplate,
)
assert.NoError(t, err)
assert.Equal(t, tc.expectedTaskLogs, ti.Logs)
@@ -1368,8 +1525,9 @@ func TestGetEventInfo_DashboardURL(t *testing.T) {
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
+ taskTemplate := dummyRayTaskTemplate("ray-id", dummyRayCustomObj())
assert.NoError(t, SetConfig(&Config{DashboardURLTemplate: &tc.dashboardURLTemplate}))
- ti, err := getEventInfoForRayJob(logs.LogConfig{}, pluginCtx, &tc.rayJob)
+ ti, err := getEventInfoForRayJob(logs.LogConfig{}, pluginCtx, &tc.rayJob, taskTemplate)
assert.NoError(t, err)
assert.Equal(t, tc.expectedTaskLogs, ti.Logs)
})
@@ -1420,17 +1578,51 @@ func TestGetEventInfo_DashboardURL_V1(t *testing.T) {
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
+ taskTemplate := dummyRayTaskTemplate("ray-id", dummyRayCustomObj())
+
assert.NoError(t, SetConfig(&Config{DashboardURLTemplate: &tc.dashboardURLTemplate}))
- ti, err := getEventInfoForRayJob(logs.LogConfig{}, pluginCtx, &tc.rayJob)
+ ti, err := getEventInfoForRayJob(logs.LogConfig{}, pluginCtx, &tc.rayJob, taskTemplate)
assert.NoError(t, err)
assert.Equal(t, tc.expectedTaskLogs, ti.Logs)
})
}
}
+func TestGetEventInfo_DynamicLogLinks(t *testing.T) {
+ pluginCtx := newPluginContext(k8s.PluginState{})
+
+ dynamicLinks := map[string]tasklog.TemplateLogPlugin{
+ "test-dynamic-link": {
+ TemplateURIs: []tasklog.TemplateURI{"https://some-service.com/{{.taskConfig.dynamicParam}}"},
+ },
+ }
+
+ taskTemplate := dummyRayTaskTemplate("ray-id", dummyRayCustomObj())
+ taskTemplate.Config = map[string]string{
+ "link_type": "test-dynamic-link",
+ "dynamicParam": "dynamic-value",
+ }
+
+ rayJob := rayv1.RayJob{
+ ObjectMeta: metav1.ObjectMeta{
+ Namespace: "test-namespace",
+ },
+ }
+
+ ti, err := getEventInfoForRayJob(
+ logs.LogConfig{DynamicLogLinks: dynamicLinks},
+ pluginCtx,
+ &rayJob,
+ taskTemplate,
+ )
+ assert.NoError(t, err)
+ assert.Equal(t, 1, len(ti.Logs))
+ assert.Equal(t, "https://some-service.com/dynamic-value", ti.Logs[0].GetUri())
+}
+
func TestGetPropertiesRay(t *testing.T) {
rayJobResourceHandler := rayJobResourceHandler{}
- expected := k8s.PluginProperties{}
+ expected := k8s.PluginProperties{GeneratedNameMaxLength: ptr.To[int](47)}
assert.Equal(t, expected, rayJobResourceHandler.GetProperties())
}
@@ -1444,3 +1636,79 @@ func transformStructToStructPB(t *testing.T, obj interface{}) *structpb.Struct {
assert.Nil(t, err)
return s
}
+
+func TestBuildAutoscalerOptions(t *testing.T) {
+ t.Run("nil input returns nil", func(t *testing.T) {
+ assert.Nil(t, buildAutoscalerOptions(nil))
+ })
+
+ t.Run("idle timeout propagated", func(t *testing.T) {
+ result := buildAutoscalerOptions(&plugins.AutoscalerOptions{IdleTimeoutSeconds: 30})
+ require.NotNil(t, result)
+ require.NotNil(t, result.IdleTimeoutSeconds)
+ assert.Equal(t, int32(30), *result.IdleTimeoutSeconds)
+ })
+
+ t.Run("upscaling mode set when non-empty", func(t *testing.T) {
+ result := buildAutoscalerOptions(&plugins.AutoscalerOptions{UpscalingMode: plugins.AutoscalerOptions_UPSCALING_MODE_CONSERVATIVE})
+ require.NotNil(t, result)
+ require.NotNil(t, result.UpscalingMode)
+ assert.Equal(t, rayv1.UpscalingMode("Conservative"), *result.UpscalingMode)
+ })
+
+ t.Run("upscaling mode nil when empty", func(t *testing.T) {
+ result := buildAutoscalerOptions(&plugins.AutoscalerOptions{UpscalingMode: plugins.AutoscalerOptions_UPSCALING_MODE_UNSPECIFIED})
+ require.NotNil(t, result)
+ assert.Nil(t, result.UpscalingMode)
+ })
+
+ t.Run("image set when non-empty", func(t *testing.T) {
+ result := buildAutoscalerOptions(&plugins.AutoscalerOptions{Image: "my-image:latest"})
+ require.NotNil(t, result)
+ require.NotNil(t, result.Image)
+ assert.Equal(t, "my-image:latest", *result.Image)
+ })
+
+ t.Run("idle timeout zero should not be set", func(t *testing.T) {
+ result := buildAutoscalerOptions(&plugins.AutoscalerOptions{})
+ require.NotNil(t, result)
+ assert.Nil(t, result.IdleTimeoutSeconds)
+ })
+
+ t.Run("image nil when empty", func(t *testing.T) {
+ result := buildAutoscalerOptions(&plugins.AutoscalerOptions{Image: ""})
+ require.NotNil(t, result)
+ assert.Nil(t, result.Image)
+ })
+
+ t.Run("resources requests and limits converted", func(t *testing.T) {
+ result := buildAutoscalerOptions(&plugins.AutoscalerOptions{
+ Resources: &core.Resources{
+ Requests: []*core.Resources_ResourceEntry{
+ {Name: core.Resources_CPU, Value: "250m"},
+ {Name: core.Resources_MEMORY, Value: "512Mi"},
+ },
+ Limits: []*core.Resources_ResourceEntry{
+ {Name: core.Resources_CPU, Value: "1"},
+ {Name: core.Resources_MEMORY, Value: "1Gi"},
+ },
+ },
+ })
+ require.NotNil(t, result)
+ require.NotNil(t, result.Resources)
+ assert.Equal(t, resource.MustParse("250m"), result.Resources.Requests[corev1.ResourceCPU])
+ assert.Equal(t, resource.MustParse("512Mi"), result.Resources.Requests[corev1.ResourceMemory])
+ assert.Equal(t, resource.MustParse("1"), result.Resources.Limits[corev1.ResourceCPU])
+ assert.Equal(t, resource.MustParse("1Gi"), result.Resources.Limits[corev1.ResourceMemory])
+ })
+
+ t.Run("env literal value", func(t *testing.T) {
+ result := buildAutoscalerOptions(&plugins.AutoscalerOptions{
+ Env: []*core.KeyValuePair{{Key: "FOO", Value: "bar"}},
+ })
+ require.NotNil(t, result)
+ require.Len(t, result.Env, 1)
+ assert.Equal(t, "FOO", result.Env[0].Name)
+ assert.Equal(t, "bar", result.Env[0].Value)
+ })
+}
diff --git a/flyteplugins/go/tasks/plugins/k8s/spark/config_flags_test.go b/flyteplugins/go/tasks/plugins/k8s/spark/config_flags_test.go
index ea8659a48ab..db0a3714d7a 100755
--- a/flyteplugins/go/tasks/plugins/k8s/spark/config_flags_test.go
+++ b/flyteplugins/go/tasks/plugins/k8s/spark/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/plugins/k8s/spark/spark.go b/flyteplugins/go/tasks/plugins/k8s/spark/spark.go
index 56eb746f15b..94ac6807026 100644
--- a/flyteplugins/go/tasks/plugins/k8s/spark/spark.go
+++ b/flyteplugins/go/tasks/plugins/k8s/spark/spark.go
@@ -8,8 +8,8 @@ import (
"strings"
"time"
- sparkOp "github.com/GoogleCloudPlatform/spark-on-k8s-operator/pkg/apis/sparkoperator.k8s.io/v1beta2"
- sparkOpConfig "github.com/GoogleCloudPlatform/spark-on-k8s-operator/pkg/config"
+ sparkOp "github.com/kubeflow/spark-operator/api/v1beta2"
+ sparkOpConfig "github.com/kubeflow/spark-operator/pkg/common"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes/scheme"
@@ -110,21 +110,21 @@ func getSparkConfig(taskCtx pluginsCore.TaskExecutionContext, sparkJob *plugins.
}
// Set pod limits.
- if len(sparkConfig[sparkOpConfig.SparkDriverCoreLimitKey]) == 0 {
+ if len(sparkConfig[sparkOpConfig.SparkKubernetesDriverLimitCores]) == 0 {
// spark.kubernetes.driver.request.cores takes precedence over spark.driver.cores
- if len(sparkConfig[sparkOpConfig.SparkDriverCoreRequestKey]) != 0 {
- sparkConfig[sparkOpConfig.SparkDriverCoreLimitKey] = sparkConfig[sparkOpConfig.SparkDriverCoreRequestKey]
+ if len(sparkConfig[sparkOpConfig.SparkKubernetesDriverRequestCores]) != 0 {
+ sparkConfig[sparkOpConfig.SparkKubernetesDriverLimitCores] = sparkConfig[sparkOpConfig.SparkKubernetesDriverRequestCores]
} else if len(sparkConfig["spark.driver.cores"]) != 0 {
- sparkConfig[sparkOpConfig.SparkDriverCoreLimitKey] = sparkConfig["spark.driver.cores"]
+ sparkConfig[sparkOpConfig.SparkKubernetesDriverLimitCores] = sparkConfig["spark.driver.cores"]
}
}
- if len(sparkConfig[sparkOpConfig.SparkExecutorCoreLimitKey]) == 0 {
+ if len(sparkConfig[sparkOpConfig.SparkKubernetesExecutorLimitCores]) == 0 {
// spark.kubernetes.executor.request.cores takes precedence over spark.executor.cores
- if len(sparkConfig[sparkOpConfig.SparkExecutorCoreRequestKey]) != 0 {
- sparkConfig[sparkOpConfig.SparkExecutorCoreLimitKey] = sparkConfig[sparkOpConfig.SparkExecutorCoreRequestKey]
+ if len(sparkConfig[sparkOpConfig.SparkKubernetesExecutorRequestCores]) != 0 {
+ sparkConfig[sparkOpConfig.SparkKubernetesExecutorLimitCores] = sparkConfig[sparkOpConfig.SparkKubernetesExecutorRequestCores]
} else if len(sparkConfig["spark.executor.cores"]) != 0 {
- sparkConfig[sparkOpConfig.SparkExecutorCoreLimitKey] = sparkConfig["spark.executor.cores"]
+ sparkConfig[sparkOpConfig.SparkKubernetesExecutorLimitCores] = sparkConfig["spark.executor.cores"]
}
}
@@ -171,17 +171,19 @@ func createSparkPodSpec(
sparkEnv = append(sparkEnv, v1.EnvVar{Name: "FLYTE_MAX_ATTEMPTS", Value: strconv.Itoa(int(taskCtx.TaskExecutionMetadata().GetMaxAttempts()))})
spec := sparkOp.SparkPodSpec{
- Affinity: podSpec.Affinity,
- Annotations: annotations,
- Labels: labels,
- Env: sparkEnv,
- Image: &container.Image,
- SecurityContenxt: podSpec.SecurityContext.DeepCopy(),
- DNSConfig: podSpec.DNSConfig.DeepCopy(),
- Tolerations: podSpec.Tolerations,
- SchedulerName: &podSpec.SchedulerName,
- NodeSelector: podSpec.NodeSelector,
- HostNetwork: &podSpec.HostNetwork,
+ Affinity: podSpec.Affinity,
+ Annotations: annotations,
+ Labels: labels,
+ Env: sparkEnv,
+ Image: &container.Image,
+ PodSecurityContext: podSpec.SecurityContext,
+ SecurityContext: container.SecurityContext,
+ DNSConfig: podSpec.DNSConfig.DeepCopy(),
+ Tolerations: podSpec.Tolerations,
+ SchedulerName: &podSpec.SchedulerName,
+ NodeSelector: podSpec.NodeSelector,
+ HostNetwork: &podSpec.HostNetwork,
+ ServiceAccount: strPtr(serviceAccountName(taskCtx.TaskExecutionMetadata())),
}
return &spec
}
@@ -225,13 +227,14 @@ func createDriverSpec(ctx context.Context, taskCtx pluginsCore.TaskExecutionCont
return nil, err
}
sparkPodSpec := createSparkPodSpec(nonInterruptibleTaskCtx, podSpec, primaryContainer, driverPod)
- serviceAccountName := serviceAccountName(nonInterruptibleTaskCtx.TaskExecutionMetadata())
+
spec := driverSpec{
&sparkOp.DriverSpec{
- SparkPodSpec: *sparkPodSpec,
- ServiceAccount: &serviceAccountName,
+ SparkPodSpec: *sparkPodSpec,
},
}
+ spec.sparkSpec.ServiceAccount = strPtr(serviceAccountName(nonInterruptibleTaskCtx.TaskExecutionMetadata()))
+
if cores, err := strconv.ParseInt(sparkConfig["spark.driver.cores"], 10, 32); err == nil {
spec.sparkSpec.Cores = intPtr(int32(cores))
}
@@ -306,17 +309,17 @@ func createSparkApplication(sparkJob *plugins.SparkJob, sparkConfig map[string]s
APIVersion: sparkOp.SchemeGroupVersion.String(),
},
Spec: sparkOp.SparkApplicationSpec{
- ServiceAccount: &executorSpec.serviceAccountName,
- Type: getApplicationType(sparkJob.GetApplicationType()),
- Image: &executorSpec.container.Image,
- Arguments: executorSpec.container.Args,
- Driver: *driverSpec.sparkSpec,
- Executor: *executorSpec.sparkSpec,
- SparkConf: sparkConfig,
- HadoopConf: sparkJob.GetHadoopConf(),
+ Type: getApplicationType(sparkJob.GetApplicationType()),
+ Image: &executorSpec.container.Image,
+ Arguments: executorSpec.container.Args,
+ Driver: *driverSpec.sparkSpec,
+ Mode: sparkOp.DeployModeCluster,
+ Executor: *executorSpec.sparkSpec,
+ SparkConf: sparkConfig,
+ HadoopConf: sparkJob.GetHadoopConf(),
// SubmissionFailures handled here. Task Failures handled at Propeller/Job level.
RestartPolicy: sparkOp.RestartPolicy{
- Type: sparkOp.OnFailure,
+ Type: sparkOp.RestartPolicyOnFailure,
OnSubmissionFailureRetries: &submissionFailureRetries,
},
},
@@ -365,15 +368,15 @@ func addConfig(sparkConfig map[string]string, key string, value string) {
func getApplicationType(applicationType plugins.SparkApplication_Type) sparkOp.SparkApplicationType {
switch applicationType {
case plugins.SparkApplication_PYTHON:
- return sparkOp.PythonApplicationType
+ return sparkOp.SparkApplicationTypePython
case plugins.SparkApplication_JAVA:
- return sparkOp.JavaApplicationType
+ return sparkOp.SparkApplicationTypeJava
case plugins.SparkApplication_SCALA:
- return sparkOp.ScalaApplicationType
+ return sparkOp.SparkApplicationTypeScala
case plugins.SparkApplication_R:
- return sparkOp.RApplicationType
+ return sparkOp.SparkApplicationTypeR
}
- return sparkOp.PythonApplicationType
+ return sparkOp.SparkApplicationTypePython
}
func (sparkResourceHandler) BuildIdentityResource(ctx context.Context, taskCtx pluginsCore.TaskExecutionMetadata) (client.Object, error) {
@@ -385,7 +388,7 @@ func (sparkResourceHandler) BuildIdentityResource(ctx context.Context, taskCtx p
}, nil
}
-func getEventInfoForSpark(pluginContext k8s.PluginContext, sj *sparkOp.SparkApplication) (*pluginsCore.TaskInfo, error) {
+func getEventInfoForSpark(pluginContext k8s.PluginContext, sj *sparkOp.SparkApplication, taskTemplate *core.TaskTemplate) (*pluginsCore.TaskInfo, error) {
sparkConfig := GetSparkConfig()
taskLogs := make([]*core.TaskLog, 0, 3)
@@ -403,6 +406,7 @@ func getEventInfoForSpark(pluginContext k8s.PluginContext, sj *sparkOp.SparkAppl
Namespace: sj.Namespace,
LogName: "(Driver Logs)",
TaskExecutionID: taskExecID,
+ TaskTemplate: taskTemplate,
})
if err != nil {
@@ -480,7 +484,7 @@ func getEventInfoForSpark(pluginContext k8s.PluginContext, sj *sparkOp.SparkAppl
customInfoMap := make(map[string]string)
// Spark UI.
- if sj.Status.AppState.State == sparkOp.FailedState || sj.Status.AppState.State == sparkOp.CompletedState {
+ if sj.Status.AppState.State == sparkOp.ApplicationStateFailed || sj.Status.AppState.State == sparkOp.ApplicationStateCompleted {
if sj.Status.SparkApplicationID != "" && GetSparkConfig().SparkHistoryServerURL != "" {
customInfoMap[sparkHistoryUI] = fmt.Sprintf("%s/history/%s", GetSparkConfig().SparkHistoryServerURL, sj.Status.SparkApplicationID)
// Custom doesn't work unless the UI has a custom plugin to parse this, hence add to Logs as well.
@@ -490,7 +494,7 @@ func getEventInfoForSpark(pluginContext k8s.PluginContext, sj *sparkOp.SparkAppl
MessageFormat: core.TaskLog_JSON,
})
}
- } else if sj.Status.AppState.State == sparkOp.RunningState && sj.Status.DriverInfo.WebUIIngressAddress != "" {
+ } else if sj.Status.AppState.State == sparkOp.ApplicationStateRunning && sj.Status.DriverInfo.WebUIIngressAddress != "" {
// Older versions of spark-operator does not append http:// but newer versions do.
uri := sj.Status.DriverInfo.WebUIIngressAddress
if !strings.HasPrefix(uri, "https://") && !strings.HasPrefix(uri, "http://") {
@@ -520,27 +524,31 @@ func getEventInfoForSpark(pluginContext k8s.PluginContext, sj *sparkOp.SparkAppl
func (sparkResourceHandler) GetTaskPhase(ctx context.Context, pluginContext k8s.PluginContext, resource client.Object) (pluginsCore.PhaseInfo, error) {
app := resource.(*sparkOp.SparkApplication)
- info, err := getEventInfoForSpark(pluginContext, app)
+
+ taskTemplate, err := pluginContext.TaskReader().Read(ctx)
if err != nil {
return pluginsCore.PhaseInfoUndefined, err
}
- occurredAt := time.Now()
+ info, err := getEventInfoForSpark(pluginContext, app, taskTemplate)
+ if err != nil {
+ return pluginsCore.PhaseInfoUndefined, err
+ }
var phaseInfo pluginsCore.PhaseInfo
switch app.Status.AppState.State {
- case sparkOp.NewState:
- phaseInfo = pluginsCore.PhaseInfoQueuedWithTaskInfo(occurredAt, pluginsCore.DefaultPhaseVersion, "job queued", info)
- case sparkOp.SubmittedState, sparkOp.PendingSubmissionState:
- phaseInfo = pluginsCore.PhaseInfoInitializing(occurredAt, pluginsCore.DefaultPhaseVersion, "job submitted", info)
- case sparkOp.FailedSubmissionState:
+ case sparkOp.ApplicationStateNew:
+ phaseInfo = pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginsCore.DefaultPhaseVersion, "job queued", info)
+ case sparkOp.ApplicationStateSubmitted:
+ phaseInfo = pluginsCore.PhaseInfoInitializing(pluginsCore.DefaultPhaseVersion, "job submitted", info)
+ case sparkOp.ApplicationStateFailedSubmission:
reason := fmt.Sprintf("Spark Job Submission Failed with Error: %s", app.Status.AppState.ErrorMessage)
phaseInfo = pluginsCore.PhaseInfoRetryableFailure(errors.DownstreamSystemError, reason, info)
- case sparkOp.FailedState:
+ case sparkOp.ApplicationStateFailed:
reason := fmt.Sprintf("Spark Job Failed with Error: %s", app.Status.AppState.ErrorMessage)
phaseInfo = pluginsCore.PhaseInfoRetryableFailure(errors.DownstreamSystemError, reason, info)
- case sparkOp.CompletedState:
+ case sparkOp.ApplicationStateCompleted:
phaseInfo = pluginsCore.PhaseInfoSuccess(info)
default:
phaseInfo = pluginsCore.PhaseInfoRunning(pluginsCore.DefaultPhaseVersion, info)
diff --git a/flyteplugins/go/tasks/plugins/k8s/spark/spark_test.go b/flyteplugins/go/tasks/plugins/k8s/spark/spark_test.go
index cb669ad1ba9..d54b8d03477 100644
--- a/flyteplugins/go/tasks/plugins/k8s/spark/spark_test.go
+++ b/flyteplugins/go/tasks/plugins/k8s/spark/spark_test.go
@@ -8,8 +8,7 @@ import (
"strconv"
"testing"
- sj "github.com/GoogleCloudPlatform/spark-on-k8s-operator/pkg/apis/sparkoperator.k8s.io/v1beta2"
- sparkOp "github.com/GoogleCloudPlatform/spark-on-k8s-operator/pkg/apis/sparkoperator.k8s.io/v1beta2"
+ sparkOp "github.com/kubeflow/spark-operator/api/v1beta2"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"google.golang.org/protobuf/types/known/structpb"
@@ -25,6 +24,7 @@ import (
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/flytek8s/config"
pluginIOMocks "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io/mocks"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/k8s"
+ "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/tasklog"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/utils"
stdlibUtils "github.com/flyteorg/flyte/flytestdlib/utils"
)
@@ -69,10 +69,10 @@ var (
)
func TestGetApplicationType(t *testing.T) {
- assert.Equal(t, getApplicationType(plugins.SparkApplication_PYTHON), sj.PythonApplicationType)
- assert.Equal(t, getApplicationType(plugins.SparkApplication_R), sj.RApplicationType)
- assert.Equal(t, getApplicationType(plugins.SparkApplication_JAVA), sj.JavaApplicationType)
- assert.Equal(t, getApplicationType(plugins.SparkApplication_SCALA), sj.ScalaApplicationType)
+ assert.Equal(t, getApplicationType(plugins.SparkApplication_PYTHON), sparkOp.SparkApplicationTypePython)
+ assert.Equal(t, getApplicationType(plugins.SparkApplication_R), sparkOp.SparkApplicationTypeR)
+ assert.Equal(t, getApplicationType(plugins.SparkApplication_JAVA), sparkOp.SparkApplicationTypeJava)
+ assert.Equal(t, getApplicationType(plugins.SparkApplication_SCALA), sparkOp.SparkApplicationTypeScala)
}
func TestGetEventInfo(t *testing.T) {
@@ -98,8 +98,11 @@ func TestGetEventInfo(t *testing.T) {
},
},
}))
- taskCtx := dummySparkTaskContext(dummySparkTaskTemplateContainer("blah-1", dummySparkConf), false, k8s.PluginState{})
- info, err := getEventInfoForSpark(taskCtx, dummySparkApplication(sj.RunningState))
+
+ taskTemplate := dummySparkTaskTemplateContainer("blah-1", dummySparkConf)
+ taskCtx := dummySparkTaskContext(taskTemplate, false, k8s.PluginState{})
+ info, err := getEventInfoForSpark(taskCtx, dummySparkApplication(sparkOp.ApplicationStateRunning), taskTemplate)
+
assert.NoError(t, err)
assert.Len(t, info.Logs, 6)
assert.Equal(t, "https://spark-ui.flyte", info.CustomInfo.GetFields()[sparkDriverUI].GetStringValue())
@@ -119,12 +122,13 @@ func TestGetEventInfo(t *testing.T) {
assert.Equal(t, expectedLinks, generatedLinks)
- info, err = getEventInfoForSpark(taskCtx, dummySparkApplication(sj.SubmittedState))
+ info, err = getEventInfoForSpark(taskCtx, dummySparkApplication(sparkOp.ApplicationStateSubmitted), taskTemplate)
+ assert.NoError(t, err)
+
generatedLinks = make([]string, 0, len(info.Logs))
for _, l := range info.Logs {
generatedLinks = append(generatedLinks, l.GetUri())
}
- assert.NoError(t, err)
assert.Len(t, info.Logs, 5)
assert.Equal(t, expectedLinks[:5], generatedLinks) // No Spark Driver UI for Submitted state
assert.True(t, info.Logs[4].GetShowWhilePending()) // All User Logs should be shown while pending
@@ -149,7 +153,7 @@ func TestGetEventInfo(t *testing.T) {
},
}))
- info, err = getEventInfoForSpark(taskCtx, dummySparkApplication(sj.FailedState))
+ info, err = getEventInfoForSpark(taskCtx, dummySparkApplication(sparkOp.ApplicationStateFailed), taskTemplate)
assert.NoError(t, err)
assert.Len(t, info.Logs, 5)
assert.Equal(t, "spark-history.flyte/history/app-id", info.CustomInfo.GetFields()[sparkHistoryUI].GetStringValue())
@@ -174,61 +178,61 @@ func TestGetTaskPhase(t *testing.T) {
ctx := context.TODO()
taskCtx := dummySparkTaskContext(dummySparkTaskTemplateContainer("", dummySparkConf), false, k8s.PluginState{})
- taskPhase, err := sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sj.NewState))
+ taskPhase, err := sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sparkOp.ApplicationStateNew))
assert.NoError(t, err)
assert.Equal(t, taskPhase.Phase(), pluginsCore.PhaseQueued)
assert.NotNil(t, taskPhase.Info())
assert.Nil(t, err)
- taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sj.SubmittedState))
+ taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sparkOp.ApplicationStateSubmitted))
assert.NoError(t, err)
assert.Equal(t, taskPhase.Phase(), pluginsCore.PhaseInitializing)
assert.NotNil(t, taskPhase.Info())
assert.Nil(t, err)
- taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sj.RunningState))
+ taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sparkOp.ApplicationStateRunning))
assert.NoError(t, err)
assert.Equal(t, taskPhase.Phase(), pluginsCore.PhaseRunning)
assert.NotNil(t, taskPhase.Info())
assert.Nil(t, err)
- taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sj.CompletedState))
+ taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sparkOp.ApplicationStateCompleted))
assert.NoError(t, err)
assert.Equal(t, taskPhase.Phase(), pluginsCore.PhaseSuccess)
assert.NotNil(t, taskPhase.Info())
assert.Nil(t, err)
- taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sj.InvalidatingState))
+ taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sparkOp.ApplicationStateInvalidating))
assert.NoError(t, err)
assert.Equal(t, taskPhase.Phase(), pluginsCore.PhaseRunning)
assert.NotNil(t, taskPhase.Info())
assert.Nil(t, err)
- taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sj.FailingState))
+ taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sparkOp.ApplicationStateFailing))
assert.NoError(t, err)
assert.Equal(t, taskPhase.Phase(), pluginsCore.PhaseRunning)
assert.NotNil(t, taskPhase.Info())
assert.Nil(t, err)
- taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sj.PendingRerunState))
+ taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sparkOp.ApplicationStatePendingRerun))
assert.NoError(t, err)
assert.Equal(t, taskPhase.Phase(), pluginsCore.PhaseRunning)
assert.NotNil(t, taskPhase.Info())
assert.Nil(t, err)
- taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sj.SucceedingState))
+ taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sparkOp.ApplicationStateSucceeding))
assert.NoError(t, err)
assert.Equal(t, taskPhase.Phase(), pluginsCore.PhaseRunning)
assert.NotNil(t, taskPhase.Info())
assert.Nil(t, err)
- taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sj.FailedSubmissionState))
+ taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sparkOp.ApplicationStateFailedSubmission))
assert.NoError(t, err)
assert.Equal(t, taskPhase.Phase(), pluginsCore.PhaseRetryableFailure)
assert.NotNil(t, taskPhase.Info())
assert.Nil(t, err)
- taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sj.FailedState))
+ taskPhase, err = sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sparkOp.ApplicationStateFailed))
assert.NoError(t, err)
assert.Equal(t, taskPhase.Phase(), pluginsCore.PhaseRetryableFailure)
assert.NotNil(t, taskPhase.Info())
@@ -247,25 +251,25 @@ func TestGetTaskPhaseIncreasePhaseVersion(t *testing.T) {
taskCtx := dummySparkTaskContext(dummySparkTaskTemplateContainer("", dummySparkConf), false, pluginState)
- taskPhase, err := sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sj.SubmittedState))
+ taskPhase, err := sparkResourceHandler.GetTaskPhase(ctx, taskCtx, dummySparkApplication(sparkOp.ApplicationStateSubmitted))
assert.NoError(t, err)
assert.Equal(t, taskPhase.Version(), pluginsCore.DefaultPhaseVersion+1)
}
-func dummySparkApplication(state sj.ApplicationStateType) *sj.SparkApplication {
+func dummySparkApplication(state sparkOp.ApplicationStateType) *sparkOp.SparkApplication {
- return &sj.SparkApplication{
+ return &sparkOp.SparkApplication{
ObjectMeta: v1.ObjectMeta{
Name: "spark-app-name",
Namespace: "spark-namespace",
},
- Status: sj.SparkApplicationStatus{
+ Status: sparkOp.SparkApplicationStatus{
SparkApplicationID: "app-id",
- AppState: sj.ApplicationState{
+ AppState: sparkOp.ApplicationState{
State: state,
},
- DriverInfo: sj.DriverInfo{
+ DriverInfo: sparkOp.DriverInfo{
PodName: "spark-pod",
WebUIIngressAddress: sparkUIAddress,
},
@@ -643,21 +647,21 @@ func TestBuildResourceContainer(t *testing.T) {
assert.Nil(t, err)
assert.NotNil(t, resource)
- sparkApp, ok := resource.(*sj.SparkApplication)
+ sparkApp, ok := resource.(*sparkOp.SparkApplication)
assert.True(t, ok)
assert.Equal(t, sparkMainClass, *sparkApp.Spec.MainClass)
assert.Equal(t, sparkApplicationFile, *sparkApp.Spec.MainApplicationFile)
- assert.Equal(t, sj.PythonApplicationType, sparkApp.Spec.Type)
+ assert.Equal(t, sparkOp.SparkApplicationTypePython, sparkApp.Spec.Type)
assert.Equal(t, testArgs, sparkApp.Spec.Arguments)
assert.Equal(t, testImage, *sparkApp.Spec.Image)
- assert.NotNil(t, sparkApp.Spec.Driver.SparkPodSpec.SecurityContenxt)
- assert.Equal(t, *sparkApp.Spec.Driver.SparkPodSpec.SecurityContenxt.RunAsUser, *defaultConfig.DefaultPodSecurityContext.RunAsUser)
+ assert.NotNil(t, sparkApp.Spec.Driver.SparkPodSpec.PodSecurityContext)
+ assert.Equal(t, *sparkApp.Spec.Driver.SparkPodSpec.PodSecurityContext.RunAsUser, *defaultConfig.DefaultPodSecurityContext.RunAsUser)
assert.NotNil(t, sparkApp.Spec.Driver.DNSConfig)
assert.Equal(t, []string{"8.8.8.8", "8.8.4.4"}, sparkApp.Spec.Driver.DNSConfig.Nameservers)
assert.ElementsMatch(t, defaultConfig.DefaultPodDNSConfig.Options, sparkApp.Spec.Driver.DNSConfig.Options)
assert.Equal(t, []string{"ns1.svc.cluster-domain.example", "my.dns.search.suffix"}, sparkApp.Spec.Driver.DNSConfig.Searches)
- assert.NotNil(t, sparkApp.Spec.Executor.SparkPodSpec.SecurityContenxt)
- assert.Equal(t, *sparkApp.Spec.Executor.SparkPodSpec.SecurityContenxt.RunAsUser, *defaultConfig.DefaultPodSecurityContext.RunAsUser)
+ assert.NotNil(t, sparkApp.Spec.Executor.SparkPodSpec.PodSecurityContext)
+ assert.Equal(t, *sparkApp.Spec.Executor.SparkPodSpec.PodSecurityContext.RunAsUser, *defaultConfig.DefaultPodSecurityContext.RunAsUser)
assert.NotNil(t, sparkApp.Spec.Executor.DNSConfig)
assert.NotNil(t, sparkApp.Spec.Executor.DNSConfig)
assert.ElementsMatch(t, defaultConfig.DefaultPodDNSConfig.Options, sparkApp.Spec.Executor.DNSConfig.Options)
@@ -668,7 +672,8 @@ func TestBuildResourceContainer(t *testing.T) {
execCores, _ := strconv.ParseInt(dummySparkConf["spark.executor.cores"], 10, 32)
execInstances, _ := strconv.ParseInt(dummySparkConf["spark.executor.instances"], 10, 32)
- assert.Equal(t, "new-val", *sparkApp.Spec.ServiceAccount)
+ assert.Equal(t, "new-val", *sparkApp.Spec.Executor.ServiceAccount)
+ assert.Equal(t, "new-val", *sparkApp.Spec.Driver.ServiceAccount)
assert.Equal(t, int32(driverCores), *sparkApp.Spec.Driver.Cores)
assert.Equal(t, int32(execCores), *sparkApp.Spec.Executor.Cores)
assert.Equal(t, int32(execInstances), *sparkApp.Spec.Executor.Instances)
@@ -790,7 +795,7 @@ func TestBuildResourceContainer(t *testing.T) {
resource, err = sparkResourceHandler.BuildResource(context.TODO(), dummySparkTaskContext(taskTemplate, false, k8s.PluginState{}))
assert.Nil(t, err)
assert.NotNil(t, resource)
- sparkApp, ok = resource.(*sj.SparkApplication)
+ sparkApp, ok = resource.(*sparkOp.SparkApplication)
assert.True(t, ok)
assert.Equal(t, dummyConfWithRequest["spark.kubernetes.driver.request.cores"], sparkApp.Spec.SparkConf["spark.kubernetes.driver.limit.cores"])
@@ -800,7 +805,7 @@ func TestBuildResourceContainer(t *testing.T) {
resource, err = sparkResourceHandler.BuildResource(context.TODO(), dummySparkTaskContext(taskTemplate, false, k8s.PluginState{}))
assert.Nil(t, err)
assert.NotNil(t, resource)
- sparkApp, ok = resource.(*sj.SparkApplication)
+ sparkApp, ok = resource.(*sparkOp.SparkApplication)
assert.True(t, ok)
// Validate Interruptible Toleration and NodeSelector not set for both Driver and Executors.
@@ -870,7 +875,7 @@ func TestBuildResourcePodTemplate(t *testing.T) {
assert.Nil(t, err)
assert.NotNil(t, resource)
- sparkApp, ok := resource.(*sj.SparkApplication)
+ sparkApp, ok := resource.(*sparkOp.SparkApplication)
assert.True(t, ok)
// Application
@@ -880,12 +885,12 @@ func TestBuildResourcePodTemplate(t *testing.T) {
}, sparkApp.TypeMeta)
// Application spec
- assert.Equal(t, flytek8s.GetServiceAccountNameFromTaskExecutionMetadata(taskCtx.TaskExecutionMetadata()), *sparkApp.Spec.ServiceAccount)
- assert.Equal(t, sparkOp.PythonApplicationType, sparkApp.Spec.Type)
+ assert.Equal(t, flytek8s.GetServiceAccountNameFromTaskExecutionMetadata(taskCtx.TaskExecutionMetadata()), *sparkApp.Spec.Executor.ServiceAccount)
+ assert.Equal(t, sparkOp.SparkApplicationTypePython, sparkApp.Spec.Type)
assert.Equal(t, testImage, *sparkApp.Spec.Image)
assert.Equal(t, testArgs, sparkApp.Spec.Arguments)
assert.Equal(t, sparkOp.RestartPolicy{
- Type: sparkOp.OnFailure,
+ Type: sparkOp.RestartPolicyOnFailure,
OnSubmissionFailureRetries: intPtr(int32(14)),
}, sparkApp.Spec.RestartPolicy)
assert.Equal(t, sparkMainClass, *sparkApp.Spec.MainClass)
@@ -901,7 +906,7 @@ func TestBuildResourcePodTemplate(t *testing.T) {
assert.Equal(t, 9, len(sparkApp.Spec.Driver.Env))
assert.Equal(t, testImage, *sparkApp.Spec.Driver.Image)
assert.Equal(t, flytek8s.GetServiceAccountNameFromTaskExecutionMetadata(taskCtx.TaskExecutionMetadata()), *sparkApp.Spec.Driver.ServiceAccount)
- assert.Equal(t, defaultConfig.DefaultPodSecurityContext, sparkApp.Spec.Driver.SecurityContenxt)
+ assert.Equal(t, defaultConfig.DefaultPodSecurityContext, sparkApp.Spec.Driver.PodSecurityContext)
assert.Equal(t, defaultConfig.DefaultPodDNSConfig, sparkApp.Spec.Driver.DNSConfig)
assert.Equal(t, defaultConfig.EnableHostNetworkingPod, sparkApp.Spec.Driver.HostNetwork)
assert.Equal(t, defaultConfig.SchedulerName, *sparkApp.Spec.Driver.SchedulerName)
@@ -937,7 +942,7 @@ func TestBuildResourcePodTemplate(t *testing.T) {
assert.Equal(t, findEnvVarByName(dummyEnvVarsWithSecretRef, "SECRET"), findEnvVarByName(sparkApp.Spec.Executor.Env, "SECRET"))
assert.Equal(t, 9, len(sparkApp.Spec.Executor.Env))
assert.Equal(t, testImage, *sparkApp.Spec.Executor.Image)
- assert.Equal(t, defaultConfig.DefaultPodSecurityContext, sparkApp.Spec.Executor.SecurityContenxt)
+ assert.Equal(t, defaultConfig.DefaultPodSecurityContext, sparkApp.Spec.Executor.PodSecurityContext)
assert.Equal(t, defaultConfig.DefaultPodDNSConfig, sparkApp.Spec.Executor.DNSConfig)
assert.Equal(t, defaultConfig.EnableHostNetworkingPod, sparkApp.Spec.Executor.HostNetwork)
assert.Equal(t, defaultConfig.SchedulerName, *sparkApp.Spec.Executor.SchedulerName)
@@ -1026,7 +1031,7 @@ func TestBuildResourceCustomK8SPod(t *testing.T) {
assert.Nil(t, err)
assert.NotNil(t, resource)
- sparkApp, ok := resource.(*sj.SparkApplication)
+ sparkApp, ok := resource.(*sparkOp.SparkApplication)
assert.True(t, ok)
// Application
@@ -1036,12 +1041,12 @@ func TestBuildResourceCustomK8SPod(t *testing.T) {
}, sparkApp.TypeMeta)
// Application spec
- assert.Equal(t, flytek8s.GetServiceAccountNameFromTaskExecutionMetadata(taskCtx.TaskExecutionMetadata()), *sparkApp.Spec.ServiceAccount)
- assert.Equal(t, sparkOp.PythonApplicationType, sparkApp.Spec.Type)
+ assert.Equal(t, flytek8s.GetServiceAccountNameFromTaskExecutionMetadata(taskCtx.TaskExecutionMetadata()), *sparkApp.Spec.Executor.ServiceAccount)
+ assert.Equal(t, sparkOp.SparkApplicationTypePython, sparkApp.Spec.Type)
assert.Equal(t, testImage, *sparkApp.Spec.Image)
assert.Equal(t, append(testArgs, testArgs...), sparkApp.Spec.Arguments)
assert.Equal(t, sparkOp.RestartPolicy{
- Type: sparkOp.OnFailure,
+ Type: sparkOp.RestartPolicyOnFailure,
OnSubmissionFailureRetries: intPtr(int32(14)),
}, sparkApp.Spec.RestartPolicy)
assert.Equal(t, sparkMainClass, *sparkApp.Spec.MainClass)
@@ -1065,7 +1070,7 @@ func TestBuildResourceCustomK8SPod(t *testing.T) {
assert.Equal(t, 11, len(sparkApp.Spec.Driver.Env))
assert.Equal(t, testImage, *sparkApp.Spec.Driver.Image)
assert.Equal(t, flytek8s.GetServiceAccountNameFromTaskExecutionMetadata(taskCtx.TaskExecutionMetadata()), *sparkApp.Spec.Driver.ServiceAccount)
- assert.Equal(t, defaultConfig.DefaultPodSecurityContext, sparkApp.Spec.Driver.SecurityContenxt)
+ assert.Equal(t, defaultConfig.DefaultPodSecurityContext, sparkApp.Spec.Driver.PodSecurityContext)
assert.Equal(t, defaultConfig.DefaultPodDNSConfig, sparkApp.Spec.Driver.DNSConfig)
assert.Equal(t, defaultConfig.EnableHostNetworkingPod, sparkApp.Spec.Driver.HostNetwork)
assert.Equal(t, defaultConfig.SchedulerName, *sparkApp.Spec.Driver.SchedulerName)
@@ -1107,7 +1112,7 @@ func TestBuildResourceCustomK8SPod(t *testing.T) {
assert.Equal(t, findEnvVarByName(dummyEnvVarsWithSecretRef, "SECRET"), findEnvVarByName(sparkApp.Spec.Executor.Env, "SECRET"))
assert.Equal(t, 11, len(sparkApp.Spec.Executor.Env))
assert.Equal(t, testImage, *sparkApp.Spec.Executor.Image)
- assert.Equal(t, defaultConfig.DefaultPodSecurityContext, sparkApp.Spec.Executor.SecurityContenxt)
+ assert.Equal(t, defaultConfig.DefaultPodSecurityContext, sparkApp.Spec.Executor.PodSecurityContext)
assert.Equal(t, defaultConfig.DefaultPodDNSConfig, sparkApp.Spec.Executor.DNSConfig)
assert.Equal(t, defaultConfig.EnableHostNetworkingPod, sparkApp.Spec.Executor.HostNetwork)
assert.Equal(t, defaultConfig.SchedulerName, *sparkApp.Spec.Executor.SchedulerName)
@@ -1140,6 +1145,41 @@ func TestBuildResourceCustomK8SPod(t *testing.T) {
assert.Equal(t, dummySparkConf["spark.executor.memory"], *sparkApp.Spec.Executor.Memory)
}
+func TestGetEventInfo_DynamicLogLinks(t *testing.T) {
+ dynamicLinks := map[string]tasklog.TemplateLogPlugin{
+ "test-dynamic-link": {
+ TemplateURIs: []tasklog.TemplateURI{"https://some-service.com/{{.taskConfig.dynamicParam}}"},
+ },
+ }
+
+ assert.NoError(t, setSparkConfig(&Config{
+ LogConfig: LogConfig{
+ Mixed: logs.LogConfig{
+ DynamicLogLinks: dynamicLinks,
+ },
+ },
+ }))
+
+ taskTemplate := dummySparkTaskTemplateContainer("blah-1", dummySparkConf)
+ taskTemplate.Config = map[string]string{
+ "link_type": "test-dynamic-link",
+ "dynamicParam": "dynamic-value",
+ }
+
+ taskCtx := dummySparkTaskContext(taskTemplate, false, k8s.PluginState{})
+ info, err := getEventInfoForSpark(taskCtx, dummySparkApplication(sparkOp.ApplicationStateRunning), taskTemplate)
+ assert.NoError(t, err)
+
+ var dynamicLog *core.TaskLog
+ for _, l := range info.Logs {
+ if l.GetUri() == "https://some-service.com/dynamic-value" {
+ dynamicLog = l
+ break
+ }
+ }
+ assert.NotNil(t, dynamicLog, "expected dynamic log link in task logs")
+}
+
func transformStructToStructPB(t *testing.T, obj interface{}) *structpb.Struct {
data, err := json.Marshal(obj)
assert.Nil(t, err)
diff --git a/flyteplugins/go/tasks/plugins/presto/client/mocks/presto_client.go b/flyteplugins/go/tasks/plugins/presto/client/mocks/presto_client.go
index 6236641463d..e7e6a68e051 100644
--- a/flyteplugins/go/tasks/plugins/presto/client/mocks/presto_client.go
+++ b/flyteplugins/go/tasks/plugins/presto/client/mocks/presto_client.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flyteplugins/go/tasks/plugins/presto/config/config.go b/flyteplugins/go/tasks/plugins/presto/config/config.go
index 559d6a1af31..da68cae18e5 100644
--- a/flyteplugins/go/tasks/plugins/presto/config/config.go
+++ b/flyteplugins/go/tasks/plugins/presto/config/config.go
@@ -22,7 +22,7 @@ func URLMustParse(s string) config.URL {
if r != nil {
return config.URL{URL: *r}
}
- logger.Panicf(context.TODO(), "Nil Presto URL specified.", err)
+ logger.Panic(context.TODO(), "Nil Presto URL specified.", err)
return config.URL{}
}
diff --git a/flyteplugins/go/tasks/plugins/presto/config/config_flags_test.go b/flyteplugins/go/tasks/plugins/presto/config/config_flags_test.go
index 9446cb0ea5d..6548f296343 100755
--- a/flyteplugins/go/tasks/plugins/presto/config/config_flags_test.go
+++ b/flyteplugins/go/tasks/plugins/presto/config/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/plugins/presto/execution_state.go b/flyteplugins/go/tasks/plugins/presto/execution_state.go
index 88edb30cb8c..c12fcf3dbbe 100644
--- a/flyteplugins/go/tasks/plugins/presto/execution_state.go
+++ b/flyteplugins/go/tasks/plugins/presto/execution_state.go
@@ -160,7 +160,7 @@ func GetAllocationToken(
allocationStatus, err := tCtx.ResourceManager().AllocateResource(ctx, routingGroup, uniqueID, resourceConstraintsSpec)
if err != nil {
- logger.Errorf(ctx, "Resource manager failed for TaskExecId [%s] token [%s]. error %s",
+ logger.Errorf(ctx, "Resource manager failed for TaskExecId [%v] token [%s]. error %s",
tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetID(), uniqueID, err)
return newState, errors.Wrapf(errors.ResourceManagerFailure, err, "Error requesting allocation token %s", uniqueID)
}
@@ -393,9 +393,9 @@ func KickOffQuery(
_, err := cache.GetOrCreate(uniqueID, executionStateCacheItem)
if err != nil {
// This means that our cache has fundamentally broken... return a system error
- logger.Errorf(ctx, "Cache failed to GetOrCreate for execution [%s] cache key [%s], owner [%s]. Error %s",
+ logger.Errorf(ctx, "Cache failed to GetOrCreate for execution [%v] cache key [%s], owner [%s]. Error %s",
tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetID(), uniqueID,
- tCtx.TaskExecutionMetadata().GetOwnerReference(), err)
+ tCtx.TaskExecutionMetadata().GetOwnerReference().Name, err)
return currentState, err
}
}
@@ -418,9 +418,9 @@ func MonitorQuery(
cachedItem, err := cache.GetOrCreate(uniqueQueryID, executionStateCacheItem)
if err != nil {
// This means that our cache has fundamentally broken... return a system error
- logger.Errorf(ctx, "Cache is broken on execution [%s] cache key [%s], owner [%s]. Error %s",
+ logger.Errorf(ctx, "Cache is broken on execution [%v] cache key [%s], owner [%s]. Error %s",
tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetID(), uniqueQueryID,
- tCtx.TaskExecutionMetadata().GetOwnerReference(), err)
+ tCtx.TaskExecutionMetadata().GetOwnerReference().Name, err)
return currentState, errors.Wrapf(errors.CacheFailed, err, "Error when GetOrCreate while monitoring")
}
diff --git a/flyteplugins/go/tasks/plugins/testing/config_flags_test.go b/flyteplugins/go/tasks/plugins/testing/config_flags_test.go
index 023e8986e0a..13dcf74e728 100755
--- a/flyteplugins/go/tasks/plugins/testing/config_flags_test.go
+++ b/flyteplugins/go/tasks/plugins/testing/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/client.go b/flyteplugins/go/tasks/plugins/webapi/agent/client.go
index 6dd1167866a..e989732eb6d 100644
--- a/flyteplugins/go/tasks/plugins/webapi/agent/client.go
+++ b/flyteplugins/go/tasks/plugins/webapi/agent/client.go
@@ -67,7 +67,7 @@ func getGrpcConnection(ctx context.Context, agent *Deployment) (*grpc.ClientConn
go func() {
<-ctx.Done()
if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", agent, cerr)
+ grpclog.Infof("Failed to close conn to %v: %v", agent, cerr)
}
}()
diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/integration_test.go b/flyteplugins/go/tasks/plugins/webapi/agent/integration_test.go
index eabeb4e6830..ef317d1ff40 100644
--- a/flyteplugins/go/tasks/plugins/webapi/agent/integration_test.go
+++ b/flyteplugins/go/tasks/plugins/webapi/agent/integration_test.go
@@ -5,12 +5,14 @@ import (
"encoding/json"
"fmt"
"io"
+ "strings"
"sync/atomic"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
+ v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/util/rand"
"k8s.io/utils/strings/slices"
@@ -160,6 +162,32 @@ func TestEndToEnd(t *testing.T) {
assert.Equal(t, trns.Info().Phase(), core.PhaseRetryableFailure)
})
+ t.Run("run a k8s_pod task with rendered template args", func(t *testing.T) {
+ podSpecStruct, err := utils.MarshalObjToStruct(&v1.PodSpec{
+ Containers: []v1.Container{{
+ Name: "primary",
+ Image: "test-image",
+ Args: []string{"pyflyte-execute", "--inputs", "{{.input}}", "--output-prefix", "{{.outputPrefix}}"},
+ }},
+ })
+ assert.NoError(t, err)
+
+ k8sPodTemplate := flyteIdlCore.TaskTemplate{
+ Type: "k8s_pod_task",
+ Config: map[string]string{"primary_container_name": "primary"},
+ Target: &flyteIdlCore.TaskTemplate_K8SPod{
+ K8SPod: &flyteIdlCore.K8SPod{PodSpec: podSpecStruct},
+ },
+ }
+
+ pluginEntry := pluginmachinery.CreateRemotePlugin(newMockAsyncK8sPodAgentPlugin(t))
+ plugin, err := pluginEntry.LoadPlugin(context.TODO(), newFakeSetupContext("k8s_pod task"))
+ assert.NoError(t, err)
+
+ phase := tests.RunPluginEndToEndTest(t, plugin, &k8sPodTemplate, inputs, nil, nil, iter)
+ assert.Equal(t, true, phase.Phase().IsSuccess())
+ })
+
t.Run("failed to read inputs", func(t *testing.T) {
tCtx := getTaskContext(t)
tr := &pluginCoreMocks.TaskReader{}
@@ -340,6 +368,57 @@ func newMockSyncAgentPlugin() webapi.PluginEntry {
}
}
+// newMockAsyncK8sPodAgentPlugin returns a plugin whose mock CreateTask call asserts that
+// template variables (e.g. {{.input}}, {{.outputPrefix}}) in the K8sPod container args have
+// been rendered into concrete values before the request is sent to the agent.
+func newMockAsyncK8sPodAgentPlugin(t *testing.T) webapi.PluginEntry {
+ asyncClient := new(agentMocks.AsyncAgentServiceClient)
+ registry := Registry{
+ "k8s_pod_task": {defaultTaskTypeVersion: {AgentDeployment: &Deployment{Endpoint: defaultAgentEndpoint}, IsSync: false}},
+ }
+
+ matcher := mock.MatchedBy(func(request *admin.CreateTaskRequest) bool {
+ var rendered v1.PodSpec
+ if err := utils.UnmarshalStructToObj(request.GetTemplate().GetK8SPod().GetPodSpec(), &rendered); err != nil {
+ return false
+ }
+ if len(rendered.Containers) == 0 {
+ return false
+ }
+ for _, arg := range rendered.Containers[0].Args {
+ if strings.Contains(arg, "{{") {
+ return false
+ }
+ }
+ return true
+ })
+ asyncClient.On("CreateTask", mock.Anything, matcher).Return(&admin.CreateTaskResponse{ResourceMeta: []byte{1}}, nil)
+ asyncClient.On("CreateTask", mock.Anything, mock.Anything).Run(func(args mock.Arguments) {
+ t.Errorf("CreateTask received unrendered K8sPod args: %+v", args.Get(1))
+ }).Return(nil, fmt.Errorf("unrendered args"))
+
+ asyncClient.On("GetTask", mock.Anything, mock.Anything).Return(
+ &admin.GetTaskResponse{Resource: &admin.Resource{Phase: flyteIdlCore.TaskExecution_SUCCEEDED}}, nil)
+ asyncClient.On("DeleteTask", mock.Anything, mock.Anything).Return(&admin.DeleteTaskResponse{}, nil)
+
+ cfg := defaultConfig
+ cfg.DefaultAgent.Endpoint = defaultAgentEndpoint
+ return webapi.PluginEntry{
+ ID: "agent-service",
+ SupportedTaskTypes: []core.TaskType{"k8s_pod_task"},
+ PluginLoader: func(ctx context.Context, iCtx webapi.PluginSetupContext) (webapi.AsyncPlugin, error) {
+ return &Plugin{
+ metricScope: iCtx.MetricsScope(),
+ cfg: &cfg,
+ cs: &ClientSet{
+ asyncAgentClients: map[string]service.AsyncAgentServiceClient{defaultAgentEndpoint: asyncClient},
+ },
+ registry: registry,
+ }, nil
+ },
+ }
+}
+
func newFakeSetupContext(name string) *pluginCoreMocks.SetupContext {
fakeResourceRegistrar := pluginCoreMocks.ResourceRegistrar{}
fakeResourceRegistrar.On("RegisterResourceQuota", mock.Anything, mock.Anything, mock.Anything).Return(nil)
diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go b/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go
index ce22d2a4212..6b9a206681b 100644
--- a/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go
+++ b/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go
@@ -6,7 +6,6 @@ import (
"fmt"
"slices"
"sync"
- "time"
"golang.org/x/exp/maps"
"google.golang.org/protobuf/types/known/structpb"
@@ -19,8 +18,10 @@ import (
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/template"
+ "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/flytek8s"
flyteIO "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/ioutils"
+ "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/utils"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/webapi"
"github.com/flyteorg/flyte/flytestdlib/logger"
"github.com/flyteorg/flyte/flytestdlib/promutils"
@@ -126,6 +127,24 @@ func (p *Plugin) Create(ctx context.Context, taskCtx webapi.TaskExecutionContext
// Restore unrendered template for subsequent renders.
taskTemplate.GetContainer().Args = argTemplate
}()
+ } else if taskTemplate.GetK8SPod() != nil {
+ coreTCtx, ok := taskCtx.(core.TaskExecutionContext)
+ if !ok {
+ return nil, nil, fmt.Errorf("failed to cast taskCtx to core.TaskExecutionContext for K8sPod rendering")
+ }
+ podSpec, _, _, err := flytek8s.ToK8sPodSpec(ctx, coreTCtx)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to build K8s pod spec: %v", err)
+ }
+ renderedPodSpecStruct, err := utils.MarshalObjToStruct(podSpec)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to marshal rendered pod spec: %v", err)
+ }
+ originalPodSpec := taskTemplate.GetK8SPod().GetPodSpec()
+ taskTemplate.GetK8SPod().PodSpec = renderedPodSpecStruct
+ defer func() {
+ taskTemplate.GetK8SPod().PodSpec = originalPodSpec
+ }()
}
outputPrefix := taskCtx.OutputWriter().GetOutputPrefixPath().String()
@@ -295,11 +314,11 @@ func (p *Plugin) Status(ctx context.Context, taskCtx webapi.StatusContext) (phas
switch resource.Phase {
case flyteIdl.TaskExecution_QUEUED:
- return core.PhaseInfoQueuedWithTaskInfo(time.Now(), core.DefaultPhaseVersion, resource.Message, taskInfo), nil
+ return core.PhaseInfoQueuedWithTaskInfo(core.DefaultPhaseVersion, resource.Message, taskInfo), nil
case flyteIdl.TaskExecution_WAITING_FOR_RESOURCES:
- return core.PhaseInfoWaitingForResourcesInfo(time.Now(), core.DefaultPhaseVersion, resource.Message, taskInfo), nil
+ return core.PhaseInfoWaitingForResourcesInfo(core.DefaultPhaseVersion, resource.Message, taskInfo), nil
case flyteIdl.TaskExecution_INITIALIZING:
- return core.PhaseInfoInitializing(time.Now(), core.DefaultPhaseVersion, resource.Message, taskInfo), nil
+ return core.PhaseInfoInitializing(core.DefaultPhaseVersion, resource.Message, taskInfo), nil
case flyteIdl.TaskExecution_RUNNING:
return core.PhaseInfoRunning(core.DefaultPhaseVersion, taskInfo), nil
case flyteIdl.TaskExecution_SUCCEEDED:
@@ -324,7 +343,7 @@ func (p *Plugin) Status(ctx context.Context, taskCtx webapi.StatusContext) (phas
// If the phase is undefined, we will use state to determine the phase.
switch resource.State {
case admin.State_PENDING:
- return core.PhaseInfoInitializing(time.Now(), core.DefaultPhaseVersion, resource.Message, taskInfo), nil
+ return core.PhaseInfoInitializing(core.DefaultPhaseVersion, resource.Message, taskInfo), nil
case admin.State_RUNNING:
return core.PhaseInfoRunning(core.DefaultPhaseVersion, taskInfo), nil
case admin.State_PERMANENT_FAILURE:
diff --git a/flyteplugins/go/tasks/plugins/webapi/athena/config_flags_test.go b/flyteplugins/go/tasks/plugins/webapi/athena/config_flags_test.go
index e86e85b9324..729f3670d10 100755
--- a/flyteplugins/go/tasks/plugins/webapi/athena/config_flags_test.go
+++ b/flyteplugins/go/tasks/plugins/webapi/athena/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/plugins/webapi/athena/utils_test.go b/flyteplugins/go/tasks/plugins/webapi/athena/utils_test.go
index cb57d853321..9fe40c3b2a0 100644
--- a/flyteplugins/go/tasks/plugins/webapi/athena/utils_test.go
+++ b/flyteplugins/go/tasks/plugins/webapi/athena/utils_test.go
@@ -15,7 +15,6 @@ import (
mocks3 "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io/mocks"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/ioutils"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/webapi/mocks"
- "github.com/flyteorg/flyte/flytestdlib/storage"
"github.com/flyteorg/flyte/flytestdlib/utils"
)
@@ -190,8 +189,8 @@ func Test_ExtractQueryInfo(t *testing.T) {
ir := &mocks3.InputReader{}
tCtx.EXPECT().InputReader().Return(ir)
- ir.EXPECT().GetInputPath().Return(storage.DataReference("s3://something"))
- ir.EXPECT().GetInputPrefixPath().Return(storage.DataReference("s3://something/2"))
+ ir.EXPECT().GetInputPath().Return("s3://something")
+ ir.EXPECT().GetInputPrefixPath().Return("s3://something/2")
ir.EXPECT().Get(ctx).Return(nil, nil)
q, err := extractQueryInfo(ctx, tCtx)
diff --git a/flyteplugins/go/tasks/plugins/webapi/bigquery/config_flags_test.go b/flyteplugins/go/tasks/plugins/webapi/bigquery/config_flags_test.go
index ddcbec8af5b..e4bee5889e4 100755
--- a/flyteplugins/go/tasks/plugins/webapi/bigquery/config_flags_test.go
+++ b/flyteplugins/go/tasks/plugins/webapi/bigquery/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flyteplugins/go/tasks/plugins/webapi/bigquery/plugin.go b/flyteplugins/go/tasks/plugins/webapi/bigquery/plugin.go
index fca1eee954c..2fe8a2b9575 100644
--- a/flyteplugins/go/tasks/plugins/webapi/bigquery/plugin.go
+++ b/flyteplugins/go/tasks/plugins/webapi/bigquery/plugin.go
@@ -3,6 +3,7 @@ package bigquery
import (
"context"
"encoding/gob"
+ "errors"
"fmt"
"net/http"
"time"
@@ -111,7 +112,8 @@ func (p Plugin) createImpl(ctx context.Context, taskCtx webapi.TaskExecutionCont
resp, err := client.Jobs.Insert(job.JobReference.ProjectId, job).Do()
if err != nil {
- apiError, ok := err.(*googleapi.Error)
+ var apiError *googleapi.Error
+ ok := errors.As(err, &apiError)
resourceMeta := ResourceMetaWrapper{
JobReference: *job.JobReference,
Namespace: namespace,
@@ -278,7 +280,7 @@ func (p Plugin) Status(ctx context.Context, tCtx webapi.StatusContext) (phase co
switch resource.Status.State {
case bigqueryStatusPending:
- return core.PhaseInfoQueuedWithTaskInfo(time.Now(), version, "Query is PENDING", taskInfo), nil
+ return core.PhaseInfoQueuedWithTaskInfo(version, "Query is PENDING", taskInfo), nil
case bigqueryStatusRunning:
return core.PhaseInfoRunning(version, taskInfo), nil
diff --git a/flyteplugins/go/tasks/plugins/webapi/connector/client.go b/flyteplugins/go/tasks/plugins/webapi/connector/client.go
index 8b70102c8f3..da04858df4a 100644
--- a/flyteplugins/go/tasks/plugins/webapi/connector/client.go
+++ b/flyteplugins/go/tasks/plugins/webapi/connector/client.go
@@ -67,7 +67,7 @@ func getGrpcConnection(ctx context.Context, connector *Deployment) (*grpc.Client
go func() {
<-ctx.Done()
if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", connector, cerr)
+ grpclog.Infof("Failed to close conn to %v: %v", connector, cerr)
}
}()
diff --git a/flyteplugins/go/tasks/plugins/webapi/connector/integration_test.go b/flyteplugins/go/tasks/plugins/webapi/connector/integration_test.go
index dc2c858e5d6..130dae41dec 100644
--- a/flyteplugins/go/tasks/plugins/webapi/connector/integration_test.go
+++ b/flyteplugins/go/tasks/plugins/webapi/connector/integration_test.go
@@ -5,12 +5,14 @@ import (
"encoding/json"
"fmt"
"io"
+ "strings"
"sync/atomic"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
+ v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/util/rand"
"k8s.io/utils/strings/slices"
@@ -160,6 +162,32 @@ func TestEndToEnd(t *testing.T) {
assert.Equal(t, trns.Info().Phase(), core.PhaseRetryableFailure)
})
+ t.Run("run a k8s_pod task with rendered template args", func(t *testing.T) {
+ podSpecStruct, err := utils.MarshalObjToStruct(&v1.PodSpec{
+ Containers: []v1.Container{{
+ Name: "primary",
+ Image: "test-image",
+ Args: []string{"pyflyte-execute", "--inputs", "{{.input}}", "--output-prefix", "{{.outputPrefix}}"},
+ }},
+ })
+ assert.NoError(t, err)
+
+ k8sPodTemplate := flyteIdlCore.TaskTemplate{
+ Type: "k8s_pod_task",
+ Config: map[string]string{"primary_container_name": "primary"},
+ Target: &flyteIdlCore.TaskTemplate_K8SPod{
+ K8SPod: &flyteIdlCore.K8SPod{PodSpec: podSpecStruct},
+ },
+ }
+
+ pluginEntry := pluginmachinery.CreateRemotePlugin(newMockAsyncK8sPodConnectorPlugin(t))
+ plugin, err := pluginEntry.LoadPlugin(context.TODO(), newFakeSetupContext("k8s_pod task"))
+ assert.NoError(t, err)
+
+ phase := tests.RunPluginEndToEndTest(t, plugin, &k8sPodTemplate, inputs, nil, nil, iter)
+ assert.Equal(t, true, phase.Phase().IsSuccess())
+ })
+
t.Run("failed to read inputs", func(t *testing.T) {
tCtx := getTaskContext(t)
tr := &pluginCoreMocks.TaskReader{}
@@ -340,6 +368,57 @@ func newMockSyncConnectorPlugin() webapi.PluginEntry {
}
}
+// newMockAsyncK8sPodConnectorPlugin returns a plugin whose mock CreateTask call asserts that
+// template variables (e.g. {{.input}}, {{.outputPrefix}}) in the K8sPod container args have
+// been rendered into concrete values before the request is sent to the connector.
+func newMockAsyncK8sPodConnectorPlugin(t *testing.T) webapi.PluginEntry {
+ asyncClient := new(agentMocks.AsyncAgentServiceClient)
+ registry := Registry{
+ "k8s_pod_task": {defaultTaskTypeVersion: {ConnectorDeployment: &Deployment{Endpoint: defaultConnectorEndpoint}, IsSync: false}},
+ }
+
+ matcher := mock.MatchedBy(func(request *admin.CreateTaskRequest) bool {
+ var rendered v1.PodSpec
+ if err := utils.UnmarshalStructToObj(request.GetTemplate().GetK8SPod().GetPodSpec(), &rendered); err != nil {
+ return false
+ }
+ if len(rendered.Containers) == 0 {
+ return false
+ }
+ for _, arg := range rendered.Containers[0].Args {
+ if strings.Contains(arg, "{{") {
+ return false
+ }
+ }
+ return true
+ })
+ asyncClient.On("CreateTask", mock.Anything, matcher).Return(&admin.CreateTaskResponse{ResourceMeta: []byte{1}}, nil)
+ asyncClient.On("CreateTask", mock.Anything, mock.Anything).Run(func(args mock.Arguments) {
+ t.Errorf("CreateTask received unrendered K8sPod args: %+v", args.Get(1))
+ }).Return(nil, fmt.Errorf("unrendered args"))
+
+ asyncClient.On("GetTask", mock.Anything, mock.Anything).Return(
+ &admin.GetTaskResponse{Resource: &admin.Resource{Phase: flyteIdlCore.TaskExecution_SUCCEEDED}}, nil)
+ asyncClient.On("DeleteTask", mock.Anything, mock.Anything).Return(&admin.DeleteTaskResponse{}, nil)
+
+ cfg := defaultConfig
+ cfg.DefaultConnector.Endpoint = defaultConnectorEndpoint
+ return webapi.PluginEntry{
+ ID: "connector-service",
+ SupportedTaskTypes: []core.TaskType{"k8s_pod_task"},
+ PluginLoader: func(ctx context.Context, iCtx webapi.PluginSetupContext) (webapi.AsyncPlugin, error) {
+ return &Plugin{
+ metricScope: iCtx.MetricsScope(),
+ cfg: &cfg,
+ cs: &ClientSet{
+ asyncConnectorClients: map[string]service.AsyncAgentServiceClient{defaultConnectorEndpoint: asyncClient},
+ },
+ registry: registry,
+ }, nil
+ },
+ }
+}
+
func newFakeSetupContext(name string) *pluginCoreMocks.SetupContext {
fakeResourceRegistrar := pluginCoreMocks.ResourceRegistrar{}
fakeResourceRegistrar.On("RegisterResourceQuota", mock.Anything, mock.Anything, mock.Anything).Return(nil)
diff --git a/flyteplugins/go/tasks/plugins/webapi/connector/plugin.go b/flyteplugins/go/tasks/plugins/webapi/connector/plugin.go
index 089ce64f5a6..e43ea3ce7b0 100644
--- a/flyteplugins/go/tasks/plugins/webapi/connector/plugin.go
+++ b/flyteplugins/go/tasks/plugins/webapi/connector/plugin.go
@@ -6,7 +6,6 @@ import (
"fmt"
"slices"
"sync"
- "time"
"golang.org/x/exp/maps"
"google.golang.org/protobuf/types/known/structpb"
@@ -19,8 +18,10 @@ import (
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/template"
+ "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/flytek8s"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/ioutils"
+ "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/utils"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/webapi"
"github.com/flyteorg/flyte/flytestdlib/logger"
"github.com/flyteorg/flyte/flytestdlib/promutils"
@@ -126,6 +127,24 @@ func (p *Plugin) Create(ctx context.Context, taskCtx webapi.TaskExecutionContext
// Restore unrendered template for subsequent renders.
taskTemplate.GetContainer().Args = argTemplate
}()
+ } else if taskTemplate.GetK8SPod() != nil {
+ coreTCtx, ok := taskCtx.(core.TaskExecutionContext)
+ if !ok {
+ return nil, nil, fmt.Errorf("failed to cast taskCtx to core.TaskExecutionContext for K8sPod rendering")
+ }
+ podSpec, _, _, err := flytek8s.ToK8sPodSpec(ctx, coreTCtx)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to build K8s pod spec: %v", err)
+ }
+ renderedPodSpecStruct, err := utils.MarshalObjToStruct(podSpec)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to marshal rendered pod spec: %v", err)
+ }
+ originalPodSpec := taskTemplate.GetK8SPod().GetPodSpec()
+ taskTemplate.GetK8SPod().PodSpec = renderedPodSpecStruct
+ defer func() {
+ taskTemplate.GetK8SPod().PodSpec = originalPodSpec
+ }()
}
outputPrefix := taskCtx.OutputWriter().GetOutputPrefixPath().String()
@@ -295,11 +314,11 @@ func (p *Plugin) Status(ctx context.Context, taskCtx webapi.StatusContext) (phas
switch resource.Phase {
case flyteIdl.TaskExecution_QUEUED:
- return core.PhaseInfoQueuedWithTaskInfo(time.Now(), core.DefaultPhaseVersion, resource.Message, taskInfo), nil
+ return core.PhaseInfoQueuedWithTaskInfo(core.DefaultPhaseVersion, resource.Message, taskInfo), nil
case flyteIdl.TaskExecution_WAITING_FOR_RESOURCES:
- return core.PhaseInfoWaitingForResourcesInfo(time.Now(), core.DefaultPhaseVersion, resource.Message, taskInfo), nil
+ return core.PhaseInfoWaitingForResourcesInfo(core.DefaultPhaseVersion, resource.Message, taskInfo), nil
case flyteIdl.TaskExecution_INITIALIZING:
- return core.PhaseInfoInitializing(time.Now(), core.DefaultPhaseVersion, resource.Message, taskInfo), nil
+ return core.PhaseInfoInitializing(core.DefaultPhaseVersion, resource.Message, taskInfo), nil
case flyteIdl.TaskExecution_RUNNING:
return core.PhaseInfoRunning(core.DefaultPhaseVersion, taskInfo), nil
case flyteIdl.TaskExecution_SUCCEEDED:
@@ -324,7 +343,7 @@ func (p *Plugin) Status(ctx context.Context, taskCtx webapi.StatusContext) (phas
// If the phase is undefined, we will use state to determine the phase.
switch resource.State {
case admin.State_PENDING:
- return core.PhaseInfoInitializing(time.Now(), core.DefaultPhaseVersion, resource.Message, taskInfo), nil
+ return core.PhaseInfoInitializing(core.DefaultPhaseVersion, resource.Message, taskInfo), nil
case admin.State_RUNNING:
return core.PhaseInfoRunning(core.DefaultPhaseVersion, taskInfo), nil
case admin.State_PERMANENT_FAILURE:
diff --git a/flyteplugins/go/tasks/plugins/webapi/databricks/plugin.go b/flyteplugins/go/tasks/plugins/webapi/databricks/plugin.go
index d889392c597..df7a930a178 100644
--- a/flyteplugins/go/tasks/plugins/webapi/databricks/plugin.go
+++ b/flyteplugins/go/tasks/plugins/webapi/databricks/plugin.go
@@ -266,7 +266,7 @@ func (p Plugin) Status(ctx context.Context, taskCtx webapi.StatusContext) (phase
case "QUEUED":
return core.PhaseInfoQueued(time.Now(), core.DefaultPhaseVersion, message), nil
case "PENDING":
- return core.PhaseInfoInitializing(time.Now(), core.DefaultPhaseVersion, message, taskInfo), nil
+ return core.PhaseInfoInitializing(core.DefaultPhaseVersion, message, taskInfo), nil
case "RUNNING":
fallthrough
case "BLOCKED":
diff --git a/flyteplugins/go/tasks/plugins/webapi/snowflake/config.go b/flyteplugins/go/tasks/plugins/webapi/snowflake/config.go
index e61dbed01a4..21fe12cffd9 100644
--- a/flyteplugins/go/tasks/plugins/webapi/snowflake/config.go
+++ b/flyteplugins/go/tasks/plugins/webapi/snowflake/config.go
@@ -10,7 +10,7 @@ import (
)
var (
- defaultConfig = Config{
+ defaultConfig = Config{ //nolint:gosec
WebAPI: webapi.PluginConfig{
ResourceQuotas: map[core.ResourceNamespace]int{
"default": 1000,
diff --git a/flytepropeller/.golangci.yml b/flytepropeller/.golangci.yml
index 77107079d07..4866cecc78b 100644
--- a/flytepropeller/.golangci.yml
+++ b/flytepropeller/.golangci.yml
@@ -1,35 +1,41 @@
-run:
- skip-dirs:
- - pkg/client
+version: "2"
linters:
- disable-all: true
+ default: none
enable:
- errcheck
- - gosec
- - gci
- goconst
- - goimports
- - gosimple
+ - gosec
- govet
- ineffassign
- misspell
- nakedret
- - staticcheck
- - typecheck
+ - protogetter
- unconvert
- unparam
- unused
- - protogetter
-linters-settings:
- gci:
- custom-order: true
- sections:
- - standard
- - default
- - prefix(github.com/flyteorg)
- skip-generated: true
- goconst:
- ignore-tests: true
-issues:
- exclude:
- - copylocks
+ exclusions:
+ generated: lax
+ presets:
+ - comments
+ - common-false-positives
+ - legacy
+ - std-error-handling
+ rules:
+ - path: (.+)\.go$
+ text: copylocks
+ - linters:
+ - goconst
+ path: (.+)_test\.go
+formatters:
+ enable:
+ - gci
+ - goimports
+ settings:
+ gci:
+ sections:
+ - standard
+ - default
+ - prefix(github.com/flyteorg)
+ custom-order: true
+ exclusions:
+ generated: lax
\ No newline at end of file
diff --git a/flytepropeller/cmd/kubectl-flyte/cmd/string_map_value_test.go b/flytepropeller/cmd/kubectl-flyte/cmd/string_map_value_test.go
index 1c2ed287390..27ff26ce1c6 100644
--- a/flytepropeller/cmd/kubectl-flyte/cmd/string_map_value_test.go
+++ b/flytepropeller/cmd/kubectl-flyte/cmd/string_map_value_test.go
@@ -23,7 +23,7 @@ func formatArg(values map[string]string) string {
func randSpaces() string {
res := ""
- for cnt := rand.Int()%10 + 1; cnt > 0; cnt-- { // nolint: gas
+ for cnt := rand.Int()%10 + 1; cnt > 0; cnt-- { // nolint: gosec
res += " "
}
diff --git a/flytepropeller/events/admin_eventsink_integration_test.go b/flytepropeller/events/admin_eventsink_integration_test.go
index d29e4e032a9..bf08e0eea46 100644
--- a/flytepropeller/events/admin_eventsink_integration_test.go
+++ b/flytepropeller/events/admin_eventsink_integration_test.go
@@ -1,5 +1,4 @@
//go:build integration
-// +build integration
// Add this tag to your project settings if you want to pick it up.
diff --git a/flytepropeller/events/config_flags_test.go b/flytepropeller/events/config_flags_test.go
index d55e39cbfd7..be88bf82abc 100755
--- a/flytepropeller/events/config_flags_test.go
+++ b/flytepropeller/events/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytepropeller/events/mocks/event_recorder.go b/flytepropeller/events/mocks/event_recorder.go
index bd8ec97c8f2..15a84c89dcb 100644
--- a/flytepropeller/events/mocks/event_recorder.go
+++ b/flytepropeller/events/mocks/event_recorder.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytepropeller/events/mocks/event_sink.go b/flytepropeller/events/mocks/event_sink.go
index f67274d37a6..e7f46182599 100644
--- a/flytepropeller/events/mocks/event_sink.go
+++ b/flytepropeller/events/mocks/event_sink.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,7 +6,6 @@ import (
context "context"
mock "github.com/stretchr/testify/mock"
-
protoiface "google.golang.org/protobuf/runtime/protoiface"
)
@@ -23,7 +22,7 @@ func (_m *EventSink) EXPECT() *EventSink_Expecter {
return &EventSink_Expecter{mock: &_m.Mock}
}
-// Close provides a mock function with given fields:
+// Close provides a mock function with no fields
func (_m *EventSink) Close() error {
ret := _m.Called()
diff --git a/flytepropeller/events/mocks/node_event_recorder.go b/flytepropeller/events/mocks/node_event_recorder.go
index bfaf6c9ed9f..6224703675f 100644
--- a/flytepropeller/events/mocks/node_event_recorder.go
+++ b/flytepropeller/events/mocks/node_event_recorder.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- config "github.com/flyteorg/flyte/flytepropeller/pkg/controller/config"
-
event "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event"
+ config "github.com/flyteorg/flyte/flytepropeller/pkg/controller/config"
mock "github.com/stretchr/testify/mock"
)
diff --git a/flytepropeller/events/mocks/task_event_recorder.go b/flytepropeller/events/mocks/task_event_recorder.go
index 69ab43268e9..30a8b26dc79 100644
--- a/flytepropeller/events/mocks/task_event_recorder.go
+++ b/flytepropeller/events/mocks/task_event_recorder.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- config "github.com/flyteorg/flyte/flytepropeller/pkg/controller/config"
-
event "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event"
+ config "github.com/flyteorg/flyte/flytepropeller/pkg/controller/config"
mock "github.com/stretchr/testify/mock"
)
diff --git a/flytepropeller/events/mocks/workflow_event_recorder.go b/flytepropeller/events/mocks/workflow_event_recorder.go
index dfe664c48d4..4edce9754be 100644
--- a/flytepropeller/events/mocks/workflow_event_recorder.go
+++ b/flytepropeller/events/mocks/workflow_event_recorder.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- config "github.com/flyteorg/flyte/flytepropeller/pkg/controller/config"
-
event "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event"
+ config "github.com/flyteorg/flyte/flytepropeller/pkg/controller/config"
mock "github.com/stretchr/testify/mock"
)
diff --git a/flytepropeller/events/mocks/writer.go b/flytepropeller/events/mocks/writer.go
index 4a86bb17cf4..e5f2ea77223 100644
--- a/flytepropeller/events/mocks/writer.go
+++ b/flytepropeller/events/mocks/writer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -21,7 +21,7 @@ func (_m *writer) EXPECT() *writer_Expecter {
return &writer_Expecter{mock: &_m.Mock}
}
-// Flush provides a mock function with given fields:
+// Flush provides a mock function with no fields
func (_m *writer) Flush() error {
ret := _m.Called()
diff --git a/flytepropeller/go.mod b/flytepropeller/go.mod
index e970dae2cd9..73061b597af 100644
--- a/flytepropeller/go.mod
+++ b/flytepropeller/go.mod
@@ -1,167 +1,191 @@
module github.com/flyteorg/flyte/flytepropeller
-go 1.22
+go 1.26.0
require (
github.com/DiSiqueira/GoTree v1.0.1-0.20180907134536-53a8e837f295
github.com/Masterminds/semver v1.5.0
github.com/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1
- github.com/fatih/color v1.13.0
+ github.com/fatih/color v1.18.0
github.com/flyteorg/flyte/flyteidl v0.0.0-00010101000000-000000000000
github.com/flyteorg/flyte/flyteplugins v0.0.0-00010101000000-000000000000
github.com/flyteorg/flyte/flytestdlib v0.0.0-00010101000000-000000000000
github.com/ghodss/yaml v1.0.0
github.com/go-redis/redis v6.15.7+incompatible
github.com/go-test/deep v1.0.7
+ github.com/go-viper/mapstructure/v2 v2.4.0
github.com/golang/protobuf v1.5.4
github.com/google/uuid v1.6.0
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
github.com/imdario/mergo v0.3.13
- github.com/magiconair/properties v1.8.6
- github.com/mitchellh/mapstructure v1.5.0
+ github.com/magiconair/properties v1.8.7
github.com/pkg/errors v0.9.1
- github.com/prometheus/client_golang v1.19.1
+ github.com/prometheus/client_golang v1.23.0
github.com/santhosh-tekuri/jsonschema v1.2.4
github.com/shamaton/msgpack/v2 v2.2.2
github.com/sirupsen/logrus v1.9.3
- github.com/spf13/cobra v1.7.0
- github.com/spf13/pflag v1.0.5
- github.com/stretchr/testify v1.9.0
+ github.com/spf13/cobra v1.9.1
+ github.com/spf13/pflag v1.0.10
+ github.com/stretchr/testify v1.11.1
github.com/wI2L/jsondiff v0.6.0
gitlab.com/yvesf/json-schema-compare v0.0.0-20190604192943-a900c04201f7
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0
- go.opentelemetry.io/otel v1.24.0
- go.opentelemetry.io/otel/trace v1.24.0
- golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8
- golang.org/x/sync v0.10.0
- golang.org/x/time v0.5.0
- google.golang.org/grpc v1.62.1
- google.golang.org/protobuf v1.34.1
- k8s.io/api v0.29.3
- k8s.io/apiextensions-apiserver v0.29.0
- k8s.io/apimachinery v0.29.3
- k8s.io/client-go v0.29.3
+ go.etcd.io/etcd/api/v3 v3.6.4
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0
+ go.opentelemetry.io/otel v1.43.0
+ go.opentelemetry.io/otel/trace v1.43.0
+ golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
+ golang.org/x/sync v0.20.0
+ golang.org/x/time v0.12.0
+ google.golang.org/grpc v1.80.0
+ google.golang.org/protobuf v1.36.11
+ k8s.io/api v0.34.1
+ k8s.io/apiextensions-apiserver v0.34.1
+ k8s.io/apimachinery v0.34.1
+ k8s.io/client-go v0.34.1
k8s.io/klog v1.0.0
- k8s.io/utils v0.0.0-20230726121419-3b25d923346b
- sigs.k8s.io/controller-runtime v0.17.2
+ k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d
+ sigs.k8s.io/controller-runtime v0.22.4
)
require (
- cloud.google.com/go v0.112.0 // indirect
- cloud.google.com/go/compute v1.23.3 // indirect
- cloud.google.com/go/compute/metadata v0.2.3 // indirect
- cloud.google.com/go/iam v1.1.5 // indirect
- cloud.google.com/go/storage v1.36.0 // indirect
+ cel.dev/expr v0.25.1 // indirect
+ cloud.google.com/go v0.115.1 // indirect
+ cloud.google.com/go/auth v0.9.3 // indirect
+ cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
+ cloud.google.com/go/compute/metadata v0.9.0 // indirect
+ cloud.google.com/go/iam v1.2.1 // indirect
+ cloud.google.com/go/monitoring v1.21.0 // indirect
+ cloud.google.com/go/storage v1.45.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
- github.com/GoogleCloudPlatform/spark-on-k8s-operator v0.0.0-20200723154620-6f35a1152625 // indirect
- github.com/aws/aws-sdk-go v1.47.11 // indirect
- github.com/aws/aws-sdk-go-v2 v1.2.0 // indirect
- github.com/aws/aws-sdk-go-v2/config v1.0.0 // indirect
- github.com/aws/aws-sdk-go-v2/credentials v1.0.0 // indirect
- github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.0 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect
+ github.com/aws/aws-sdk-go v1.55.5 // 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/athena v1.0.0 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.0 // indirect
- github.com/aws/aws-sdk-go-v2/service/sts v1.0.0 // indirect
- github.com/aws/smithy-go v1.1.0 // 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/cenkalti/backoff/v4 v4.2.1 // indirect
+ github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
+ github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect
github.com/coocood/freecache v1.1.1 // indirect
github.com/dask/dask-kubernetes/v2023 v2023.0.0-20230626103304-abd02cd17b26 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/emicklei/go-restful/v3 v3.11.0 // indirect
- github.com/evanphx/json-patch v5.6.0+incompatible // indirect
- github.com/evanphx/json-patch/v5 v5.8.0 // indirect
+ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
+ github.com/emicklei/go-restful/v3 v3.13.0 // indirect
+ github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect
+ github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect
+ github.com/evanphx/json-patch/v5 v5.9.11 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/flyteorg/stow v0.3.11 // indirect
- github.com/fsnotify/fsnotify v1.7.0 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
+ github.com/flyteorg/stow v0.3.12 // indirect
+ github.com/fsnotify/fsnotify v1.9.0 // indirect
+ github.com/fxamacker/cbor/v2 v2.9.0 // indirect
+ github.com/go-jose/go-jose/v4 v4.1.4 // indirect
+ github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
- github.com/go-openapi/jsonpointer v0.19.6 // indirect
- github.com/go-openapi/jsonreference v0.20.2 // indirect
- github.com/go-openapi/swag v0.22.3 // indirect
+ github.com/go-openapi/jsonpointer v0.21.2 // indirect
+ github.com/go-openapi/jsonreference v0.21.0 // indirect
+ github.com/go-openapi/swag v0.23.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/google/gnostic-models v0.6.8 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
- github.com/google/s2a-go v0.1.7 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
- github.com/googleapis/gax-go/v2 v2.12.0 // indirect
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect
+ github.com/google/btree v1.1.3 // indirect
+ github.com/google/gnostic-models v0.7.0 // indirect
+ github.com/google/go-cmp v0.7.0 // indirect
+ github.com/google/s2a-go v0.1.8 // indirect
+ github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect
+ github.com/googleapis/gax-go/v2 v2.13.0 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect
- github.com/hashicorp/hcl v1.0.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
+ github.com/kubeflow/spark-operator v0.0.0-20250325114751-1905be6e1dbd // indirect
github.com/kubeflow/training-operator v1.8.0 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
- github.com/mailru/easyjson v0.7.7 // indirect
- github.com/mattn/go-colorable v0.1.12 // indirect
- github.com/mattn/go-isatty v0.0.16 // indirect
+ github.com/mailru/easyjson v0.9.0 // indirect
+ github.com/mattn/go-colorable v0.1.13 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/ncw/swift v1.0.53 // indirect
github.com/onsi/ginkgo v1.16.5 // indirect
- github.com/pelletier/go-toml v1.9.4 // indirect
- github.com/pelletier/go-toml/v2 v2.0.0-beta.8 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/prometheus/client_model v0.6.1 // indirect
- github.com/prometheus/common v0.53.0 // indirect
- github.com/prometheus/procfs v0.15.1 // indirect
- github.com/ray-project/kuberay/ray-operator v1.1.0-rc.1 // indirect
- github.com/spf13/afero v1.8.2 // indirect
- github.com/spf13/cast v1.4.1 // indirect
- github.com/spf13/jwalterweatherman v1.1.0 // indirect
- github.com/spf13/viper v1.11.0 // indirect
+ 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/prometheus/client_model v0.6.2 // indirect
+ github.com/prometheus/common v0.65.0 // indirect
+ github.com/prometheus/procfs v0.17.0 // indirect
+ github.com/ray-project/kuberay/ray-operator v1.5.1 // indirect
+ github.com/sagikazarmark/locafero v0.11.0 // indirect
+ github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
+ github.com/spf13/afero v1.15.0 // indirect
+ github.com/spf13/cast v1.10.0 // indirect
+ github.com/spf13/viper v1.21.0 // indirect
+ github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
- github.com/subosito/gotenv v1.2.0 // indirect
+ github.com/subosito/gotenv v1.6.0 // indirect
github.com/tidwall/gjson v1.17.1 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.1 // indirect
github.com/tidwall/sjson v1.2.5 // indirect
+ github.com/x448/float16 v0.8.4 // indirect
go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
+ go.opentelemetry.io/auto/sdk v1.2.1 // indirect
+ go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 // indirect
- go.opentelemetry.io/otel/metric v1.24.0 // indirect
- go.opentelemetry.io/otel/sdk v1.24.0 // indirect
- go.opentelemetry.io/proto/otlp v1.1.0 // indirect
- golang.org/x/crypto v0.31.0 // indirect
- golang.org/x/net v0.33.0 // indirect
- golang.org/x/oauth2 v0.18.0 // indirect
- golang.org/x/sys v0.28.0 // indirect
- golang.org/x/term v0.27.0 // indirect
- golang.org/x/text v0.21.0 // indirect
+ go.opentelemetry.io/otel/metric v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.10.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.49.0 // indirect
+ golang.org/x/net v0.52.0 // indirect
+ golang.org/x/oauth2 v0.35.0 // indirect
+ golang.org/x/sys v0.42.0 // indirect
+ golang.org/x/term v0.41.0 // indirect
+ golang.org/x/text v0.35.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
- google.golang.org/api v0.155.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
- google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
+ google.golang.org/api v0.197.0 // indirect
+ google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
- gopkg.in/ini.v1 v1.66.4 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- k8s.io/component-base v0.29.0 // indirect
- k8s.io/klog/v2 v2.110.1 // indirect
- k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
- sigs.k8s.io/yaml v1.4.0 // indirect
+ k8s.io/klog/v2 v2.130.1 // indirect
+ k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3 // indirect
+ sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
+ sigs.k8s.io/randfill v1.0.0 // indirect
+ sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
+ sigs.k8s.io/yaml v1.6.0 // indirect
)
replace (
@@ -169,9 +193,4 @@ replace (
github.com/flyteorg/flyte/flyteidl => ../flyteidl
github.com/flyteorg/flyte/flyteplugins => ../flyteplugins
github.com/flyteorg/flyte/flytestdlib => ../flytestdlib
- k8s.io/api => k8s.io/api v0.28.2
- k8s.io/apimachinery => k8s.io/apimachinery v0.28.2
- k8s.io/client-go => k8s.io/client-go v0.28.2
- k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f
- sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.16.2
)
diff --git a/flytepropeller/go.sum b/flytepropeller/go.sum
index 66ce4c29241..d45179ff698 100644
--- a/flytepropeller/go.sum
+++ b/flytepropeller/go.sum
@@ -1,51 +1,26 @@
+cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
+cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
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.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
-cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
-cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
-cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
-cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
-cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
-cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
-cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
-cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
-cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
-cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
-cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
-cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
-cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM=
-cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4=
-cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
-cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
-cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
-cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
-cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
-cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=
-cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI=
-cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
-cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
-cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
-cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
-cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI=
-cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8=
-cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
-cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
-cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
-cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
-cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
-cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
-cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
-cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
-cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
-cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8=
-cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8=
-dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ=
+cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc=
+cloud.google.com/go/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U=
+cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk=
+cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
+cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
+cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
+cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
+cloud.google.com/go/iam v1.2.1 h1:QFct02HRb7H12J/3utj0qf5tobFh9V4vR6h9eX5EBRU=
+cloud.google.com/go/iam v1.2.1/go.mod h1:3VUIJDPpwT6p/amXRC5GY8fCCh70lxPygguVtI0Z4/g=
+cloud.google.com/go/logging v1.11.0 h1:v3ktVzXMV7CwHq1MBF65wcqLMA7i+z3YxbUsoK7mOKs=
+cloud.google.com/go/logging v1.11.0/go.mod h1:5LDiJC/RxTt+fHc1LAt20R9TKiUTReDg6RuuFOZ67+A=
+cloud.google.com/go/longrunning v0.6.1 h1:lOLTFxYpr8hcRtcwWir5ITh1PAKUD/sG2lKrTSYjyMc=
+cloud.google.com/go/longrunning v0.6.1/go.mod h1:nHISoOZpBcmlwbJmiVk5oDRz0qG/ZxPynEGs1iZ79s0=
+cloud.google.com/go/monitoring v1.21.0 h1:EMc0tB+d3lUewT2NzKC/hr8cSR9WsUieVywzIHetGro=
+cloud.google.com/go/monitoring v1.21.0/go.mod h1:tuJ+KNDdJbetSsbSGTqnaBvbauS5kr3Q/koy3Up6r+4=
+cloud.google.com/go/storage v1.45.0 h1:5av0QcIVj77t+44mV4gffFC/LscFRUhto6UBMB5SimM=
+cloud.google.com/go/storage v1.45.0/go.mod h1:wpPblkIuMP5jCB/E48Pz9zIo2S/zD8g+ITmxKkPCITE=
+cloud.google.com/go/trace v1.11.0 h1:UHX6cOJm45Zw/KIbqHe4kII8PupLt/V5tscZUkeiJVI=
+cloud.google.com/go/trace v1.11.0/go.mod h1:Aiemdi52635dBR7o3zuc9lLjXo3BwGaChEjCa3tJNmM=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc=
@@ -59,41 +34,61 @@ github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0/go.mod h1:WCPBHsOXfB
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
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/DiSiqueira/GoTree v1.0.1-0.20180907134536-53a8e837f295 h1:xJ0dAkuxJXfwdH7IaSzBEbSQxEDz36YUmt7+CB4zoNA=
github.com/DiSiqueira/GoTree v1.0.1-0.20180907134536-53a8e837f295/go.mod h1:e0aH495YLkrsIe9fhedd6aSR6fgU/qhKvtroi6y7G/M=
-github.com/GoogleCloudPlatform/spark-on-k8s-operator v0.0.0-20200723154620-6f35a1152625 h1:cQyO5JQ2iuHnEcF3v24kdDMsgh04RjyFPDtuvD6PCE0=
-github.com/GoogleCloudPlatform/spark-on-k8s-operator v0.0.0-20200723154620-6f35a1152625/go.mod h1:6PnrZv6zUDkrNMw0mIoGRmGBR7i9LulhKPmxFq4rUiM=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1/go.mod h1:jyqM3eLpJ3IbIFDTKVz2rF9T/xWGW0rIriGwnz8l9Tk=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1 h1:oTX4vsorBZo/Zdum6OKPA4o7544hm6smoRv1QjpTwGo=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1/go.mod h1:0wEl7vrAD8mehJyohS9HZy+WyEOaQO2mJx86Cvh93kM=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 h1:8nn+rsCvTq9axyEh382S0PFLBeaFwNsT43IrPWzctRU=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1/go.mod h1:viRWSEhtMZqz1rhwmOVKkWl6SwmVowfL9O2YR5gI2PE=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
-github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/aws/aws-sdk-go v1.47.11 h1:Dol+MA+hQblbnXUI3Vk9qvoekU6O1uDEuAItezjiWNQ=
-github.com/aws/aws-sdk-go v1.47.11/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
+github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8=
+github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
+github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
+github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
github.com/aws/aws-sdk-go-v2 v1.0.0/go.mod h1:smfAbmpW+tcRVuNUjo3MOArSZmW72t62rkCzc2i0TWM=
-github.com/aws/aws-sdk-go-v2 v1.2.0 h1:BS+UYpbsElC82gB+2E2jiCBg36i8HlubTB/dO/moQ9c=
-github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo=
-github.com/aws/aws-sdk-go-v2/config v1.0.0 h1:x6vSFAwqAvhYPeSu60f0ZUlGHo3PKKmwDOTL8aMXtv4=
-github.com/aws/aws-sdk-go-v2/config v1.0.0/go.mod h1:WysE/OpUgE37tjtmtJd8GXgT8s1euilE5XtUkRNUQ1w=
-github.com/aws/aws-sdk-go-v2/credentials v1.0.0 h1:0M7netgZ8gCV4v7z1km+Fbl7j6KQYyZL7SS0/l5Jn/4=
-github.com/aws/aws-sdk-go-v2/credentials v1.0.0/go.mod h1:/SvsiqBf509hG4Bddigr3NB12MIpfHhZapyBurJe8aY=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.0 h1:lO7fH5n7Q1dKcDBpuTmwJylD1bOQiRig8LI6TD9yVQk=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.0/go.mod h1:wpMHDCXvOXZxGCRSidyepa8uJHY4vaBGfY2/+oKU/Bc=
+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/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/athena v1.0.0 h1:UfrZP3NMTTKpOsf/P8uCaOxz3U2CNGEizdQKcObY7Ds=
github.com/aws/aws-sdk-go-v2/service/athena v1.0.0/go.mod h1:qY8QFbemf2ceqweXcS6hQqiiIe1z42WqTvHsK2Lb0rE=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.0 h1:IAutMPSrynpvKOpHG6HyWHmh1xmxWAmYOK84NrQVqVQ=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.0/go.mod h1:3jExOmpbjgPnz2FJaMOfbSk1heTkZ66aD3yNtVhnjvI=
-github.com/aws/aws-sdk-go-v2/service/sts v1.0.0 h1:6XCgxNfE4L/Fnq+InhVNd16DKc6Ue1f3dJl3IwwJRUQ=
-github.com/aws/aws-sdk-go-v2/service/sts v1.0.0/go.mod h1:5f+cELGATgill5Pu3/vK3Ebuigstc+qYEHW5MvGWZO4=
+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.0.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw=
-github.com/aws/smithy-go v1.1.0 h1:D6CSsM3gdxaGaqXnPgOBCeL6Mophqzu7KJOu7zW78sU=
-github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw=
+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/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1 h1:VRtJdDi2lqc3MFwmouppm2jlm6icF+7H3WYKpLENMTo=
github.com/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1/go.mod h1:jvdWlw8vowVGnZqSDC7yhPd7AifQeQbRDkZcQXV2nRg=
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/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
-github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+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 v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
@@ -101,101 +96,94 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927 h1:SKI1/fuSdodxmNNyVBR8d7X/HuLnRpvvFO0AgyQk764=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
-github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
github.com/coocood/freecache v1.1.1 h1:uukNF7QKCZEdZ9gAV7WQzvh0SbjwdMF6m3x3rxEkaPc=
github.com/coocood/freecache v1.1.1/go.mod h1:OKrEjkGVoxZhyWAJoeFi5BMLUJm2Tit0kpGkIr7NGYY=
-github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
-github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/dask/dask-kubernetes/v2023 v2023.0.0-20230626103304-abd02cd17b26 h1:6RByIva89lKEvwIzNQSUNcu8NG1p1wwwC4mJfVk/kqw=
github.com/dask/dask-kubernetes/v2023 v2023.0.0-20230626103304-abd02cd17b26/go.mod h1:OqIYr2QnxR3sQK2XahJIyWVcjz38LQ4GNcUzqezFpRg=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
-github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+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/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes=
+github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
+github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=
+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/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=
+github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
-github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
-github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
-github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/evanphx/json-patch/v5 v5.8.0 h1:lRj6N9Nci7MvzrXuX6HFzU8XjmhPiXPlsKEy1u0KQro=
-github.com/evanphx/json-patch/v5 v5.8.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
-github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
-github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
+github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=
+github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
+github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls=
+github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
+github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
+github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
+github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
+github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/flyteorg/stow v0.3.11 h1:Uf4fzVbghCqMNvx50XvYzwdNeQDBSKQJ7zddWu7p3eI=
-github.com/flyteorg/stow v0.3.11/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
+github.com/flyteorg/stow v0.3.12 h1:RRXI5RUdxaK6A46HrO0D2r14cRlW1lJRL6qyzqpVMPU=
+github.com/flyteorg/stow v0.3.12/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
+github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
+github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
-github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
+github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
+github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA=
+github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
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 v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
-github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+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-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
-github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
-github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
-github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
-github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
-github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
-github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
+github.com/go-openapi/jsonpointer v0.21.2 h1:AqQaNADVwq/VnkCmQg6ogE+M3FOsKTytwges0JdwVuA=
+github.com/go-openapi/jsonpointer v0.21.2/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk=
+github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
+github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
+github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU=
+github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0=
github.com/go-redis/redis v6.15.7+incompatible h1:3skhDh95XQMpnqeqNftPkQD9jL9e5e36z/1SUm6dy1U=
github.com/go-redis/redis v6.15.7+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
+github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
+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/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-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/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
-github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
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.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
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=
@@ -204,77 +192,47 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq
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.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/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/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
-github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
+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/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
+github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.4.1/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.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/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.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-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/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 h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
-github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
-github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=
-github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
-github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
-github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
+github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=
+github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
+github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8=
+github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
+github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM=
+github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
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/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
-github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
-github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
-github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
-github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
-github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
-github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
+github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw=
+github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA=
+github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s=
+github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A=
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/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
-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/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=
github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
-github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
-github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
@@ -289,43 +247,37 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
-github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/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.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
+github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
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/kubeflow/spark-operator v0.0.0-20250325114751-1905be6e1dbd h1:nNH2CU4UhtLUgq29LGcdpvkaPmtFM5gyjX8T+smXZRw=
+github.com/kubeflow/spark-operator v0.0.0-20250325114751-1905be6e1dbd/go.mod h1:qlTEw23y9A1Q5eGYCcM3nvv9wRvrQ0jTTLLYVueE95c=
github.com/kubeflow/training-operator v1.8.0 h1:cHXIz7BV3Ayp7W5Rqe20/ukmVEzraI+O/XRYKBHQcrg=
github.com/kubeflow/training-operator v1.8.0/go.mod h1:T6I15h1S09ncH5C6St/QEC7Dy6dpHZA5sPFo+VoJAvE=
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/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
-github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
-github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
-github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
-github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
-github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
-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/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
+github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
+github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
+github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
+github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
-github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/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 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/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/ncw/swift v1.0.53 h1:luHjjTNtekIEvHg5KdAFIBaH7bWfNkefwFnpDffSIks=
@@ -337,40 +289,41 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
-github.com/onsi/ginkgo/v2 v2.14.0 h1:vSmGj2Z5YPb9JwCWT6z6ihcUvDhuXLc3sJiqd3jMKAY=
-github.com/onsi/ginkgo/v2 v2.14.0/go.mod h1:JkUdW7JkN0V6rFvsHcJ478egV3XH9NxpD27Hal/PhZw=
+github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus=
+github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8=
-github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
+github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y=
+github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM=
-github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
+github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
+github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+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/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
-github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
+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.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc=
+github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
-github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE=
-github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U=
-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/ray-project/kuberay/ray-operator v1.1.0-rc.1 h1:skD8MXnQMO3QGUeTKt09VOXvuch/gJh8+6q3OLm0kAQ=
-github.com/ray-project/kuberay/ray-operator v1.1.0-rc.1/go.mod h1:ZqyKKvMP5nKDldQoKmur+Wcx7wVlV9Q98phFqHzr+KY=
-github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+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.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE=
+github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
+github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0=
+github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw=
+github.com/ray-project/kuberay/ray-operator v1.5.1 h1:7FJYmB8oM+cnjv1VYCj/TfzRZG4XHvvt5Ayn5pZ5A1c=
+github.com/ray-project/kuberay/ray-operator v1.5.1/go.mod h1:itUPJnr3QwoZT70gRgsWFpBolquuZtDRCkdA1lrAb7Y=
+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/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc=
+github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik=
github.com/santhosh-tekuri/jsonschema v1.2.4 h1:hNhW8e7t+H1vgY+1QeEQpveR6D4+OwKPXCfD2aieJis=
github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4=
github.com/shamaton/msgpack/v2 v2.2.2 h1:GOIg0c9LV04VwzOOqZSrmsv/JzjNOOMxnS/HvOHGdgs=
@@ -378,20 +331,23 @@ github.com/shamaton/msgpack/v2 v2.2.2/go.mod h1:6khjYnkx73f7VQU7wjcFS9DFjs+59naV
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/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
-github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
-github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
-github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
-github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
-github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
-github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
-github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44=
-github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk=
+github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
+github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
+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 v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
+github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
+github.com/spf13/pflag v1.0.6/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.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
+github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
+github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=
+github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=
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=
@@ -406,10 +362,10 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
-github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
+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.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
+github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U=
github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
@@ -422,382 +378,163 @@ github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
github.com/wI2L/jsondiff v0.6.0 h1:zrsH3FbfVa3JO9llxrcDy/XLkYPLgoMX6Mz3T2PP2AI=
github.com/wI2L/jsondiff v0.6.0/go.mod h1:D6aQ5gKgPF9g17j+E9N7aasmU1O+XvfmWm1y8UMmNpw=
-github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+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/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
gitlab.com/yvesf/json-schema-compare v0.0.0-20190604192943-a900c04201f7 h1:BAkxmYRc1ZPl6Gap4HWqwPT8yLZMrgaAwx12Ft408sg=
gitlab.com/yvesf/json-schema-compare v0.0.0-20190604192943-a900c04201f7/go.mod h1:X40Z1OU8o1oiXWzBmkuYOaruzYGv60l0AxGiB0E9keI=
-go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
-go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
-go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
+go.etcd.io/etcd/api/v3 v3.6.4 h1:7F6N7toCKcV72QmoUKa23yYLiiljMrT4xCeBL9BmXdo=
+go.etcd.io/etcd/api/v3 v3.6.4/go.mod h1:eFhhvfR8Px1P6SEuLT600v+vrhdDTdcfMzmnxVXXSbk=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
-go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
-go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
+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/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE=
+go.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk=
+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/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q=
+go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
+go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 h1:zr8ymM5OWWjjiWRzwTfZ67c905+2TMHYp2lMJ52QTyM=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0/go.mod h1:sQs7FT2iLVJ+67vYngGJkPe1qr39IzaBzaj9IDNNY8k=
-go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
-go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
-go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
-go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
-go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
-go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI=
-go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY=
+go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
+go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
+go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
+go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
+go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
+go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
+go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
+go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
+go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=
+go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
+go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
+go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
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.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
-go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
+go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
+go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
+go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
+go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v3 v3.0.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-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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
-golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
+golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
+golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
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-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
-golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
-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/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
+golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
golang.org/x/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-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
-golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/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.1.1-0.20191107180719-034126e5016b/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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
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-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-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-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/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-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200707034311-ab3426394381/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-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=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
-golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
+golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
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-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
-golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
+golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
+golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
-golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
+golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
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-20190215142949-d0b11bdaac8a/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-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-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-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
-golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
-golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
-golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
+golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=
+golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=
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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
-golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
+golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
+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-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-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-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
-golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
-golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
+golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=
+golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
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=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
-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/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
-google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
-google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
-google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
-google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
-google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA=
-google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk=
+gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
+gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
+google.golang.org/api v0.197.0 h1:x6CwqQLsFiA5JKAiGyGBjc2bNtHtLddhJCE2IKuhhcQ=
+google.golang.org/api v0.197.0/go.mod h1:AuOuo20GoQ331nq7DquGHlU6d+2wN2fZ8O0ta60nRNw=
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/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-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-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
-google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
-google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
-google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
+google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU=
+google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 h1:VPWxll4HlMw1Vs/qXtN7BvhZqsS9cdAittCNvVENElA=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
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.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
-google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
-google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
+google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM=
+google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4=
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=
@@ -806,22 +543,17 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi
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.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
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.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
-google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo=
+gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
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.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4=
-gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
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=
@@ -837,38 +569,30 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
-honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-k8s.io/api v0.28.2 h1:9mpl5mOb6vXZvqbQmankOfPIGiudghwCoLl1EYfUZbw=
-k8s.io/api v0.28.2/go.mod h1:RVnJBsjU8tcMq7C3iaRSGMeaKt2TWEUXcpIt/90fjEg=
-k8s.io/apiextensions-apiserver v0.29.0 h1:0VuspFG7Hj+SxyF/Z/2T0uFbI5gb5LRgEyUVE3Q4lV0=
-k8s.io/apiextensions-apiserver v0.29.0/go.mod h1:TKmpy3bTS0mr9pylH0nOt/QzQRrW7/h7yLdRForMZwc=
-k8s.io/apimachinery v0.28.2 h1:KCOJLrc6gu+wV1BYgwik4AF4vXOlVJPdiqn0yAWWwXQ=
-k8s.io/apimachinery v0.28.2/go.mod h1:RdzF87y/ngqk9H4z3EL2Rppv5jj95vGS/HaFXrLDApU=
-k8s.io/client-go v0.28.2 h1:DNoYI1vGq0slMBN/SWKMZMw0Rq+0EQW6/AK4v9+3VeY=
-k8s.io/client-go v0.28.2/go.mod h1:sMkApowspLuc7omj1FOSUxSoqjr+d5Q0Yc0LOFnYFJY=
-k8s.io/component-base v0.29.0 h1:T7rjd5wvLnPBV1vC4zWd/iWRbV8Mdxs+nGaoaFzGw3s=
-k8s.io/component-base v0.29.0/go.mod h1:sADonFTQ9Zc9yFLghpDpmNXEdHyQmFIGbiuZbqAXQ1M=
+k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
+k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
+k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI=
+k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc=
+k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4=
+k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
+k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY=
+k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8=
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
-k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0=
-k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo=
-k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f h1:eeEUOoGYWhOz7EyXqhlR2zHKNw2mNJ9vzJmub6YN6kk=
-k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
-k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
-k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
-rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
-rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
-sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU=
-sigs.k8s.io/controller-runtime v0.16.2/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
-sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
-sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
+k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
+k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
+k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3 h1:liMHz39T5dJO1aOKHLvwaCjDbf07wVh6yaUlTpunnkE=
+k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
+k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d h1:wAhiDyZ4Tdtt7e46e9M5ZSAJ/MnPGPs+Ki1gHw4w1R0=
+k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A=
+sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
+sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
+sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
diff --git a/flytepropeller/manager/config/config_flags_test.go b/flytepropeller/manager/config/config_flags_test.go
index 887452276a2..76fd9296b7b 100755
--- a/flytepropeller/manager/config/config_flags_test.go
+++ b/flytepropeller/manager/config/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytepropeller/manager/shardstrategy/mocks/shard_strategy.go b/flytepropeller/manager/shardstrategy/mocks/shard_strategy.go
index 6a0fb95422f..105e5a7ed4d 100644
--- a/flytepropeller/manager/shardstrategy/mocks/shard_strategy.go
+++ b/flytepropeller/manager/shardstrategy/mocks/shard_strategy.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -21,7 +21,7 @@ func (_m *ShardStrategy) EXPECT() *ShardStrategy_Expecter {
return &ShardStrategy_Expecter{mock: &_m.Mock}
}
-// GetPodCount provides a mock function with given fields:
+// GetPodCount provides a mock function with no fields
func (_m *ShardStrategy) GetPodCount() int {
ret := _m.Called()
@@ -66,7 +66,7 @@ func (_c *ShardStrategy_GetPodCount_Call) RunAndReturn(run func() int) *ShardStr
return _c
}
-// HashCode provides a mock function with given fields:
+// HashCode provides a mock function with no fields
func (_m *ShardStrategy) HashCode() (uint32, error) {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/BaseNode.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/BaseNode.go
index 48bb50366de..3cde8a4dbc7 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/BaseNode.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/BaseNode.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *BaseNode) EXPECT() *BaseNode_Expecter {
return &BaseNode_Expecter{mock: &_m.Mock}
}
-// GetID provides a mock function with given fields:
+// GetID provides a mock function with no fields
func (_m *BaseNode) GetID() string {
ret := _m.Called()
@@ -65,7 +65,7 @@ func (_c *BaseNode_GetID_Call) RunAndReturn(run func() string) *BaseNode_GetID_C
return _c
}
-// GetKind provides a mock function with given fields:
+// GetKind provides a mock function with no fields
func (_m *BaseNode) GetKind() v1alpha1.NodeKind {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/BaseWorkflow.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/BaseWorkflow.go
index 9efab26cd3d..34f47a85c96 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/BaseWorkflow.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/BaseWorkflow.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -78,7 +78,7 @@ func (_c *BaseWorkflow_FromNode_Call) RunAndReturn(run func(string) ([]string, e
return _c
}
-// GetID provides a mock function with given fields:
+// GetID provides a mock function with no fields
func (_m *BaseWorkflow) GetID() string {
ret := _m.Called()
@@ -181,7 +181,7 @@ func (_c *BaseWorkflow_GetNode_Call) RunAndReturn(run func(string) (v1alpha1.Exe
return _c
}
-// StartNode provides a mock function with given fields:
+// StartNode provides a mock function with no fields
func (_m *BaseWorkflow) StartNode() v1alpha1.ExecutableNode {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/BaseWorkflowWithStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/BaseWorkflowWithStatus.go
index 4bc33826049..046dd9a3860 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/BaseWorkflowWithStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/BaseWorkflowWithStatus.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -80,7 +80,7 @@ func (_c *BaseWorkflowWithStatus_FromNode_Call) RunAndReturn(run func(string) ([
return _c
}
-// GetID provides a mock function with given fields:
+// GetID provides a mock function with no fields
func (_m *BaseWorkflowWithStatus) GetID() string {
ret := _m.Called()
@@ -232,7 +232,7 @@ func (_c *BaseWorkflowWithStatus_GetNodeExecutionStatus_Call) RunAndReturn(run f
return _c
}
-// StartNode provides a mock function with given fields:
+// StartNode provides a mock function with no fields
func (_m *BaseWorkflowWithStatus) StartNode() v1alpha1.ExecutableNode {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/EnqueueWorkflow.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/EnqueueWorkflow.go
index 1c555d0d22c..08bb19dbfd0 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/EnqueueWorkflow.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/EnqueueWorkflow.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -46,7 +46,7 @@ func (_c *EnqueueWorkflow_Execute_Call) Return() *EnqueueWorkflow_Execute_Call {
}
func (_c *EnqueueWorkflow_Execute_Call) RunAndReturn(run func(string)) *EnqueueWorkflow_Execute_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableArrayNode.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableArrayNode.go
index 92d23ebfc4c..9ec1e0a84fb 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableArrayNode.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableArrayNode.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *ExecutableArrayNode) EXPECT() *ExecutableArrayNode_Expecter {
return &ExecutableArrayNode_Expecter{mock: &_m.Mock}
}
-// GetBoundInputs provides a mock function with given fields:
+// GetBoundInputs provides a mock function with no fields
func (_m *ExecutableArrayNode) GetBoundInputs() []string {
ret := _m.Called()
@@ -67,7 +67,7 @@ func (_c *ExecutableArrayNode_GetBoundInputs_Call) RunAndReturn(run func() []str
return _c
}
-// GetMinSuccessRatio provides a mock function with given fields:
+// GetMinSuccessRatio provides a mock function with no fields
func (_m *ExecutableArrayNode) GetMinSuccessRatio() *float32 {
ret := _m.Called()
@@ -114,7 +114,7 @@ func (_c *ExecutableArrayNode_GetMinSuccessRatio_Call) RunAndReturn(run func() *
return _c
}
-// GetMinSuccesses provides a mock function with given fields:
+// GetMinSuccesses provides a mock function with no fields
func (_m *ExecutableArrayNode) GetMinSuccesses() *uint32 {
ret := _m.Called()
@@ -161,7 +161,7 @@ func (_c *ExecutableArrayNode_GetMinSuccesses_Call) RunAndReturn(run func() *uin
return _c
}
-// GetParallelism provides a mock function with given fields:
+// GetParallelism provides a mock function with no fields
func (_m *ExecutableArrayNode) GetParallelism() *uint32 {
ret := _m.Called()
@@ -208,7 +208,7 @@ func (_c *ExecutableArrayNode_GetParallelism_Call) RunAndReturn(run func() *uint
return _c
}
-// GetSubNodeSpec provides a mock function with given fields:
+// GetSubNodeSpec provides a mock function with no fields
func (_m *ExecutableArrayNode) GetSubNodeSpec() *v1alpha1.NodeSpec {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableArrayNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableArrayNodeStatus.go
index 1eee91ed2cf..30c17ad6576 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableArrayNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableArrayNodeStatus.go
@@ -1,14 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
+ v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
bitarray "github.com/flyteorg/flyte/flytestdlib/bitarray"
-
mock "github.com/stretchr/testify/mock"
-
- v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
)
// ExecutableArrayNodeStatus is an autogenerated mock type for the ExecutableArrayNodeStatus type
@@ -24,7 +22,7 @@ func (_m *ExecutableArrayNodeStatus) EXPECT() *ExecutableArrayNodeStatus_Expecte
return &ExecutableArrayNodeStatus_Expecter{mock: &_m.Mock}
}
-// GetArrayNodePhase provides a mock function with given fields:
+// GetArrayNodePhase provides a mock function with no fields
func (_m *ExecutableArrayNodeStatus) GetArrayNodePhase() v1alpha1.ArrayNodePhase {
ret := _m.Called()
@@ -69,7 +67,7 @@ func (_c *ExecutableArrayNodeStatus_GetArrayNodePhase_Call) RunAndReturn(run fun
return _c
}
-// GetExecutionError provides a mock function with given fields:
+// GetExecutionError provides a mock function with no fields
func (_m *ExecutableArrayNodeStatus) GetExecutionError() *core.ExecutionError {
ret := _m.Called()
@@ -116,7 +114,7 @@ func (_c *ExecutableArrayNodeStatus_GetExecutionError_Call) RunAndReturn(run fun
return _c
}
-// GetSubNodeDeltaTimestamps provides a mock function with given fields:
+// GetSubNodeDeltaTimestamps provides a mock function with no fields
func (_m *ExecutableArrayNodeStatus) GetSubNodeDeltaTimestamps() bitarray.CompactArray {
ret := _m.Called()
@@ -161,7 +159,7 @@ func (_c *ExecutableArrayNodeStatus_GetSubNodeDeltaTimestamps_Call) RunAndReturn
return _c
}
-// GetSubNodePhases provides a mock function with given fields:
+// GetSubNodePhases provides a mock function with no fields
func (_m *ExecutableArrayNodeStatus) GetSubNodePhases() bitarray.CompactArray {
ret := _m.Called()
@@ -206,7 +204,7 @@ func (_c *ExecutableArrayNodeStatus_GetSubNodePhases_Call) RunAndReturn(run func
return _c
}
-// GetSubNodeRetryAttempts provides a mock function with given fields:
+// GetSubNodeRetryAttempts provides a mock function with no fields
func (_m *ExecutableArrayNodeStatus) GetSubNodeRetryAttempts() bitarray.CompactArray {
ret := _m.Called()
@@ -251,7 +249,7 @@ func (_c *ExecutableArrayNodeStatus_GetSubNodeRetryAttempts_Call) RunAndReturn(r
return _c
}
-// GetSubNodeSystemFailures provides a mock function with given fields:
+// GetSubNodeSystemFailures provides a mock function with no fields
func (_m *ExecutableArrayNodeStatus) GetSubNodeSystemFailures() bitarray.CompactArray {
ret := _m.Called()
@@ -296,7 +294,7 @@ func (_c *ExecutableArrayNodeStatus_GetSubNodeSystemFailures_Call) RunAndReturn(
return _c
}
-// GetSubNodeTaskPhases provides a mock function with given fields:
+// GetSubNodeTaskPhases provides a mock function with no fields
func (_m *ExecutableArrayNodeStatus) GetSubNodeTaskPhases() bitarray.CompactArray {
ret := _m.Called()
@@ -341,7 +339,7 @@ func (_c *ExecutableArrayNodeStatus_GetSubNodeTaskPhases_Call) RunAndReturn(run
return _c
}
-// GetTaskPhaseVersion provides a mock function with given fields:
+// GetTaskPhaseVersion provides a mock function with no fields
func (_m *ExecutableArrayNodeStatus) GetTaskPhaseVersion() uint32 {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableBranchNode.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableBranchNode.go
index 5c63753c7cc..9c430770da1 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableBranchNode.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableBranchNode.go
@@ -1,12 +1,11 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- mock "github.com/stretchr/testify/mock"
-
v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ mock "github.com/stretchr/testify/mock"
)
// ExecutableBranchNode is an autogenerated mock type for the ExecutableBranchNode type
@@ -22,7 +21,7 @@ func (_m *ExecutableBranchNode) EXPECT() *ExecutableBranchNode_Expecter {
return &ExecutableBranchNode_Expecter{mock: &_m.Mock}
}
-// GetElse provides a mock function with given fields:
+// GetElse provides a mock function with no fields
func (_m *ExecutableBranchNode) GetElse() *string {
ret := _m.Called()
@@ -69,7 +68,7 @@ func (_c *ExecutableBranchNode_GetElse_Call) RunAndReturn(run func() *string) *E
return _c
}
-// GetElseFail provides a mock function with given fields:
+// GetElseFail provides a mock function with no fields
func (_m *ExecutableBranchNode) GetElseFail() *core.Error {
ret := _m.Called()
@@ -116,7 +115,7 @@ func (_c *ExecutableBranchNode_GetElseFail_Call) RunAndReturn(run func() *core.E
return _c
}
-// GetElseIf provides a mock function with given fields:
+// GetElseIf provides a mock function with no fields
func (_m *ExecutableBranchNode) GetElseIf() []v1alpha1.ExecutableIfBlock {
ret := _m.Called()
@@ -163,7 +162,7 @@ func (_c *ExecutableBranchNode_GetElseIf_Call) RunAndReturn(run func() []v1alpha
return _c
}
-// GetIf provides a mock function with given fields:
+// GetIf provides a mock function with no fields
func (_m *ExecutableBranchNode) GetIf() v1alpha1.ExecutableIfBlock {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableBranchNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableBranchNodeStatus.go
index f7add443230..6767eaf563c 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableBranchNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableBranchNodeStatus.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *ExecutableBranchNodeStatus) EXPECT() *ExecutableBranchNodeStatus_Expec
return &ExecutableBranchNodeStatus_Expecter{mock: &_m.Mock}
}
-// GetFinalizedNode provides a mock function with given fields:
+// GetFinalizedNode provides a mock function with no fields
func (_m *ExecutableBranchNodeStatus) GetFinalizedNode() *string {
ret := _m.Called()
@@ -67,7 +67,7 @@ func (_c *ExecutableBranchNodeStatus_GetFinalizedNode_Call) RunAndReturn(run fun
return _c
}
-// GetPhase provides a mock function with given fields:
+// GetPhase provides a mock function with no fields
func (_m *ExecutableBranchNodeStatus) GetPhase() v1alpha1.BranchNodePhase {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableDynamicNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableDynamicNodeStatus.go
index 70250cc87a3..c7468b9f9d7 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableDynamicNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableDynamicNodeStatus.go
@@ -1,12 +1,11 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- mock "github.com/stretchr/testify/mock"
-
v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ mock "github.com/stretchr/testify/mock"
)
// ExecutableDynamicNodeStatus is an autogenerated mock type for the ExecutableDynamicNodeStatus type
@@ -22,7 +21,7 @@ func (_m *ExecutableDynamicNodeStatus) EXPECT() *ExecutableDynamicNodeStatus_Exp
return &ExecutableDynamicNodeStatus_Expecter{mock: &_m.Mock}
}
-// GetDynamicNodePhase provides a mock function with given fields:
+// GetDynamicNodePhase provides a mock function with no fields
func (_m *ExecutableDynamicNodeStatus) GetDynamicNodePhase() v1alpha1.DynamicNodePhase {
ret := _m.Called()
@@ -67,7 +66,7 @@ func (_c *ExecutableDynamicNodeStatus_GetDynamicNodePhase_Call) RunAndReturn(run
return _c
}
-// GetDynamicNodeReason provides a mock function with given fields:
+// GetDynamicNodeReason provides a mock function with no fields
func (_m *ExecutableDynamicNodeStatus) GetDynamicNodeReason() string {
ret := _m.Called()
@@ -112,7 +111,7 @@ func (_c *ExecutableDynamicNodeStatus_GetDynamicNodeReason_Call) RunAndReturn(ru
return _c
}
-// GetExecutionError provides a mock function with given fields:
+// GetExecutionError provides a mock function with no fields
func (_m *ExecutableDynamicNodeStatus) GetExecutionError() *core.ExecutionError {
ret := _m.Called()
@@ -159,7 +158,7 @@ func (_c *ExecutableDynamicNodeStatus_GetExecutionError_Call) RunAndReturn(run f
return _c
}
-// GetIsFailurePermanent provides a mock function with given fields:
+// GetIsFailurePermanent provides a mock function with no fields
func (_m *ExecutableDynamicNodeStatus) GetIsFailurePermanent() bool {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableGateNode.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableGateNode.go
index 28581027bd7..e0d3e4fa544 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableGateNode.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableGateNode.go
@@ -1,12 +1,11 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- mock "github.com/stretchr/testify/mock"
-
v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ mock "github.com/stretchr/testify/mock"
)
// ExecutableGateNode is an autogenerated mock type for the ExecutableGateNode type
@@ -22,7 +21,7 @@ func (_m *ExecutableGateNode) EXPECT() *ExecutableGateNode_Expecter {
return &ExecutableGateNode_Expecter{mock: &_m.Mock}
}
-// GetApprove provides a mock function with given fields:
+// GetApprove provides a mock function with no fields
func (_m *ExecutableGateNode) GetApprove() *core.ApproveCondition {
ret := _m.Called()
@@ -69,7 +68,7 @@ func (_c *ExecutableGateNode_GetApprove_Call) RunAndReturn(run func() *core.Appr
return _c
}
-// GetKind provides a mock function with given fields:
+// GetKind provides a mock function with no fields
func (_m *ExecutableGateNode) GetKind() v1alpha1.ConditionKind {
ret := _m.Called()
@@ -114,7 +113,7 @@ func (_c *ExecutableGateNode_GetKind_Call) RunAndReturn(run func() v1alpha1.Cond
return _c
}
-// GetSignal provides a mock function with given fields:
+// GetSignal provides a mock function with no fields
func (_m *ExecutableGateNode) GetSignal() *core.SignalCondition {
ret := _m.Called()
@@ -161,7 +160,7 @@ func (_c *ExecutableGateNode_GetSignal_Call) RunAndReturn(run func() *core.Signa
return _c
}
-// GetSleep provides a mock function with given fields:
+// GetSleep provides a mock function with no fields
func (_m *ExecutableGateNode) GetSleep() *core.SleepCondition {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableGateNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableGateNodeStatus.go
index 783cd55cc6b..495409384ab 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableGateNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableGateNodeStatus.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *ExecutableGateNodeStatus) EXPECT() *ExecutableGateNodeStatus_Expecter
return &ExecutableGateNodeStatus_Expecter{mock: &_m.Mock}
}
-// GetGateNodePhase provides a mock function with given fields:
+// GetGateNodePhase provides a mock function with no fields
func (_m *ExecutableGateNodeStatus) GetGateNodePhase() v1alpha1.GateNodePhase {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableIfBlock.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableIfBlock.go
index b621a0db0b4..6d73f9c7b6e 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableIfBlock.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableIfBlock.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *ExecutableIfBlock) EXPECT() *ExecutableIfBlock_Expecter {
return &ExecutableIfBlock_Expecter{mock: &_m.Mock}
}
-// GetCondition provides a mock function with given fields:
+// GetCondition provides a mock function with no fields
func (_m *ExecutableIfBlock) GetCondition() *core.BooleanExpression {
ret := _m.Called()
@@ -67,7 +67,7 @@ func (_c *ExecutableIfBlock_GetCondition_Call) RunAndReturn(run func() *core.Boo
return _c
}
-// GetThenNode provides a mock function with given fields:
+// GetThenNode provides a mock function with no fields
func (_m *ExecutableIfBlock) GetThenNode() *string {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableNode.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableNode.go
index 06ed58322cb..36e4ad96a3b 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableNode.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableNode.go
@@ -1,16 +1,14 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
- core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- mock "github.com/stretchr/testify/mock"
-
time "time"
- v1 "k8s.io/api/core/v1"
-
+ core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ mock "github.com/stretchr/testify/mock"
+ v1 "k8s.io/api/core/v1"
)
// ExecutableNode is an autogenerated mock type for the ExecutableNode type
@@ -26,7 +24,7 @@ func (_m *ExecutableNode) EXPECT() *ExecutableNode_Expecter {
return &ExecutableNode_Expecter{mock: &_m.Mock}
}
-// GetActiveDeadline provides a mock function with given fields:
+// GetActiveDeadline provides a mock function with no fields
func (_m *ExecutableNode) GetActiveDeadline() *time.Duration {
ret := _m.Called()
@@ -73,7 +71,7 @@ func (_c *ExecutableNode_GetActiveDeadline_Call) RunAndReturn(run func() *time.D
return _c
}
-// GetArrayNode provides a mock function with given fields:
+// GetArrayNode provides a mock function with no fields
func (_m *ExecutableNode) GetArrayNode() v1alpha1.ExecutableArrayNode {
ret := _m.Called()
@@ -120,7 +118,7 @@ func (_c *ExecutableNode_GetArrayNode_Call) RunAndReturn(run func() v1alpha1.Exe
return _c
}
-// GetBranchNode provides a mock function with given fields:
+// GetBranchNode provides a mock function with no fields
func (_m *ExecutableNode) GetBranchNode() v1alpha1.ExecutableBranchNode {
ret := _m.Called()
@@ -167,7 +165,7 @@ func (_c *ExecutableNode_GetBranchNode_Call) RunAndReturn(run func() v1alpha1.Ex
return _c
}
-// GetConfig provides a mock function with given fields:
+// GetConfig provides a mock function with no fields
func (_m *ExecutableNode) GetConfig() *v1.ConfigMap {
ret := _m.Called()
@@ -214,7 +212,7 @@ func (_c *ExecutableNode_GetConfig_Call) RunAndReturn(run func() *v1.ConfigMap)
return _c
}
-// GetContainerImage provides a mock function with given fields:
+// GetContainerImage provides a mock function with no fields
func (_m *ExecutableNode) GetContainerImage() string {
ret := _m.Called()
@@ -259,7 +257,7 @@ func (_c *ExecutableNode_GetContainerImage_Call) RunAndReturn(run func() string)
return _c
}
-// GetExecutionDeadline provides a mock function with given fields:
+// GetExecutionDeadline provides a mock function with no fields
func (_m *ExecutableNode) GetExecutionDeadline() *time.Duration {
ret := _m.Called()
@@ -306,7 +304,7 @@ func (_c *ExecutableNode_GetExecutionDeadline_Call) RunAndReturn(run func() *tim
return _c
}
-// GetExtendedResources provides a mock function with given fields:
+// GetExtendedResources provides a mock function with no fields
func (_m *ExecutableNode) GetExtendedResources() *core.ExtendedResources {
ret := _m.Called()
@@ -353,7 +351,7 @@ func (_c *ExecutableNode_GetExtendedResources_Call) RunAndReturn(run func() *cor
return _c
}
-// GetGateNode provides a mock function with given fields:
+// GetGateNode provides a mock function with no fields
func (_m *ExecutableNode) GetGateNode() v1alpha1.ExecutableGateNode {
ret := _m.Called()
@@ -400,7 +398,7 @@ func (_c *ExecutableNode_GetGateNode_Call) RunAndReturn(run func() v1alpha1.Exec
return _c
}
-// GetID provides a mock function with given fields:
+// GetID provides a mock function with no fields
func (_m *ExecutableNode) GetID() string {
ret := _m.Called()
@@ -445,7 +443,7 @@ func (_c *ExecutableNode_GetID_Call) RunAndReturn(run func() string) *Executable
return _c
}
-// GetInputBindings provides a mock function with given fields:
+// GetInputBindings provides a mock function with no fields
func (_m *ExecutableNode) GetInputBindings() []*v1alpha1.Binding {
ret := _m.Called()
@@ -492,7 +490,7 @@ func (_c *ExecutableNode_GetInputBindings_Call) RunAndReturn(run func() []*v1alp
return _c
}
-// GetKind provides a mock function with given fields:
+// GetKind provides a mock function with no fields
func (_m *ExecutableNode) GetKind() v1alpha1.NodeKind {
ret := _m.Called()
@@ -537,7 +535,7 @@ func (_c *ExecutableNode_GetKind_Call) RunAndReturn(run func() v1alpha1.NodeKind
return _c
}
-// GetName provides a mock function with given fields:
+// GetName provides a mock function with no fields
func (_m *ExecutableNode) GetName() string {
ret := _m.Called()
@@ -582,7 +580,7 @@ func (_c *ExecutableNode_GetName_Call) RunAndReturn(run func() string) *Executab
return _c
}
-// GetOutputAlias provides a mock function with given fields:
+// GetOutputAlias provides a mock function with no fields
func (_m *ExecutableNode) GetOutputAlias() []v1alpha1.Alias {
ret := _m.Called()
@@ -629,7 +627,7 @@ func (_c *ExecutableNode_GetOutputAlias_Call) RunAndReturn(run func() []v1alpha1
return _c
}
-// GetPodTemplate provides a mock function with given fields:
+// GetPodTemplate provides a mock function with no fields
func (_m *ExecutableNode) GetPodTemplate() *core.K8SPod {
ret := _m.Called()
@@ -676,7 +674,7 @@ func (_c *ExecutableNode_GetPodTemplate_Call) RunAndReturn(run func() *core.K8SP
return _c
}
-// GetResources provides a mock function with given fields:
+// GetResources provides a mock function with no fields
func (_m *ExecutableNode) GetResources() *v1.ResourceRequirements {
ret := _m.Called()
@@ -723,7 +721,7 @@ func (_c *ExecutableNode_GetResources_Call) RunAndReturn(run func() *v1.Resource
return _c
}
-// GetRetryStrategy provides a mock function with given fields:
+// GetRetryStrategy provides a mock function with no fields
func (_m *ExecutableNode) GetRetryStrategy() *v1alpha1.RetryStrategy {
ret := _m.Called()
@@ -770,7 +768,7 @@ func (_c *ExecutableNode_GetRetryStrategy_Call) RunAndReturn(run func() *v1alpha
return _c
}
-// GetTaskID provides a mock function with given fields:
+// GetTaskID provides a mock function with no fields
func (_m *ExecutableNode) GetTaskID() *string {
ret := _m.Called()
@@ -817,7 +815,7 @@ func (_c *ExecutableNode_GetTaskID_Call) RunAndReturn(run func() *string) *Execu
return _c
}
-// GetWorkflowNode provides a mock function with given fields:
+// GetWorkflowNode provides a mock function with no fields
func (_m *ExecutableNode) GetWorkflowNode() v1alpha1.ExecutableWorkflowNode {
ret := _m.Called()
@@ -864,7 +862,7 @@ func (_c *ExecutableNode_GetWorkflowNode_Call) RunAndReturn(run func() v1alpha1.
return _c
}
-// IsEndNode provides a mock function with given fields:
+// IsEndNode provides a mock function with no fields
func (_m *ExecutableNode) IsEndNode() bool {
ret := _m.Called()
@@ -909,7 +907,7 @@ func (_c *ExecutableNode_IsEndNode_Call) RunAndReturn(run func() bool) *Executab
return _c
}
-// IsInterruptible provides a mock function with given fields:
+// IsInterruptible provides a mock function with no fields
func (_m *ExecutableNode) IsInterruptible() *bool {
ret := _m.Called()
@@ -956,7 +954,7 @@ func (_c *ExecutableNode_IsInterruptible_Call) RunAndReturn(run func() *bool) *E
return _c
}
-// IsStartNode provides a mock function with given fields:
+// IsStartNode provides a mock function with no fields
func (_m *ExecutableNode) IsStartNode() bool {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableNodeStatus.go
index ffbe1ec78df..c23e5efe75c 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableNodeStatus.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,13 +6,10 @@ import (
context "context"
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- mock "github.com/stretchr/testify/mock"
-
+ v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
storage "github.com/flyteorg/flyte/flytestdlib/storage"
-
+ mock "github.com/stretchr/testify/mock"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
- v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
)
// ExecutableNodeStatus is an autogenerated mock type for the ExecutableNodeStatus type
@@ -28,7 +25,7 @@ func (_m *ExecutableNodeStatus) EXPECT() *ExecutableNodeStatus_Expecter {
return &ExecutableNodeStatus_Expecter{mock: &_m.Mock}
}
-// ClearArrayNodeStatus provides a mock function with given fields:
+// ClearArrayNodeStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) ClearArrayNodeStatus() {
_m.Called()
}
@@ -56,11 +53,11 @@ func (_c *ExecutableNodeStatus_ClearArrayNodeStatus_Call) Return() *ExecutableNo
}
func (_c *ExecutableNodeStatus_ClearArrayNodeStatus_Call) RunAndReturn(run func()) *ExecutableNodeStatus_ClearArrayNodeStatus_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// ClearDynamicNodeStatus provides a mock function with given fields:
+// ClearDynamicNodeStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) ClearDynamicNodeStatus() {
_m.Called()
}
@@ -88,11 +85,11 @@ func (_c *ExecutableNodeStatus_ClearDynamicNodeStatus_Call) Return() *Executable
}
func (_c *ExecutableNodeStatus_ClearDynamicNodeStatus_Call) RunAndReturn(run func()) *ExecutableNodeStatus_ClearDynamicNodeStatus_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// ClearGateNodeStatus provides a mock function with given fields:
+// ClearGateNodeStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) ClearGateNodeStatus() {
_m.Called()
}
@@ -120,11 +117,11 @@ func (_c *ExecutableNodeStatus_ClearGateNodeStatus_Call) Return() *ExecutableNod
}
func (_c *ExecutableNodeStatus_ClearGateNodeStatus_Call) RunAndReturn(run func()) *ExecutableNodeStatus_ClearGateNodeStatus_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// ClearLastAttemptStartedAt provides a mock function with given fields:
+// ClearLastAttemptStartedAt provides a mock function with no fields
func (_m *ExecutableNodeStatus) ClearLastAttemptStartedAt() {
_m.Called()
}
@@ -152,11 +149,11 @@ func (_c *ExecutableNodeStatus_ClearLastAttemptStartedAt_Call) Return() *Executa
}
func (_c *ExecutableNodeStatus_ClearLastAttemptStartedAt_Call) RunAndReturn(run func()) *ExecutableNodeStatus_ClearLastAttemptStartedAt_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// ClearSubNodeStatus provides a mock function with given fields:
+// ClearSubNodeStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) ClearSubNodeStatus() {
_m.Called()
}
@@ -184,11 +181,11 @@ func (_c *ExecutableNodeStatus_ClearSubNodeStatus_Call) Return() *ExecutableNode
}
func (_c *ExecutableNodeStatus_ClearSubNodeStatus_Call) RunAndReturn(run func()) *ExecutableNodeStatus_ClearSubNodeStatus_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// ClearTaskStatus provides a mock function with given fields:
+// ClearTaskStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) ClearTaskStatus() {
_m.Called()
}
@@ -216,11 +213,11 @@ func (_c *ExecutableNodeStatus_ClearTaskStatus_Call) Return() *ExecutableNodeSta
}
func (_c *ExecutableNodeStatus_ClearTaskStatus_Call) RunAndReturn(run func()) *ExecutableNodeStatus_ClearTaskStatus_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// ClearWorkflowStatus provides a mock function with given fields:
+// ClearWorkflowStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) ClearWorkflowStatus() {
_m.Called()
}
@@ -248,11 +245,11 @@ func (_c *ExecutableNodeStatus_ClearWorkflowStatus_Call) Return() *ExecutableNod
}
func (_c *ExecutableNodeStatus_ClearWorkflowStatus_Call) RunAndReturn(run func()) *ExecutableNodeStatus_ClearWorkflowStatus_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// GetArrayNodeStatus provides a mock function with given fields:
+// GetArrayNodeStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetArrayNodeStatus() v1alpha1.MutableArrayNodeStatus {
ret := _m.Called()
@@ -299,7 +296,7 @@ func (_c *ExecutableNodeStatus_GetArrayNodeStatus_Call) RunAndReturn(run func()
return _c
}
-// GetAttempts provides a mock function with given fields:
+// GetAttempts provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetAttempts() uint32 {
ret := _m.Called()
@@ -344,7 +341,7 @@ func (_c *ExecutableNodeStatus_GetAttempts_Call) RunAndReturn(run func() uint32)
return _c
}
-// GetBranchStatus provides a mock function with given fields:
+// GetBranchStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetBranchStatus() v1alpha1.MutableBranchNodeStatus {
ret := _m.Called()
@@ -391,7 +388,7 @@ func (_c *ExecutableNodeStatus_GetBranchStatus_Call) RunAndReturn(run func() v1a
return _c
}
-// GetDataDir provides a mock function with given fields:
+// GetDataDir provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetDataDir() storage.DataReference {
ret := _m.Called()
@@ -436,7 +433,7 @@ func (_c *ExecutableNodeStatus_GetDataDir_Call) RunAndReturn(run func() storage.
return _c
}
-// GetDynamicNodeStatus provides a mock function with given fields:
+// GetDynamicNodeStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetDynamicNodeStatus() v1alpha1.MutableDynamicNodeStatus {
ret := _m.Called()
@@ -483,7 +480,7 @@ func (_c *ExecutableNodeStatus_GetDynamicNodeStatus_Call) RunAndReturn(run func(
return _c
}
-// GetExecutionError provides a mock function with given fields:
+// GetExecutionError provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetExecutionError() *core.ExecutionError {
ret := _m.Called()
@@ -530,7 +527,7 @@ func (_c *ExecutableNodeStatus_GetExecutionError_Call) RunAndReturn(run func() *
return _c
}
-// GetGateNodeStatus provides a mock function with given fields:
+// GetGateNodeStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetGateNodeStatus() v1alpha1.MutableGateNodeStatus {
ret := _m.Called()
@@ -577,7 +574,7 @@ func (_c *ExecutableNodeStatus_GetGateNodeStatus_Call) RunAndReturn(run func() v
return _c
}
-// GetLastAttemptStartedAt provides a mock function with given fields:
+// GetLastAttemptStartedAt provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetLastAttemptStartedAt() *v1.Time {
ret := _m.Called()
@@ -624,7 +621,7 @@ func (_c *ExecutableNodeStatus_GetLastAttemptStartedAt_Call) RunAndReturn(run fu
return _c
}
-// GetLastUpdatedAt provides a mock function with given fields:
+// GetLastUpdatedAt provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetLastUpdatedAt() *v1.Time {
ret := _m.Called()
@@ -671,7 +668,7 @@ func (_c *ExecutableNodeStatus_GetLastUpdatedAt_Call) RunAndReturn(run func() *v
return _c
}
-// GetMessage provides a mock function with given fields:
+// GetMessage provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetMessage() string {
ret := _m.Called()
@@ -765,7 +762,7 @@ func (_c *ExecutableNodeStatus_GetNodeExecutionStatus_Call) RunAndReturn(run fun
return _c
}
-// GetOrCreateArrayNodeStatus provides a mock function with given fields:
+// GetOrCreateArrayNodeStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetOrCreateArrayNodeStatus() v1alpha1.MutableArrayNodeStatus {
ret := _m.Called()
@@ -812,7 +809,7 @@ func (_c *ExecutableNodeStatus_GetOrCreateArrayNodeStatus_Call) RunAndReturn(run
return _c
}
-// GetOrCreateBranchStatus provides a mock function with given fields:
+// GetOrCreateBranchStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetOrCreateBranchStatus() v1alpha1.MutableBranchNodeStatus {
ret := _m.Called()
@@ -859,7 +856,7 @@ func (_c *ExecutableNodeStatus_GetOrCreateBranchStatus_Call) RunAndReturn(run fu
return _c
}
-// GetOrCreateDynamicNodeStatus provides a mock function with given fields:
+// GetOrCreateDynamicNodeStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetOrCreateDynamicNodeStatus() v1alpha1.MutableDynamicNodeStatus {
ret := _m.Called()
@@ -906,7 +903,7 @@ func (_c *ExecutableNodeStatus_GetOrCreateDynamicNodeStatus_Call) RunAndReturn(r
return _c
}
-// GetOrCreateGateNodeStatus provides a mock function with given fields:
+// GetOrCreateGateNodeStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetOrCreateGateNodeStatus() v1alpha1.MutableGateNodeStatus {
ret := _m.Called()
@@ -953,7 +950,7 @@ func (_c *ExecutableNodeStatus_GetOrCreateGateNodeStatus_Call) RunAndReturn(run
return _c
}
-// GetOrCreateTaskStatus provides a mock function with given fields:
+// GetOrCreateTaskStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetOrCreateTaskStatus() v1alpha1.MutableTaskNodeStatus {
ret := _m.Called()
@@ -1000,7 +997,7 @@ func (_c *ExecutableNodeStatus_GetOrCreateTaskStatus_Call) RunAndReturn(run func
return _c
}
-// GetOrCreateWorkflowStatus provides a mock function with given fields:
+// GetOrCreateWorkflowStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetOrCreateWorkflowStatus() v1alpha1.MutableWorkflowNodeStatus {
ret := _m.Called()
@@ -1047,7 +1044,7 @@ func (_c *ExecutableNodeStatus_GetOrCreateWorkflowStatus_Call) RunAndReturn(run
return _c
}
-// GetOutputDir provides a mock function with given fields:
+// GetOutputDir provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetOutputDir() storage.DataReference {
ret := _m.Called()
@@ -1092,7 +1089,7 @@ func (_c *ExecutableNodeStatus_GetOutputDir_Call) RunAndReturn(run func() storag
return _c
}
-// GetParentNodeID provides a mock function with given fields:
+// GetParentNodeID provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetParentNodeID() *string {
ret := _m.Called()
@@ -1139,7 +1136,7 @@ func (_c *ExecutableNodeStatus_GetParentNodeID_Call) RunAndReturn(run func() *st
return _c
}
-// GetParentTaskID provides a mock function with given fields:
+// GetParentTaskID provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetParentTaskID() *core.TaskExecutionIdentifier {
ret := _m.Called()
@@ -1186,7 +1183,7 @@ func (_c *ExecutableNodeStatus_GetParentTaskID_Call) RunAndReturn(run func() *co
return _c
}
-// GetPhase provides a mock function with given fields:
+// GetPhase provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetPhase() v1alpha1.NodePhase {
ret := _m.Called()
@@ -1231,7 +1228,7 @@ func (_c *ExecutableNodeStatus_GetPhase_Call) RunAndReturn(run func() v1alpha1.N
return _c
}
-// GetQueuedAt provides a mock function with given fields:
+// GetQueuedAt provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetQueuedAt() *v1.Time {
ret := _m.Called()
@@ -1278,7 +1275,7 @@ func (_c *ExecutableNodeStatus_GetQueuedAt_Call) RunAndReturn(run func() *v1.Tim
return _c
}
-// GetStartedAt provides a mock function with given fields:
+// GetStartedAt provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetStartedAt() *v1.Time {
ret := _m.Called()
@@ -1325,7 +1322,7 @@ func (_c *ExecutableNodeStatus_GetStartedAt_Call) RunAndReturn(run func() *v1.Ti
return _c
}
-// GetStoppedAt provides a mock function with given fields:
+// GetStoppedAt provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetStoppedAt() *v1.Time {
ret := _m.Called()
@@ -1372,7 +1369,7 @@ func (_c *ExecutableNodeStatus_GetStoppedAt_Call) RunAndReturn(run func() *v1.Ti
return _c
}
-// GetSystemFailures provides a mock function with given fields:
+// GetSystemFailures provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetSystemFailures() uint32 {
ret := _m.Called()
@@ -1417,7 +1414,7 @@ func (_c *ExecutableNodeStatus_GetSystemFailures_Call) RunAndReturn(run func() u
return _c
}
-// GetTaskNodeStatus provides a mock function with given fields:
+// GetTaskNodeStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetTaskNodeStatus() v1alpha1.ExecutableTaskNodeStatus {
ret := _m.Called()
@@ -1464,7 +1461,7 @@ func (_c *ExecutableNodeStatus_GetTaskNodeStatus_Call) RunAndReturn(run func() v
return _c
}
-// GetTaskStatus provides a mock function with given fields:
+// GetTaskStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetTaskStatus() v1alpha1.MutableTaskNodeStatus {
ret := _m.Called()
@@ -1511,7 +1508,7 @@ func (_c *ExecutableNodeStatus_GetTaskStatus_Call) RunAndReturn(run func() v1alp
return _c
}
-// GetWorkflowNodeStatus provides a mock function with given fields:
+// GetWorkflowNodeStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetWorkflowNodeStatus() v1alpha1.ExecutableWorkflowNodeStatus {
ret := _m.Called()
@@ -1558,7 +1555,7 @@ func (_c *ExecutableNodeStatus_GetWorkflowNodeStatus_Call) RunAndReturn(run func
return _c
}
-// GetWorkflowStatus provides a mock function with given fields:
+// GetWorkflowStatus provides a mock function with no fields
func (_m *ExecutableNodeStatus) GetWorkflowStatus() v1alpha1.MutableWorkflowNodeStatus {
ret := _m.Called()
@@ -1605,7 +1602,7 @@ func (_c *ExecutableNodeStatus_GetWorkflowStatus_Call) RunAndReturn(run func() v
return _c
}
-// IncrementAttempts provides a mock function with given fields:
+// IncrementAttempts provides a mock function with no fields
func (_m *ExecutableNodeStatus) IncrementAttempts() uint32 {
ret := _m.Called()
@@ -1650,7 +1647,7 @@ func (_c *ExecutableNodeStatus_IncrementAttempts_Call) RunAndReturn(run func() u
return _c
}
-// IncrementSystemFailures provides a mock function with given fields:
+// IncrementSystemFailures provides a mock function with no fields
func (_m *ExecutableNodeStatus) IncrementSystemFailures() uint32 {
ret := _m.Called()
@@ -1695,7 +1692,7 @@ func (_c *ExecutableNodeStatus_IncrementSystemFailures_Call) RunAndReturn(run fu
return _c
}
-// IsCached provides a mock function with given fields:
+// IsCached provides a mock function with no fields
func (_m *ExecutableNodeStatus) IsCached() bool {
ret := _m.Called()
@@ -1740,7 +1737,7 @@ func (_c *ExecutableNodeStatus_IsCached_Call) RunAndReturn(run func() bool) *Exe
return _c
}
-// IsDirty provides a mock function with given fields:
+// IsDirty provides a mock function with no fields
func (_m *ExecutableNodeStatus) IsDirty() bool {
ret := _m.Called()
@@ -1785,7 +1782,7 @@ func (_c *ExecutableNodeStatus_IsDirty_Call) RunAndReturn(run func() bool) *Exec
return _c
}
-// ResetDirty provides a mock function with given fields:
+// ResetDirty provides a mock function with no fields
func (_m *ExecutableNodeStatus) ResetDirty() {
_m.Called()
}
@@ -1813,11 +1810,11 @@ func (_c *ExecutableNodeStatus_ResetDirty_Call) Return() *ExecutableNodeStatus_R
}
func (_c *ExecutableNodeStatus_ResetDirty_Call) RunAndReturn(run func()) *ExecutableNodeStatus_ResetDirty_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// SetCached provides a mock function with given fields:
+// SetCached provides a mock function with no fields
func (_m *ExecutableNodeStatus) SetCached() {
_m.Called()
}
@@ -1845,7 +1842,7 @@ func (_c *ExecutableNodeStatus_SetCached_Call) Return() *ExecutableNodeStatus_Se
}
func (_c *ExecutableNodeStatus_SetCached_Call) RunAndReturn(run func()) *ExecutableNodeStatus_SetCached_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -1878,7 +1875,7 @@ func (_c *ExecutableNodeStatus_SetDataDir_Call) Return() *ExecutableNodeStatus_S
}
func (_c *ExecutableNodeStatus_SetDataDir_Call) RunAndReturn(run func(storage.DataReference)) *ExecutableNodeStatus_SetDataDir_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -1911,7 +1908,7 @@ func (_c *ExecutableNodeStatus_SetOutputDir_Call) Return() *ExecutableNodeStatus
}
func (_c *ExecutableNodeStatus_SetOutputDir_Call) RunAndReturn(run func(storage.DataReference)) *ExecutableNodeStatus_SetOutputDir_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -1944,7 +1941,7 @@ func (_c *ExecutableNodeStatus_SetParentNodeID_Call) Return() *ExecutableNodeSta
}
func (_c *ExecutableNodeStatus_SetParentNodeID_Call) RunAndReturn(run func(*string)) *ExecutableNodeStatus_SetParentNodeID_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -1977,7 +1974,7 @@ func (_c *ExecutableNodeStatus_SetParentTaskID_Call) Return() *ExecutableNodeSta
}
func (_c *ExecutableNodeStatus_SetParentTaskID_Call) RunAndReturn(run func(*core.TaskExecutionIdentifier)) *ExecutableNodeStatus_SetParentTaskID_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -2014,7 +2011,7 @@ func (_c *ExecutableNodeStatus_UpdatePhase_Call) Return() *ExecutableNodeStatus_
}
func (_c *ExecutableNodeStatus_UpdatePhase_Call) RunAndReturn(run func(v1alpha1.NodePhase, v1.Time, string, bool, *core.ExecutionError)) *ExecutableNodeStatus_UpdatePhase_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -2047,7 +2044,7 @@ func (_c *ExecutableNodeStatus_VisitNodeStatuses_Call) Return() *ExecutableNodeS
}
func (_c *ExecutableNodeStatus_VisitNodeStatuses_Call) RunAndReturn(run func(func(string, v1alpha1.ExecutableNodeStatus))) *ExecutableNodeStatus_VisitNodeStatuses_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableSubWorkflow.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableSubWorkflow.go
index 41fc5f75180..68164bf035e 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableSubWorkflow.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableSubWorkflow.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -78,7 +78,7 @@ func (_c *ExecutableSubWorkflow_FromNode_Call) RunAndReturn(run func(string) ([]
return _c
}
-// GetConnections provides a mock function with given fields:
+// GetConnections provides a mock function with no fields
func (_m *ExecutableSubWorkflow) GetConnections() *v1alpha1.Connections {
ret := _m.Called()
@@ -125,7 +125,7 @@ func (_c *ExecutableSubWorkflow_GetConnections_Call) RunAndReturn(run func() *v1
return _c
}
-// GetID provides a mock function with given fields:
+// GetID provides a mock function with no fields
func (_m *ExecutableSubWorkflow) GetID() string {
ret := _m.Called()
@@ -228,7 +228,7 @@ func (_c *ExecutableSubWorkflow_GetNode_Call) RunAndReturn(run func(string) (v1a
return _c
}
-// GetNodes provides a mock function with given fields:
+// GetNodes provides a mock function with no fields
func (_m *ExecutableSubWorkflow) GetNodes() []string {
ret := _m.Called()
@@ -275,7 +275,7 @@ func (_c *ExecutableSubWorkflow_GetNodes_Call) RunAndReturn(run func() []string)
return _c
}
-// GetOnFailureNode provides a mock function with given fields:
+// GetOnFailureNode provides a mock function with no fields
func (_m *ExecutableSubWorkflow) GetOnFailureNode() v1alpha1.ExecutableNode {
ret := _m.Called()
@@ -322,7 +322,7 @@ func (_c *ExecutableSubWorkflow_GetOnFailureNode_Call) RunAndReturn(run func() v
return _c
}
-// GetOnFailurePolicy provides a mock function with given fields:
+// GetOnFailurePolicy provides a mock function with no fields
func (_m *ExecutableSubWorkflow) GetOnFailurePolicy() v1alpha1.WorkflowOnFailurePolicy {
ret := _m.Called()
@@ -367,7 +367,7 @@ func (_c *ExecutableSubWorkflow_GetOnFailurePolicy_Call) RunAndReturn(run func()
return _c
}
-// GetOutputBindings provides a mock function with given fields:
+// GetOutputBindings provides a mock function with no fields
func (_m *ExecutableSubWorkflow) GetOutputBindings() []*v1alpha1.Binding {
ret := _m.Called()
@@ -414,7 +414,7 @@ func (_c *ExecutableSubWorkflow_GetOutputBindings_Call) RunAndReturn(run func()
return _c
}
-// GetOutputs provides a mock function with given fields:
+// GetOutputs provides a mock function with no fields
func (_m *ExecutableSubWorkflow) GetOutputs() *v1alpha1.OutputVarMap {
ret := _m.Called()
@@ -461,7 +461,7 @@ func (_c *ExecutableSubWorkflow_GetOutputs_Call) RunAndReturn(run func() *v1alph
return _c
}
-// StartNode provides a mock function with given fields:
+// StartNode provides a mock function with no fields
func (_m *ExecutableSubWorkflow) StartNode() v1alpha1.ExecutableNode {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableSubWorkflowNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableSubWorkflowNodeStatus.go
index 8146d8afa2b..dcf1f4068fb 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableSubWorkflowNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableSubWorkflowNodeStatus.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *ExecutableSubWorkflowNodeStatus) EXPECT() *ExecutableSubWorkflowNodeSt
return &ExecutableSubWorkflowNodeStatus_Expecter{mock: &_m.Mock}
}
-// GetPhase provides a mock function with given fields:
+// GetPhase provides a mock function with no fields
func (_m *ExecutableSubWorkflowNodeStatus) GetPhase() v1alpha1.WorkflowPhase {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableTask.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableTask.go
index e8a1c31d1cd..db14cf7c170 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableTask.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableTask.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *ExecutableTask) EXPECT() *ExecutableTask_Expecter {
return &ExecutableTask_Expecter{mock: &_m.Mock}
}
-// CoreTask provides a mock function with given fields:
+// CoreTask provides a mock function with no fields
func (_m *ExecutableTask) CoreTask() *core.TaskTemplate {
ret := _m.Called()
@@ -67,7 +67,7 @@ func (_c *ExecutableTask_CoreTask_Call) RunAndReturn(run func() *core.TaskTempla
return _c
}
-// TaskType provides a mock function with given fields:
+// TaskType provides a mock function with no fields
func (_m *ExecutableTask) TaskType() string {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableTaskNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableTaskNodeStatus.go
index 060acbce5fc..0445b08b1d5 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableTaskNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableTaskNodeStatus.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -22,7 +22,7 @@ func (_m *ExecutableTaskNodeStatus) EXPECT() *ExecutableTaskNodeStatus_Expecter
return &ExecutableTaskNodeStatus_Expecter{mock: &_m.Mock}
}
-// GetBarrierClockTick provides a mock function with given fields:
+// GetBarrierClockTick provides a mock function with no fields
func (_m *ExecutableTaskNodeStatus) GetBarrierClockTick() uint32 {
ret := _m.Called()
@@ -67,7 +67,7 @@ func (_c *ExecutableTaskNodeStatus_GetBarrierClockTick_Call) RunAndReturn(run fu
return _c
}
-// GetCleanupOnFailure provides a mock function with given fields:
+// GetCleanupOnFailure provides a mock function with no fields
func (_m *ExecutableTaskNodeStatus) GetCleanupOnFailure() bool {
ret := _m.Called()
@@ -112,7 +112,7 @@ func (_c *ExecutableTaskNodeStatus_GetCleanupOnFailure_Call) RunAndReturn(run fu
return _c
}
-// GetLastPhaseUpdatedAt provides a mock function with given fields:
+// GetLastPhaseUpdatedAt provides a mock function with no fields
func (_m *ExecutableTaskNodeStatus) GetLastPhaseUpdatedAt() time.Time {
ret := _m.Called()
@@ -157,7 +157,7 @@ func (_c *ExecutableTaskNodeStatus_GetLastPhaseUpdatedAt_Call) RunAndReturn(run
return _c
}
-// GetPhase provides a mock function with given fields:
+// GetPhase provides a mock function with no fields
func (_m *ExecutableTaskNodeStatus) GetPhase() int {
ret := _m.Called()
@@ -202,7 +202,7 @@ func (_c *ExecutableTaskNodeStatus_GetPhase_Call) RunAndReturn(run func() int) *
return _c
}
-// GetPhaseVersion provides a mock function with given fields:
+// GetPhaseVersion provides a mock function with no fields
func (_m *ExecutableTaskNodeStatus) GetPhaseVersion() uint32 {
ret := _m.Called()
@@ -247,7 +247,7 @@ func (_c *ExecutableTaskNodeStatus_GetPhaseVersion_Call) RunAndReturn(run func()
return _c
}
-// GetPluginState provides a mock function with given fields:
+// GetPluginState provides a mock function with no fields
func (_m *ExecutableTaskNodeStatus) GetPluginState() []byte {
ret := _m.Called()
@@ -294,7 +294,7 @@ func (_c *ExecutableTaskNodeStatus_GetPluginState_Call) RunAndReturn(run func()
return _c
}
-// GetPluginStateVersion provides a mock function with given fields:
+// GetPluginStateVersion provides a mock function with no fields
func (_m *ExecutableTaskNodeStatus) GetPluginStateVersion() uint32 {
ret := _m.Called()
@@ -339,7 +339,7 @@ func (_c *ExecutableTaskNodeStatus_GetPluginStateVersion_Call) RunAndReturn(run
return _c
}
-// GetPreviousNodeExecutionCheckpointPath provides a mock function with given fields:
+// GetPreviousNodeExecutionCheckpointPath provides a mock function with no fields
func (_m *ExecutableTaskNodeStatus) GetPreviousNodeExecutionCheckpointPath() storage.DataReference {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflow.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflow.go
index 13d712f503f..83ceb0a4b24 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflow.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflow.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,13 +6,10 @@ import (
context "context"
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
+ v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
mock "github.com/stretchr/testify/mock"
-
- types "k8s.io/apimachinery/pkg/types"
-
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
- v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ types "k8s.io/apimachinery/pkg/types"
)
// ExecutableWorkflow is an autogenerated mock type for the ExecutableWorkflow type
@@ -134,7 +131,7 @@ func (_c *ExecutableWorkflow_FromNode_Call) RunAndReturn(run func(string) ([]str
return _c
}
-// GetAnnotations provides a mock function with given fields:
+// GetAnnotations provides a mock function with no fields
func (_m *ExecutableWorkflow) GetAnnotations() map[string]string {
ret := _m.Called()
@@ -181,7 +178,7 @@ func (_c *ExecutableWorkflow_GetAnnotations_Call) RunAndReturn(run func() map[st
return _c
}
-// GetConnections provides a mock function with given fields:
+// GetConnections provides a mock function with no fields
func (_m *ExecutableWorkflow) GetConnections() *v1alpha1.Connections {
ret := _m.Called()
@@ -228,7 +225,7 @@ func (_c *ExecutableWorkflow_GetConnections_Call) RunAndReturn(run func() *v1alp
return _c
}
-// GetConsoleURL provides a mock function with given fields:
+// GetConsoleURL provides a mock function with no fields
func (_m *ExecutableWorkflow) GetConsoleURL() string {
ret := _m.Called()
@@ -273,7 +270,7 @@ func (_c *ExecutableWorkflow_GetConsoleURL_Call) RunAndReturn(run func() string)
return _c
}
-// GetCreationTimestamp provides a mock function with given fields:
+// GetCreationTimestamp provides a mock function with no fields
func (_m *ExecutableWorkflow) GetCreationTimestamp() v1.Time {
ret := _m.Called()
@@ -318,7 +315,7 @@ func (_c *ExecutableWorkflow_GetCreationTimestamp_Call) RunAndReturn(run func()
return _c
}
-// GetDefinitionVersion provides a mock function with given fields:
+// GetDefinitionVersion provides a mock function with no fields
func (_m *ExecutableWorkflow) GetDefinitionVersion() v1alpha1.WorkflowDefinitionVersion {
ret := _m.Called()
@@ -363,7 +360,7 @@ func (_c *ExecutableWorkflow_GetDefinitionVersion_Call) RunAndReturn(run func()
return _c
}
-// GetEventVersion provides a mock function with given fields:
+// GetEventVersion provides a mock function with no fields
func (_m *ExecutableWorkflow) GetEventVersion() v1alpha1.EventVersion {
ret := _m.Called()
@@ -408,7 +405,7 @@ func (_c *ExecutableWorkflow_GetEventVersion_Call) RunAndReturn(run func() v1alp
return _c
}
-// GetExecutionConfig provides a mock function with given fields:
+// GetExecutionConfig provides a mock function with no fields
func (_m *ExecutableWorkflow) GetExecutionConfig() v1alpha1.ExecutionConfig {
ret := _m.Called()
@@ -453,7 +450,7 @@ func (_c *ExecutableWorkflow_GetExecutionConfig_Call) RunAndReturn(run func() v1
return _c
}
-// GetExecutionID provides a mock function with given fields:
+// GetExecutionID provides a mock function with no fields
func (_m *ExecutableWorkflow) GetExecutionID() v1alpha1.WorkflowExecutionIdentifier {
ret := _m.Called()
@@ -498,7 +495,7 @@ func (_c *ExecutableWorkflow_GetExecutionID_Call) RunAndReturn(run func() v1alph
return _c
}
-// GetExecutionStatus provides a mock function with given fields:
+// GetExecutionStatus provides a mock function with no fields
func (_m *ExecutableWorkflow) GetExecutionStatus() v1alpha1.ExecutableWorkflowStatus {
ret := _m.Called()
@@ -545,7 +542,7 @@ func (_c *ExecutableWorkflow_GetExecutionStatus_Call) RunAndReturn(run func() v1
return _c
}
-// GetID provides a mock function with given fields:
+// GetID provides a mock function with no fields
func (_m *ExecutableWorkflow) GetID() string {
ret := _m.Called()
@@ -590,7 +587,7 @@ func (_c *ExecutableWorkflow_GetID_Call) RunAndReturn(run func() string) *Execut
return _c
}
-// GetK8sWorkflowID provides a mock function with given fields:
+// GetK8sWorkflowID provides a mock function with no fields
func (_m *ExecutableWorkflow) GetK8sWorkflowID() types.NamespacedName {
ret := _m.Called()
@@ -635,7 +632,7 @@ func (_c *ExecutableWorkflow_GetK8sWorkflowID_Call) RunAndReturn(run func() type
return _c
}
-// GetLabels provides a mock function with given fields:
+// GetLabels provides a mock function with no fields
func (_m *ExecutableWorkflow) GetLabels() map[string]string {
ret := _m.Called()
@@ -682,7 +679,7 @@ func (_c *ExecutableWorkflow_GetLabels_Call) RunAndReturn(run func() map[string]
return _c
}
-// GetName provides a mock function with given fields:
+// GetName provides a mock function with no fields
func (_m *ExecutableWorkflow) GetName() string {
ret := _m.Called()
@@ -727,7 +724,7 @@ func (_c *ExecutableWorkflow_GetName_Call) RunAndReturn(run func() string) *Exec
return _c
}
-// GetNamespace provides a mock function with given fields:
+// GetNamespace provides a mock function with no fields
func (_m *ExecutableWorkflow) GetNamespace() string {
ret := _m.Called()
@@ -879,7 +876,7 @@ func (_c *ExecutableWorkflow_GetNodeExecutionStatus_Call) RunAndReturn(run func(
return _c
}
-// GetNodes provides a mock function with given fields:
+// GetNodes provides a mock function with no fields
func (_m *ExecutableWorkflow) GetNodes() []string {
ret := _m.Called()
@@ -926,7 +923,7 @@ func (_c *ExecutableWorkflow_GetNodes_Call) RunAndReturn(run func() []string) *E
return _c
}
-// GetOnFailureNode provides a mock function with given fields:
+// GetOnFailureNode provides a mock function with no fields
func (_m *ExecutableWorkflow) GetOnFailureNode() v1alpha1.ExecutableNode {
ret := _m.Called()
@@ -973,7 +970,7 @@ func (_c *ExecutableWorkflow_GetOnFailureNode_Call) RunAndReturn(run func() v1al
return _c
}
-// GetOnFailurePolicy provides a mock function with given fields:
+// GetOnFailurePolicy provides a mock function with no fields
func (_m *ExecutableWorkflow) GetOnFailurePolicy() v1alpha1.WorkflowOnFailurePolicy {
ret := _m.Called()
@@ -1018,7 +1015,7 @@ func (_c *ExecutableWorkflow_GetOnFailurePolicy_Call) RunAndReturn(run func() v1
return _c
}
-// GetOutputBindings provides a mock function with given fields:
+// GetOutputBindings provides a mock function with no fields
func (_m *ExecutableWorkflow) GetOutputBindings() []*v1alpha1.Binding {
ret := _m.Called()
@@ -1065,7 +1062,7 @@ func (_c *ExecutableWorkflow_GetOutputBindings_Call) RunAndReturn(run func() []*
return _c
}
-// GetOutputs provides a mock function with given fields:
+// GetOutputs provides a mock function with no fields
func (_m *ExecutableWorkflow) GetOutputs() *v1alpha1.OutputVarMap {
ret := _m.Called()
@@ -1112,7 +1109,7 @@ func (_c *ExecutableWorkflow_GetOutputs_Call) RunAndReturn(run func() *v1alpha1.
return _c
}
-// GetOwnerReference provides a mock function with given fields:
+// GetOwnerReference provides a mock function with no fields
func (_m *ExecutableWorkflow) GetOwnerReference() v1.OwnerReference {
ret := _m.Called()
@@ -1157,7 +1154,7 @@ func (_c *ExecutableWorkflow_GetOwnerReference_Call) RunAndReturn(run func() v1.
return _c
}
-// GetRawOutputDataConfig provides a mock function with given fields:
+// GetRawOutputDataConfig provides a mock function with no fields
func (_m *ExecutableWorkflow) GetRawOutputDataConfig() v1alpha1.RawOutputDataConfig {
ret := _m.Called()
@@ -1202,7 +1199,7 @@ func (_c *ExecutableWorkflow_GetRawOutputDataConfig_Call) RunAndReturn(run func(
return _c
}
-// GetSecurityContext provides a mock function with given fields:
+// GetSecurityContext provides a mock function with no fields
func (_m *ExecutableWorkflow) GetSecurityContext() core.SecurityContext {
ret := _m.Called()
@@ -1247,7 +1244,7 @@ func (_c *ExecutableWorkflow_GetSecurityContext_Call) RunAndReturn(run func() co
return _c
}
-// GetServiceAccountName provides a mock function with given fields:
+// GetServiceAccountName provides a mock function with no fields
func (_m *ExecutableWorkflow) GetServiceAccountName() string {
ret := _m.Called()
@@ -1350,7 +1347,7 @@ func (_c *ExecutableWorkflow_GetTask_Call) RunAndReturn(run func(string) (v1alph
return _c
}
-// IsInterruptible provides a mock function with given fields:
+// IsInterruptible provides a mock function with no fields
func (_m *ExecutableWorkflow) IsInterruptible() bool {
ret := _m.Called()
@@ -1395,7 +1392,7 @@ func (_c *ExecutableWorkflow_IsInterruptible_Call) RunAndReturn(run func() bool)
return _c
}
-// StartNode provides a mock function with given fields:
+// StartNode provides a mock function with no fields
func (_m *ExecutableWorkflow) StartNode() v1alpha1.ExecutableNode {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflowNode.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflowNode.go
index f1b995ec8f3..fcf7ff64292 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflowNode.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflowNode.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *ExecutableWorkflowNode) EXPECT() *ExecutableWorkflowNode_Expecter {
return &ExecutableWorkflowNode_Expecter{mock: &_m.Mock}
}
-// GetLaunchPlanRefID provides a mock function with given fields:
+// GetLaunchPlanRefID provides a mock function with no fields
func (_m *ExecutableWorkflowNode) GetLaunchPlanRefID() *v1alpha1.Identifier {
ret := _m.Called()
@@ -67,7 +67,7 @@ func (_c *ExecutableWorkflowNode_GetLaunchPlanRefID_Call) RunAndReturn(run func(
return _c
}
-// GetSubWorkflowRef provides a mock function with given fields:
+// GetSubWorkflowRef provides a mock function with no fields
func (_m *ExecutableWorkflowNode) GetSubWorkflowRef() *string {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflowNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflowNodeStatus.go
index 453cfbcbccf..0eeea28beea 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflowNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflowNodeStatus.go
@@ -1,12 +1,11 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- mock "github.com/stretchr/testify/mock"
-
v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ mock "github.com/stretchr/testify/mock"
)
// ExecutableWorkflowNodeStatus is an autogenerated mock type for the ExecutableWorkflowNodeStatus type
@@ -22,7 +21,7 @@ func (_m *ExecutableWorkflowNodeStatus) EXPECT() *ExecutableWorkflowNodeStatus_E
return &ExecutableWorkflowNodeStatus_Expecter{mock: &_m.Mock}
}
-// GetExecutionError provides a mock function with given fields:
+// GetExecutionError provides a mock function with no fields
func (_m *ExecutableWorkflowNodeStatus) GetExecutionError() *core.ExecutionError {
ret := _m.Called()
@@ -69,7 +68,7 @@ func (_c *ExecutableWorkflowNodeStatus_GetExecutionError_Call) RunAndReturn(run
return _c
}
-// GetWorkflowNodePhase provides a mock function with given fields:
+// GetWorkflowNodePhase provides a mock function with no fields
func (_m *ExecutableWorkflowNodeStatus) GetWorkflowNodePhase() v1alpha1.WorkflowNodePhase {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflowStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflowStatus.go
index 78144a19d01..bae4691aa69 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflowStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableWorkflowStatus.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,13 +6,10 @@ import (
context "context"
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- mock "github.com/stretchr/testify/mock"
-
+ v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
storage "github.com/flyteorg/flyte/flytestdlib/storage"
-
+ mock "github.com/stretchr/testify/mock"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
- v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
)
// ExecutableWorkflowStatus is an autogenerated mock type for the ExecutableWorkflowStatus type
@@ -85,7 +82,7 @@ func (_c *ExecutableWorkflowStatus_ConstructNodeDataDir_Call) RunAndReturn(run f
return _c
}
-// GetDataDir provides a mock function with given fields:
+// GetDataDir provides a mock function with no fields
func (_m *ExecutableWorkflowStatus) GetDataDir() storage.DataReference {
ret := _m.Called()
@@ -130,7 +127,7 @@ func (_c *ExecutableWorkflowStatus_GetDataDir_Call) RunAndReturn(run func() stor
return _c
}
-// GetExecutionError provides a mock function with given fields:
+// GetExecutionError provides a mock function with no fields
func (_m *ExecutableWorkflowStatus) GetExecutionError() *core.ExecutionError {
ret := _m.Called()
@@ -177,7 +174,7 @@ func (_c *ExecutableWorkflowStatus_GetExecutionError_Call) RunAndReturn(run func
return _c
}
-// GetLastUpdatedAt provides a mock function with given fields:
+// GetLastUpdatedAt provides a mock function with no fields
func (_m *ExecutableWorkflowStatus) GetLastUpdatedAt() *v1.Time {
ret := _m.Called()
@@ -224,7 +221,7 @@ func (_c *ExecutableWorkflowStatus_GetLastUpdatedAt_Call) RunAndReturn(run func(
return _c
}
-// GetMessage provides a mock function with given fields:
+// GetMessage provides a mock function with no fields
func (_m *ExecutableWorkflowStatus) GetMessage() string {
ret := _m.Called()
@@ -318,7 +315,7 @@ func (_c *ExecutableWorkflowStatus_GetNodeExecutionStatus_Call) RunAndReturn(run
return _c
}
-// GetOutputReference provides a mock function with given fields:
+// GetOutputReference provides a mock function with no fields
func (_m *ExecutableWorkflowStatus) GetOutputReference() storage.DataReference {
ret := _m.Called()
@@ -363,7 +360,7 @@ func (_c *ExecutableWorkflowStatus_GetOutputReference_Call) RunAndReturn(run fun
return _c
}
-// GetPhase provides a mock function with given fields:
+// GetPhase provides a mock function with no fields
func (_m *ExecutableWorkflowStatus) GetPhase() v1alpha1.WorkflowPhase {
ret := _m.Called()
@@ -408,7 +405,7 @@ func (_c *ExecutableWorkflowStatus_GetPhase_Call) RunAndReturn(run func() v1alph
return _c
}
-// GetStartedAt provides a mock function with given fields:
+// GetStartedAt provides a mock function with no fields
func (_m *ExecutableWorkflowStatus) GetStartedAt() *v1.Time {
ret := _m.Called()
@@ -455,7 +452,7 @@ func (_c *ExecutableWorkflowStatus_GetStartedAt_Call) RunAndReturn(run func() *v
return _c
}
-// GetStoppedAt provides a mock function with given fields:
+// GetStoppedAt provides a mock function with no fields
func (_m *ExecutableWorkflowStatus) GetStoppedAt() *v1.Time {
ret := _m.Called()
@@ -502,7 +499,7 @@ func (_c *ExecutableWorkflowStatus_GetStoppedAt_Call) RunAndReturn(run func() *v
return _c
}
-// IncFailedAttempts provides a mock function with given fields:
+// IncFailedAttempts provides a mock function with no fields
func (_m *ExecutableWorkflowStatus) IncFailedAttempts() {
_m.Called()
}
@@ -530,11 +527,11 @@ func (_c *ExecutableWorkflowStatus_IncFailedAttempts_Call) Return() *ExecutableW
}
func (_c *ExecutableWorkflowStatus_IncFailedAttempts_Call) RunAndReturn(run func()) *ExecutableWorkflowStatus_IncFailedAttempts_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// IsTerminated provides a mock function with given fields:
+// IsTerminated provides a mock function with no fields
func (_m *ExecutableWorkflowStatus) IsTerminated() bool {
ret := _m.Called()
@@ -608,7 +605,7 @@ func (_c *ExecutableWorkflowStatus_SetDataDir_Call) Return() *ExecutableWorkflow
}
func (_c *ExecutableWorkflowStatus_SetDataDir_Call) RunAndReturn(run func(storage.DataReference)) *ExecutableWorkflowStatus_SetDataDir_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -641,7 +638,7 @@ func (_c *ExecutableWorkflowStatus_SetMessage_Call) Return() *ExecutableWorkflow
}
func (_c *ExecutableWorkflowStatus_SetMessage_Call) RunAndReturn(run func(string)) *ExecutableWorkflowStatus_SetMessage_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -674,7 +671,7 @@ func (_c *ExecutableWorkflowStatus_SetOutputReference_Call) Return() *Executable
}
func (_c *ExecutableWorkflowStatus_SetOutputReference_Call) RunAndReturn(run func(storage.DataReference)) *ExecutableWorkflowStatus_SetOutputReference_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -709,7 +706,7 @@ func (_c *ExecutableWorkflowStatus_UpdatePhase_Call) Return() *ExecutableWorkflo
}
func (_c *ExecutableWorkflowStatus_UpdatePhase_Call) RunAndReturn(run func(v1alpha1.WorkflowPhase, string, *core.ExecutionError)) *ExecutableWorkflowStatus_UpdatePhase_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutionTimeInfo.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutionTimeInfo.go
index 540e3cba71d..a9b19d60d04 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutionTimeInfo.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutionTimeInfo.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *ExecutionTimeInfo) EXPECT() *ExecutionTimeInfo_Expecter {
return &ExecutionTimeInfo_Expecter{mock: &_m.Mock}
}
-// GetLastUpdatedAt provides a mock function with given fields:
+// GetLastUpdatedAt provides a mock function with no fields
func (_m *ExecutionTimeInfo) GetLastUpdatedAt() *v1.Time {
ret := _m.Called()
@@ -67,7 +67,7 @@ func (_c *ExecutionTimeInfo_GetLastUpdatedAt_Call) RunAndReturn(run func() *v1.T
return _c
}
-// GetStartedAt provides a mock function with given fields:
+// GetStartedAt provides a mock function with no fields
func (_m *ExecutionTimeInfo) GetStartedAt() *v1.Time {
ret := _m.Called()
@@ -114,7 +114,7 @@ func (_c *ExecutionTimeInfo_GetStartedAt_Call) RunAndReturn(run func() *v1.Time)
return _c
}
-// GetStoppedAt provides a mock function with given fields:
+// GetStoppedAt provides a mock function with no fields
func (_m *ExecutionTimeInfo) GetStoppedAt() *v1.Time {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/Meta.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/Meta.go
index 65b22ff0c2d..2eb29f0dd5b 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/Meta.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/Meta.go
@@ -1,16 +1,13 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
+ v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
mock "github.com/stretchr/testify/mock"
-
- types "k8s.io/apimachinery/pkg/types"
-
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
- v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ types "k8s.io/apimachinery/pkg/types"
)
// Meta is an autogenerated mock type for the Meta type
@@ -26,7 +23,7 @@ func (_m *Meta) EXPECT() *Meta_Expecter {
return &Meta_Expecter{mock: &_m.Mock}
}
-// GetAnnotations provides a mock function with given fields:
+// GetAnnotations provides a mock function with no fields
func (_m *Meta) GetAnnotations() map[string]string {
ret := _m.Called()
@@ -73,7 +70,7 @@ func (_c *Meta_GetAnnotations_Call) RunAndReturn(run func() map[string]string) *
return _c
}
-// GetConsoleURL provides a mock function with given fields:
+// GetConsoleURL provides a mock function with no fields
func (_m *Meta) GetConsoleURL() string {
ret := _m.Called()
@@ -118,7 +115,7 @@ func (_c *Meta_GetConsoleURL_Call) RunAndReturn(run func() string) *Meta_GetCons
return _c
}
-// GetCreationTimestamp provides a mock function with given fields:
+// GetCreationTimestamp provides a mock function with no fields
func (_m *Meta) GetCreationTimestamp() v1.Time {
ret := _m.Called()
@@ -163,7 +160,7 @@ func (_c *Meta_GetCreationTimestamp_Call) RunAndReturn(run func() v1.Time) *Meta
return _c
}
-// GetDefinitionVersion provides a mock function with given fields:
+// GetDefinitionVersion provides a mock function with no fields
func (_m *Meta) GetDefinitionVersion() v1alpha1.WorkflowDefinitionVersion {
ret := _m.Called()
@@ -208,7 +205,7 @@ func (_c *Meta_GetDefinitionVersion_Call) RunAndReturn(run func() v1alpha1.Workf
return _c
}
-// GetEventVersion provides a mock function with given fields:
+// GetEventVersion provides a mock function with no fields
func (_m *Meta) GetEventVersion() v1alpha1.EventVersion {
ret := _m.Called()
@@ -253,7 +250,7 @@ func (_c *Meta_GetEventVersion_Call) RunAndReturn(run func() v1alpha1.EventVersi
return _c
}
-// GetExecutionID provides a mock function with given fields:
+// GetExecutionID provides a mock function with no fields
func (_m *Meta) GetExecutionID() v1alpha1.WorkflowExecutionIdentifier {
ret := _m.Called()
@@ -298,7 +295,7 @@ func (_c *Meta_GetExecutionID_Call) RunAndReturn(run func() v1alpha1.WorkflowExe
return _c
}
-// GetK8sWorkflowID provides a mock function with given fields:
+// GetK8sWorkflowID provides a mock function with no fields
func (_m *Meta) GetK8sWorkflowID() types.NamespacedName {
ret := _m.Called()
@@ -343,7 +340,7 @@ func (_c *Meta_GetK8sWorkflowID_Call) RunAndReturn(run func() types.NamespacedNa
return _c
}
-// GetLabels provides a mock function with given fields:
+// GetLabels provides a mock function with no fields
func (_m *Meta) GetLabels() map[string]string {
ret := _m.Called()
@@ -390,7 +387,7 @@ func (_c *Meta_GetLabels_Call) RunAndReturn(run func() map[string]string) *Meta_
return _c
}
-// GetName provides a mock function with given fields:
+// GetName provides a mock function with no fields
func (_m *Meta) GetName() string {
ret := _m.Called()
@@ -435,7 +432,7 @@ func (_c *Meta_GetName_Call) RunAndReturn(run func() string) *Meta_GetName_Call
return _c
}
-// GetNamespace provides a mock function with given fields:
+// GetNamespace provides a mock function with no fields
func (_m *Meta) GetNamespace() string {
ret := _m.Called()
@@ -480,7 +477,7 @@ func (_c *Meta_GetNamespace_Call) RunAndReturn(run func() string) *Meta_GetNames
return _c
}
-// GetOwnerReference provides a mock function with given fields:
+// GetOwnerReference provides a mock function with no fields
func (_m *Meta) GetOwnerReference() v1.OwnerReference {
ret := _m.Called()
@@ -525,7 +522,7 @@ func (_c *Meta_GetOwnerReference_Call) RunAndReturn(run func() v1.OwnerReference
return _c
}
-// GetRawOutputDataConfig provides a mock function with given fields:
+// GetRawOutputDataConfig provides a mock function with no fields
func (_m *Meta) GetRawOutputDataConfig() v1alpha1.RawOutputDataConfig {
ret := _m.Called()
@@ -570,7 +567,7 @@ func (_c *Meta_GetRawOutputDataConfig_Call) RunAndReturn(run func() v1alpha1.Raw
return _c
}
-// GetSecurityContext provides a mock function with given fields:
+// GetSecurityContext provides a mock function with no fields
func (_m *Meta) GetSecurityContext() core.SecurityContext {
ret := _m.Called()
@@ -615,7 +612,7 @@ func (_c *Meta_GetSecurityContext_Call) RunAndReturn(run func() core.SecurityCon
return _c
}
-// GetServiceAccountName provides a mock function with given fields:
+// GetServiceAccountName provides a mock function with no fields
func (_m *Meta) GetServiceAccountName() string {
ret := _m.Called()
@@ -660,7 +657,7 @@ func (_c *Meta_GetServiceAccountName_Call) RunAndReturn(run func() string) *Meta
return _c
}
-// IsInterruptible provides a mock function with given fields:
+// IsInterruptible provides a mock function with no fields
func (_m *Meta) IsInterruptible() bool {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MetaExtended.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MetaExtended.go
index 792b8a9e961..4d210d4aa83 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MetaExtended.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MetaExtended.go
@@ -1,16 +1,13 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
+ v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
mock "github.com/stretchr/testify/mock"
-
- types "k8s.io/apimachinery/pkg/types"
-
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
- v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ types "k8s.io/apimachinery/pkg/types"
)
// MetaExtended is an autogenerated mock type for the MetaExtended type
@@ -74,7 +71,7 @@ func (_c *MetaExtended_FindSubWorkflow_Call) RunAndReturn(run func(string) v1alp
return _c
}
-// GetAnnotations provides a mock function with given fields:
+// GetAnnotations provides a mock function with no fields
func (_m *MetaExtended) GetAnnotations() map[string]string {
ret := _m.Called()
@@ -121,7 +118,7 @@ func (_c *MetaExtended_GetAnnotations_Call) RunAndReturn(run func() map[string]s
return _c
}
-// GetConsoleURL provides a mock function with given fields:
+// GetConsoleURL provides a mock function with no fields
func (_m *MetaExtended) GetConsoleURL() string {
ret := _m.Called()
@@ -166,7 +163,7 @@ func (_c *MetaExtended_GetConsoleURL_Call) RunAndReturn(run func() string) *Meta
return _c
}
-// GetCreationTimestamp provides a mock function with given fields:
+// GetCreationTimestamp provides a mock function with no fields
func (_m *MetaExtended) GetCreationTimestamp() v1.Time {
ret := _m.Called()
@@ -211,7 +208,7 @@ func (_c *MetaExtended_GetCreationTimestamp_Call) RunAndReturn(run func() v1.Tim
return _c
}
-// GetDefinitionVersion provides a mock function with given fields:
+// GetDefinitionVersion provides a mock function with no fields
func (_m *MetaExtended) GetDefinitionVersion() v1alpha1.WorkflowDefinitionVersion {
ret := _m.Called()
@@ -256,7 +253,7 @@ func (_c *MetaExtended_GetDefinitionVersion_Call) RunAndReturn(run func() v1alph
return _c
}
-// GetEventVersion provides a mock function with given fields:
+// GetEventVersion provides a mock function with no fields
func (_m *MetaExtended) GetEventVersion() v1alpha1.EventVersion {
ret := _m.Called()
@@ -301,7 +298,7 @@ func (_c *MetaExtended_GetEventVersion_Call) RunAndReturn(run func() v1alpha1.Ev
return _c
}
-// GetExecutionID provides a mock function with given fields:
+// GetExecutionID provides a mock function with no fields
func (_m *MetaExtended) GetExecutionID() v1alpha1.WorkflowExecutionIdentifier {
ret := _m.Called()
@@ -346,7 +343,7 @@ func (_c *MetaExtended_GetExecutionID_Call) RunAndReturn(run func() v1alpha1.Wor
return _c
}
-// GetExecutionStatus provides a mock function with given fields:
+// GetExecutionStatus provides a mock function with no fields
func (_m *MetaExtended) GetExecutionStatus() v1alpha1.ExecutableWorkflowStatus {
ret := _m.Called()
@@ -393,7 +390,7 @@ func (_c *MetaExtended_GetExecutionStatus_Call) RunAndReturn(run func() v1alpha1
return _c
}
-// GetK8sWorkflowID provides a mock function with given fields:
+// GetK8sWorkflowID provides a mock function with no fields
func (_m *MetaExtended) GetK8sWorkflowID() types.NamespacedName {
ret := _m.Called()
@@ -438,7 +435,7 @@ func (_c *MetaExtended_GetK8sWorkflowID_Call) RunAndReturn(run func() types.Name
return _c
}
-// GetLabels provides a mock function with given fields:
+// GetLabels provides a mock function with no fields
func (_m *MetaExtended) GetLabels() map[string]string {
ret := _m.Called()
@@ -485,7 +482,7 @@ func (_c *MetaExtended_GetLabels_Call) RunAndReturn(run func() map[string]string
return _c
}
-// GetName provides a mock function with given fields:
+// GetName provides a mock function with no fields
func (_m *MetaExtended) GetName() string {
ret := _m.Called()
@@ -530,7 +527,7 @@ func (_c *MetaExtended_GetName_Call) RunAndReturn(run func() string) *MetaExtend
return _c
}
-// GetNamespace provides a mock function with given fields:
+// GetNamespace provides a mock function with no fields
func (_m *MetaExtended) GetNamespace() string {
ret := _m.Called()
@@ -575,7 +572,7 @@ func (_c *MetaExtended_GetNamespace_Call) RunAndReturn(run func() string) *MetaE
return _c
}
-// GetOwnerReference provides a mock function with given fields:
+// GetOwnerReference provides a mock function with no fields
func (_m *MetaExtended) GetOwnerReference() v1.OwnerReference {
ret := _m.Called()
@@ -620,7 +617,7 @@ func (_c *MetaExtended_GetOwnerReference_Call) RunAndReturn(run func() v1.OwnerR
return _c
}
-// GetRawOutputDataConfig provides a mock function with given fields:
+// GetRawOutputDataConfig provides a mock function with no fields
func (_m *MetaExtended) GetRawOutputDataConfig() v1alpha1.RawOutputDataConfig {
ret := _m.Called()
@@ -665,7 +662,7 @@ func (_c *MetaExtended_GetRawOutputDataConfig_Call) RunAndReturn(run func() v1al
return _c
}
-// GetSecurityContext provides a mock function with given fields:
+// GetSecurityContext provides a mock function with no fields
func (_m *MetaExtended) GetSecurityContext() core.SecurityContext {
ret := _m.Called()
@@ -710,7 +707,7 @@ func (_c *MetaExtended_GetSecurityContext_Call) RunAndReturn(run func() core.Sec
return _c
}
-// GetServiceAccountName provides a mock function with given fields:
+// GetServiceAccountName provides a mock function with no fields
func (_m *MetaExtended) GetServiceAccountName() string {
ret := _m.Called()
@@ -813,7 +810,7 @@ func (_c *MetaExtended_GetTask_Call) RunAndReturn(run func(string) (v1alpha1.Exe
return _c
}
-// IsInterruptible provides a mock function with given fields:
+// IsInterruptible provides a mock function with no fields
func (_m *MetaExtended) IsInterruptible() bool {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/Mutable.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/Mutable.go
index 93556ef992b..727cd8182f3 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/Mutable.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/Mutable.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *Mutable) EXPECT() *Mutable_Expecter {
return &Mutable_Expecter{mock: &_m.Mock}
}
-// IsDirty provides a mock function with given fields:
+// IsDirty provides a mock function with no fields
func (_m *Mutable) IsDirty() bool {
ret := _m.Called()
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableArrayNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableArrayNodeStatus.go
index 1df5ec11753..0f1606a76d0 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableArrayNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableArrayNodeStatus.go
@@ -1,14 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
+ v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
bitarray "github.com/flyteorg/flyte/flytestdlib/bitarray"
-
mock "github.com/stretchr/testify/mock"
-
- v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
)
// MutableArrayNodeStatus is an autogenerated mock type for the MutableArrayNodeStatus type
@@ -24,7 +22,7 @@ func (_m *MutableArrayNodeStatus) EXPECT() *MutableArrayNodeStatus_Expecter {
return &MutableArrayNodeStatus_Expecter{mock: &_m.Mock}
}
-// GetArrayNodePhase provides a mock function with given fields:
+// GetArrayNodePhase provides a mock function with no fields
func (_m *MutableArrayNodeStatus) GetArrayNodePhase() v1alpha1.ArrayNodePhase {
ret := _m.Called()
@@ -69,7 +67,7 @@ func (_c *MutableArrayNodeStatus_GetArrayNodePhase_Call) RunAndReturn(run func()
return _c
}
-// GetExecutionError provides a mock function with given fields:
+// GetExecutionError provides a mock function with no fields
func (_m *MutableArrayNodeStatus) GetExecutionError() *core.ExecutionError {
ret := _m.Called()
@@ -116,7 +114,7 @@ func (_c *MutableArrayNodeStatus_GetExecutionError_Call) RunAndReturn(run func()
return _c
}
-// GetSubNodeDeltaTimestamps provides a mock function with given fields:
+// GetSubNodeDeltaTimestamps provides a mock function with no fields
func (_m *MutableArrayNodeStatus) GetSubNodeDeltaTimestamps() bitarray.CompactArray {
ret := _m.Called()
@@ -161,7 +159,7 @@ func (_c *MutableArrayNodeStatus_GetSubNodeDeltaTimestamps_Call) RunAndReturn(ru
return _c
}
-// GetSubNodePhases provides a mock function with given fields:
+// GetSubNodePhases provides a mock function with no fields
func (_m *MutableArrayNodeStatus) GetSubNodePhases() bitarray.CompactArray {
ret := _m.Called()
@@ -206,7 +204,7 @@ func (_c *MutableArrayNodeStatus_GetSubNodePhases_Call) RunAndReturn(run func()
return _c
}
-// GetSubNodeRetryAttempts provides a mock function with given fields:
+// GetSubNodeRetryAttempts provides a mock function with no fields
func (_m *MutableArrayNodeStatus) GetSubNodeRetryAttempts() bitarray.CompactArray {
ret := _m.Called()
@@ -251,7 +249,7 @@ func (_c *MutableArrayNodeStatus_GetSubNodeRetryAttempts_Call) RunAndReturn(run
return _c
}
-// GetSubNodeSystemFailures provides a mock function with given fields:
+// GetSubNodeSystemFailures provides a mock function with no fields
func (_m *MutableArrayNodeStatus) GetSubNodeSystemFailures() bitarray.CompactArray {
ret := _m.Called()
@@ -296,7 +294,7 @@ func (_c *MutableArrayNodeStatus_GetSubNodeSystemFailures_Call) RunAndReturn(run
return _c
}
-// GetSubNodeTaskPhases provides a mock function with given fields:
+// GetSubNodeTaskPhases provides a mock function with no fields
func (_m *MutableArrayNodeStatus) GetSubNodeTaskPhases() bitarray.CompactArray {
ret := _m.Called()
@@ -341,7 +339,7 @@ func (_c *MutableArrayNodeStatus_GetSubNodeTaskPhases_Call) RunAndReturn(run fun
return _c
}
-// GetTaskPhaseVersion provides a mock function with given fields:
+// GetTaskPhaseVersion provides a mock function with no fields
func (_m *MutableArrayNodeStatus) GetTaskPhaseVersion() uint32 {
ret := _m.Called()
@@ -386,7 +384,7 @@ func (_c *MutableArrayNodeStatus_GetTaskPhaseVersion_Call) RunAndReturn(run func
return _c
}
-// IsDirty provides a mock function with given fields:
+// IsDirty provides a mock function with no fields
func (_m *MutableArrayNodeStatus) IsDirty() bool {
ret := _m.Called()
@@ -460,7 +458,7 @@ func (_c *MutableArrayNodeStatus_SetArrayNodePhase_Call) Return() *MutableArrayN
}
func (_c *MutableArrayNodeStatus_SetArrayNodePhase_Call) RunAndReturn(run func(v1alpha1.ArrayNodePhase)) *MutableArrayNodeStatus_SetArrayNodePhase_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -493,7 +491,7 @@ func (_c *MutableArrayNodeStatus_SetExecutionError_Call) Return() *MutableArrayN
}
func (_c *MutableArrayNodeStatus_SetExecutionError_Call) RunAndReturn(run func(*core.ExecutionError)) *MutableArrayNodeStatus_SetExecutionError_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -526,7 +524,7 @@ func (_c *MutableArrayNodeStatus_SetSubNodeDeltaTimestamps_Call) Return() *Mutab
}
func (_c *MutableArrayNodeStatus_SetSubNodeDeltaTimestamps_Call) RunAndReturn(run func(bitarray.CompactArray)) *MutableArrayNodeStatus_SetSubNodeDeltaTimestamps_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -559,7 +557,7 @@ func (_c *MutableArrayNodeStatus_SetSubNodePhases_Call) Return() *MutableArrayNo
}
func (_c *MutableArrayNodeStatus_SetSubNodePhases_Call) RunAndReturn(run func(bitarray.CompactArray)) *MutableArrayNodeStatus_SetSubNodePhases_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -592,7 +590,7 @@ func (_c *MutableArrayNodeStatus_SetSubNodeRetryAttempts_Call) Return() *Mutable
}
func (_c *MutableArrayNodeStatus_SetSubNodeRetryAttempts_Call) RunAndReturn(run func(bitarray.CompactArray)) *MutableArrayNodeStatus_SetSubNodeRetryAttempts_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -625,7 +623,7 @@ func (_c *MutableArrayNodeStatus_SetSubNodeSystemFailures_Call) Return() *Mutabl
}
func (_c *MutableArrayNodeStatus_SetSubNodeSystemFailures_Call) RunAndReturn(run func(bitarray.CompactArray)) *MutableArrayNodeStatus_SetSubNodeSystemFailures_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -658,7 +656,7 @@ func (_c *MutableArrayNodeStatus_SetSubNodeTaskPhases_Call) Return() *MutableArr
}
func (_c *MutableArrayNodeStatus_SetSubNodeTaskPhases_Call) RunAndReturn(run func(bitarray.CompactArray)) *MutableArrayNodeStatus_SetSubNodeTaskPhases_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -691,7 +689,7 @@ func (_c *MutableArrayNodeStatus_SetTaskPhaseVersion_Call) Return() *MutableArra
}
func (_c *MutableArrayNodeStatus_SetTaskPhaseVersion_Call) RunAndReturn(run func(uint32)) *MutableArrayNodeStatus_SetTaskPhaseVersion_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableBranchNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableBranchNodeStatus.go
index a09987707c2..b2f3dda4b5d 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableBranchNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableBranchNodeStatus.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *MutableBranchNodeStatus) EXPECT() *MutableBranchNodeStatus_Expecter {
return &MutableBranchNodeStatus_Expecter{mock: &_m.Mock}
}
-// GetFinalizedNode provides a mock function with given fields:
+// GetFinalizedNode provides a mock function with no fields
func (_m *MutableBranchNodeStatus) GetFinalizedNode() *string {
ret := _m.Called()
@@ -67,7 +67,7 @@ func (_c *MutableBranchNodeStatus_GetFinalizedNode_Call) RunAndReturn(run func()
return _c
}
-// GetPhase provides a mock function with given fields:
+// GetPhase provides a mock function with no fields
func (_m *MutableBranchNodeStatus) GetPhase() v1alpha1.BranchNodePhase {
ret := _m.Called()
@@ -112,7 +112,7 @@ func (_c *MutableBranchNodeStatus_GetPhase_Call) RunAndReturn(run func() v1alpha
return _c
}
-// IsDirty provides a mock function with given fields:
+// IsDirty provides a mock function with no fields
func (_m *MutableBranchNodeStatus) IsDirty() bool {
ret := _m.Called()
@@ -157,7 +157,7 @@ func (_c *MutableBranchNodeStatus_IsDirty_Call) RunAndReturn(run func() bool) *M
return _c
}
-// SetBranchNodeError provides a mock function with given fields:
+// SetBranchNodeError provides a mock function with no fields
func (_m *MutableBranchNodeStatus) SetBranchNodeError() {
_m.Called()
}
@@ -185,7 +185,7 @@ func (_c *MutableBranchNodeStatus_SetBranchNodeError_Call) Return() *MutableBran
}
func (_c *MutableBranchNodeStatus_SetBranchNodeError_Call) RunAndReturn(run func()) *MutableBranchNodeStatus_SetBranchNodeError_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -218,7 +218,7 @@ func (_c *MutableBranchNodeStatus_SetBranchNodeSuccess_Call) Return() *MutableBr
}
func (_c *MutableBranchNodeStatus_SetBranchNodeSuccess_Call) RunAndReturn(run func(string)) *MutableBranchNodeStatus_SetBranchNodeSuccess_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableDynamicNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableDynamicNodeStatus.go
index 468680448f7..311745949f0 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableDynamicNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableDynamicNodeStatus.go
@@ -1,12 +1,11 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- mock "github.com/stretchr/testify/mock"
-
v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ mock "github.com/stretchr/testify/mock"
)
// MutableDynamicNodeStatus is an autogenerated mock type for the MutableDynamicNodeStatus type
@@ -22,7 +21,7 @@ func (_m *MutableDynamicNodeStatus) EXPECT() *MutableDynamicNodeStatus_Expecter
return &MutableDynamicNodeStatus_Expecter{mock: &_m.Mock}
}
-// GetDynamicNodePhase provides a mock function with given fields:
+// GetDynamicNodePhase provides a mock function with no fields
func (_m *MutableDynamicNodeStatus) GetDynamicNodePhase() v1alpha1.DynamicNodePhase {
ret := _m.Called()
@@ -67,7 +66,7 @@ func (_c *MutableDynamicNodeStatus_GetDynamicNodePhase_Call) RunAndReturn(run fu
return _c
}
-// GetDynamicNodeReason provides a mock function with given fields:
+// GetDynamicNodeReason provides a mock function with no fields
func (_m *MutableDynamicNodeStatus) GetDynamicNodeReason() string {
ret := _m.Called()
@@ -112,7 +111,7 @@ func (_c *MutableDynamicNodeStatus_GetDynamicNodeReason_Call) RunAndReturn(run f
return _c
}
-// GetExecutionError provides a mock function with given fields:
+// GetExecutionError provides a mock function with no fields
func (_m *MutableDynamicNodeStatus) GetExecutionError() *core.ExecutionError {
ret := _m.Called()
@@ -159,7 +158,7 @@ func (_c *MutableDynamicNodeStatus_GetExecutionError_Call) RunAndReturn(run func
return _c
}
-// GetIsFailurePermanent provides a mock function with given fields:
+// GetIsFailurePermanent provides a mock function with no fields
func (_m *MutableDynamicNodeStatus) GetIsFailurePermanent() bool {
ret := _m.Called()
@@ -204,7 +203,7 @@ func (_c *MutableDynamicNodeStatus_GetIsFailurePermanent_Call) RunAndReturn(run
return _c
}
-// IsDirty provides a mock function with given fields:
+// IsDirty provides a mock function with no fields
func (_m *MutableDynamicNodeStatus) IsDirty() bool {
ret := _m.Called()
@@ -278,7 +277,7 @@ func (_c *MutableDynamicNodeStatus_SetDynamicNodePhase_Call) Return() *MutableDy
}
func (_c *MutableDynamicNodeStatus_SetDynamicNodePhase_Call) RunAndReturn(run func(v1alpha1.DynamicNodePhase)) *MutableDynamicNodeStatus_SetDynamicNodePhase_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -311,7 +310,7 @@ func (_c *MutableDynamicNodeStatus_SetDynamicNodeReason_Call) Return() *MutableD
}
func (_c *MutableDynamicNodeStatus_SetDynamicNodeReason_Call) RunAndReturn(run func(string)) *MutableDynamicNodeStatus_SetDynamicNodeReason_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -344,7 +343,7 @@ func (_c *MutableDynamicNodeStatus_SetExecutionError_Call) Return() *MutableDyna
}
func (_c *MutableDynamicNodeStatus_SetExecutionError_Call) RunAndReturn(run func(*core.ExecutionError)) *MutableDynamicNodeStatus_SetExecutionError_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -377,7 +376,7 @@ func (_c *MutableDynamicNodeStatus_SetIsFailurePermanent_Call) Return() *Mutable
}
func (_c *MutableDynamicNodeStatus_SetIsFailurePermanent_Call) RunAndReturn(run func(bool)) *MutableDynamicNodeStatus_SetIsFailurePermanent_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableGateNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableGateNodeStatus.go
index 03bc8e1acfc..b3c14b9c2b1 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableGateNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableGateNodeStatus.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *MutableGateNodeStatus) EXPECT() *MutableGateNodeStatus_Expecter {
return &MutableGateNodeStatus_Expecter{mock: &_m.Mock}
}
-// GetGateNodePhase provides a mock function with given fields:
+// GetGateNodePhase provides a mock function with no fields
func (_m *MutableGateNodeStatus) GetGateNodePhase() v1alpha1.GateNodePhase {
ret := _m.Called()
@@ -65,7 +65,7 @@ func (_c *MutableGateNodeStatus_GetGateNodePhase_Call) RunAndReturn(run func() v
return _c
}
-// IsDirty provides a mock function with given fields:
+// IsDirty provides a mock function with no fields
func (_m *MutableGateNodeStatus) IsDirty() bool {
ret := _m.Called()
@@ -139,7 +139,7 @@ func (_c *MutableGateNodeStatus_SetGateNodePhase_Call) Return() *MutableGateNode
}
func (_c *MutableGateNodeStatus_SetGateNodePhase_Call) RunAndReturn(run func(v1alpha1.GateNodePhase)) *MutableGateNodeStatus_SetGateNodePhase_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableNodeStatus.go
index 76491e6a15b..eedb67779a9 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableNodeStatus.go
@@ -1,16 +1,13 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- mock "github.com/stretchr/testify/mock"
-
+ v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
storage "github.com/flyteorg/flyte/flytestdlib/storage"
-
+ mock "github.com/stretchr/testify/mock"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
- v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
)
// MutableNodeStatus is an autogenerated mock type for the MutableNodeStatus type
@@ -26,7 +23,7 @@ func (_m *MutableNodeStatus) EXPECT() *MutableNodeStatus_Expecter {
return &MutableNodeStatus_Expecter{mock: &_m.Mock}
}
-// ClearArrayNodeStatus provides a mock function with given fields:
+// ClearArrayNodeStatus provides a mock function with no fields
func (_m *MutableNodeStatus) ClearArrayNodeStatus() {
_m.Called()
}
@@ -54,11 +51,11 @@ func (_c *MutableNodeStatus_ClearArrayNodeStatus_Call) Return() *MutableNodeStat
}
func (_c *MutableNodeStatus_ClearArrayNodeStatus_Call) RunAndReturn(run func()) *MutableNodeStatus_ClearArrayNodeStatus_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// ClearDynamicNodeStatus provides a mock function with given fields:
+// ClearDynamicNodeStatus provides a mock function with no fields
func (_m *MutableNodeStatus) ClearDynamicNodeStatus() {
_m.Called()
}
@@ -86,11 +83,11 @@ func (_c *MutableNodeStatus_ClearDynamicNodeStatus_Call) Return() *MutableNodeSt
}
func (_c *MutableNodeStatus_ClearDynamicNodeStatus_Call) RunAndReturn(run func()) *MutableNodeStatus_ClearDynamicNodeStatus_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// ClearGateNodeStatus provides a mock function with given fields:
+// ClearGateNodeStatus provides a mock function with no fields
func (_m *MutableNodeStatus) ClearGateNodeStatus() {
_m.Called()
}
@@ -118,11 +115,11 @@ func (_c *MutableNodeStatus_ClearGateNodeStatus_Call) Return() *MutableNodeStatu
}
func (_c *MutableNodeStatus_ClearGateNodeStatus_Call) RunAndReturn(run func()) *MutableNodeStatus_ClearGateNodeStatus_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// ClearLastAttemptStartedAt provides a mock function with given fields:
+// ClearLastAttemptStartedAt provides a mock function with no fields
func (_m *MutableNodeStatus) ClearLastAttemptStartedAt() {
_m.Called()
}
@@ -150,11 +147,11 @@ func (_c *MutableNodeStatus_ClearLastAttemptStartedAt_Call) Return() *MutableNod
}
func (_c *MutableNodeStatus_ClearLastAttemptStartedAt_Call) RunAndReturn(run func()) *MutableNodeStatus_ClearLastAttemptStartedAt_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// ClearSubNodeStatus provides a mock function with given fields:
+// ClearSubNodeStatus provides a mock function with no fields
func (_m *MutableNodeStatus) ClearSubNodeStatus() {
_m.Called()
}
@@ -182,11 +179,11 @@ func (_c *MutableNodeStatus_ClearSubNodeStatus_Call) Return() *MutableNodeStatus
}
func (_c *MutableNodeStatus_ClearSubNodeStatus_Call) RunAndReturn(run func()) *MutableNodeStatus_ClearSubNodeStatus_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// ClearTaskStatus provides a mock function with given fields:
+// ClearTaskStatus provides a mock function with no fields
func (_m *MutableNodeStatus) ClearTaskStatus() {
_m.Called()
}
@@ -214,11 +211,11 @@ func (_c *MutableNodeStatus_ClearTaskStatus_Call) Return() *MutableNodeStatus_Cl
}
func (_c *MutableNodeStatus_ClearTaskStatus_Call) RunAndReturn(run func()) *MutableNodeStatus_ClearTaskStatus_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// ClearWorkflowStatus provides a mock function with given fields:
+// ClearWorkflowStatus provides a mock function with no fields
func (_m *MutableNodeStatus) ClearWorkflowStatus() {
_m.Called()
}
@@ -246,11 +243,11 @@ func (_c *MutableNodeStatus_ClearWorkflowStatus_Call) Return() *MutableNodeStatu
}
func (_c *MutableNodeStatus_ClearWorkflowStatus_Call) RunAndReturn(run func()) *MutableNodeStatus_ClearWorkflowStatus_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// GetArrayNodeStatus provides a mock function with given fields:
+// GetArrayNodeStatus provides a mock function with no fields
func (_m *MutableNodeStatus) GetArrayNodeStatus() v1alpha1.MutableArrayNodeStatus {
ret := _m.Called()
@@ -297,7 +294,7 @@ func (_c *MutableNodeStatus_GetArrayNodeStatus_Call) RunAndReturn(run func() v1a
return _c
}
-// GetBranchStatus provides a mock function with given fields:
+// GetBranchStatus provides a mock function with no fields
func (_m *MutableNodeStatus) GetBranchStatus() v1alpha1.MutableBranchNodeStatus {
ret := _m.Called()
@@ -344,7 +341,7 @@ func (_c *MutableNodeStatus_GetBranchStatus_Call) RunAndReturn(run func() v1alph
return _c
}
-// GetDynamicNodeStatus provides a mock function with given fields:
+// GetDynamicNodeStatus provides a mock function with no fields
func (_m *MutableNodeStatus) GetDynamicNodeStatus() v1alpha1.MutableDynamicNodeStatus {
ret := _m.Called()
@@ -391,7 +388,7 @@ func (_c *MutableNodeStatus_GetDynamicNodeStatus_Call) RunAndReturn(run func() v
return _c
}
-// GetGateNodeStatus provides a mock function with given fields:
+// GetGateNodeStatus provides a mock function with no fields
func (_m *MutableNodeStatus) GetGateNodeStatus() v1alpha1.MutableGateNodeStatus {
ret := _m.Called()
@@ -438,7 +435,7 @@ func (_c *MutableNodeStatus_GetGateNodeStatus_Call) RunAndReturn(run func() v1al
return _c
}
-// GetOrCreateArrayNodeStatus provides a mock function with given fields:
+// GetOrCreateArrayNodeStatus provides a mock function with no fields
func (_m *MutableNodeStatus) GetOrCreateArrayNodeStatus() v1alpha1.MutableArrayNodeStatus {
ret := _m.Called()
@@ -485,7 +482,7 @@ func (_c *MutableNodeStatus_GetOrCreateArrayNodeStatus_Call) RunAndReturn(run fu
return _c
}
-// GetOrCreateBranchStatus provides a mock function with given fields:
+// GetOrCreateBranchStatus provides a mock function with no fields
func (_m *MutableNodeStatus) GetOrCreateBranchStatus() v1alpha1.MutableBranchNodeStatus {
ret := _m.Called()
@@ -532,7 +529,7 @@ func (_c *MutableNodeStatus_GetOrCreateBranchStatus_Call) RunAndReturn(run func(
return _c
}
-// GetOrCreateDynamicNodeStatus provides a mock function with given fields:
+// GetOrCreateDynamicNodeStatus provides a mock function with no fields
func (_m *MutableNodeStatus) GetOrCreateDynamicNodeStatus() v1alpha1.MutableDynamicNodeStatus {
ret := _m.Called()
@@ -579,7 +576,7 @@ func (_c *MutableNodeStatus_GetOrCreateDynamicNodeStatus_Call) RunAndReturn(run
return _c
}
-// GetOrCreateGateNodeStatus provides a mock function with given fields:
+// GetOrCreateGateNodeStatus provides a mock function with no fields
func (_m *MutableNodeStatus) GetOrCreateGateNodeStatus() v1alpha1.MutableGateNodeStatus {
ret := _m.Called()
@@ -626,7 +623,7 @@ func (_c *MutableNodeStatus_GetOrCreateGateNodeStatus_Call) RunAndReturn(run fun
return _c
}
-// GetOrCreateTaskStatus provides a mock function with given fields:
+// GetOrCreateTaskStatus provides a mock function with no fields
func (_m *MutableNodeStatus) GetOrCreateTaskStatus() v1alpha1.MutableTaskNodeStatus {
ret := _m.Called()
@@ -673,7 +670,7 @@ func (_c *MutableNodeStatus_GetOrCreateTaskStatus_Call) RunAndReturn(run func()
return _c
}
-// GetOrCreateWorkflowStatus provides a mock function with given fields:
+// GetOrCreateWorkflowStatus provides a mock function with no fields
func (_m *MutableNodeStatus) GetOrCreateWorkflowStatus() v1alpha1.MutableWorkflowNodeStatus {
ret := _m.Called()
@@ -720,7 +717,7 @@ func (_c *MutableNodeStatus_GetOrCreateWorkflowStatus_Call) RunAndReturn(run fun
return _c
}
-// GetTaskStatus provides a mock function with given fields:
+// GetTaskStatus provides a mock function with no fields
func (_m *MutableNodeStatus) GetTaskStatus() v1alpha1.MutableTaskNodeStatus {
ret := _m.Called()
@@ -767,7 +764,7 @@ func (_c *MutableNodeStatus_GetTaskStatus_Call) RunAndReturn(run func() v1alpha1
return _c
}
-// GetWorkflowStatus provides a mock function with given fields:
+// GetWorkflowStatus provides a mock function with no fields
func (_m *MutableNodeStatus) GetWorkflowStatus() v1alpha1.MutableWorkflowNodeStatus {
ret := _m.Called()
@@ -814,7 +811,7 @@ func (_c *MutableNodeStatus_GetWorkflowStatus_Call) RunAndReturn(run func() v1al
return _c
}
-// IncrementAttempts provides a mock function with given fields:
+// IncrementAttempts provides a mock function with no fields
func (_m *MutableNodeStatus) IncrementAttempts() uint32 {
ret := _m.Called()
@@ -859,7 +856,7 @@ func (_c *MutableNodeStatus_IncrementAttempts_Call) RunAndReturn(run func() uint
return _c
}
-// IncrementSystemFailures provides a mock function with given fields:
+// IncrementSystemFailures provides a mock function with no fields
func (_m *MutableNodeStatus) IncrementSystemFailures() uint32 {
ret := _m.Called()
@@ -904,7 +901,7 @@ func (_c *MutableNodeStatus_IncrementSystemFailures_Call) RunAndReturn(run func(
return _c
}
-// IsDirty provides a mock function with given fields:
+// IsDirty provides a mock function with no fields
func (_m *MutableNodeStatus) IsDirty() bool {
ret := _m.Called()
@@ -949,7 +946,7 @@ func (_c *MutableNodeStatus_IsDirty_Call) RunAndReturn(run func() bool) *Mutable
return _c
}
-// ResetDirty provides a mock function with given fields:
+// ResetDirty provides a mock function with no fields
func (_m *MutableNodeStatus) ResetDirty() {
_m.Called()
}
@@ -977,11 +974,11 @@ func (_c *MutableNodeStatus_ResetDirty_Call) Return() *MutableNodeStatus_ResetDi
}
func (_c *MutableNodeStatus_ResetDirty_Call) RunAndReturn(run func()) *MutableNodeStatus_ResetDirty_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// SetCached provides a mock function with given fields:
+// SetCached provides a mock function with no fields
func (_m *MutableNodeStatus) SetCached() {
_m.Called()
}
@@ -1009,7 +1006,7 @@ func (_c *MutableNodeStatus_SetCached_Call) Return() *MutableNodeStatus_SetCache
}
func (_c *MutableNodeStatus_SetCached_Call) RunAndReturn(run func()) *MutableNodeStatus_SetCached_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -1042,7 +1039,7 @@ func (_c *MutableNodeStatus_SetDataDir_Call) Return() *MutableNodeStatus_SetData
}
func (_c *MutableNodeStatus_SetDataDir_Call) RunAndReturn(run func(storage.DataReference)) *MutableNodeStatus_SetDataDir_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -1075,7 +1072,7 @@ func (_c *MutableNodeStatus_SetOutputDir_Call) Return() *MutableNodeStatus_SetOu
}
func (_c *MutableNodeStatus_SetOutputDir_Call) RunAndReturn(run func(storage.DataReference)) *MutableNodeStatus_SetOutputDir_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -1108,7 +1105,7 @@ func (_c *MutableNodeStatus_SetParentNodeID_Call) Return() *MutableNodeStatus_Se
}
func (_c *MutableNodeStatus_SetParentNodeID_Call) RunAndReturn(run func(*string)) *MutableNodeStatus_SetParentNodeID_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -1141,7 +1138,7 @@ func (_c *MutableNodeStatus_SetParentTaskID_Call) Return() *MutableNodeStatus_Se
}
func (_c *MutableNodeStatus_SetParentTaskID_Call) RunAndReturn(run func(*core.TaskExecutionIdentifier)) *MutableNodeStatus_SetParentTaskID_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -1178,7 +1175,7 @@ func (_c *MutableNodeStatus_UpdatePhase_Call) Return() *MutableNodeStatus_Update
}
func (_c *MutableNodeStatus_UpdatePhase_Call) RunAndReturn(run func(v1alpha1.NodePhase, v1.Time, string, bool, *core.ExecutionError)) *MutableNodeStatus_UpdatePhase_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableSubWorkflowNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableSubWorkflowNodeStatus.go
index 1faeb9e8202..072fa55b099 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableSubWorkflowNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableSubWorkflowNodeStatus.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *MutableSubWorkflowNodeStatus) EXPECT() *MutableSubWorkflowNodeStatus_E
return &MutableSubWorkflowNodeStatus_Expecter{mock: &_m.Mock}
}
-// GetPhase provides a mock function with given fields:
+// GetPhase provides a mock function with no fields
func (_m *MutableSubWorkflowNodeStatus) GetPhase() v1alpha1.WorkflowPhase {
ret := _m.Called()
@@ -65,7 +65,7 @@ func (_c *MutableSubWorkflowNodeStatus_GetPhase_Call) RunAndReturn(run func() v1
return _c
}
-// IsDirty provides a mock function with given fields:
+// IsDirty provides a mock function with no fields
func (_m *MutableSubWorkflowNodeStatus) IsDirty() bool {
ret := _m.Called()
@@ -139,7 +139,7 @@ func (_c *MutableSubWorkflowNodeStatus_SetPhase_Call) Return() *MutableSubWorkfl
}
func (_c *MutableSubWorkflowNodeStatus_SetPhase_Call) RunAndReturn(run func(v1alpha1.WorkflowPhase)) *MutableSubWorkflowNodeStatus_SetPhase_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableTaskNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableTaskNodeStatus.go
index f2d8b44ab5c..58835566c9e 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableTaskNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableTaskNodeStatus.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -22,7 +22,7 @@ func (_m *MutableTaskNodeStatus) EXPECT() *MutableTaskNodeStatus_Expecter {
return &MutableTaskNodeStatus_Expecter{mock: &_m.Mock}
}
-// GetBarrierClockTick provides a mock function with given fields:
+// GetBarrierClockTick provides a mock function with no fields
func (_m *MutableTaskNodeStatus) GetBarrierClockTick() uint32 {
ret := _m.Called()
@@ -67,7 +67,7 @@ func (_c *MutableTaskNodeStatus_GetBarrierClockTick_Call) RunAndReturn(run func(
return _c
}
-// GetCleanupOnFailure provides a mock function with given fields:
+// GetCleanupOnFailure provides a mock function with no fields
func (_m *MutableTaskNodeStatus) GetCleanupOnFailure() bool {
ret := _m.Called()
@@ -112,7 +112,7 @@ func (_c *MutableTaskNodeStatus_GetCleanupOnFailure_Call) RunAndReturn(run func(
return _c
}
-// GetLastPhaseUpdatedAt provides a mock function with given fields:
+// GetLastPhaseUpdatedAt provides a mock function with no fields
func (_m *MutableTaskNodeStatus) GetLastPhaseUpdatedAt() time.Time {
ret := _m.Called()
@@ -157,7 +157,7 @@ func (_c *MutableTaskNodeStatus_GetLastPhaseUpdatedAt_Call) RunAndReturn(run fun
return _c
}
-// GetPhase provides a mock function with given fields:
+// GetPhase provides a mock function with no fields
func (_m *MutableTaskNodeStatus) GetPhase() int {
ret := _m.Called()
@@ -202,7 +202,7 @@ func (_c *MutableTaskNodeStatus_GetPhase_Call) RunAndReturn(run func() int) *Mut
return _c
}
-// GetPhaseVersion provides a mock function with given fields:
+// GetPhaseVersion provides a mock function with no fields
func (_m *MutableTaskNodeStatus) GetPhaseVersion() uint32 {
ret := _m.Called()
@@ -247,7 +247,7 @@ func (_c *MutableTaskNodeStatus_GetPhaseVersion_Call) RunAndReturn(run func() ui
return _c
}
-// GetPluginState provides a mock function with given fields:
+// GetPluginState provides a mock function with no fields
func (_m *MutableTaskNodeStatus) GetPluginState() []byte {
ret := _m.Called()
@@ -294,7 +294,7 @@ func (_c *MutableTaskNodeStatus_GetPluginState_Call) RunAndReturn(run func() []b
return _c
}
-// GetPluginStateVersion provides a mock function with given fields:
+// GetPluginStateVersion provides a mock function with no fields
func (_m *MutableTaskNodeStatus) GetPluginStateVersion() uint32 {
ret := _m.Called()
@@ -339,7 +339,7 @@ func (_c *MutableTaskNodeStatus_GetPluginStateVersion_Call) RunAndReturn(run fun
return _c
}
-// GetPreviousNodeExecutionCheckpointPath provides a mock function with given fields:
+// GetPreviousNodeExecutionCheckpointPath provides a mock function with no fields
func (_m *MutableTaskNodeStatus) GetPreviousNodeExecutionCheckpointPath() storage.DataReference {
ret := _m.Called()
@@ -384,7 +384,7 @@ func (_c *MutableTaskNodeStatus_GetPreviousNodeExecutionCheckpointPath_Call) Run
return _c
}
-// IsDirty provides a mock function with given fields:
+// IsDirty provides a mock function with no fields
func (_m *MutableTaskNodeStatus) IsDirty() bool {
ret := _m.Called()
@@ -458,7 +458,7 @@ func (_c *MutableTaskNodeStatus_SetBarrierClockTick_Call) Return() *MutableTaskN
}
func (_c *MutableTaskNodeStatus_SetBarrierClockTick_Call) RunAndReturn(run func(uint32)) *MutableTaskNodeStatus_SetBarrierClockTick_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -491,7 +491,7 @@ func (_c *MutableTaskNodeStatus_SetCleanupOnFailure_Call) Return() *MutableTaskN
}
func (_c *MutableTaskNodeStatus_SetCleanupOnFailure_Call) RunAndReturn(run func(bool)) *MutableTaskNodeStatus_SetCleanupOnFailure_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -524,7 +524,7 @@ func (_c *MutableTaskNodeStatus_SetLastPhaseUpdatedAt_Call) Return() *MutableTas
}
func (_c *MutableTaskNodeStatus_SetLastPhaseUpdatedAt_Call) RunAndReturn(run func(time.Time)) *MutableTaskNodeStatus_SetLastPhaseUpdatedAt_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -557,7 +557,7 @@ func (_c *MutableTaskNodeStatus_SetPhase_Call) Return() *MutableTaskNodeStatus_S
}
func (_c *MutableTaskNodeStatus_SetPhase_Call) RunAndReturn(run func(int)) *MutableTaskNodeStatus_SetPhase_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -590,7 +590,7 @@ func (_c *MutableTaskNodeStatus_SetPhaseVersion_Call) Return() *MutableTaskNodeS
}
func (_c *MutableTaskNodeStatus_SetPhaseVersion_Call) RunAndReturn(run func(uint32)) *MutableTaskNodeStatus_SetPhaseVersion_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -623,7 +623,7 @@ func (_c *MutableTaskNodeStatus_SetPluginState_Call) Return() *MutableTaskNodeSt
}
func (_c *MutableTaskNodeStatus_SetPluginState_Call) RunAndReturn(run func([]byte)) *MutableTaskNodeStatus_SetPluginState_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -656,7 +656,7 @@ func (_c *MutableTaskNodeStatus_SetPluginStateVersion_Call) Return() *MutableTas
}
func (_c *MutableTaskNodeStatus_SetPluginStateVersion_Call) RunAndReturn(run func(uint32)) *MutableTaskNodeStatus_SetPluginStateVersion_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -689,7 +689,7 @@ func (_c *MutableTaskNodeStatus_SetPreviousNodeExecutionCheckpointPath_Call) Ret
}
func (_c *MutableTaskNodeStatus_SetPreviousNodeExecutionCheckpointPath_Call) RunAndReturn(run func(storage.DataReference)) *MutableTaskNodeStatus_SetPreviousNodeExecutionCheckpointPath_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableWorkflowNodeStatus.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableWorkflowNodeStatus.go
index 6a4d93ee7d0..580ea0b5fa2 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableWorkflowNodeStatus.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/MutableWorkflowNodeStatus.go
@@ -1,12 +1,11 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- mock "github.com/stretchr/testify/mock"
-
v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ mock "github.com/stretchr/testify/mock"
)
// MutableWorkflowNodeStatus is an autogenerated mock type for the MutableWorkflowNodeStatus type
@@ -22,7 +21,7 @@ func (_m *MutableWorkflowNodeStatus) EXPECT() *MutableWorkflowNodeStatus_Expecte
return &MutableWorkflowNodeStatus_Expecter{mock: &_m.Mock}
}
-// GetExecutionError provides a mock function with given fields:
+// GetExecutionError provides a mock function with no fields
func (_m *MutableWorkflowNodeStatus) GetExecutionError() *core.ExecutionError {
ret := _m.Called()
@@ -69,7 +68,7 @@ func (_c *MutableWorkflowNodeStatus_GetExecutionError_Call) RunAndReturn(run fun
return _c
}
-// GetWorkflowNodePhase provides a mock function with given fields:
+// GetWorkflowNodePhase provides a mock function with no fields
func (_m *MutableWorkflowNodeStatus) GetWorkflowNodePhase() v1alpha1.WorkflowNodePhase {
ret := _m.Called()
@@ -114,7 +113,7 @@ func (_c *MutableWorkflowNodeStatus_GetWorkflowNodePhase_Call) RunAndReturn(run
return _c
}
-// IsDirty provides a mock function with given fields:
+// IsDirty provides a mock function with no fields
func (_m *MutableWorkflowNodeStatus) IsDirty() bool {
ret := _m.Called()
@@ -188,7 +187,7 @@ func (_c *MutableWorkflowNodeStatus_SetExecutionError_Call) Return() *MutableWor
}
func (_c *MutableWorkflowNodeStatus_SetExecutionError_Call) RunAndReturn(run func(*core.ExecutionError)) *MutableWorkflowNodeStatus_SetExecutionError_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -221,7 +220,7 @@ func (_c *MutableWorkflowNodeStatus_SetWorkflowNodePhase_Call) Return() *Mutable
}
func (_c *MutableWorkflowNodeStatus_SetWorkflowNodePhase_Call) RunAndReturn(run func(v1alpha1.WorkflowNodePhase)) *MutableWorkflowNodeStatus_SetWorkflowNodePhase_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/NodeGetter.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/NodeGetter.go
index 40270cf4dfa..11e34283abe 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/NodeGetter.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/NodeGetter.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/NodeStatusGetter.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/NodeStatusGetter.go
index b4e7c0acd35..8bd0fec9be6 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/NodeStatusGetter.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/NodeStatusGetter.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/NodeStatusVisitor.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/NodeStatusVisitor.go
index 53961d9be1e..a737738a707 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/NodeStatusVisitor.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/NodeStatusVisitor.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -49,7 +49,7 @@ func (_c *NodeStatusVisitor_VisitNodeStatuses_Call) Return() *NodeStatusVisitor_
}
func (_c *NodeStatusVisitor_VisitNodeStatuses_Call) RunAndReturn(run func(func(string, v1alpha1.ExecutableNodeStatus))) *NodeStatusVisitor_VisitNodeStatuses_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/SubWorkflowGetter.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/SubWorkflowGetter.go
index f925ea24185..61d88d9b474 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/SubWorkflowGetter.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/SubWorkflowGetter.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/TaskDetailsGetter.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/TaskDetailsGetter.go
index 467254c8f27..786ab819e50 100644
--- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/TaskDetailsGetter.go
+++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/TaskDetailsGetter.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytepropeller/pkg/compiler/common/mocks/interface_provider.go b/flytepropeller/pkg/compiler/common/mocks/interface_provider.go
index be2c40a4c42..682c4464721 100644
--- a/flytepropeller/pkg/compiler/common/mocks/interface_provider.go
+++ b/flytepropeller/pkg/compiler/common/mocks/interface_provider.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *InterfaceProvider) EXPECT() *InterfaceProvider_Expecter {
return &InterfaceProvider_Expecter{mock: &_m.Mock}
}
-// GetExpectedInputs provides a mock function with given fields:
+// GetExpectedInputs provides a mock function with no fields
func (_m *InterfaceProvider) GetExpectedInputs() *core.ParameterMap {
ret := _m.Called()
@@ -67,7 +67,7 @@ func (_c *InterfaceProvider_GetExpectedInputs_Call) RunAndReturn(run func() *cor
return _c
}
-// GetExpectedOutputs provides a mock function with given fields:
+// GetExpectedOutputs provides a mock function with no fields
func (_m *InterfaceProvider) GetExpectedOutputs() *core.VariableMap {
ret := _m.Called()
@@ -114,7 +114,7 @@ func (_c *InterfaceProvider_GetExpectedOutputs_Call) RunAndReturn(run func() *co
return _c
}
-// GetID provides a mock function with given fields:
+// GetID provides a mock function with no fields
func (_m *InterfaceProvider) GetID() *core.Identifier {
ret := _m.Called()
diff --git a/flytepropeller/pkg/compiler/common/mocks/node.go b/flytepropeller/pkg/compiler/common/mocks/node.go
index 51761839ecc..429cf90932b 100644
--- a/flytepropeller/pkg/compiler/common/mocks/node.go
+++ b/flytepropeller/pkg/compiler/common/mocks/node.go
@@ -1,11 +1,10 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
common "github.com/flyteorg/flyte/flytepropeller/pkg/compiler/common"
-
mock "github.com/stretchr/testify/mock"
)
@@ -22,7 +21,7 @@ func (_m *Node) EXPECT() *Node_Expecter {
return &Node_Expecter{mock: &_m.Mock}
}
-// GetArrayNode provides a mock function with given fields:
+// GetArrayNode provides a mock function with no fields
func (_m *Node) GetArrayNode() *core.ArrayNode {
ret := _m.Called()
@@ -69,7 +68,7 @@ func (_c *Node_GetArrayNode_Call) RunAndReturn(run func() *core.ArrayNode) *Node
return _c
}
-// GetBranchNode provides a mock function with given fields:
+// GetBranchNode provides a mock function with no fields
func (_m *Node) GetBranchNode() *core.BranchNode {
ret := _m.Called()
@@ -116,7 +115,7 @@ func (_c *Node_GetBranchNode_Call) RunAndReturn(run func() *core.BranchNode) *No
return _c
}
-// GetCoreNode provides a mock function with given fields:
+// GetCoreNode provides a mock function with no fields
func (_m *Node) GetCoreNode() *core.Node {
ret := _m.Called()
@@ -163,7 +162,7 @@ func (_c *Node_GetCoreNode_Call) RunAndReturn(run func() *core.Node) *Node_GetCo
return _c
}
-// GetGateNode provides a mock function with given fields:
+// GetGateNode provides a mock function with no fields
func (_m *Node) GetGateNode() *core.GateNode {
ret := _m.Called()
@@ -210,7 +209,7 @@ func (_c *Node_GetGateNode_Call) RunAndReturn(run func() *core.GateNode) *Node_G
return _c
}
-// GetId provides a mock function with given fields:
+// GetId provides a mock function with no fields
func (_m *Node) GetId() string {
ret := _m.Called()
@@ -255,7 +254,7 @@ func (_c *Node_GetId_Call) RunAndReturn(run func() string) *Node_GetId_Call {
return _c
}
-// GetInputs provides a mock function with given fields:
+// GetInputs provides a mock function with no fields
func (_m *Node) GetInputs() []*core.Binding {
ret := _m.Called()
@@ -302,7 +301,7 @@ func (_c *Node_GetInputs_Call) RunAndReturn(run func() []*core.Binding) *Node_Ge
return _c
}
-// GetInterface provides a mock function with given fields:
+// GetInterface provides a mock function with no fields
func (_m *Node) GetInterface() *core.TypedInterface {
ret := _m.Called()
@@ -349,7 +348,7 @@ func (_c *Node_GetInterface_Call) RunAndReturn(run func() *core.TypedInterface)
return _c
}
-// GetMetadata provides a mock function with given fields:
+// GetMetadata provides a mock function with no fields
func (_m *Node) GetMetadata() *core.NodeMetadata {
ret := _m.Called()
@@ -396,7 +395,7 @@ func (_c *Node_GetMetadata_Call) RunAndReturn(run func() *core.NodeMetadata) *No
return _c
}
-// GetOutputAliases provides a mock function with given fields:
+// GetOutputAliases provides a mock function with no fields
func (_m *Node) GetOutputAliases() []*core.Alias {
ret := _m.Called()
@@ -443,7 +442,7 @@ func (_c *Node_GetOutputAliases_Call) RunAndReturn(run func() []*core.Alias) *No
return _c
}
-// GetSubWorkflow provides a mock function with given fields:
+// GetSubWorkflow provides a mock function with no fields
func (_m *Node) GetSubWorkflow() common.Workflow {
ret := _m.Called()
@@ -490,7 +489,7 @@ func (_c *Node_GetSubWorkflow_Call) RunAndReturn(run func() common.Workflow) *No
return _c
}
-// GetTask provides a mock function with given fields:
+// GetTask provides a mock function with no fields
func (_m *Node) GetTask() common.Task {
ret := _m.Called()
@@ -537,7 +536,7 @@ func (_c *Node_GetTask_Call) RunAndReturn(run func() common.Task) *Node_GetTask_
return _c
}
-// GetTaskNode provides a mock function with given fields:
+// GetTaskNode provides a mock function with no fields
func (_m *Node) GetTaskNode() *core.TaskNode {
ret := _m.Called()
@@ -584,7 +583,7 @@ func (_c *Node_GetTaskNode_Call) RunAndReturn(run func() *core.TaskNode) *Node_G
return _c
}
-// GetUpstreamNodeIds provides a mock function with given fields:
+// GetUpstreamNodeIds provides a mock function with no fields
func (_m *Node) GetUpstreamNodeIds() []string {
ret := _m.Called()
@@ -631,7 +630,7 @@ func (_c *Node_GetUpstreamNodeIds_Call) RunAndReturn(run func() []string) *Node_
return _c
}
-// GetWorkflowNode provides a mock function with given fields:
+// GetWorkflowNode provides a mock function with no fields
func (_m *Node) GetWorkflowNode() *core.WorkflowNode {
ret := _m.Called()
diff --git a/flytepropeller/pkg/compiler/common/mocks/node_builder.go b/flytepropeller/pkg/compiler/common/mocks/node_builder.go
index 8e0790b8cbf..5c8dc18ca7b 100644
--- a/flytepropeller/pkg/compiler/common/mocks/node_builder.go
+++ b/flytepropeller/pkg/compiler/common/mocks/node_builder.go
@@ -1,11 +1,10 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
common "github.com/flyteorg/flyte/flytepropeller/pkg/compiler/common"
-
mock "github.com/stretchr/testify/mock"
)
@@ -22,7 +21,7 @@ func (_m *NodeBuilder) EXPECT() *NodeBuilder_Expecter {
return &NodeBuilder_Expecter{mock: &_m.Mock}
}
-// GetArrayNode provides a mock function with given fields:
+// GetArrayNode provides a mock function with no fields
func (_m *NodeBuilder) GetArrayNode() *core.ArrayNode {
ret := _m.Called()
@@ -69,7 +68,7 @@ func (_c *NodeBuilder_GetArrayNode_Call) RunAndReturn(run func() *core.ArrayNode
return _c
}
-// GetBranchNode provides a mock function with given fields:
+// GetBranchNode provides a mock function with no fields
func (_m *NodeBuilder) GetBranchNode() *core.BranchNode {
ret := _m.Called()
@@ -116,7 +115,7 @@ func (_c *NodeBuilder_GetBranchNode_Call) RunAndReturn(run func() *core.BranchNo
return _c
}
-// GetCoreNode provides a mock function with given fields:
+// GetCoreNode provides a mock function with no fields
func (_m *NodeBuilder) GetCoreNode() *core.Node {
ret := _m.Called()
@@ -163,7 +162,7 @@ func (_c *NodeBuilder_GetCoreNode_Call) RunAndReturn(run func() *core.Node) *Nod
return _c
}
-// GetGateNode provides a mock function with given fields:
+// GetGateNode provides a mock function with no fields
func (_m *NodeBuilder) GetGateNode() *core.GateNode {
ret := _m.Called()
@@ -210,7 +209,7 @@ func (_c *NodeBuilder_GetGateNode_Call) RunAndReturn(run func() *core.GateNode)
return _c
}
-// GetId provides a mock function with given fields:
+// GetId provides a mock function with no fields
func (_m *NodeBuilder) GetId() string {
ret := _m.Called()
@@ -255,7 +254,7 @@ func (_c *NodeBuilder_GetId_Call) RunAndReturn(run func() string) *NodeBuilder_G
return _c
}
-// GetInputs provides a mock function with given fields:
+// GetInputs provides a mock function with no fields
func (_m *NodeBuilder) GetInputs() []*core.Binding {
ret := _m.Called()
@@ -302,7 +301,7 @@ func (_c *NodeBuilder_GetInputs_Call) RunAndReturn(run func() []*core.Binding) *
return _c
}
-// GetInterface provides a mock function with given fields:
+// GetInterface provides a mock function with no fields
func (_m *NodeBuilder) GetInterface() *core.TypedInterface {
ret := _m.Called()
@@ -349,7 +348,7 @@ func (_c *NodeBuilder_GetInterface_Call) RunAndReturn(run func() *core.TypedInte
return _c
}
-// GetMetadata provides a mock function with given fields:
+// GetMetadata provides a mock function with no fields
func (_m *NodeBuilder) GetMetadata() *core.NodeMetadata {
ret := _m.Called()
@@ -396,7 +395,7 @@ func (_c *NodeBuilder_GetMetadata_Call) RunAndReturn(run func() *core.NodeMetada
return _c
}
-// GetOutputAliases provides a mock function with given fields:
+// GetOutputAliases provides a mock function with no fields
func (_m *NodeBuilder) GetOutputAliases() []*core.Alias {
ret := _m.Called()
@@ -443,7 +442,7 @@ func (_c *NodeBuilder_GetOutputAliases_Call) RunAndReturn(run func() []*core.Ali
return _c
}
-// GetSubWorkflow provides a mock function with given fields:
+// GetSubWorkflow provides a mock function with no fields
func (_m *NodeBuilder) GetSubWorkflow() common.Workflow {
ret := _m.Called()
@@ -490,7 +489,7 @@ func (_c *NodeBuilder_GetSubWorkflow_Call) RunAndReturn(run func() common.Workfl
return _c
}
-// GetTask provides a mock function with given fields:
+// GetTask provides a mock function with no fields
func (_m *NodeBuilder) GetTask() common.Task {
ret := _m.Called()
@@ -537,7 +536,7 @@ func (_c *NodeBuilder_GetTask_Call) RunAndReturn(run func() common.Task) *NodeBu
return _c
}
-// GetTaskNode provides a mock function with given fields:
+// GetTaskNode provides a mock function with no fields
func (_m *NodeBuilder) GetTaskNode() *core.TaskNode {
ret := _m.Called()
@@ -584,7 +583,7 @@ func (_c *NodeBuilder_GetTaskNode_Call) RunAndReturn(run func() *core.TaskNode)
return _c
}
-// GetUpstreamNodeIds provides a mock function with given fields:
+// GetUpstreamNodeIds provides a mock function with no fields
func (_m *NodeBuilder) GetUpstreamNodeIds() []string {
ret := _m.Called()
@@ -631,7 +630,7 @@ func (_c *NodeBuilder_GetUpstreamNodeIds_Call) RunAndReturn(run func() []string)
return _c
}
-// GetWorkflowNode provides a mock function with given fields:
+// GetWorkflowNode provides a mock function with no fields
func (_m *NodeBuilder) GetWorkflowNode() *core.WorkflowNode {
ret := _m.Called()
@@ -707,7 +706,7 @@ func (_c *NodeBuilder_SetID_Call) Return() *NodeBuilder_SetID_Call {
}
func (_c *NodeBuilder_SetID_Call) RunAndReturn(run func(string)) *NodeBuilder_SetID_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -740,7 +739,7 @@ func (_c *NodeBuilder_SetInputs_Call) Return() *NodeBuilder_SetInputs_Call {
}
func (_c *NodeBuilder_SetInputs_Call) RunAndReturn(run func([]*core.Binding)) *NodeBuilder_SetInputs_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -773,7 +772,7 @@ func (_c *NodeBuilder_SetInterface_Call) Return() *NodeBuilder_SetInterface_Call
}
func (_c *NodeBuilder_SetInterface_Call) RunAndReturn(run func(*core.TypedInterface)) *NodeBuilder_SetInterface_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -806,7 +805,7 @@ func (_c *NodeBuilder_SetSubWorkflow_Call) Return() *NodeBuilder_SetSubWorkflow_
}
func (_c *NodeBuilder_SetSubWorkflow_Call) RunAndReturn(run func(common.Workflow)) *NodeBuilder_SetSubWorkflow_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -839,7 +838,7 @@ func (_c *NodeBuilder_SetTask_Call) Return() *NodeBuilder_SetTask_Call {
}
func (_c *NodeBuilder_SetTask_Call) RunAndReturn(run func(common.Task)) *NodeBuilder_SetTask_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/compiler/common/mocks/task.go b/flytepropeller/pkg/compiler/common/mocks/task.go
index ed08890b529..8264426c1c5 100644
--- a/flytepropeller/pkg/compiler/common/mocks/task.go
+++ b/flytepropeller/pkg/compiler/common/mocks/task.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *Task) EXPECT() *Task_Expecter {
return &Task_Expecter{mock: &_m.Mock}
}
-// GetCoreTask provides a mock function with given fields:
+// GetCoreTask provides a mock function with no fields
func (_m *Task) GetCoreTask() *core.TaskTemplate {
ret := _m.Called()
@@ -67,7 +67,7 @@ func (_c *Task_GetCoreTask_Call) RunAndReturn(run func() *core.TaskTemplate) *Ta
return _c
}
-// GetID provides a mock function with given fields:
+// GetID provides a mock function with no fields
func (_m *Task) GetID() *core.Identifier {
ret := _m.Called()
@@ -114,7 +114,7 @@ func (_c *Task_GetID_Call) RunAndReturn(run func() *core.Identifier) *Task_GetID
return _c
}
-// GetInterface provides a mock function with given fields:
+// GetInterface provides a mock function with no fields
func (_m *Task) GetInterface() *core.TypedInterface {
ret := _m.Called()
diff --git a/flytepropeller/pkg/compiler/common/mocks/workflow.go b/flytepropeller/pkg/compiler/common/mocks/workflow.go
index 77af668a472..fcff4b722c7 100644
--- a/flytepropeller/pkg/compiler/common/mocks/workflow.go
+++ b/flytepropeller/pkg/compiler/common/mocks/workflow.go
@@ -1,11 +1,10 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
common "github.com/flyteorg/flyte/flytepropeller/pkg/compiler/common"
-
mock "github.com/stretchr/testify/mock"
)
@@ -80,7 +79,7 @@ func (_c *Workflow_GetCompiledSubWorkflow_Call) RunAndReturn(run func(*core.Iden
return _c
}
-// GetCoreWorkflow provides a mock function with given fields:
+// GetCoreWorkflow provides a mock function with no fields
func (_m *Workflow) GetCoreWorkflow() *core.CompiledWorkflow {
ret := _m.Called()
@@ -127,7 +126,7 @@ func (_c *Workflow_GetCoreWorkflow_Call) RunAndReturn(run func() *core.CompiledW
return _c
}
-// GetDownstreamNodes provides a mock function with given fields:
+// GetDownstreamNodes provides a mock function with no fields
func (_m *Workflow) GetDownstreamNodes() common.StringAdjacencyList {
ret := _m.Called()
@@ -174,7 +173,7 @@ func (_c *Workflow_GetDownstreamNodes_Call) RunAndReturn(run func() common.Strin
return _c
}
-// GetFailureNode provides a mock function with given fields:
+// GetFailureNode provides a mock function with no fields
func (_m *Workflow) GetFailureNode() common.Node {
ret := _m.Called()
@@ -337,7 +336,7 @@ func (_c *Workflow_GetNode_Call) RunAndReturn(run func(string) (common.NodeBuild
return _c
}
-// GetNodes provides a mock function with given fields:
+// GetNodes provides a mock function with no fields
func (_m *Workflow) GetNodes() common.NodeIndex {
ret := _m.Called()
@@ -500,7 +499,7 @@ func (_c *Workflow_GetTask_Call) RunAndReturn(run func(*core.Identifier) (common
return _c
}
-// GetTasks provides a mock function with given fields:
+// GetTasks provides a mock function with no fields
func (_m *Workflow) GetTasks() common.TaskIndex {
ret := _m.Called()
@@ -547,7 +546,7 @@ func (_c *Workflow_GetTasks_Call) RunAndReturn(run func() common.TaskIndex) *Wor
return _c
}
-// GetUpstreamNodes provides a mock function with given fields:
+// GetUpstreamNodes provides a mock function with no fields
func (_m *Workflow) GetUpstreamNodes() common.StringAdjacencyList {
ret := _m.Called()
diff --git a/flytepropeller/pkg/compiler/common/mocks/workflow_builder.go b/flytepropeller/pkg/compiler/common/mocks/workflow_builder.go
index 48d29fa0cf3..a690fc07ffd 100644
--- a/flytepropeller/pkg/compiler/common/mocks/workflow_builder.go
+++ b/flytepropeller/pkg/compiler/common/mocks/workflow_builder.go
@@ -1,13 +1,11 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
common "github.com/flyteorg/flyte/flytepropeller/pkg/compiler/common"
-
errors "github.com/flyteorg/flyte/flytepropeller/pkg/compiler/errors"
-
mock "github.com/stretchr/testify/mock"
)
@@ -54,7 +52,7 @@ func (_c *WorkflowBuilder_AddDownstreamEdge_Call) Return() *WorkflowBuilder_AddD
}
func (_c *WorkflowBuilder_AddDownstreamEdge_Call) RunAndReturn(run func(string, string)) *WorkflowBuilder_AddDownstreamEdge_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -136,7 +134,7 @@ func (_c *WorkflowBuilder_AddExecutionEdge_Call) Return() *WorkflowBuilder_AddEx
}
func (_c *WorkflowBuilder_AddExecutionEdge_Call) RunAndReturn(run func(string, string)) *WorkflowBuilder_AddExecutionEdge_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -229,7 +227,7 @@ func (_c *WorkflowBuilder_AddUpstreamEdge_Call) Return() *WorkflowBuilder_AddUps
}
func (_c *WorkflowBuilder_AddUpstreamEdge_Call) RunAndReturn(run func(string, string)) *WorkflowBuilder_AddUpstreamEdge_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -291,7 +289,7 @@ func (_c *WorkflowBuilder_GetCompiledSubWorkflow_Call) RunAndReturn(run func(*co
return _c
}
-// GetCoreWorkflow provides a mock function with given fields:
+// GetCoreWorkflow provides a mock function with no fields
func (_m *WorkflowBuilder) GetCoreWorkflow() *core.CompiledWorkflow {
ret := _m.Called()
@@ -338,7 +336,7 @@ func (_c *WorkflowBuilder_GetCoreWorkflow_Call) RunAndReturn(run func() *core.Co
return _c
}
-// GetDownstreamNodes provides a mock function with given fields:
+// GetDownstreamNodes provides a mock function with no fields
func (_m *WorkflowBuilder) GetDownstreamNodes() common.StringAdjacencyList {
ret := _m.Called()
@@ -385,7 +383,7 @@ func (_c *WorkflowBuilder_GetDownstreamNodes_Call) RunAndReturn(run func() commo
return _c
}
-// GetFailureNode provides a mock function with given fields:
+// GetFailureNode provides a mock function with no fields
func (_m *WorkflowBuilder) GetFailureNode() common.Node {
ret := _m.Called()
@@ -548,7 +546,7 @@ func (_c *WorkflowBuilder_GetNode_Call) RunAndReturn(run func(string) (common.No
return _c
}
-// GetNodes provides a mock function with given fields:
+// GetNodes provides a mock function with no fields
func (_m *WorkflowBuilder) GetNodes() common.NodeIndex {
ret := _m.Called()
@@ -759,7 +757,7 @@ func (_c *WorkflowBuilder_GetTask_Call) RunAndReturn(run func(*core.Identifier)
return _c
}
-// GetTasks provides a mock function with given fields:
+// GetTasks provides a mock function with no fields
func (_m *WorkflowBuilder) GetTasks() common.TaskIndex {
ret := _m.Called()
@@ -806,7 +804,7 @@ func (_c *WorkflowBuilder_GetTasks_Call) RunAndReturn(run func() common.TaskInde
return _c
}
-// GetUpstreamNodes provides a mock function with given fields:
+// GetUpstreamNodes provides a mock function with no fields
func (_m *WorkflowBuilder) GetUpstreamNodes() common.StringAdjacencyList {
ret := _m.Called()
@@ -883,7 +881,7 @@ func (_c *WorkflowBuilder_StoreCompiledSubWorkflow_Call) Return() *WorkflowBuild
}
func (_c *WorkflowBuilder_StoreCompiledSubWorkflow_Call) RunAndReturn(run func(*core.Identifier, *core.CompiledWorkflow)) *WorkflowBuilder_StoreCompiledSubWorkflow_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/002_core.containerization.multi_images.my_workflow_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/002_core.containerization.multi_images.my_workflow_2_wf_crd.json
index 5112bec2538..38c648d8266 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/002_core.containerization.multi_images.my_workflow_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/002_core.containerization.multi_images.my_workflow_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-containerization-multi-images-my-workflow"}},"spec":{"id":"::core.containerization.multi_images.my_workflow","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"svm_trainer","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.containerization.multi_images.svm_trainer\""},"n1":{"id":"n1","name":"svm_predictor","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.containerization.multi_images.svm_predictor\"","inputBindings":[{"var":"X_test","binding":{"promise":{"nodeId":"n0","var":"test_features"}}},{"var":"X_train","binding":{"promise":{"nodeId":"n0","var":"train_features"}}},{"var":"y_test","binding":{"promise":{"nodeId":"n0","var":"test_labels"}}},{"var":"y_train","binding":{"promise":{"nodeId":"n0","var":"train_labels"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.containerization.multi_images.svm_predictor\"":{"id":{"resourceType":"TASK","name":"core.containerization.multi_images.svm_predictor"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"X_test":{"type":{"structuredDatasetType":{"format":"parquet"}}},"X_train":{"type":{"structuredDatasetType":{"format":"parquet"}}},"y_test":{"type":{"structuredDatasetType":{"format":"parquet"}}},"y_train":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:multi-image-predict-98b125fd57d20594026941c2ebe7ef662e5acb7d6423660a65f493ca2d9aa267","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.containerization.multi_images","task-name","svm_predictor"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.containerization.multi_images.svm_trainer\"":{"id":{"resourceType":"TASK","name":"core.containerization.multi_images.svm_trainer"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"test_features":{"type":{"structuredDatasetType":{"format":"parquet"}}},"test_labels":{"type":{"structuredDatasetType":{"format":"parquet"}}},"train_features":{"type":{"structuredDatasetType":{"format":"parquet"}}},"train_labels":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-with-sklearn-baa17ccf39aa667c5950bd713a4366ce7d5fccaf7f85e6be8c07fe4b522f92c3","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.containerization.multi_images","task-name","svm_trainer"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-containerization-multi-images-my-workflow"}},"spec":{"id":"::core.containerization.multi_images.my_workflow","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"svm_trainer","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.containerization.multi_images.svm_trainer\""},"n1":{"id":"n1","name":"svm_predictor","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.containerization.multi_images.svm_predictor\"","inputBindings":[{"var":"X_test","binding":{"promise":{"nodeId":"n0","var":"test_features"}}},{"var":"X_train","binding":{"promise":{"nodeId":"n0","var":"train_features"}}},{"var":"y_test","binding":{"promise":{"nodeId":"n0","var":"test_labels"}}},{"var":"y_train","binding":{"promise":{"nodeId":"n0","var":"train_labels"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.containerization.multi_images.svm_predictor\"":{"id":{"resourceType":"TASK","name":"core.containerization.multi_images.svm_predictor"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"X_test":{"type":{"structuredDatasetType":{"format":"parquet"}}},"X_train":{"type":{"structuredDatasetType":{"format":"parquet"}}},"y_test":{"type":{"structuredDatasetType":{"format":"parquet"}}},"y_train":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:multi-image-predict-98b125fd57d20594026941c2ebe7ef662e5acb7d6423660a65f493ca2d9aa267","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.containerization.multi_images","task-name","svm_predictor"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.containerization.multi_images.svm_trainer\"":{"id":{"resourceType":"TASK","name":"core.containerization.multi_images.svm_trainer"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"test_features":{"type":{"structuredDatasetType":{"format":"parquet"}}},"test_labels":{"type":{"structuredDatasetType":{"format":"parquet"}}},"train_features":{"type":{"structuredDatasetType":{"format":"parquet"}}},"train_labels":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-with-sklearn-baa17ccf39aa667c5950bd713a4366ce7d5fccaf7f85e6be8c07fe4b522f92c3","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.containerization.multi_images","task-name","svm_trainer"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/010_core.containerization.raw_container.wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/010_core.containerization.raw_container.wf_2_wf_crd.json
index 66b8fe8ca47..1b66d0fec60 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/010_core.containerization.raw_container.wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/010_core.containerization.raw_container.wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-containerization-raw-container-wf"}},"spec":{"id":"::core.containerization.raw_container.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end"},"n0":{"id":"n0","name":"ellipse-area-metadata-shell","resources":{},"kind":"task","task":"resource_type:TASK name:\"ellipse-area-metadata-shell\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}},{"var":"b","binding":{"promise":{"nodeId":"start-node","var":"b"}}}]},"n1":{"id":"n1","name":"ellipse-area-metadata-python","resources":{},"kind":"task","task":"resource_type:TASK name:\"ellipse-area-metadata-python\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}},{"var":"b","binding":{"promise":{"nodeId":"start-node","var":"b"}}}]},"n2":{"id":"n2","name":"ellipse-area-metadata-r","resources":{},"kind":"task","task":"resource_type:TASK name:\"ellipse-area-metadata-r\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}},{"var":"b","binding":{"promise":{"nodeId":"start-node","var":"b"}}}]},"n3":{"id":"n3","name":"ellipse-area-metadata-haskell","resources":{},"kind":"task","task":"resource_type:TASK name:\"ellipse-area-metadata-haskell\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}},{"var":"b","binding":{"promise":{"nodeId":"start-node","var":"b"}}}]},"n4":{"id":"n4","name":"ellipse-area-metadata-julia","resources":{},"kind":"task","task":"resource_type:TASK name:\"ellipse-area-metadata-julia\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}},{"var":"b","binding":{"promise":{"nodeId":"start-node","var":"b"}}}]},"n5":{"id":"n5","name":"report_all_calculated_areas","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.containerization.raw_container.report_all_calculated_areas\"","inputBindings":[{"var":"area_haskell","binding":{"promise":{"nodeId":"n3","var":"area"}}},{"var":"area_julia","binding":{"promise":{"nodeId":"n4","var":"area"}}},{"var":"area_python","binding":{"promise":{"nodeId":"n1","var":"area"}}},{"var":"area_r","binding":{"promise":{"nodeId":"n2","var":"area"}}},{"var":"area_shell","binding":{"promise":{"nodeId":"n0","var":"area"}}},{"var":"metadata_haskell","binding":{"promise":{"nodeId":"n3","var":"metadata"}}},{"var":"metadata_julia","binding":{"promise":{"nodeId":"n4","var":"metadata"}}},{"var":"metadata_python","binding":{"promise":{"nodeId":"n1","var":"metadata"}}},{"var":"metadata_r","binding":{"promise":{"nodeId":"n2","var":"metadata"}}},{"var":"metadata_shell","binding":{"promise":{"nodeId":"n0","var":"metadata"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n5"],"n1":["n5"],"n2":["n5"],"n3":["n5"],"n4":["n5"],"n5":["end-node"],"start-node":["n0","n1","n2","n3","n4"]},"edges":{"downstream":{"n0":["n5"],"n1":["n5"],"n2":["n5"],"n3":["n5"],"n4":["n5"],"n5":["end-node"],"start-node":["n0","n1","n2","n3","n4"]},"upstream":{"end-node":["n5"],"n0":["start-node"],"n1":["start-node"],"n2":["start-node"],"n3":["start-node"],"n4":["start-node"],"n5":["n0","n1","n2","n3","n4"]}},"outputs":{}},"inputs":{"literals":{"a":{"scalar":{"primitive":{"floatValue":0}}},"b":{"scalar":{"primitive":{"floatValue":0}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.containerization.raw_container.report_all_calculated_areas\"":{"id":{"resourceType":"TASK","name":"core.containerization.raw_container.report_all_calculated_areas"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"area_haskell":{"type":{"simple":"FLOAT"}},"area_julia":{"type":{"simple":"FLOAT"}},"area_python":{"type":{"simple":"FLOAT"}},"area_r":{"type":{"simple":"FLOAT"}},"area_shell":{"type":{"simple":"FLOAT"}},"metadata_haskell":{"type":{"simple":"STRING"}},"metadata_julia":{"type":{"simple":"STRING"}},"metadata_python":{"type":{"simple":"STRING"}},"metadata_r":{"type":{"simple":"STRING"}},"metadata_shell":{"type":{"simple":"STRING"}}}},"outputs":{}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.containerization.raw_container","task-name","report_all_calculated_areas"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"ellipse-area-metadata-haskell\"":{"id":{"resourceType":"TASK","name":"ellipse-area-metadata-haskell"},"type":"raw-container","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"FLOAT"}},"b":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"area":{"type":{"simple":"FLOAT"}},"metadata":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/rawcontainers-haskell:v1","command":["./calculate-ellipse-area","/var/inputs","/var/outputs"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}],"dataConfig":{"enabled":true,"inputPath":"/var/inputs","outputPath":"/var/outputs"}}},"resource_type:TASK name:\"ellipse-area-metadata-julia\"":{"id":{"resourceType":"TASK","name":"ellipse-area-metadata-julia"},"type":"raw-container","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"FLOAT"}},"b":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"area":{"type":{"simple":"FLOAT"}},"metadata":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/rawcontainers-julia:v1","command":["julia","calculate-ellipse-area.jl","/var/inputs","/var/outputs"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}],"dataConfig":{"enabled":true,"inputPath":"/var/inputs","outputPath":"/var/outputs"}}},"resource_type:TASK name:\"ellipse-area-metadata-python\"":{"id":{"resourceType":"TASK","name":"ellipse-area-metadata-python"},"type":"raw-container","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"FLOAT"}},"b":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"area":{"type":{"simple":"FLOAT"}},"metadata":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/rawcontainers-python:v1","command":["python","calculate-ellipse-area.py","/var/inputs","/var/outputs"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}],"dataConfig":{"enabled":true,"inputPath":"/var/inputs","outputPath":"/var/outputs"}}},"resource_type:TASK name:\"ellipse-area-metadata-r\"":{"id":{"resourceType":"TASK","name":"ellipse-area-metadata-r"},"type":"raw-container","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"FLOAT"}},"b":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"area":{"type":{"simple":"FLOAT"}},"metadata":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/rawcontainers-r:v1","command":["Rscript","--vanilla","calculate-ellipse-area.R","/var/inputs","/var/outputs"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}],"dataConfig":{"enabled":true,"inputPath":"/var/inputs","outputPath":"/var/outputs"}}},"resource_type:TASK name:\"ellipse-area-metadata-shell\"":{"id":{"resourceType":"TASK","name":"ellipse-area-metadata-shell"},"type":"raw-container","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"FLOAT"}},"b":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"area":{"type":{"simple":"FLOAT"}},"metadata":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/rawcontainers-shell:v1","command":["./calculate-ellipse-area.sh","/var/inputs","/var/outputs"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}],"dataConfig":{"enabled":true,"inputPath":"/var/inputs","outputPath":"/var/outputs"}}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-containerization-raw-container-wf"}},"spec":{"id":"::core.containerization.raw_container.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end"},"n0":{"id":"n0","name":"ellipse-area-metadata-shell","resources":{},"kind":"task","task":"resource_type:TASK name:\"ellipse-area-metadata-shell\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}},{"var":"b","binding":{"promise":{"nodeId":"start-node","var":"b"}}}]},"n1":{"id":"n1","name":"ellipse-area-metadata-python","resources":{},"kind":"task","task":"resource_type:TASK name:\"ellipse-area-metadata-python\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}},{"var":"b","binding":{"promise":{"nodeId":"start-node","var":"b"}}}]},"n2":{"id":"n2","name":"ellipse-area-metadata-r","resources":{},"kind":"task","task":"resource_type:TASK name:\"ellipse-area-metadata-r\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}},{"var":"b","binding":{"promise":{"nodeId":"start-node","var":"b"}}}]},"n3":{"id":"n3","name":"ellipse-area-metadata-haskell","resources":{},"kind":"task","task":"resource_type:TASK name:\"ellipse-area-metadata-haskell\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}},{"var":"b","binding":{"promise":{"nodeId":"start-node","var":"b"}}}]},"n4":{"id":"n4","name":"ellipse-area-metadata-julia","resources":{},"kind":"task","task":"resource_type:TASK name:\"ellipse-area-metadata-julia\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}},{"var":"b","binding":{"promise":{"nodeId":"start-node","var":"b"}}}]},"n5":{"id":"n5","name":"report_all_calculated_areas","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.containerization.raw_container.report_all_calculated_areas\"","inputBindings":[{"var":"area_haskell","binding":{"promise":{"nodeId":"n3","var":"area"}}},{"var":"area_julia","binding":{"promise":{"nodeId":"n4","var":"area"}}},{"var":"area_python","binding":{"promise":{"nodeId":"n1","var":"area"}}},{"var":"area_r","binding":{"promise":{"nodeId":"n2","var":"area"}}},{"var":"area_shell","binding":{"promise":{"nodeId":"n0","var":"area"}}},{"var":"metadata_haskell","binding":{"promise":{"nodeId":"n3","var":"metadata"}}},{"var":"metadata_julia","binding":{"promise":{"nodeId":"n4","var":"metadata"}}},{"var":"metadata_python","binding":{"promise":{"nodeId":"n1","var":"metadata"}}},{"var":"metadata_r","binding":{"promise":{"nodeId":"n2","var":"metadata"}}},{"var":"metadata_shell","binding":{"promise":{"nodeId":"n0","var":"metadata"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n5"],"n1":["n5"],"n2":["n5"],"n3":["n5"],"n4":["n5"],"n5":["end-node"],"start-node":["n0","n1","n2","n3","n4"]},"edges":{"downstream":{"n0":["n5"],"n1":["n5"],"n2":["n5"],"n3":["n5"],"n4":["n5"],"n5":["end-node"],"start-node":["n0","n1","n2","n3","n4"]},"upstream":{"end-node":["n5"],"n0":["start-node"],"n1":["start-node"],"n2":["start-node"],"n3":["start-node"],"n4":["start-node"],"n5":["n0","n1","n2","n3","n4"]}},"outputs":{}},"inputs":{"literals":{"a":{"scalar":{"primitive":{"floatValue":0}}},"b":{"scalar":{"primitive":{"floatValue":0}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.containerization.raw_container.report_all_calculated_areas\"":{"id":{"resourceType":"TASK","name":"core.containerization.raw_container.report_all_calculated_areas"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"area_haskell":{"type":{"simple":"FLOAT"}},"area_julia":{"type":{"simple":"FLOAT"}},"area_python":{"type":{"simple":"FLOAT"}},"area_r":{"type":{"simple":"FLOAT"}},"area_shell":{"type":{"simple":"FLOAT"}},"metadata_haskell":{"type":{"simple":"STRING"}},"metadata_julia":{"type":{"simple":"STRING"}},"metadata_python":{"type":{"simple":"STRING"}},"metadata_r":{"type":{"simple":"STRING"}},"metadata_shell":{"type":{"simple":"STRING"}}}},"outputs":{}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.containerization.raw_container","task-name","report_all_calculated_areas"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"ellipse-area-metadata-haskell\"":{"id":{"resourceType":"TASK","name":"ellipse-area-metadata-haskell"},"type":"raw-container","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"FLOAT"}},"b":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"area":{"type":{"simple":"FLOAT"}},"metadata":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/rawcontainers-haskell:v1","command":["./calculate-ellipse-area","/var/inputs","/var/outputs"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}],"dataConfig":{"enabled":true,"inputPath":"/var/inputs","outputPath":"/var/outputs"}}},"resource_type:TASK name:\"ellipse-area-metadata-julia\"":{"id":{"resourceType":"TASK","name":"ellipse-area-metadata-julia"},"type":"raw-container","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"FLOAT"}},"b":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"area":{"type":{"simple":"FLOAT"}},"metadata":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/rawcontainers-julia:v1","command":["julia","calculate-ellipse-area.jl","/var/inputs","/var/outputs"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}],"dataConfig":{"enabled":true,"inputPath":"/var/inputs","outputPath":"/var/outputs"}}},"resource_type:TASK name:\"ellipse-area-metadata-python\"":{"id":{"resourceType":"TASK","name":"ellipse-area-metadata-python"},"type":"raw-container","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"FLOAT"}},"b":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"area":{"type":{"simple":"FLOAT"}},"metadata":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/rawcontainers-python:v1","command":["python","calculate-ellipse-area.py","/var/inputs","/var/outputs"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}],"dataConfig":{"enabled":true,"inputPath":"/var/inputs","outputPath":"/var/outputs"}}},"resource_type:TASK name:\"ellipse-area-metadata-r\"":{"id":{"resourceType":"TASK","name":"ellipse-area-metadata-r"},"type":"raw-container","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"FLOAT"}},"b":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"area":{"type":{"simple":"FLOAT"}},"metadata":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/rawcontainers-r:v1","command":["Rscript","--vanilla","calculate-ellipse-area.R","/var/inputs","/var/outputs"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}],"dataConfig":{"enabled":true,"inputPath":"/var/inputs","outputPath":"/var/outputs"}}},"resource_type:TASK name:\"ellipse-area-metadata-shell\"":{"id":{"resourceType":"TASK","name":"ellipse-area-metadata-shell"},"type":"raw-container","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"FLOAT"}},"b":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"area":{"type":{"simple":"FLOAT"}},"metadata":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/rawcontainers-shell:v1","command":["./calculate-ellipse-area.sh","/var/inputs","/var/outputs"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}],"dataConfig":{"enabled":true,"inputPath":"/var/inputs","outputPath":"/var/outputs"}}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/015_core.containerization.use_secrets.my_secret_workflow_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/015_core.containerization.use_secrets.my_secret_workflow_2_wf_crd.json
index 8fd1cfe5c7f..e46468b8f74 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/015_core.containerization.use_secrets.my_secret_workflow_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/015_core.containerization.use_secrets.my_secret_workflow_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-containerization-use-secrets-my-secret-workflow"}},"spec":{"id":"::core.containerization.use_secrets.my_secret_workflow","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}},{"var":"o1","binding":{"promise":{"nodeId":"n1","var":"o0"}}},{"var":"o2","binding":{"promise":{"nodeId":"n1","var":"o1"}}},{"var":"o3","binding":{"promise":{"nodeId":"n2","var":"o0"}}},{"var":"o4","binding":{"promise":{"nodeId":"n2","var":"o1"}}}]},"n0":{"id":"n0","name":"secret_task","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.containerization.use_secrets.secret_task\""},"n1":{"id":"n1","name":"user_info_task","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.containerization.use_secrets.user_info_task\""},"n2":{"id":"n2","name":"secret_file_task","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.containerization.use_secrets.secret_file_task\""},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"n1":["end-node"],"n2":["end-node"],"start-node":["n0","n1","n2"]},"edges":{"downstream":{"n0":["end-node"],"n1":["end-node"],"n2":["end-node"],"start-node":["n0","n1","n2"]},"upstream":{"end-node":["n0","n1","n2"],"n0":["start-node"],"n1":["start-node"],"n2":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}},"o1":{"type":{"simple":"STRING"}},"o2":{"type":{"simple":"STRING"}},"o3":{"type":{"simple":"STRING"}},"o4":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}},{"var":"o1","binding":{"promise":{"nodeId":"n1","var":"o0"}}},{"var":"o2","binding":{"promise":{"nodeId":"n1","var":"o1"}}},{"var":"o3","binding":{"promise":{"nodeId":"n2","var":"o0"}}},{"var":"o4","binding":{"promise":{"nodeId":"n2","var":"o1"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.containerization.use_secrets.secret_file_task\"":{"id":{"resourceType":"TASK","name":"core.containerization.use_secrets.secret_file_task"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}},"o1":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.containerization.use_secrets","task-name","secret_file_task"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]},"securityContext":{"secrets":[{"group":"user-info","key":"user_secret","mountRequirement":"ENV_VAR"}]}},"resource_type:TASK name:\"core.containerization.use_secrets.secret_task\"":{"id":{"resourceType":"TASK","name":"core.containerization.use_secrets.secret_task"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.containerization.use_secrets","task-name","secret_task"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]},"securityContext":{"secrets":[{"group":"user-info","key":"user_secret"}]}},"resource_type:TASK name:\"core.containerization.use_secrets.user_info_task\"":{"id":{"resourceType":"TASK","name":"core.containerization.use_secrets.user_info_task"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}},"o1":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.containerization.use_secrets","task-name","user_info_task"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]},"securityContext":{"secrets":[{"group":"user-info","key":"username"},{"group":"user-info","key":"password"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-containerization-use-secrets-my-secret-workflow"}},"spec":{"id":"::core.containerization.use_secrets.my_secret_workflow","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}},{"var":"o1","binding":{"promise":{"nodeId":"n1","var":"o0"}}},{"var":"o2","binding":{"promise":{"nodeId":"n1","var":"o1"}}},{"var":"o3","binding":{"promise":{"nodeId":"n2","var":"o0"}}},{"var":"o4","binding":{"promise":{"nodeId":"n2","var":"o1"}}}]},"n0":{"id":"n0","name":"secret_task","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.containerization.use_secrets.secret_task\""},"n1":{"id":"n1","name":"user_info_task","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.containerization.use_secrets.user_info_task\""},"n2":{"id":"n2","name":"secret_file_task","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.containerization.use_secrets.secret_file_task\""},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"n1":["end-node"],"n2":["end-node"],"start-node":["n0","n1","n2"]},"edges":{"downstream":{"n0":["end-node"],"n1":["end-node"],"n2":["end-node"],"start-node":["n0","n1","n2"]},"upstream":{"end-node":["n0","n1","n2"],"n0":["start-node"],"n1":["start-node"],"n2":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}},"o1":{"type":{"simple":"STRING"}},"o2":{"type":{"simple":"STRING"}},"o3":{"type":{"simple":"STRING"}},"o4":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}},{"var":"o1","binding":{"promise":{"nodeId":"n1","var":"o0"}}},{"var":"o2","binding":{"promise":{"nodeId":"n1","var":"o1"}}},{"var":"o3","binding":{"promise":{"nodeId":"n2","var":"o0"}}},{"var":"o4","binding":{"promise":{"nodeId":"n2","var":"o1"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.containerization.use_secrets.secret_file_task\"":{"id":{"resourceType":"TASK","name":"core.containerization.use_secrets.secret_file_task"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}},"o1":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.containerization.use_secrets","task-name","secret_file_task"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]},"securityContext":{"secrets":[{"group":"user-info","key":"user_secret","mountRequirement":"ENV_VAR"}]}},"resource_type:TASK name:\"core.containerization.use_secrets.secret_task\"":{"id":{"resourceType":"TASK","name":"core.containerization.use_secrets.secret_task"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.containerization.use_secrets","task-name","secret_task"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]},"securityContext":{"secrets":[{"group":"user-info","key":"user_secret"}]}},"resource_type:TASK name:\"core.containerization.use_secrets.user_info_task\"":{"id":{"resourceType":"TASK","name":"core.containerization.use_secrets.user_info_task"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}},"o1":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.containerization.use_secrets","task-name","user_info_task"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]},"securityContext":{"secrets":[{"group":"user-info","key":"username"},{"group":"user-info","key":"password"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/019_core.control_flow.chain_tasks.chain_tasks_wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/019_core.control_flow.chain_tasks.chain_tasks_wf_2_wf_crd.json
index 442e1fb95f4..5f123afb4a2 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/019_core.control_flow.chain_tasks.chain_tasks_wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/019_core.control_flow.chain_tasks.chain_tasks_wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-chain-tasks-chain-tasks-wf"}},"spec":{"id":"::core.control_flow.chain_tasks.chain_tasks_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"write","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.chain_tasks.write\""},"n1":{"id":"n1","name":"read","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.chain_tasks.read\""},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.chain_tasks.read\"":{"id":{"resourceType":"TASK","name":"core.control_flow.chain_tasks.read"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.chain_tasks","task-name","read"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.chain_tasks.write\"":{"id":{"resourceType":"TASK","name":"core.control_flow.chain_tasks.write"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.chain_tasks","task-name","write"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-chain-tasks-chain-tasks-wf"}},"spec":{"id":"::core.control_flow.chain_tasks.chain_tasks_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"write","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.chain_tasks.write\""},"n1":{"id":"n1","name":"read","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.chain_tasks.read\""},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.chain_tasks.read\"":{"id":{"resourceType":"TASK","name":"core.control_flow.chain_tasks.read"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.chain_tasks","task-name","read"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.chain_tasks.write\"":{"id":{"resourceType":"TASK","name":"core.control_flow.chain_tasks.write"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.chain_tasks","task-name","write"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/022_core.control_flow.checkpoint.example_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/022_core.control_flow.checkpoint.example_2_wf_crd.json
index 0159e921d8a..e07bbd393ea 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/022_core.control_flow.checkpoint.example_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/022_core.control_flow.checkpoint.example_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-checkpoint-example"}},"spec":{"id":"::core.control_flow.checkpoint.example","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"use_checkpoint","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.checkpoint.use_checkpoint\"","inputBindings":[{"var":"n_iterations","binding":{"promise":{"nodeId":"start-node","var":"n_iterations"}}}],"retry":{"minAttempts":4}},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"n_iterations":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.checkpoint.use_checkpoint\"":{"id":{"resourceType":"TASK","name":"core.control_flow.checkpoint.use_checkpoint"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{"retries":3}},"interface":{"inputs":{"variables":{"n_iterations":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.checkpoint","task-name","use_checkpoint"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-checkpoint-example"}},"spec":{"id":"::core.control_flow.checkpoint.example","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"use_checkpoint","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.checkpoint.use_checkpoint\"","inputBindings":[{"var":"n_iterations","binding":{"promise":{"nodeId":"start-node","var":"n_iterations"}}}],"retry":{"minAttempts":4}},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"n_iterations":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.checkpoint.use_checkpoint\"":{"id":{"resourceType":"TASK","name":"core.control_flow.checkpoint.use_checkpoint"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{"retries":3}},"interface":{"inputs":{"variables":{"n_iterations":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.checkpoint","task-name","use_checkpoint"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/026_core.control_flow.conditions.multiplier_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/026_core.control_flow.conditions.multiplier_2_wf_crd.json
index 641319a52a7..1854cf524ea 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/026_core.control_flow.conditions.multiplier_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/026_core.control_flow.conditions.multiplier_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-conditions-multiplier"}},"spec":{"id":"::core.control_flow.conditions.multiplier","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"fractions","resources":{},"kind":"branch","branch":{"if":{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GTE","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":0.1}}}},"rightExpression":{"comparison":{"operator":"LTE","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":1}}}}}},"then":"n0-n0"},"else":"n0-n1"},"inputBindings":[{"var":".my_input","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n0":{"id":"n0-n0","name":"double","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.double\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n1":{"id":"n0-n1","name":"square","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.square\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"],"n0-n0":["start-node"],"n0-n1":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"my_input":{"scalar":{"primitive":{"floatValue":0}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.conditions.double\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.double"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","double"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.square\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.square"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","square"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-conditions-multiplier"}},"spec":{"id":"::core.control_flow.conditions.multiplier","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"fractions","resources":{},"kind":"branch","branch":{"if":{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GTE","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":0.1}}}},"rightExpression":{"comparison":{"operator":"LTE","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":1}}}}}},"then":"n0-n0"},"else":"n0-n1"},"inputBindings":[{"var":".my_input","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n0":{"id":"n0-n0","name":"double","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.double\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n1":{"id":"n0-n1","name":"square","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.square\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"],"n0-n0":["start-node"],"n0-n1":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"my_input":{"scalar":{"primitive":{"floatValue":0}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.conditions.double\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.double"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","double"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.square\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.square"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","square"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/028_core.control_flow.conditions.multiplier_2_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/028_core.control_flow.conditions.multiplier_2_2_wf_crd.json
index 5598c7a375b..48c7068b983 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/028_core.control_flow.conditions.multiplier_2_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/028_core.control_flow.conditions.multiplier_2_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-conditions-multiplier-2"}},"spec":{"id":"::core.control_flow.conditions.multiplier_2","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"fractions","resources":{},"kind":"branch","branch":{"if":{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":0.1}}}},"rightExpression":{"comparison":{"operator":"LT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":1}}}}}},"then":"n0-n0"},"elseIf":[{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":1}}}},"rightExpression":{"comparison":{"operator":"LTE","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":10}}}}}},"then":"n0-n1"}],"elseFail":{"failed_node_id":"fractions","message":"The input must be between 0 and 10"}},"inputBindings":[{"var":".my_input","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n0":{"id":"n0-n0","name":"double","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.double\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n1":{"id":"n0-n1","name":"square","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.square\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"],"n0-n0":["start-node"],"n0-n1":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"my_input":{"scalar":{"primitive":{"floatValue":0}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.conditions.double\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.double"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","double"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.square\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.square"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","square"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-conditions-multiplier-2"}},"spec":{"id":"::core.control_flow.conditions.multiplier_2","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"fractions","resources":{},"kind":"branch","branch":{"if":{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":0.1}}}},"rightExpression":{"comparison":{"operator":"LT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":1}}}}}},"then":"n0-n0"},"elseIf":[{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":1}}}},"rightExpression":{"comparison":{"operator":"LTE","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":10}}}}}},"then":"n0-n1"}],"elseFail":{"failed_node_id":"fractions","message":"The input must be between 0 and 10"}},"inputBindings":[{"var":".my_input","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n0":{"id":"n0-n0","name":"double","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.double\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n1":{"id":"n0-n1","name":"square","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.square\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"],"n0-n0":["start-node"],"n0-n1":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"my_input":{"scalar":{"primitive":{"floatValue":0}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.conditions.double\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.double"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","double"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.square\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.square"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","square"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/030_core.control_flow.conditions.multiplier_3_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/030_core.control_flow.conditions.multiplier_3_2_wf_crd.json
index f7bd87faace..02f21a67286 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/030_core.control_flow.conditions.multiplier_3_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/030_core.control_flow.conditions.multiplier_3_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-conditions-multiplier-3"}},"spec":{"id":"::core.control_flow.conditions.multiplier_3","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"fractions","resources":{},"kind":"branch","branch":{"if":{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":0.1}}}},"rightExpression":{"comparison":{"operator":"LT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":1}}}}}},"then":"n0-n0"},"elseIf":[{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":1}}}},"rightExpression":{"comparison":{"operator":"LT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":10}}}}}},"then":"n0-n1"}],"elseFail":{"failed_node_id":"fractions","message":"The input must be between 0 and 10"}},"inputBindings":[{"var":".my_input","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n0":{"id":"n0-n0","name":"double","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.double\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n1":{"id":"n0-n1","name":"square","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.square\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n1":{"id":"n1","name":"double","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.double\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n0-n0":["start-node"],"n0-n1":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"my_input":{"scalar":{"primitive":{"floatValue":0}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.conditions.double\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.double"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","double"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.square\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.square"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","square"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-conditions-multiplier-3"}},"spec":{"id":"::core.control_flow.conditions.multiplier_3","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"fractions","resources":{},"kind":"branch","branch":{"if":{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":0.1}}}},"rightExpression":{"comparison":{"operator":"LT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":1}}}}}},"then":"n0-n0"},"elseIf":[{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":1}}}},"rightExpression":{"comparison":{"operator":"LT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":10}}}}}},"then":"n0-n1"}],"elseFail":{"failed_node_id":"fractions","message":"The input must be between 0 and 10"}},"inputBindings":[{"var":".my_input","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n0":{"id":"n0-n0","name":"double","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.double\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n1":{"id":"n0-n1","name":"square","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.square\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n1":{"id":"n1","name":"double","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.double\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n0-n0":["start-node"],"n0-n1":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"my_input":{"scalar":{"primitive":{"floatValue":0}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.conditions.double\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.double"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","double"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.square\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.square"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","square"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/035_core.control_flow.conditions.basic_boolean_wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/035_core.control_flow.conditions.basic_boolean_wf_2_wf_crd.json
index d90b45210d6..0df97ca5f33 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/035_core.control_flow.conditions.basic_boolean_wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/035_core.control_flow.conditions.basic_boolean_wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-conditions-basic-boolean-wf"}},"spec":{"id":"::core.control_flow.conditions.basic_boolean_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"coin_toss","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.coin_toss\"","inputBindings":[{"var":"seed","binding":{"promise":{"nodeId":"start-node","var":"seed"}}}]},"n1":{"id":"n1","name":"test","resources":{},"kind":"branch","branch":{"if":{"condition":{"comparison":{"leftValue":{"var":"n0.o0"},"rightValue":{"primitive":{"boolean":true}}}},"then":"n1-n0"},"else":"n1-n1"},"inputBindings":[{"var":"n0.o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n1-n0":{"id":"n1-n0","name":"success","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.success\""},"n1-n1":{"id":"n1-n1","name":"failed","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.failed\""},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"seed":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.conditions.coin_toss\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.coin_toss"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"seed":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"BOOLEAN"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","coin_toss"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.failed\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.failed"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","failed"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.success\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.success"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","success"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-conditions-basic-boolean-wf"}},"spec":{"id":"::core.control_flow.conditions.basic_boolean_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"coin_toss","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.coin_toss\"","inputBindings":[{"var":"seed","binding":{"promise":{"nodeId":"start-node","var":"seed"}}}]},"n1":{"id":"n1","name":"test","resources":{},"kind":"branch","branch":{"if":{"condition":{"comparison":{"leftValue":{"var":"n0.o0"},"rightValue":{"primitive":{"boolean":true}}}},"then":"n1-n0"},"else":"n1-n1"},"inputBindings":[{"var":"n0.o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n1-n0":{"id":"n1-n0","name":"success","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.success\""},"n1-n1":{"id":"n1-n1","name":"failed","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.failed\""},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"seed":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.conditions.coin_toss\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.coin_toss"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"seed":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"BOOLEAN"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","coin_toss"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.failed\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.failed"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","failed"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.success\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.success"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","success"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/037_core.control_flow.conditions.bool_input_wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/037_core.control_flow.conditions.bool_input_wf_2_wf_crd.json
index 649b738d487..f2be4ca3a3b 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/037_core.control_flow.conditions.bool_input_wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/037_core.control_flow.conditions.bool_input_wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-conditions-bool-input-wf"}},"spec":{"id":"::core.control_flow.conditions.bool_input_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"test","resources":{},"kind":"branch","branch":{"if":{"condition":{"comparison":{"leftValue":{"var":".b"},"rightValue":{"primitive":{"boolean":true}}}},"then":"n0-n0"},"else":"n0-n1"},"inputBindings":[{"var":".b","binding":{"promise":{"nodeId":"start-node","var":"b"}}}]},"n0-n0":{"id":"n0-n0","name":"success","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.success\""},"n0-n1":{"id":"n0-n1","name":"failed","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.failed\""},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"b":{"scalar":{"primitive":{"boolean":false}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.conditions.failed\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.failed"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","failed"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.success\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.success"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","success"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-conditions-bool-input-wf"}},"spec":{"id":"::core.control_flow.conditions.bool_input_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"test","resources":{},"kind":"branch","branch":{"if":{"condition":{"comparison":{"leftValue":{"var":".b"},"rightValue":{"primitive":{"boolean":true}}}},"then":"n0-n0"},"else":"n0-n1"},"inputBindings":[{"var":".b","binding":{"promise":{"nodeId":"start-node","var":"b"}}}]},"n0-n0":{"id":"n0-n0","name":"success","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.success\""},"n0-n1":{"id":"n0-n1","name":"failed","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.failed\""},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"b":{"scalar":{"primitive":{"boolean":false}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.conditions.failed\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.failed"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","failed"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.success\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.success"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","success"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/039_core.control_flow.conditions.nested_conditions_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/039_core.control_flow.conditions.nested_conditions_2_wf_crd.json
index cad6c840593..db3f1c0a528 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/039_core.control_flow.conditions.nested_conditions_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/039_core.control_flow.conditions.nested_conditions_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-conditions-nested-conditions"}},"spec":{"id":"::core.control_flow.conditions.nested_conditions","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"fractions","resources":{},"kind":"branch","branch":{"if":{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":0.1}}}},"rightExpression":{"comparison":{"operator":"LT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":1}}}}}},"then":"n0-n0"},"elseIf":[{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":1}}}},"rightExpression":{"comparison":{"operator":"LT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":10}}}}}},"then":"n0-n1"}],"else":"n0-n2"},"inputBindings":[{"var":".my_input","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n0":{"id":"n0-n0","name":"inner_fractions","resources":{},"kind":"branch","branch":{"if":{"condition":{"comparison":{"operator":"LT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":0.5}}}},"then":"n0-n0-n0"},"elseIf":[{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":0.5}}}},"rightExpression":{"comparison":{"operator":"LT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":0.7}}}}}},"then":"n0-n0-n1"}],"elseFail":{"failed_node_id":"inner_fractions","message":"Only \u003c0.7 allowed"}},"inputBindings":[{"var":".my_input","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n0-n0":{"id":"n0-n0-n0","name":"double","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.double\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n0-n1":{"id":"n0-n0-n1","name":"square","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.square\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n1":{"id":"n0-n1","name":"square","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.square\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n2":{"id":"n0-n2","name":"double","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.double\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"],"n0-n0":["start-node"],"n0-n0-n0":["start-node"],"n0-n0-n1":["start-node"],"n0-n1":["start-node"],"n0-n2":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"my_input":{"scalar":{"primitive":{"floatValue":0}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.conditions.double\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.double"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","double"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.square\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.square"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","square"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-conditions-nested-conditions"}},"spec":{"id":"::core.control_flow.conditions.nested_conditions","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"fractions","resources":{},"kind":"branch","branch":{"if":{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":0.1}}}},"rightExpression":{"comparison":{"operator":"LT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":1}}}}}},"then":"n0-n0"},"elseIf":[{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":1}}}},"rightExpression":{"comparison":{"operator":"LT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":10}}}}}},"then":"n0-n1"}],"else":"n0-n2"},"inputBindings":[{"var":".my_input","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n0":{"id":"n0-n0","name":"inner_fractions","resources":{},"kind":"branch","branch":{"if":{"condition":{"comparison":{"operator":"LT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":0.5}}}},"then":"n0-n0-n0"},"elseIf":[{"condition":{"conjunction":{"leftExpression":{"comparison":{"operator":"GT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":0.5}}}},"rightExpression":{"comparison":{"operator":"LT","leftValue":{"var":".my_input"},"rightValue":{"primitive":{"floatValue":0.7}}}}}},"then":"n0-n0-n1"}],"elseFail":{"failed_node_id":"inner_fractions","message":"Only \u003c0.7 allowed"}},"inputBindings":[{"var":".my_input","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n0-n0":{"id":"n0-n0-n0","name":"double","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.double\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n0-n1":{"id":"n0-n0-n1","name":"square","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.square\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n1":{"id":"n0-n1","name":"square","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.square\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n0-n2":{"id":"n0-n2","name":"double","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.double\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"],"n0-n0":["start-node"],"n0-n0-n0":["start-node"],"n0-n0-n1":["start-node"],"n0-n1":["start-node"],"n0-n2":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"my_input":{"scalar":{"primitive":{"floatValue":0}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.conditions.double\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.double"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","double"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.square\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.square"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","square"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/042_core.control_flow.conditions.consume_outputs_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/042_core.control_flow.conditions.consume_outputs_2_wf_crd.json
index bd2c7b824ae..ced55afb8d8 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/042_core.control_flow.conditions.consume_outputs_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/042_core.control_flow.conditions.consume_outputs_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-conditions-consume-outputs"}},"spec":{"id":"::core.control_flow.conditions.consume_outputs","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"n0":{"id":"n0","name":"coin_toss","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.coin_toss\"","inputBindings":[{"var":"seed","binding":{"promise":{"nodeId":"start-node","var":"seed"}}}]},"n1":{"id":"n1","name":"double_or_square","resources":{},"kind":"branch","branch":{"if":{"condition":{"comparison":{"leftValue":{"var":"n0.o0"},"rightValue":{"primitive":{"boolean":true}}}},"then":"n1-n0"},"else":"n1-n1"},"inputBindings":[{"var":"n0.o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n1-n0":{"id":"n1-n0","name":"square","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.square\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n1-n1":{"id":"n1-n1","name":"calc_sum","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.calc_sum\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}},{"var":"b","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n2":{"id":"n2","name":"double","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.double\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["n2"],"n2":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["n2"],"n2":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n2"],"n0":["start-node"],"n1":["n0"],"n1-n0":["start-node"],"n1-n1":["start-node"],"n2":["n1"]}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"inputs":{"literals":{"my_input":{"scalar":{"primitive":{"floatValue":0}}},"seed":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.conditions.calc_sum\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.calc_sum"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"FLOAT"}},"b":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","calc_sum"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.coin_toss\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.coin_toss"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"seed":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"BOOLEAN"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","coin_toss"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.double\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.double"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","double"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.square\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.square"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","square"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-conditions-consume-outputs"}},"spec":{"id":"::core.control_flow.conditions.consume_outputs","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"n0":{"id":"n0","name":"coin_toss","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.coin_toss\"","inputBindings":[{"var":"seed","binding":{"promise":{"nodeId":"start-node","var":"seed"}}}]},"n1":{"id":"n1","name":"double_or_square","resources":{},"kind":"branch","branch":{"if":{"condition":{"comparison":{"leftValue":{"var":"n0.o0"},"rightValue":{"primitive":{"boolean":true}}}},"then":"n1-n0"},"else":"n1-n1"},"inputBindings":[{"var":"n0.o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n1-n0":{"id":"n1-n0","name":"square","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.square\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n1-n1":{"id":"n1-n1","name":"calc_sum","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.calc_sum\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}},{"var":"b","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"n2":{"id":"n2","name":"double","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.conditions.double\"","inputBindings":[{"var":"n","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["n2"],"n2":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["n2"],"n2":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n2"],"n0":["start-node"],"n1":["n0"],"n1-n0":["start-node"],"n1-n1":["start-node"],"n2":["n1"]}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"inputs":{"literals":{"my_input":{"scalar":{"primitive":{"floatValue":0}}},"seed":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.conditions.calc_sum\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.calc_sum"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"FLOAT"}},"b":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","calc_sum"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.coin_toss\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.coin_toss"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"seed":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"BOOLEAN"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","coin_toss"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.double\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.double"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","double"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.conditions.square\"":{"id":{"resourceType":"TASK","name":"core.control_flow.conditions.square"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"n":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.conditions","task-name","square"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/048_core.control_flow.dynamics.wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/048_core.control_flow.dynamics.wf_2_wf_crd.json
index 2e6b2611b5d..3241c6fe0ec 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/048_core.control_flow.dynamics.wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/048_core.control_flow.dynamics.wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-dynamics-wf"}},"spec":{"id":"::core.control_flow.dynamics.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"count_characters","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.dynamics.count_characters\"","inputBindings":[{"var":"s1","binding":{"promise":{"nodeId":"start-node","var":"s1"}}},{"var":"s2","binding":{"promise":{"nodeId":"start-node","var":"s2"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"s1":{"scalar":{"primitive":{"stringValue":""}}},"s2":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.dynamics.count_characters\"":{"id":{"resourceType":"TASK","name":"core.control_flow.dynamics.count_characters"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"s1":{"type":{"simple":"STRING"}},"s2":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.dynamics","task-name","count_characters"],"resources":{},"env":[{"key":"_F_SS_C","value":"H4sIAAAAAAAC/8VRXW7DIAy+ysTzWtKtUuiuMk2RAZN6pZCBE6mrevcBXdXuBHsIsr8f85mcBR1hxMHE4GgUb09nYdHB7HloREMCHGtxY8Tzk3BfoSLj3qQ1Ren8iTGm8VqYGA+6fFXIUKcKExOulFa4AbXdmR1YZ0CpbruDrt/qTWfBvvTK9V3X9+JSjO36XLzv/xHgo0aYUvxEw8UeZu8LYOMRKNz7BVOm+ABgWO7NdOJ9DAMFxjQlLGcNIuPEcilCqSnIq+a1bVSTH4iHhRLP4ItkSDHyX5MnfTOtlczEuJrAHOpbyduENg0yDxkTgadv4JKydMwUxtz+KQbQHm2pHfiMdTnMhb5KLaWHrSlzIj03xkfTJL/05fIDQ+X0kUICAAA="}],"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-dynamics-wf"}},"spec":{"id":"::core.control_flow.dynamics.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"count_characters","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.dynamics.count_characters\"","inputBindings":[{"var":"s1","binding":{"promise":{"nodeId":"start-node","var":"s1"}}},{"var":"s2","binding":{"promise":{"nodeId":"start-node","var":"s2"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"s1":{"scalar":{"primitive":{"stringValue":""}}},"s2":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.dynamics.count_characters\"":{"id":{"resourceType":"TASK","name":"core.control_flow.dynamics.count_characters"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"s1":{"type":{"simple":"STRING"}},"s2":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.dynamics","task-name","count_characters"],"resources":{},"env":[{"key":"_F_SS_C","value":"H4sIAAAAAAAC/8VRXW7DIAy+ysTzWtKtUuiuMk2RAZN6pZCBE6mrevcBXdXuBHsIsr8f85mcBR1hxMHE4GgUb09nYdHB7HloREMCHGtxY8Tzk3BfoSLj3qQ1Ren8iTGm8VqYGA+6fFXIUKcKExOulFa4AbXdmR1YZ0CpbruDrt/qTWfBvvTK9V3X9+JSjO36XLzv/xHgo0aYUvxEw8UeZu8LYOMRKNz7BVOm+ABgWO7NdOJ9DAMFxjQlLGcNIuPEcilCqSnIq+a1bVSTH4iHhRLP4ItkSDHyX5MnfTOtlczEuJrAHOpbyduENg0yDxkTgadv4JKydMwUxtz+KQbQHm2pHfiMdTnMhb5KLaWHrSlzIj03xkfTJL/05fIDQ+X0kUICAAA="}],"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/053_core.control_flow.map_task.my_map_workflow_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/053_core.control_flow.map_task.my_map_workflow_2_wf_crd.json
index cf38fe39505..42a0057f6e8 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/053_core.control_flow.map_task.my_map_workflow_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/053_core.control_flow.map_task.my_map_workflow_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-map-task-my-map-workflow"}},"spec":{"id":"::core.control_flow.map_task.my_map_workflow","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"mapper_a_mappable_task_0","resources":{"limits":{"memory":"500Mi"},"requests":{"memory":"300Mi"}},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.map_task.mapper_a_mappable_task_0\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}}],"retry":{"minAttempts":2}},"n1":{"id":"n1","name":"coalesce","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.map_task.coalesce\"","inputBindings":[{"var":"b","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"a":{"collection":{"literals":[{"scalar":{"primitive":{"integer":"0"}}}]}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.map_task.coalesce\"":{"id":{"resourceType":"TASK","name":"core.control_flow.map_task.coalesce"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"b":{"type":{"collectionType":{"simple":"STRING"}}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.map_task","task-name","coalesce"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.map_task.mapper_a_mappable_task_0\"":{"id":{"resourceType":"TASK","name":"core.control_flow.map_task.mapper_a_mappable_task_0"},"type":"container_array","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"collectionType":{"simple":"INTEGER"}}}}},"outputs":{"variables":{"o0":{"type":{"collectionType":{"simple":"STRING"}}}}}},"custom":{"minSuccessRatio":1},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-map-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.map_task","task-name","a_mappable_task"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]},"taskTypeVersion":1}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-map-task-my-map-workflow"}},"spec":{"id":"::core.control_flow.map_task.my_map_workflow","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"mapper_a_mappable_task_0","resources":{"limits":{"memory":"500Mi"},"requests":{"memory":"300Mi"}},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.map_task.mapper_a_mappable_task_0\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}}],"retry":{"minAttempts":2}},"n1":{"id":"n1","name":"coalesce","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.map_task.coalesce\"","inputBindings":[{"var":"b","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"a":{"collection":{"literals":[{"scalar":{"primitive":{"integer":"0"}}}]}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.map_task.coalesce\"":{"id":{"resourceType":"TASK","name":"core.control_flow.map_task.coalesce"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"b":{"type":{"collectionType":{"simple":"STRING"}}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.map_task","task-name","coalesce"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.map_task.mapper_a_mappable_task_0\"":{"id":{"resourceType":"TASK","name":"core.control_flow.map_task.mapper_a_mappable_task_0"},"type":"container_array","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"collectionType":{"simple":"INTEGER"}}}}},"outputs":{"variables":{"o0":{"type":{"collectionType":{"simple":"STRING"}}}}}},"custom":{"minSuccessRatio":1},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-map-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.map_task","task-name","a_mappable_task"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]},"taskTypeVersion":1}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/059_core.control_flow.merge_sort.merge_sort_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/059_core.control_flow.merge_sort.merge_sort_2_wf_crd.json
index c4de05de754..cef1bd9954d 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/059_core.control_flow.merge_sort.merge_sort_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/059_core.control_flow.merge_sort.merge_sort_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-merge-sort-merge-sort"}},"spec":{"id":"::core.control_flow.merge_sort.merge_sort","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"terminal_case","resources":{},"kind":"branch","branch":{"if":{"condition":{"comparison":{"operator":"LTE","leftValue":{"var":".numbers_count"},"rightValue":{"var":".run_local_at_count"}}},"then":"n0-n0"},"else":"n0-n1"},"inputBindings":[{"var":".numbers_count","binding":{"promise":{"nodeId":"start-node","var":"numbers_count"}}},{"var":".run_local_at_count","binding":{"promise":{"nodeId":"start-node","var":"run_local_at_count"}}}]},"n0-n0":{"id":"n0-n0","name":"sort_locally","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.merge_sort.sort_locally\"","inputBindings":[{"var":"numbers","binding":{"promise":{"nodeId":"start-node","var":"numbers"}}}]},"n0-n1":{"id":"n0-n1","name":"merge_sort_remotely","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.merge_sort.merge_sort_remotely\"","inputBindings":[{"var":"numbers","binding":{"promise":{"nodeId":"start-node","var":"numbers"}}},{"var":"run_local_at_count","binding":{"promise":{"nodeId":"start-node","var":"run_local_at_count"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"],"n0-n0":["start-node"],"n0-n1":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"collectionType":{"simple":"INTEGER"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"numbers":{"collection":{"literals":[{"scalar":{"primitive":{"integer":"0"}}}]}},"numbers_count":{"scalar":{"primitive":{"integer":"0"}}},"run_local_at_count":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.merge_sort.merge_sort_remotely\"":{"id":{"resourceType":"TASK","name":"core.control_flow.merge_sort.merge_sort_remotely"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"numbers":{"type":{"collectionType":{"simple":"INTEGER"}}},"run_local_at_count":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"collectionType":{"simple":"INTEGER"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.merge_sort","task-name","merge_sort_remotely"],"resources":{},"env":[{"key":"_F_SS_C","value":"H4sIAAAAAAAC/8VRXW7DIAy+ysTzWtKtUuiuMk2RAZN6pZCBE6mrevcBXdXuBHsIsr8f85mcBR1hxMHE4GgUb09nYdHB7HloREMCHGtxY8Tzk3BfoSLj3qQ1Ren8iTGm8VqYGA+6fFXIUKcKExOulFa4AbXdmR1YZ0CpbruDrt/qTWfBvvTK9V3X9+JSjO36XLzv/xHgo0aYUvxEw8UeZu8LYOMRKNz7BVOm+ABgWO7NdOJ9DAMFxjQlLGcNIuPEcilCqSnIq+a1bVSTH4iHhRLP4ItkSDHyX5MnfTOtlczEuJrAHOpbyduENg0yDxkTgadv4JKydMwUxtz+KQbQHm2pHfiMdTnMhb5KLaWHrSlzIj03xkfTJL/05fIDQ+X0kUICAAA="}],"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.merge_sort.sort_locally\"":{"id":{"resourceType":"TASK","name":"core.control_flow.merge_sort.sort_locally"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"numbers":{"type":{"collectionType":{"simple":"INTEGER"}}}}},"outputs":{"variables":{"o0":{"type":{"collectionType":{"simple":"INTEGER"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.merge_sort","task-name","sort_locally"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-merge-sort-merge-sort"}},"spec":{"id":"::core.control_flow.merge_sort.merge_sort","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"terminal_case","resources":{},"kind":"branch","branch":{"if":{"condition":{"comparison":{"operator":"LTE","leftValue":{"var":".numbers_count"},"rightValue":{"var":".run_local_at_count"}}},"then":"n0-n0"},"else":"n0-n1"},"inputBindings":[{"var":".numbers_count","binding":{"promise":{"nodeId":"start-node","var":"numbers_count"}}},{"var":".run_local_at_count","binding":{"promise":{"nodeId":"start-node","var":"run_local_at_count"}}}]},"n0-n0":{"id":"n0-n0","name":"sort_locally","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.merge_sort.sort_locally\"","inputBindings":[{"var":"numbers","binding":{"promise":{"nodeId":"start-node","var":"numbers"}}}]},"n0-n1":{"id":"n0-n1","name":"merge_sort_remotely","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.merge_sort.merge_sort_remotely\"","inputBindings":[{"var":"numbers","binding":{"promise":{"nodeId":"start-node","var":"numbers"}}},{"var":"run_local_at_count","binding":{"promise":{"nodeId":"start-node","var":"run_local_at_count"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"],"n0-n0":["start-node"],"n0-n1":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"collectionType":{"simple":"INTEGER"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"numbers":{"collection":{"literals":[{"scalar":{"primitive":{"integer":"0"}}}]}},"numbers_count":{"scalar":{"primitive":{"integer":"0"}}},"run_local_at_count":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.merge_sort.merge_sort_remotely\"":{"id":{"resourceType":"TASK","name":"core.control_flow.merge_sort.merge_sort_remotely"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"numbers":{"type":{"collectionType":{"simple":"INTEGER"}}},"run_local_at_count":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"collectionType":{"simple":"INTEGER"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.merge_sort","task-name","merge_sort_remotely"],"resources":{},"env":[{"key":"_F_SS_C","value":"H4sIAAAAAAAC/8VRXW7DIAy+ysTzWtKtUuiuMk2RAZN6pZCBE6mrevcBXdXuBHsIsr8f85mcBR1hxMHE4GgUb09nYdHB7HloREMCHGtxY8Tzk3BfoSLj3qQ1Ren8iTGm8VqYGA+6fFXIUKcKExOulFa4AbXdmR1YZ0CpbruDrt/qTWfBvvTK9V3X9+JSjO36XLzv/xHgo0aYUvxEw8UeZu8LYOMRKNz7BVOm+ABgWO7NdOJ9DAMFxjQlLGcNIuPEcilCqSnIq+a1bVSTH4iHhRLP4ItkSDHyX5MnfTOtlczEuJrAHOpbyduENg0yDxkTgadv4JKydMwUxtz+KQbQHm2pHfiMdTnMhb5KLaWHrSlzIj03xkfTJL/05fIDQ+X0kUICAAA="}],"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.control_flow.merge_sort.sort_locally\"":{"id":{"resourceType":"TASK","name":"core.control_flow.merge_sort.sort_locally"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"numbers":{"type":{"collectionType":{"simple":"INTEGER"}}}}},"outputs":{"variables":{"o0":{"type":{"collectionType":{"simple":"INTEGER"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.merge_sort","task-name","sort_locally"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/062_core.control_flow.subworkflows.my_subwf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/062_core.control_flow.subworkflows.my_subwf_2_wf_crd.json
index c0c257bc462..77a3fc95558 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/062_core.control_flow.subworkflows.my_subwf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/062_core.control_flow.subworkflows.my_subwf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-subworkflows-my-subwf"}},"spec":{"id":"::core.control_flow.subworkflows.my_subwf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"c"}}},{"var":"o1","binding":{"promise":{"nodeId":"n1","var":"c"}}}]},"n0":{"id":"n0","name":"t1","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.subworkflows.t1\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}}]},"n1":{"id":"n1","name":"t1","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.subworkflows.t1\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"n0","var":"t1_int_output"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node","n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node","n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0","n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}},"o1":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"c"}}},{"var":"o1","binding":{"promise":{"nodeId":"n1","var":"c"}}}]},"inputs":{"literals":{"a":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.subworkflows.t1\"":{"id":{"resourceType":"TASK","name":"core.control_flow.subworkflows.t1"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"c":{"type":{"simple":"STRING"}},"t1_int_output":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.subworkflows","task-name","t1"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-subworkflows-my-subwf"}},"spec":{"id":"::core.control_flow.subworkflows.my_subwf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"c"}}},{"var":"o1","binding":{"promise":{"nodeId":"n1","var":"c"}}}]},"n0":{"id":"n0","name":"t1","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.subworkflows.t1\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}}]},"n1":{"id":"n1","name":"t1","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.subworkflows.t1\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"n0","var":"t1_int_output"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node","n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node","n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0","n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}},"o1":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"c"}}},{"var":"o1","binding":{"promise":{"nodeId":"n1","var":"c"}}}]},"inputs":{"literals":{"a":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.subworkflows.t1\"":{"id":{"resourceType":"TASK","name":"core.control_flow.subworkflows.t1"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"c":{"type":{"simple":"STRING"}},"t1_int_output":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.subworkflows","task-name","t1"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/069_core.control_flow.subworkflows.ext_workflow_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/069_core.control_flow.subworkflows.ext_workflow_2_wf_crd.json
index 5f871f850ad..44da5b082aa 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/069_core.control_flow.subworkflows.ext_workflow_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/069_core.control_flow.subworkflows.ext_workflow_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-subworkflows-ext-workflow"}},"spec":{"id":"::core.control_flow.subworkflows.ext_workflow","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"count_freq_words","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.subworkflows.count_freq_words\"","inputBindings":[{"var":"input_string1","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRUCT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"my_input":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.subworkflows.count_freq_words\"":{"id":{"resourceType":"TASK","name":"core.control_flow.subworkflows.count_freq_words"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"input_string1":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRUCT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.subworkflows","task-name","count_freq_words"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-control-flow-subworkflows-ext-workflow"}},"spec":{"id":"::core.control_flow.subworkflows.ext_workflow","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"count_freq_words","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.control_flow.subworkflows.count_freq_words\"","inputBindings":[{"var":"input_string1","binding":{"promise":{"nodeId":"start-node","var":"my_input"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRUCT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"my_input":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.control_flow.subworkflows.count_freq_words\"":{"id":{"resourceType":"TASK","name":"core.control_flow.subworkflows.count_freq_words"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"input_string1":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRUCT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.control_flow.subworkflows","task-name","count_freq_words"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/077_core.extend_flyte.custom_task_plugin.my_workflow_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/077_core.extend_flyte.custom_task_plugin.my_workflow_2_wf_crd.json
index fecbce5d117..d07212d6e13 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/077_core.extend_flyte.custom_task_plugin.my_workflow_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/077_core.extend_flyte.custom_task_plugin.my_workflow_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-extend-flyte-custom-task-plugin-my-workflow"}},"spec":{"id":"::core.extend_flyte.custom_task_plugin.my_workflow","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"my-objectstore-sensor","resources":{},"kind":"task","task":"resource_type:TASK name:\"my-objectstore-sensor\"","inputBindings":[{"var":"path","binding":{"promise":{"nodeId":"start-node","var":"path"}}}],"retry":{"minAttempts":11},"executionDeadline":"20m0s","activeDeadline":"40m0s"},"n1":{"id":"n1","name":"print_file","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.extend_flyte.custom_task_plugin.print_file\"","inputBindings":[{"var":"path","binding":{"promise":{"nodeId":"n0","var":"path"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"path":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.extend_flyte.custom_task_plugin.print_file\"":{"id":{"resourceType":"TASK","name":"core.extend_flyte.custom_task_plugin.print_file"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"path":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.extend_flyte.custom_task_plugin","task-name","print_file"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"my-objectstore-sensor\"":{"id":{"resourceType":"TASK","name":"my-objectstore-sensor"},"type":"object-store-sensor","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"timeout":"1200s","retries":{"retries":10}},"interface":{"inputs":{"variables":{"path":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"path":{"type":{"simple":"STRING"}}}}}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-extend-flyte-custom-task-plugin-my-workflow"}},"spec":{"id":"::core.extend_flyte.custom_task_plugin.my_workflow","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"my-objectstore-sensor","resources":{},"kind":"task","task":"resource_type:TASK name:\"my-objectstore-sensor\"","inputBindings":[{"var":"path","binding":{"promise":{"nodeId":"start-node","var":"path"}}}],"retry":{"minAttempts":11},"executionDeadline":"20m0s","activeDeadline":"40m0s"},"n1":{"id":"n1","name":"print_file","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.extend_flyte.custom_task_plugin.print_file\"","inputBindings":[{"var":"path","binding":{"promise":{"nodeId":"n0","var":"path"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"path":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.extend_flyte.custom_task_plugin.print_file\"":{"id":{"resourceType":"TASK","name":"core.extend_flyte.custom_task_plugin.print_file"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"path":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.extend_flyte.custom_task_plugin","task-name","print_file"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"my-objectstore-sensor\"":{"id":{"resourceType":"TASK","name":"my-objectstore-sensor"},"type":"object-store-sensor","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"timeout":"1200s","retries":{"retries":10}},"interface":{"inputs":{"variables":{"path":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"path":{"type":{"simple":"STRING"}}}}}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/081_core.extend_flyte.custom_types.wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/081_core.extend_flyte.custom_types.wf_2_wf_crd.json
index b64891180f1..740dee89e83 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/081_core.extend_flyte.custom_types.wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/081_core.extend_flyte.custom_types.wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-extend-flyte-custom-types-wf"}},"spec":{"id":"::core.extend_flyte.custom_types.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"generate","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.extend_flyte.custom_types.generate\""},"n1":{"id":"n1","name":"consume","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.extend_flyte.custom_types.consume\"","inputBindings":[{"var":"d","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.extend_flyte.custom_types.consume\"":{"id":{"resourceType":"TASK","name":"core.extend_flyte.custom_types.consume"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"d":{"type":{"blob":{"format":"binary","dimensionality":"MULTIPART"}}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.extend_flyte.custom_types","task-name","consume"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.extend_flyte.custom_types.generate\"":{"id":{"resourceType":"TASK","name":"core.extend_flyte.custom_types.generate"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"blob":{"format":"binary","dimensionality":"MULTIPART"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.extend_flyte.custom_types","task-name","generate"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-extend-flyte-custom-types-wf"}},"spec":{"id":"::core.extend_flyte.custom_types.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"generate","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.extend_flyte.custom_types.generate\""},"n1":{"id":"n1","name":"consume","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.extend_flyte.custom_types.consume\"","inputBindings":[{"var":"d","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.extend_flyte.custom_types.consume\"":{"id":{"resourceType":"TASK","name":"core.extend_flyte.custom_types.consume"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"d":{"type":{"blob":{"format":"binary","dimensionality":"MULTIPART"}}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.extend_flyte.custom_types","task-name","consume"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.extend_flyte.custom_types.generate\"":{"id":{"resourceType":"TASK","name":"core.extend_flyte.custom_types.generate"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"blob":{"format":"binary","dimensionality":"MULTIPART"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.extend_flyte.custom_types","task-name","generate"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/085_core.flyte_basics.basic_workflow.my_wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/085_core.flyte_basics.basic_workflow.my_wf_2_wf_crd.json
index c3d78033b8b..d6db5fecfac 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/085_core.flyte_basics.basic_workflow.my_wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/085_core.flyte_basics.basic_workflow.my_wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-basic-workflow-my-wf"}},"spec":{"id":"::core.flyte_basics.basic_workflow.my_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"t1_int_output"}}},{"var":"o1","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"t1","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.basic_workflow.t1\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}}]},"n1":{"id":"n1","name":"t2","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.basic_workflow.t2\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"n0","var":"c"}}},{"var":"b","binding":{"promise":{"nodeId":"start-node","var":"b"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node","n1"],"n1":["end-node"],"start-node":["n0","n1"]},"edges":{"downstream":{"n0":["end-node","n1"],"n1":["end-node"],"start-node":["n0","n1"]},"upstream":{"end-node":["n0","n1"],"n0":["start-node"],"n1":["n0","start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}},"o1":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"t1_int_output"}}},{"var":"o1","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"a":{"scalar":{"primitive":{"integer":"0"}}},"b":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.basic_workflow.t1\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.basic_workflow.t1"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"c":{"type":{"simple":"STRING"}},"t1_int_output":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.basic_workflow","task-name","t1"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.basic_workflow.t2\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.basic_workflow.t2"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"STRING"}},"b":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.basic_workflow","task-name","t2"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-basic-workflow-my-wf"}},"spec":{"id":"::core.flyte_basics.basic_workflow.my_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"t1_int_output"}}},{"var":"o1","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"t1","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.basic_workflow.t1\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}}]},"n1":{"id":"n1","name":"t2","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.basic_workflow.t2\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"n0","var":"c"}}},{"var":"b","binding":{"promise":{"nodeId":"start-node","var":"b"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node","n1"],"n1":["end-node"],"start-node":["n0","n1"]},"edges":{"downstream":{"n0":["end-node","n1"],"n1":["end-node"],"start-node":["n0","n1"]},"upstream":{"end-node":["n0","n1"],"n0":["start-node"],"n1":["n0","start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}},"o1":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"t1_int_output"}}},{"var":"o1","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"a":{"scalar":{"primitive":{"integer":"0"}}},"b":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.basic_workflow.t1\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.basic_workflow.t1"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"c":{"type":{"simple":"STRING"}},"t1_int_output":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.basic_workflow","task-name","t1"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.basic_workflow.t2\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.basic_workflow.t2"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"STRING"}},"b":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.basic_workflow","task-name","t2"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/089_core.flyte_basics.decorating_tasks.wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/089_core.flyte_basics.decorating_tasks.wf_2_wf_crd.json
index 1167dcfa422..669575488dd 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/089_core.flyte_basics.decorating_tasks.wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/089_core.flyte_basics.decorating_tasks.wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-decorating-tasks-wf"}},"spec":{"id":"::core.flyte_basics.decorating_tasks.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"t1","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.decorating_tasks.t1\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"start-node","var":"x"}}}]},"n1":{"id":"n1","name":"t2","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.decorating_tasks.t2\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"x":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.decorating_tasks.t1\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.decorating_tasks.t1"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.decorating_tasks","task-name","t1"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.decorating_tasks.t2\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.decorating_tasks.t2"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.decorating_tasks","task-name","t2"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-decorating-tasks-wf"}},"spec":{"id":"::core.flyte_basics.decorating_tasks.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"t1","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.decorating_tasks.t1\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"start-node","var":"x"}}}]},"n1":{"id":"n1","name":"t2","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.decorating_tasks.t2\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"x":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.decorating_tasks.t1\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.decorating_tasks.t1"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.decorating_tasks","task-name","t1"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.decorating_tasks.t2\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.decorating_tasks.t2"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.decorating_tasks","task-name","t2"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/095_core.flyte_basics.decorating_workflows.wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/095_core.flyte_basics.decorating_workflows.wf_2_wf_crd.json
index beefec5f74f..0c4d936268b 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/095_core.flyte_basics.decorating_workflows.wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/095_core.flyte_basics.decorating_workflows.wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-decorating-workflows-wf"}},"spec":{"id":"::core.flyte_basics.decorating_workflows.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"n0":{"id":"n0","name":"setup","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.setup\""},"n1":{"id":"n1","name":"t1","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.t1\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"start-node","var":"x"}}}]},"n2":{"id":"n2","name":"t2","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.t2\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n3":{"id":"n3","name":"teardown","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.teardown\""},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["n2"],"n2":["end-node","n3"],"n3":["end-node"],"start-node":["n0","n1"]},"edges":{"downstream":{"n0":["n1"],"n1":["n2"],"n2":["end-node","n3"],"n3":["end-node"],"start-node":["n0","n1"]},"upstream":{"end-node":["n2","n3"],"n0":["start-node"],"n1":["n0","start-node"],"n2":["n1"],"n3":["n2"]}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"inputs":{"literals":{"x":{"scalar":{"primitive":{"floatValue":0}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.setup\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.decorating_workflows.setup"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.decorating_workflows","task-name","setup"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.t1\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.decorating_workflows.t1"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.decorating_workflows","task-name","t1"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.t2\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.decorating_workflows.t2"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.decorating_workflows","task-name","t2"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.teardown\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.decorating_workflows.teardown"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.decorating_workflows","task-name","teardown"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-decorating-workflows-wf"}},"spec":{"id":"::core.flyte_basics.decorating_workflows.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"n0":{"id":"n0","name":"setup","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.setup\""},"n1":{"id":"n1","name":"t1","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.t1\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"start-node","var":"x"}}}]},"n2":{"id":"n2","name":"t2","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.t2\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n3":{"id":"n3","name":"teardown","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.teardown\""},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["n2"],"n2":["end-node","n3"],"n3":["end-node"],"start-node":["n0","n1"]},"edges":{"downstream":{"n0":["n1"],"n1":["n2"],"n2":["end-node","n3"],"n3":["end-node"],"start-node":["n0","n1"]},"upstream":{"end-node":["n2","n3"],"n0":["start-node"],"n1":["n0","start-node"],"n2":["n1"],"n3":["n2"]}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"inputs":{"literals":{"x":{"scalar":{"primitive":{"floatValue":0}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.setup\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.decorating_workflows.setup"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.decorating_workflows","task-name","setup"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.t1\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.decorating_workflows.t1"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.decorating_workflows","task-name","t1"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.t2\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.decorating_workflows.t2"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"simple":"FLOAT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"FLOAT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.decorating_workflows","task-name","t2"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.decorating_workflows.teardown\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.decorating_workflows.teardown"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.decorating_workflows","task-name","teardown"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/098_core.flyte_basics.documented_workflow.sphinx_docstring_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/098_core.flyte_basics.documented_workflow.sphinx_docstring_2_wf_crd.json
index c4e129ee993..afea6d906cc 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/098_core.flyte_basics.documented_workflow.sphinx_docstring_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/098_core.flyte_basics.documented_workflow.sphinx_docstring_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-documented-workflow-sphinx-docstring"}},"spec":{"id":"::core.flyte_basics.documented_workflow.sphinx_docstring","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"add_data","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.documented_workflow.add_data\"","inputBindings":[{"var":"data","binding":{"promise":{"nodeId":"start-node","var":"data"}}},{"var":"df","binding":{"promise":{"nodeId":"start-node","var":"df"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"data":{"scalar":{"generic":{}}},"df":{"scalar":{"structuredDataset":{"metadata":{"structuredDatasetType":{"format":"parquet"}}}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.documented_workflow.add_data\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.documented_workflow.add_data"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"data":{"type":{"simple":"STRUCT"}},"df":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.documented_workflow","task-name","add_data"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-documented-workflow-sphinx-docstring"}},"spec":{"id":"::core.flyte_basics.documented_workflow.sphinx_docstring","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"add_data","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.documented_workflow.add_data\"","inputBindings":[{"var":"data","binding":{"promise":{"nodeId":"start-node","var":"data"}}},{"var":"df","binding":{"promise":{"nodeId":"start-node","var":"df"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"data":{"scalar":{"generic":{}}},"df":{"scalar":{"structuredDataset":{"metadata":{"structuredDatasetType":{"format":"parquet"}}}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.documented_workflow.add_data\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.documented_workflow.add_data"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"data":{"type":{"simple":"STRUCT"}},"df":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.documented_workflow","task-name","add_data"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/100_core.flyte_basics.documented_workflow.numpy_docstring_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/100_core.flyte_basics.documented_workflow.numpy_docstring_2_wf_crd.json
index e3b6562bd02..92c2a860b52 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/100_core.flyte_basics.documented_workflow.numpy_docstring_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/100_core.flyte_basics.documented_workflow.numpy_docstring_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-documented-workflow-numpy-docstring"}},"spec":{"id":"::core.flyte_basics.documented_workflow.numpy_docstring","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"add_data","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.documented_workflow.add_data\"","inputBindings":[{"var":"data","binding":{"promise":{"nodeId":"start-node","var":"data"}}},{"var":"df","binding":{"promise":{"nodeId":"start-node","var":"df"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"data":{"scalar":{"generic":{}}},"df":{"scalar":{"structuredDataset":{"metadata":{"structuredDatasetType":{"format":"parquet"}}}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.documented_workflow.add_data\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.documented_workflow.add_data"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"data":{"type":{"simple":"STRUCT"}},"df":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.documented_workflow","task-name","add_data"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-documented-workflow-numpy-docstring"}},"spec":{"id":"::core.flyte_basics.documented_workflow.numpy_docstring","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"add_data","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.documented_workflow.add_data\"","inputBindings":[{"var":"data","binding":{"promise":{"nodeId":"start-node","var":"data"}}},{"var":"df","binding":{"promise":{"nodeId":"start-node","var":"df"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"data":{"scalar":{"generic":{}}},"df":{"scalar":{"structuredDataset":{"metadata":{"structuredDatasetType":{"format":"parquet"}}}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.documented_workflow.add_data\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.documented_workflow.add_data"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"data":{"type":{"simple":"STRUCT"}},"df":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.documented_workflow","task-name","add_data"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/102_core.flyte_basics.documented_workflow.google_docstring_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/102_core.flyte_basics.documented_workflow.google_docstring_2_wf_crd.json
index bc6a1136b15..a2374032823 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/102_core.flyte_basics.documented_workflow.google_docstring_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/102_core.flyte_basics.documented_workflow.google_docstring_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-documented-workflow-google-docstring"}},"spec":{"id":"::core.flyte_basics.documented_workflow.google_docstring","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"add_data","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.documented_workflow.add_data\"","inputBindings":[{"var":"data","binding":{"promise":{"nodeId":"start-node","var":"data"}}},{"var":"df","binding":{"promise":{"nodeId":"start-node","var":"df"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"data":{"scalar":{"generic":{}}},"df":{"scalar":{"structuredDataset":{"metadata":{"structuredDatasetType":{"format":"parquet"}}}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.documented_workflow.add_data\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.documented_workflow.add_data"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"data":{"type":{"simple":"STRUCT"}},"df":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.documented_workflow","task-name","add_data"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-documented-workflow-google-docstring"}},"spec":{"id":"::core.flyte_basics.documented_workflow.google_docstring","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"add_data","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.documented_workflow.add_data\"","inputBindings":[{"var":"data","binding":{"promise":{"nodeId":"start-node","var":"data"}}},{"var":"df","binding":{"promise":{"nodeId":"start-node","var":"df"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"data":{"scalar":{"generic":{}}},"df":{"scalar":{"structuredDataset":{"metadata":{"structuredDatasetType":{"format":"parquet"}}}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.documented_workflow.add_data\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.documented_workflow.add_data"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"data":{"type":{"simple":"STRUCT"}},"df":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.documented_workflow","task-name","add_data"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/105_core.flyte_basics.files.normalize_csv_file_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/105_core.flyte_basics.files.normalize_csv_file_2_wf_crd.json
index 1332ec0a42b..92650970dae 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/105_core.flyte_basics.files.normalize_csv_file_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/105_core.flyte_basics.files.normalize_csv_file_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-files-normalize-csv-file"}},"spec":{"id":"::core.flyte_basics.files.normalize_csv_file","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"normalize_columns","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.files.normalize_columns\"","inputBindings":[{"var":"column_names","binding":{"promise":{"nodeId":"start-node","var":"column_names"}}},{"var":"columns_to_normalize","binding":{"promise":{"nodeId":"start-node","var":"columns_to_normalize"}}},{"var":"csv_url","binding":{"promise":{"nodeId":"start-node","var":"csv_url"}}},{"var":"output_location","binding":{"promise":{"nodeId":"start-node","var":"output_location"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"blob":{}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"column_names":{"collection":{"literals":[{"scalar":{"primitive":{"stringValue":""}}}]}},"columns_to_normalize":{"collection":{"literals":[{"scalar":{"primitive":{"stringValue":""}}}]}},"csv_url":{"scalar":{"blob":{"metadata":{"type":{}},"uri":"/tmp/somepath"}}},"output_location":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.files.normalize_columns\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.files.normalize_columns"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"column_names":{"type":{"collectionType":{"simple":"STRING"}}},"columns_to_normalize":{"type":{"collectionType":{"simple":"STRING"}}},"csv_url":{"type":{"blob":{}}},"output_location":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"blob":{}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.files","task-name","normalize_columns"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-files-normalize-csv-file"}},"spec":{"id":"::core.flyte_basics.files.normalize_csv_file","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"normalize_columns","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.files.normalize_columns\"","inputBindings":[{"var":"column_names","binding":{"promise":{"nodeId":"start-node","var":"column_names"}}},{"var":"columns_to_normalize","binding":{"promise":{"nodeId":"start-node","var":"columns_to_normalize"}}},{"var":"csv_url","binding":{"promise":{"nodeId":"start-node","var":"csv_url"}}},{"var":"output_location","binding":{"promise":{"nodeId":"start-node","var":"output_location"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"blob":{}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"column_names":{"collection":{"literals":[{"scalar":{"primitive":{"stringValue":""}}}]}},"columns_to_normalize":{"collection":{"literals":[{"scalar":{"primitive":{"stringValue":""}}}]}},"csv_url":{"scalar":{"blob":{"metadata":{"type":{}},"uri":"/tmp/somepath"}}},"output_location":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.files.normalize_columns\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.files.normalize_columns"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"column_names":{"type":{"collectionType":{"simple":"STRING"}}},"columns_to_normalize":{"type":{"collectionType":{"simple":"STRING"}}},"csv_url":{"type":{"blob":{}}},"output_location":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"blob":{}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.files","task-name","normalize_columns"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/109_core.flyte_basics.folders.download_and_normalize_csv_files_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/109_core.flyte_basics.folders.download_and_normalize_csv_files_2_wf_crd.json
index 88ba0db9c36..268512b2c96 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/109_core.flyte_basics.folders.download_and_normalize_csv_files_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/109_core.flyte_basics.folders.download_and_normalize_csv_files_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-folders-download-and-normalize-csv-files"}},"spec":{"id":"::core.flyte_basics.folders.download_and_normalize_csv_files","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"download_files","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.folders.download_files\"","inputBindings":[{"var":"csv_urls","binding":{"promise":{"nodeId":"start-node","var":"csv_urls"}}}]},"n1":{"id":"n1","name":"normalize_all_files","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.folders.normalize_all_files\"","inputBindings":[{"var":"columns_metadata","binding":{"promise":{"nodeId":"start-node","var":"columns_metadata"}}},{"var":"columns_to_normalize_metadata","binding":{"promise":{"nodeId":"start-node","var":"columns_to_normalize_metadata"}}},{"var":"csv_files_dir","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0","n1"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0","n1"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0","start-node"]}},"outputs":{"variables":{"o0":{"type":{"blob":{"dimensionality":"MULTIPART"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"columns_metadata":{"collection":{"literals":[{"collection":{"literals":[{"scalar":{"primitive":{"stringValue":""}}}]}}]}},"columns_to_normalize_metadata":{"collection":{"literals":[{"collection":{"literals":[{"scalar":{"primitive":{"stringValue":""}}}]}}]}},"csv_urls":{"collection":{"literals":[{"scalar":{"primitive":{"stringValue":""}}}]}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.folders.download_files\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.folders.download_files"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"csv_urls":{"type":{"collectionType":{"simple":"STRING"}}}}},"outputs":{"variables":{"o0":{"type":{"blob":{"dimensionality":"MULTIPART"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.folders","task-name","download_files"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.folders.normalize_all_files\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.folders.normalize_all_files"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"columns_metadata":{"type":{"collectionType":{"collectionType":{"simple":"STRING"}}}},"columns_to_normalize_metadata":{"type":{"collectionType":{"collectionType":{"simple":"STRING"}}}},"csv_files_dir":{"type":{"blob":{"dimensionality":"MULTIPART"}}}}},"outputs":{"variables":{"o0":{"type":{"blob":{"dimensionality":"MULTIPART"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.folders","task-name","normalize_all_files"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-folders-download-and-normalize-csv-files"}},"spec":{"id":"::core.flyte_basics.folders.download_and_normalize_csv_files","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"download_files","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.folders.download_files\"","inputBindings":[{"var":"csv_urls","binding":{"promise":{"nodeId":"start-node","var":"csv_urls"}}}]},"n1":{"id":"n1","name":"normalize_all_files","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.folders.normalize_all_files\"","inputBindings":[{"var":"columns_metadata","binding":{"promise":{"nodeId":"start-node","var":"columns_metadata"}}},{"var":"columns_to_normalize_metadata","binding":{"promise":{"nodeId":"start-node","var":"columns_to_normalize_metadata"}}},{"var":"csv_files_dir","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0","n1"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0","n1"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0","start-node"]}},"outputs":{"variables":{"o0":{"type":{"blob":{"dimensionality":"MULTIPART"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"columns_metadata":{"collection":{"literals":[{"collection":{"literals":[{"scalar":{"primitive":{"stringValue":""}}}]}}]}},"columns_to_normalize_metadata":{"collection":{"literals":[{"collection":{"literals":[{"scalar":{"primitive":{"stringValue":""}}}]}}]}},"csv_urls":{"collection":{"literals":[{"scalar":{"primitive":{"stringValue":""}}}]}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.folders.download_files\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.folders.download_files"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"csv_urls":{"type":{"collectionType":{"simple":"STRING"}}}}},"outputs":{"variables":{"o0":{"type":{"blob":{"dimensionality":"MULTIPART"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.folders","task-name","download_files"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.folders.normalize_all_files\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.folders.normalize_all_files"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"columns_metadata":{"type":{"collectionType":{"collectionType":{"simple":"STRING"}}}},"columns_to_normalize_metadata":{"type":{"collectionType":{"collectionType":{"simple":"STRING"}}}},"csv_files_dir":{"type":{"blob":{"dimensionality":"MULTIPART"}}}}},"outputs":{"variables":{"o0":{"type":{"blob":{"dimensionality":"MULTIPART"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.folders","task-name","normalize_all_files"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/112_core.flyte_basics.hello_world.my_wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/112_core.flyte_basics.hello_world.my_wf_2_wf_crd.json
index 44359f8f4b1..7788dbdcebf 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/112_core.flyte_basics.hello_world.my_wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/112_core.flyte_basics.hello_world.my_wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-hello-world-my-wf"}},"spec":{"id":"::core.flyte_basics.hello_world.my_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"say_hello","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.hello_world.say_hello\""},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.hello_world.say_hello\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.hello_world.say_hello"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.hello_world","task-name","say_hello"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-hello-world-my-wf"}},"spec":{"id":"::core.flyte_basics.hello_world.my_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"say_hello","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.hello_world.say_hello\""},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.hello_world.say_hello\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.hello_world.say_hello"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.hello_world","task-name","say_hello"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/117_my.imperative.workflow.example_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/117_my.imperative.workflow.example_2_wf_crd.json
index c52156e33d9..860fc45b476 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/117_my.imperative.workflow.example_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/117_my.imperative.workflow.example_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"my-imperative-workflow-example"}},"spec":{"id":"::my.imperative.workflow.example","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"output_from_t1","binding":{"promise":{"nodeId":"n0","var":"o0"}}},{"var":"output_list","binding":{"collection":{"bindings":[{"promise":{"nodeId":"n0","var":"o0"}},{"promise":{"nodeId":"n2","var":"o0"}}]}}}]},"n0":{"id":"n0","name":"t1","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.imperative_wf_style.t1\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"in1"}}}]},"n1":{"id":"n1","name":"t2","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.imperative_wf_style.t2\""},"n2":{"id":"n2","name":"t3","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.imperative_wf_style.t3\"","inputBindings":[{"var":"a","binding":{"collection":{"bindings":[{"promise":{"nodeId":"start-node","var":"in1"}},{"promise":{"nodeId":"start-node","var":"in2"}}]}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"n1":["end-node"],"n2":["end-node"],"start-node":["n0","n1","n2"]},"edges":{"downstream":{"n0":["end-node"],"n1":["end-node"],"n2":["end-node"],"start-node":["n0","n1","n2"]},"upstream":{"end-node":["n0","n1","n2"],"n0":["start-node"],"n1":["start-node"],"n2":["start-node"]}},"outputs":{"variables":{"output_from_t1":{"type":{"simple":"STRING"}},"output_list":{"type":{"collectionType":{"simple":"STRING"}}}}},"outputBindings":[{"var":"output_from_t1","binding":{"promise":{"nodeId":"n0","var":"o0"}}},{"var":"output_list","binding":{"collection":{"bindings":[{"promise":{"nodeId":"n0","var":"o0"}},{"promise":{"nodeId":"n2","var":"o0"}}]}}}]},"inputs":{"literals":{"in1":{"scalar":{"primitive":{"stringValue":""}}},"in2":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.imperative_wf_style.t1\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.imperative_wf_style.t1"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.imperative_wf_style","task-name","t1"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.imperative_wf_style.t2\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.imperative_wf_style.t2"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.imperative_wf_style","task-name","t2"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.imperative_wf_style.t3\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.imperative_wf_style.t3"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"collectionType":{"simple":"STRING"}}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.imperative_wf_style","task-name","t3"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"my-imperative-workflow-example"}},"spec":{"id":"::my.imperative.workflow.example","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"output_from_t1","binding":{"promise":{"nodeId":"n0","var":"o0"}}},{"var":"output_list","binding":{"collection":{"bindings":[{"promise":{"nodeId":"n0","var":"o0"}},{"promise":{"nodeId":"n2","var":"o0"}}]}}}]},"n0":{"id":"n0","name":"t1","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.imperative_wf_style.t1\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"in1"}}}]},"n1":{"id":"n1","name":"t2","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.imperative_wf_style.t2\""},"n2":{"id":"n2","name":"t3","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.imperative_wf_style.t3\"","inputBindings":[{"var":"a","binding":{"collection":{"bindings":[{"promise":{"nodeId":"start-node","var":"in1"}},{"promise":{"nodeId":"start-node","var":"in2"}}]}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"n1":["end-node"],"n2":["end-node"],"start-node":["n0","n1","n2"]},"edges":{"downstream":{"n0":["end-node"],"n1":["end-node"],"n2":["end-node"],"start-node":["n0","n1","n2"]},"upstream":{"end-node":["n0","n1","n2"],"n0":["start-node"],"n1":["start-node"],"n2":["start-node"]}},"outputs":{"variables":{"output_from_t1":{"type":{"simple":"STRING"}},"output_list":{"type":{"collectionType":{"simple":"STRING"}}}}},"outputBindings":[{"var":"output_from_t1","binding":{"promise":{"nodeId":"n0","var":"o0"}}},{"var":"output_list","binding":{"collection":{"bindings":[{"promise":{"nodeId":"n0","var":"o0"}},{"promise":{"nodeId":"n2","var":"o0"}}]}}}]},"inputs":{"literals":{"in1":{"scalar":{"primitive":{"stringValue":""}}},"in2":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.imperative_wf_style.t1\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.imperative_wf_style.t1"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.imperative_wf_style","task-name","t1"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.imperative_wf_style.t2\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.imperative_wf_style.t2"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.imperative_wf_style","task-name","t2"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.imperative_wf_style.t3\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.imperative_wf_style.t3"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"collectionType":{"simple":"STRING"}}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.imperative_wf_style","task-name","t3"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/120_core.flyte_basics.lp.my_wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/120_core.flyte_basics.lp.my_wf_2_wf_crd.json
index 9f07a3e9a8a..16d78217777 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/120_core.flyte_basics.lp.my_wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/120_core.flyte_basics.lp.my_wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-lp-my-wf"}},"spec":{"id":"::core.flyte_basics.lp.my_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"square","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.lp.square\"","inputBindings":[{"var":"val","binding":{"promise":{"nodeId":"start-node","var":"val"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"val":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.lp.square\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.lp.square"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"val":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.lp","task-name","square"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-lp-my-wf"}},"spec":{"id":"::core.flyte_basics.lp.my_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"square","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.lp.square\"","inputBindings":[{"var":"val","binding":{"promise":{"nodeId":"start-node","var":"val"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"val":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.lp.square\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.lp.square"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"val":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"INTEGER"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.lp","task-name","square"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/125_core.flyte_basics.lp.go_greet_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/125_core.flyte_basics.lp.go_greet_2_wf_crd.json
index 4daaecd067e..9933d48bc7f 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/125_core.flyte_basics.lp.go_greet_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/125_core.flyte_basics.lp.go_greet_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-lp-go-greet"}},"spec":{"id":"::core.flyte_basics.lp.go_greet","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"greet","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.lp.greet\"","inputBindings":[{"var":"am","binding":{"promise":{"nodeId":"start-node","var":"am"}}},{"var":"day_of_week","binding":{"promise":{"nodeId":"start-node","var":"day_of_week"}}},{"var":"number","binding":{"promise":{"nodeId":"start-node","var":"number"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"am":{"scalar":{"primitive":{"boolean":false}}},"day_of_week":{"scalar":{"primitive":{"stringValue":""}}},"number":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.lp.greet\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.lp.greet"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"am":{"type":{"simple":"BOOLEAN"}},"day_of_week":{"type":{"simple":"STRING"}},"number":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.lp","task-name","greet"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-lp-go-greet"}},"spec":{"id":"::core.flyte_basics.lp.go_greet","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"greet","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.lp.greet\"","inputBindings":[{"var":"am","binding":{"promise":{"nodeId":"start-node","var":"am"}}},{"var":"day_of_week","binding":{"promise":{"nodeId":"start-node","var":"day_of_week"}}},{"var":"number","binding":{"promise":{"nodeId":"start-node","var":"number"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"am":{"scalar":{"primitive":{"boolean":false}}},"day_of_week":{"scalar":{"primitive":{"stringValue":""}}},"number":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.lp.greet\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.lp.greet"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"am":{"type":{"simple":"BOOLEAN"}},"day_of_week":{"type":{"simple":"STRING"}},"number":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.lp","task-name","greet"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/129_core.flyte_basics.named_outputs.my_wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/129_core.flyte_basics.named_outputs.my_wf_2_wf_crd.json
index 78ca24e81f5..a7f82761c2b 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/129_core.flyte_basics.named_outputs.my_wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/129_core.flyte_basics.named_outputs.my_wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-named-outputs-my-wf"}},"spec":{"id":"::core.flyte_basics.named_outputs.my_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"greet1","binding":{"promise":{"nodeId":"n0","var":"greet"}}},{"var":"greet2","binding":{"promise":{"nodeId":"n1","var":"greet"}}}]},"n0":{"id":"n0","name":"say_hello","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.named_outputs.say_hello\""},"n1":{"id":"n1","name":"say_hello","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.named_outputs.say_hello\""},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"n1":["end-node"],"start-node":["n0","n1"]},"edges":{"downstream":{"n0":["end-node"],"n1":["end-node"],"start-node":["n0","n1"]},"upstream":{"end-node":["n0","n1"],"n0":["start-node"],"n1":["start-node"]}},"outputs":{"variables":{"greet1":{"type":{"simple":"STRING"}},"greet2":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"greet1","binding":{"promise":{"nodeId":"n0","var":"greet"}}},{"var":"greet2","binding":{"promise":{"nodeId":"n1","var":"greet"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.named_outputs.say_hello\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.named_outputs.say_hello"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"greet":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.named_outputs","task-name","say_hello"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-named-outputs-my-wf"}},"spec":{"id":"::core.flyte_basics.named_outputs.my_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"greet1","binding":{"promise":{"nodeId":"n0","var":"greet"}}},{"var":"greet2","binding":{"promise":{"nodeId":"n1","var":"greet"}}}]},"n0":{"id":"n0","name":"say_hello","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.named_outputs.say_hello\""},"n1":{"id":"n1","name":"say_hello","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.named_outputs.say_hello\""},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"n1":["end-node"],"start-node":["n0","n1"]},"edges":{"downstream":{"n0":["end-node"],"n1":["end-node"],"start-node":["n0","n1"]},"upstream":{"end-node":["n0","n1"],"n0":["start-node"],"n1":["start-node"]}},"outputs":{"variables":{"greet1":{"type":{"simple":"STRING"}},"greet2":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"greet1","binding":{"promise":{"nodeId":"n0","var":"greet"}}},{"var":"greet2","binding":{"promise":{"nodeId":"n1","var":"greet"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.named_outputs.say_hello\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.named_outputs.say_hello"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"greet":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.named_outputs","task-name","say_hello"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/140_core.flyte_basics.shell_task.wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/140_core.flyte_basics.shell_task.wf_2_wf_crd.json
index 439d645109c..2c75ef15832 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/140_core.flyte_basics.shell_task.wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/140_core.flyte_basics.shell_task.wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-shell-task-wf"}},"spec":{"id":"::core.flyte_basics.shell_task.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n3","var":"k"}}}]},"n0":{"id":"n0","name":"create_entities","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.shell_task.create_entities\""},"n1":{"id":"n1","name":"task_1","resources":{},"kind":"task","task":"resource_type:TASK name:\"task_1\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n2":{"id":"n2","name":"task_2","resources":{},"kind":"task","task":"resource_type:TASK name:\"task_2\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"n1","var":"i"}}},{"var":"y","binding":{"promise":{"nodeId":"n0","var":"o1"}}}]},"n3":{"id":"n3","name":"task_3","resources":{},"kind":"task","task":"resource_type:TASK name:\"task_3\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"n0","var":"o0"}}},{"var":"y","binding":{"promise":{"nodeId":"n0","var":"o1"}}},{"var":"z","binding":{"promise":{"nodeId":"n2","var":"j"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1","n2","n3"],"n1":["n2"],"n2":["n3"],"n3":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1","n2","n3"],"n1":["n2"],"n2":["n3"],"n3":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n3"],"n0":["start-node"],"n1":["n0"],"n2":["n0","n1"],"n3":["n0","n2"]}},"outputs":{"variables":{"o0":{"type":{"blob":{}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n3","var":"k"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.shell_task.create_entities\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.shell_task.create_entities"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"blob":{}}},"o1":{"type":{"blob":{"dimensionality":"MULTIPART"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.shell_task","task-name","create_entities"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"task_1\"":{"id":{"resourceType":"TASK","name":"task_1"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"blob":{}}}}},"outputs":{"variables":{"i":{"type":{"blob":{}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.shell_task","task-name","t1"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"task_2\"":{"id":{"resourceType":"TASK","name":"task_2"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"blob":{}}},"y":{"type":{"blob":{"dimensionality":"MULTIPART"}}}}},"outputs":{"variables":{"j":{"type":{"blob":{}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.shell_task","task-name","t2"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"task_3\"":{"id":{"resourceType":"TASK","name":"task_3"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"blob":{}}},"y":{"type":{"blob":{"dimensionality":"MULTIPART"}}},"z":{"type":{"blob":{}}}}},"outputs":{"variables":{"k":{"type":{"blob":{}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.shell_task","task-name","t3"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-shell-task-wf"}},"spec":{"id":"::core.flyte_basics.shell_task.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n3","var":"k"}}}]},"n0":{"id":"n0","name":"create_entities","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.shell_task.create_entities\""},"n1":{"id":"n1","name":"task_1","resources":{},"kind":"task","task":"resource_type:TASK name:\"task_1\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n2":{"id":"n2","name":"task_2","resources":{},"kind":"task","task":"resource_type:TASK name:\"task_2\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"n1","var":"i"}}},{"var":"y","binding":{"promise":{"nodeId":"n0","var":"o1"}}}]},"n3":{"id":"n3","name":"task_3","resources":{},"kind":"task","task":"resource_type:TASK name:\"task_3\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"n0","var":"o0"}}},{"var":"y","binding":{"promise":{"nodeId":"n0","var":"o1"}}},{"var":"z","binding":{"promise":{"nodeId":"n2","var":"j"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1","n2","n3"],"n1":["n2"],"n2":["n3"],"n3":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1","n2","n3"],"n1":["n2"],"n2":["n3"],"n3":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n3"],"n0":["start-node"],"n1":["n0"],"n2":["n0","n1"],"n3":["n0","n2"]}},"outputs":{"variables":{"o0":{"type":{"blob":{}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n3","var":"k"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.shell_task.create_entities\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.shell_task.create_entities"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"blob":{}}},"o1":{"type":{"blob":{"dimensionality":"MULTIPART"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.shell_task","task-name","create_entities"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"task_1\"":{"id":{"resourceType":"TASK","name":"task_1"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"blob":{}}}}},"outputs":{"variables":{"i":{"type":{"blob":{}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.shell_task","task-name","t1"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"task_2\"":{"id":{"resourceType":"TASK","name":"task_2"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"blob":{}}},"y":{"type":{"blob":{"dimensionality":"MULTIPART"}}}}},"outputs":{"variables":{"j":{"type":{"blob":{}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.shell_task","task-name","t2"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"task_3\"":{"id":{"resourceType":"TASK","name":"task_3"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"blob":{}}},"y":{"type":{"blob":{"dimensionality":"MULTIPART"}}},"z":{"type":{"blob":{}}}}},"outputs":{"variables":{"k":{"type":{"blob":{}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.shell_task","task-name","t3"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/147_core.flyte_basics.task_cache.cached_dataframe_wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/147_core.flyte_basics.task_cache.cached_dataframe_wf_2_wf_crd.json
index af63532ed8a..e99705be6b7 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/147_core.flyte_basics.task_cache.cached_dataframe_wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/147_core.flyte_basics.task_cache.cached_dataframe_wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-task-cache-cached-dataframe-wf"}},"spec":{"id":"::core.flyte_basics.task_cache.cached_dataframe_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end"},"n0":{"id":"n0","name":"uncached_data_reading_task","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.task_cache.uncached_data_reading_task\""},"n1":{"id":"n1","name":"cached_data_processing_task","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.task_cache.cached_data_processing_task\"","inputBindings":[{"var":"df","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n2":{"id":"n2","name":"cached_data_processing_task","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.task_cache.cached_data_processing_task\"","inputBindings":[{"var":"df","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n3":{"id":"n3","name":"compare_dataframes","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.task_cache.compare_dataframes\"","inputBindings":[{"var":"df1","binding":{"promise":{"nodeId":"n1","var":"o0"}}},{"var":"df2","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1","n2"],"n1":["n2","n3"],"n2":["n3"],"n3":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1","n2"],"n1":["n2","n3"],"n2":["n3"],"n3":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n3"],"n0":["start-node"],"n1":["n0"],"n2":["n0","n1"],"n3":["n1","n2"]}},"outputs":{}},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.task_cache.cached_data_processing_task\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.task_cache.cached_data_processing_task"},"type":"python-task","metadata":{"discoverable":true,"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{},"discoveryVersion":"1.0"},"interface":{"inputs":{"variables":{"df":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.task_cache","task-name","cached_data_processing_task"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.task_cache.compare_dataframes\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.task_cache.compare_dataframes"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"df1":{"type":{"structuredDatasetType":{"format":"parquet"}}},"df2":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputs":{}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.task_cache","task-name","compare_dataframes"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.task_cache.uncached_data_reading_task\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.task_cache.uncached_data_reading_task"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.task_cache","task-name","uncached_data_reading_task"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-flyte-basics-task-cache-cached-dataframe-wf"}},"spec":{"id":"::core.flyte_basics.task_cache.cached_dataframe_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end"},"n0":{"id":"n0","name":"uncached_data_reading_task","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.task_cache.uncached_data_reading_task\""},"n1":{"id":"n1","name":"cached_data_processing_task","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.task_cache.cached_data_processing_task\"","inputBindings":[{"var":"df","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n2":{"id":"n2","name":"cached_data_processing_task","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.task_cache.cached_data_processing_task\"","inputBindings":[{"var":"df","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n3":{"id":"n3","name":"compare_dataframes","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.flyte_basics.task_cache.compare_dataframes\"","inputBindings":[{"var":"df1","binding":{"promise":{"nodeId":"n1","var":"o0"}}},{"var":"df2","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1","n2"],"n1":["n2","n3"],"n2":["n3"],"n3":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1","n2"],"n1":["n2","n3"],"n2":["n3"],"n3":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n3"],"n0":["start-node"],"n1":["n0"],"n2":["n0","n1"],"n3":["n1","n2"]}},"outputs":{}},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.flyte_basics.task_cache.cached_data_processing_task\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.task_cache.cached_data_processing_task"},"type":"python-task","metadata":{"discoverable":true,"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{},"discoveryVersion":"1.0"},"interface":{"inputs":{"variables":{"df":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.task_cache","task-name","cached_data_processing_task"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.task_cache.compare_dataframes\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.task_cache.compare_dataframes"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"df1":{"type":{"structuredDatasetType":{"format":"parquet"}}},"df2":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputs":{}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.task_cache","task-name","compare_dataframes"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.flyte_basics.task_cache.uncached_data_reading_task\"":{"id":{"resourceType":"TASK","name":"core.flyte_basics.task_cache.uncached_data_reading_task"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.flyte_basics.task_cache","task-name","uncached_data_reading_task"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/151_core.scheduled_workflows.lp_schedules.date_formatter_wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/151_core.scheduled_workflows.lp_schedules.date_formatter_wf_2_wf_crd.json
index 90097431d6e..37981d3157e 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/151_core.scheduled_workflows.lp_schedules.date_formatter_wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/151_core.scheduled_workflows.lp_schedules.date_formatter_wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-scheduled-workflows-lp-schedules-date-formatter-wf"}},"spec":{"id":"::core.scheduled_workflows.lp_schedules.date_formatter_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end"},"n0":{"id":"n0","name":"format_date","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.scheduled_workflows.lp_schedules.format_date\"","inputBindings":[{"var":"run_date","binding":{"promise":{"nodeId":"start-node","var":"kickoff_time"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{}},"inputs":{"literals":{"kickoff_time":{"scalar":{"primitive":{"datetime":"1970-01-01T00:00:00.000010Z"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.scheduled_workflows.lp_schedules.format_date\"":{"id":{"resourceType":"TASK","name":"core.scheduled_workflows.lp_schedules.format_date"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"run_date":{"type":{"simple":"DATETIME"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.scheduled_workflows.lp_schedules","task-name","format_date"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-scheduled-workflows-lp-schedules-date-formatter-wf"}},"spec":{"id":"::core.scheduled_workflows.lp_schedules.date_formatter_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end"},"n0":{"id":"n0","name":"format_date","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.scheduled_workflows.lp_schedules.format_date\"","inputBindings":[{"var":"run_date","binding":{"promise":{"nodeId":"start-node","var":"kickoff_time"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{}},"inputs":{"literals":{"kickoff_time":{"scalar":{"primitive":{"datetime":"1970-01-01T00:00:00.000010Z"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.scheduled_workflows.lp_schedules.format_date\"":{"id":{"resourceType":"TASK","name":"core.scheduled_workflows.lp_schedules.format_date"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"run_date":{"type":{"simple":"DATETIME"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.scheduled_workflows.lp_schedules","task-name","format_date"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/155_core.scheduled_workflows.lp_schedules.positive_wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/155_core.scheduled_workflows.lp_schedules.positive_wf_2_wf_crd.json
index df77c08c56d..26bf3047bb9 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/155_core.scheduled_workflows.lp_schedules.positive_wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/155_core.scheduled_workflows.lp_schedules.positive_wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-scheduled-workflows-lp-schedules-positive-wf"}},"spec":{"id":"::core.scheduled_workflows.lp_schedules.positive_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end"},"n0":{"id":"n0","name":"be_positive","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.scheduled_workflows.lp_schedules.be_positive\"","inputBindings":[{"var":"name","binding":{"promise":{"nodeId":"start-node","var":"name"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{}},"inputs":{"literals":{"name":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.scheduled_workflows.lp_schedules.be_positive\"":{"id":{"resourceType":"TASK","name":"core.scheduled_workflows.lp_schedules.be_positive"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"name":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.scheduled_workflows.lp_schedules","task-name","be_positive"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-scheduled-workflows-lp-schedules-positive-wf"}},"spec":{"id":"::core.scheduled_workflows.lp_schedules.positive_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end"},"n0":{"id":"n0","name":"be_positive","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.scheduled_workflows.lp_schedules.be_positive\"","inputBindings":[{"var":"name","binding":{"promise":{"nodeId":"start-node","var":"name"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{}},"inputs":{"literals":{"name":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.scheduled_workflows.lp_schedules.be_positive\"":{"id":{"resourceType":"TASK","name":"core.scheduled_workflows.lp_schedules.be_positive"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"name":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.scheduled_workflows.lp_schedules","task-name","be_positive"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/162_core.type_system.custom_objects.wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/162_core.type_system.custom_objects.wf_2_wf_crd.json
index 995b73eb433..41acc474dfc 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/162_core.type_system.custom_objects.wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/162_core.type_system.custom_objects.wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-type-system-custom-objects-wf"}},"spec":{"id":"::core.type_system.custom_objects.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n4","var":"o0"}}},{"var":"o1","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"upload_result","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.custom_objects.upload_result\""},"n1":{"id":"n1","name":"download_result","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.custom_objects.download_result\"","inputBindings":[{"var":"res","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n2":{"id":"n2","name":"stringify","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.custom_objects.stringify\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"start-node","var":"x"}}}]},"n3":{"id":"n3","name":"stringify","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.custom_objects.stringify\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"start-node","var":"y"}}}]},"n4":{"id":"n4","name":"add","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.custom_objects.add\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"n2","var":"o0"}}},{"var":"y","binding":{"promise":{"nodeId":"n3","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node","n1"],"n1":["end-node"],"n2":["n4"],"n3":["n4"],"n4":["end-node"],"start-node":["n0","n2","n3"]},"edges":{"downstream":{"n0":["end-node","n1"],"n1":["end-node"],"n2":["n4"],"n3":["n4"],"n4":["end-node"],"start-node":["n0","n2","n3"]},"upstream":{"end-node":["n0","n1","n4"],"n0":["start-node"],"n1":["n0"],"n2":["start-node"],"n3":["start-node"],"n4":["n2","n3"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRUCT"}},"o1":{"type":{"simple":"STRUCT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n4","var":"o0"}}},{"var":"o1","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"x":{"scalar":{"primitive":{"integer":"0"}}},"y":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.type_system.custom_objects.add\"":{"id":{"resourceType":"TASK","name":"core.type_system.custom_objects.add"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"simple":"STRUCT"}},"y":{"type":{"simple":"STRUCT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRUCT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.custom_objects","task-name","add"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.custom_objects.download_result\"":{"id":{"resourceType":"TASK","name":"core.type_system.custom_objects.download_result"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"res":{"type":{"simple":"STRUCT"}}}},"outputs":{}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.custom_objects","task-name","download_result"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.custom_objects.stringify\"":{"id":{"resourceType":"TASK","name":"core.type_system.custom_objects.stringify"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRUCT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.custom_objects","task-name","stringify"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.custom_objects.upload_result\"":{"id":{"resourceType":"TASK","name":"core.type_system.custom_objects.upload_result"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"STRUCT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.custom_objects","task-name","upload_result"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-type-system-custom-objects-wf"}},"spec":{"id":"::core.type_system.custom_objects.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n4","var":"o0"}}},{"var":"o1","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"upload_result","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.custom_objects.upload_result\""},"n1":{"id":"n1","name":"download_result","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.custom_objects.download_result\"","inputBindings":[{"var":"res","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n2":{"id":"n2","name":"stringify","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.custom_objects.stringify\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"start-node","var":"x"}}}]},"n3":{"id":"n3","name":"stringify","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.custom_objects.stringify\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"start-node","var":"y"}}}]},"n4":{"id":"n4","name":"add","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.custom_objects.add\"","inputBindings":[{"var":"x","binding":{"promise":{"nodeId":"n2","var":"o0"}}},{"var":"y","binding":{"promise":{"nodeId":"n3","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node","n1"],"n1":["end-node"],"n2":["n4"],"n3":["n4"],"n4":["end-node"],"start-node":["n0","n2","n3"]},"edges":{"downstream":{"n0":["end-node","n1"],"n1":["end-node"],"n2":["n4"],"n3":["n4"],"n4":["end-node"],"start-node":["n0","n2","n3"]},"upstream":{"end-node":["n0","n1","n4"],"n0":["start-node"],"n1":["n0"],"n2":["start-node"],"n3":["start-node"],"n4":["n2","n3"]}},"outputs":{"variables":{"o0":{"type":{"simple":"STRUCT"}},"o1":{"type":{"simple":"STRUCT"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n4","var":"o0"}}},{"var":"o1","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"x":{"scalar":{"primitive":{"integer":"0"}}},"y":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.type_system.custom_objects.add\"":{"id":{"resourceType":"TASK","name":"core.type_system.custom_objects.add"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"simple":"STRUCT"}},"y":{"type":{"simple":"STRUCT"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRUCT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.custom_objects","task-name","add"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.custom_objects.download_result\"":{"id":{"resourceType":"TASK","name":"core.type_system.custom_objects.download_result"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"res":{"type":{"simple":"STRUCT"}}}},"outputs":{}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.custom_objects","task-name","download_result"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.custom_objects.stringify\"":{"id":{"resourceType":"TASK","name":"core.type_system.custom_objects.stringify"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"x":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRUCT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.custom_objects","task-name","stringify"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.custom_objects.upload_result\"":{"id":{"resourceType":"TASK","name":"core.type_system.custom_objects.upload_result"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"simple":"STRUCT"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.custom_objects","task-name","upload_result"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/166_core.type_system.enums.enum_wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/166_core.type_system.enums.enum_wf_2_wf_crd.json
index f4447661748..b37f2edaa30 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/166_core.type_system.enums.enum_wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/166_core.type_system.enums.enum_wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-type-system-enums-enum-wf"}},"spec":{"id":"::core.type_system.enums.enum_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}},{"var":"o1","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"enum_stringify","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.enums.enum_stringify\"","inputBindings":[{"var":"c","binding":{"promise":{"nodeId":"start-node","var":"c"}}}]},"n1":{"id":"n1","name":"string_to_enum","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.enums.string_to_enum\"","inputBindings":[{"var":"c","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node","n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node","n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0","n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"enumType":{"values":["red","green","blue"]}}},"o1":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}},{"var":"o1","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"c":{"scalar":{"primitive":{"stringValue":"red"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.type_system.enums.enum_stringify\"":{"id":{"resourceType":"TASK","name":"core.type_system.enums.enum_stringify"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"c":{"type":{"enumType":{"values":["red","green","blue"]}}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.enums","task-name","enum_stringify"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.enums.string_to_enum\"":{"id":{"resourceType":"TASK","name":"core.type_system.enums.string_to_enum"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"c":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"enumType":{"values":["red","green","blue"]}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.enums","task-name","string_to_enum"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-type-system-enums-enum-wf"}},"spec":{"id":"::core.type_system.enums.enum_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}},{"var":"o1","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"enum_stringify","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.enums.enum_stringify\"","inputBindings":[{"var":"c","binding":{"promise":{"nodeId":"start-node","var":"c"}}}]},"n1":{"id":"n1","name":"string_to_enum","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.enums.string_to_enum\"","inputBindings":[{"var":"c","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node","n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node","n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0","n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"enumType":{"values":["red","green","blue"]}}},"o1":{"type":{"simple":"STRING"}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}},{"var":"o1","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"c":{"scalar":{"primitive":{"stringValue":"red"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.type_system.enums.enum_stringify\"":{"id":{"resourceType":"TASK","name":"core.type_system.enums.enum_stringify"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"c":{"type":{"enumType":{"values":["red","green","blue"]}}}}},"outputs":{"variables":{"o0":{"type":{"simple":"STRING"}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.enums","task-name","enum_stringify"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.enums.string_to_enum\"":{"id":{"resourceType":"TASK","name":"core.type_system.enums.string_to_enum"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"c":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"enumType":{"values":["red","green","blue"]}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.enums","task-name","string_to_enum"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/169_core.type_system.flyte_pickle.welcome_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/169_core.type_system.flyte_pickle.welcome_2_wf_crd.json
index 4931bcc1e81..03ccd6d26cf 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/169_core.type_system.flyte_pickle.welcome_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/169_core.type_system.flyte_pickle.welcome_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-type-system-flyte-pickle-welcome"}},"spec":{"id":"::core.type_system.flyte_pickle.welcome","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"greet","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.flyte_pickle.greet\"","inputBindings":[{"var":"name","binding":{"promise":{"nodeId":"start-node","var":"name"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"blob":{"format":"PythonPickle"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"name":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.type_system.flyte_pickle.greet\"":{"id":{"resourceType":"TASK","name":"core.type_system.flyte_pickle.greet"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"name":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"blob":{"format":"PythonPickle"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.flyte_pickle","task-name","greet"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-type-system-flyte-pickle-welcome"}},"spec":{"id":"::core.type_system.flyte_pickle.welcome","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n0":{"id":"n0","name":"greet","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.flyte_pickle.greet\"","inputBindings":[{"var":"name","binding":{"promise":{"nodeId":"start-node","var":"name"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n0"],"n0":["start-node"]}},"outputs":{"variables":{"o0":{"type":{"blob":{"format":"PythonPickle"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"inputs":{"literals":{"name":{"scalar":{"primitive":{"stringValue":""}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.type_system.flyte_pickle.greet\"":{"id":{"resourceType":"TASK","name":"core.type_system.flyte_pickle.greet"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"name":{"type":{"simple":"STRING"}}}},"outputs":{"variables":{"o0":{"type":{"blob":{"format":"PythonPickle"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.flyte_pickle","task-name","greet"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/173_core.type_system.schema.df_wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/173_core.type_system.schema.df_wf_2_wf_crd.json
index 51a5ed6cc10..99cb70c1675 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/173_core.type_system.schema.df_wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/173_core.type_system.schema.df_wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-type-system-schema-df-wf"}},"spec":{"id":"::core.type_system.schema.df_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"get_df","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.schema.get_df\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}}]},"n1":{"id":"n1","name":"add_df","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.schema.add_df\"","inputBindings":[{"var":"df","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"a":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.type_system.schema.add_df\"":{"id":{"resourceType":"TASK","name":"core.type_system.schema.add_df"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"df":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.schema","task-name","add_df"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.schema.get_df\"":{"id":{"resourceType":"TASK","name":"core.type_system.schema.get_df"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.schema","task-name","get_df"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-type-system-schema-df-wf"}},"spec":{"id":"::core.type_system.schema.df_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"get_df","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.schema.get_df\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}}]},"n1":{"id":"n1","name":"add_df","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.schema.add_df\"","inputBindings":[{"var":"df","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{"literals":{"a":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.type_system.schema.add_df\"":{"id":{"resourceType":"TASK","name":"core.type_system.schema.add_df"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"df":{"type":{"structuredDatasetType":{"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.schema","task-name","add_df"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.schema.get_df\"":{"id":{"resourceType":"TASK","name":"core.type_system.schema.get_df"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.schema","task-name","get_df"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/179_core.type_system.structured_dataset.pandas_compatibility_wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/179_core.type_system.structured_dataset.pandas_compatibility_wf_2_wf_crd.json
index 155cf0e21be..5461d549d83 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/179_core.type_system.structured_dataset.pandas_compatibility_wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/179_core.type_system.structured_dataset.pandas_compatibility_wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-type-system-structured-dataset-pandas-compatibility-wf"}},"spec":{"id":"::core.type_system.structured_dataset.pandas_compatibility_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"n0":{"id":"n0","name":"get_df","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.structured_dataset.get_df\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}}]},"n1":{"id":"n1","name":"get_subset_df","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.structured_dataset.get_subset_df\"","inputBindings":[{"var":"df","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n2":{"id":"n2","name":"to_numpy","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.structured_dataset.to_numpy\"","inputBindings":[{"var":"ds","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["n2"],"n2":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["n2"],"n2":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n2"],"n0":["start-node"],"n1":["n0"],"n2":["n1"]}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"inputs":{"literals":{"a":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.type_system.structured_dataset.get_df\"":{"id":{"resourceType":"TASK","name":"core.type_system.structured_dataset.get_df"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"columns":[{"name":"Name","literalType":{"simple":"STRING"}},{"name":"Age","literalType":{"simple":"INTEGER"}},{"name":"Height","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.structured_dataset","task-name","get_df"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.structured_dataset.get_subset_df\"":{"id":{"resourceType":"TASK","name":"core.type_system.structured_dataset.get_subset_df"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"df":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.structured_dataset","task-name","get_subset_df"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.structured_dataset.to_numpy\"":{"id":{"resourceType":"TASK","name":"core.type_system.structured_dataset.to_numpy"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"ds":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.structured_dataset","task-name","to_numpy"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-type-system-structured-dataset-pandas-compatibility-wf"}},"spec":{"id":"::core.type_system.structured_dataset.pandas_compatibility_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"n0":{"id":"n0","name":"get_df","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.structured_dataset.get_df\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}}]},"n1":{"id":"n1","name":"get_subset_df","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.structured_dataset.get_subset_df\"","inputBindings":[{"var":"df","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n2":{"id":"n2","name":"to_numpy","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.structured_dataset.to_numpy\"","inputBindings":[{"var":"ds","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["n2"],"n2":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["n2"],"n2":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n2"],"n0":["start-node"],"n1":["n0"],"n2":["n1"]}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"inputs":{"literals":{"a":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.type_system.structured_dataset.get_df\"":{"id":{"resourceType":"TASK","name":"core.type_system.structured_dataset.get_df"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"columns":[{"name":"Name","literalType":{"simple":"STRING"}},{"name":"Age","literalType":{"simple":"INTEGER"}},{"name":"Height","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.structured_dataset","task-name","get_df"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.structured_dataset.get_subset_df\"":{"id":{"resourceType":"TASK","name":"core.type_system.structured_dataset.get_subset_df"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"df":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.structured_dataset","task-name","get_subset_df"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.structured_dataset.to_numpy\"":{"id":{"resourceType":"TASK","name":"core.type_system.structured_dataset.to_numpy"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"ds":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.structured_dataset","task-name","to_numpy"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/181_core.type_system.structured_dataset.schema_compatibility_wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/181_core.type_system.structured_dataset.schema_compatibility_wf_2_wf_crd.json
index 7b20b443791..258b800c5d6 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/181_core.type_system.structured_dataset.schema_compatibility_wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/181_core.type_system.structured_dataset.schema_compatibility_wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-type-system-structured-dataset-schema-compatibility-wf"}},"spec":{"id":"::core.type_system.structured_dataset.schema_compatibility_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"n0":{"id":"n0","name":"get_schema_df","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.structured_dataset.get_schema_df\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}}]},"n1":{"id":"n1","name":"get_subset_df","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.structured_dataset.get_subset_df\"","inputBindings":[{"var":"df","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n2":{"id":"n2","name":"to_numpy","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.structured_dataset.to_numpy\"","inputBindings":[{"var":"ds","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["n2"],"n2":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["n2"],"n2":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n2"],"n0":["start-node"],"n1":["n0"],"n2":["n1"]}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"inputs":{"literals":{"a":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.type_system.structured_dataset.get_schema_df\"":{"id":{"resourceType":"TASK","name":"core.type_system.structured_dataset.get_schema_df"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"schema":{"columns":[{"name":"Name","type":"STRING"},{"name":"Age"},{"name":"Height"}]}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.structured_dataset","task-name","get_schema_df"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.structured_dataset.get_subset_df\"":{"id":{"resourceType":"TASK","name":"core.type_system.structured_dataset.get_subset_df"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"df":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.structured_dataset","task-name","get_subset_df"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.structured_dataset.to_numpy\"":{"id":{"resourceType":"TASK","name":"core.type_system.structured_dataset.to_numpy"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"ds":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.structured_dataset","task-name","to_numpy"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-type-system-structured-dataset-schema-compatibility-wf"}},"spec":{"id":"::core.type_system.structured_dataset.schema_compatibility_wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"n0":{"id":"n0","name":"get_schema_df","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.structured_dataset.get_schema_df\"","inputBindings":[{"var":"a","binding":{"promise":{"nodeId":"start-node","var":"a"}}}]},"n1":{"id":"n1","name":"get_subset_df","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.structured_dataset.get_subset_df\"","inputBindings":[{"var":"df","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"n2":{"id":"n2","name":"to_numpy","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.structured_dataset.to_numpy\"","inputBindings":[{"var":"ds","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["n2"],"n2":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["n2"],"n2":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n2"],"n0":["start-node"],"n1":["n0"],"n2":["n1"]}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n2","var":"o0"}}}]},"inputs":{"literals":{"a":{"scalar":{"primitive":{"integer":"0"}}}}},"executionId":{},"tasks":{"resource_type:TASK name:\"core.type_system.structured_dataset.get_schema_df\"":{"id":{"resourceType":"TASK","name":"core.type_system.structured_dataset.get_schema_df"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"a":{"type":{"simple":"INTEGER"}}}},"outputs":{"variables":{"o0":{"type":{"schema":{"columns":[{"name":"Name","type":"STRING"},{"name":"Age"},{"name":"Height"}]}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.structured_dataset","task-name","get_schema_df"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.structured_dataset.get_subset_df\"":{"id":{"resourceType":"TASK","name":"core.type_system.structured_dataset.get_subset_df"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"df":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.structured_dataset","task-name","get_subset_df"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.structured_dataset.to_numpy\"":{"id":{"resourceType":"TASK","name":"core.type_system.structured_dataset.to_numpy"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"ds":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}},"outputs":{"variables":{"o0":{"type":{"structuredDatasetType":{"columns":[{"name":"Age","literalType":{"simple":"INTEGER"}}],"format":"parquet"}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.structured_dataset","task-name","to_numpy"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/185_core.type_system.typed_schema.wf_2_wf_crd.json b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/185_core.type_system.typed_schema.wf_2_wf_crd.json
index aba5945e907..61c29b39e1b 100755
--- a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/185_core.type_system.typed_schema.wf_2_wf_crd.json
+++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/185_core.type_system.typed_schema.wf_2_wf_crd.json
@@ -1 +1 @@
-{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","creationTimestamp":null,"labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-type-system-typed-schema-wf"}},"spec":{"id":"::core.type_system.typed_schema.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"t1","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.typed_schema.t1\""},"n1":{"id":"n1","name":"t2","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.typed_schema.t2\"","inputBindings":[{"var":"schema","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"schema":{"columns":[{"name":"x"}]}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.type_system.typed_schema.t1\"":{"id":{"resourceType":"TASK","name":"core.type_system.typed_schema.t1"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"schema":{"columns":[{"name":"x"},{"name":"y","type":"STRING"}]}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.typed_schema","task-name","t1"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.typed_schema.t2\"":{"id":{"resourceType":"TASK","name":"core.type_system.typed_schema.t2"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"schema":{"type":{"schema":{"columns":[{"name":"x"},{"name":"y","type":"STRING"}]}}}}},"outputs":{"variables":{"o0":{"type":{"schema":{"columns":[{"name":"x"}]}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.typed_schema","task-name","t2"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
+{"kind":"flyteworkflow","apiVersion":"flyte.lyft.com/v1alpha1","metadata":{"name":"name","namespace":"namespace","labels":{"domain":"domain","execution-id":"name","project":"hello","shard-key":"6","workflow-name":"core-type-system-typed-schema-wf"}},"spec":{"id":"::core.type_system.typed_schema.wf","nodes":{"end-node":{"id":"end-node","resources":{},"kind":"end","inputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"n0":{"id":"n0","name":"t1","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.typed_schema.t1\""},"n1":{"id":"n1","name":"t2","resources":{},"kind":"task","task":"resource_type:TASK name:\"core.type_system.typed_schema.t2\"","inputBindings":[{"var":"schema","binding":{"promise":{"nodeId":"n0","var":"o0"}}}]},"start-node":{"id":"start-node","resources":{},"kind":"start"}},"connections":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"edges":{"downstream":{"n0":["n1"],"n1":["end-node"],"start-node":["n0"]},"upstream":{"end-node":["n1"],"n0":["start-node"],"n1":["n0"]}},"outputs":{"variables":{"o0":{"type":{"schema":{"columns":[{"name":"x"}]}}}}},"outputBindings":[{"var":"o0","binding":{"promise":{"nodeId":"n1","var":"o0"}}}]},"inputs":{},"executionId":{},"tasks":{"resource_type:TASK name:\"core.type_system.typed_schema.t1\"":{"id":{"resourceType":"TASK","name":"core.type_system.typed_schema.t1"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{},"outputs":{"variables":{"o0":{"type":{"schema":{"columns":[{"name":"x"},{"name":"y","type":"STRING"}]}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.typed_schema","task-name","t1"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}},"resource_type:TASK name:\"core.type_system.typed_schema.t2\"":{"id":{"resourceType":"TASK","name":"core.type_system.typed_schema.t2"},"type":"python-task","metadata":{"runtime":{"type":"FLYTE_SDK","version":"0.32.6","flavor":"python"},"retries":{}},"interface":{"inputs":{"variables":{"schema":{"type":{"schema":{"columns":[{"name":"x"},{"name":"y","type":"STRING"}]}}}}},"outputs":{"variables":{"o0":{"type":{"schema":{"columns":[{"name":"x"}]}}}}}},"container":{"image":"ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077","args":["pyflyte-execute","--inputs","{{.input}}","--output-prefix","{{.outputPrefix}}","--raw-output-data-prefix","{{.rawOutputDataPrefix}}","--checkpoint-path","{{.checkpointOutputPrefix}}","--prev-checkpoint","{{.prevCheckpointPrefix}}","--resolver","flytekit.core.python_auto_container.default_task_resolver","--","task-module","core.type_system.typed_schema","task-name","t2"],"resources":{},"config":[{"key":"testKey1","value":"testValue1"},{"key":"testKey2","value":"testValue2"},{"key":"testKey3","value":"testValue3"}]}}},"node-defaults":{},"securityContext":{},"status":{"phase":0},"rawOutputDataConfig":{},"executionConfig":{"TaskPluginImpls":null,"MaxParallelism":0,"RecoveryExecution":{},"TaskResources":{"Requests":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"},"Limits":{"CPU":"0","Memory":"0","EphemeralStorage":"0","Storage":"0","GPU":"0"}},"Interruptible":null,"OverwriteCache":false,"EnvironmentVariables":null}}
\ No newline at end of file
diff --git a/flytepropeller/pkg/controller/config/config.go b/flytepropeller/pkg/controller/config/config.go
index c571d064f7b..8d077f2a5e8 100644
--- a/flytepropeller/pkg/controller/config/config.go
+++ b/flytepropeller/pkg/controller/config/config.go
@@ -287,9 +287,8 @@ type NodeConfig struct {
// DefaultDeadlines contains default values for timeouts
type DefaultDeadlines struct {
- DefaultNodeExecutionDeadline config.Duration `json:"node-execution-deadline" pflag:",Default value of node execution timeout that includes the time spent to run the node/workflow"`
- DefaultNodeActiveDeadline config.Duration `json:"node-active-deadline" pflag:",Default value of node timeout that includes the time spent queued."`
- DefaultWorkflowActiveDeadline config.Duration `json:"workflow-active-deadline" pflag:",Default value of workflow timeout that includes the time spent queued."`
+ DefaultNodeExecutionDeadline config.Duration `json:"node-execution-deadline" pflag:",Default value of node execution timeout that includes the time spent to run the node/workflow"`
+ DefaultNodeActiveDeadline config.Duration `json:"node-active-deadline" pflag:",Default value of node timeout that includes the time spent queued."`
}
// LeaderElectionConfig Contains leader election configuration.
@@ -324,8 +323,6 @@ const (
type EventConfig struct {
RawOutputPolicy RawOutputPolicy `json:"raw-output-policy" pflag:",How output data should be passed along in execution events."`
FallbackToOutputReference bool `json:"fallback-to-output-reference" pflag:",Whether output data should be sent by reference when it is too large to be sent inline in execution events."`
- // only meant to be overridden for certain node types that have different eventing behavior such as ArrayNode
- ErrorOnAlreadyExists bool `json:"-"`
}
// ParallelismBehavior defines how ArrayNode should handle subNode parallelism by default
diff --git a/flytepropeller/pkg/controller/config/config_flags.go b/flytepropeller/pkg/controller/config/config_flags.go
index 7ad8ade4c96..dda8d9c17a4 100755
--- a/flytepropeller/pkg/controller/config/config_flags.go
+++ b/flytepropeller/pkg/controller/config/config_flags.go
@@ -91,7 +91,6 @@ func (cfg Config) GetPFlagSet(prefix string) *pflag.FlagSet {
cmdFlags.String(fmt.Sprintf("%v%v", prefix, "kube-client-config.timeout"), defaultConfig.KubeConfig.Timeout.String(), "Max duration allowed for every request to KubeAPI before giving up. 0 implies no timeout.")
cmdFlags.String(fmt.Sprintf("%v%v", prefix, "node-config.default-deadlines.node-execution-deadline"), defaultConfig.NodeConfig.DefaultDeadlines.DefaultNodeExecutionDeadline.String(), "Default value of node execution timeout that includes the time spent to run the node/workflow")
cmdFlags.String(fmt.Sprintf("%v%v", prefix, "node-config.default-deadlines.node-active-deadline"), defaultConfig.NodeConfig.DefaultDeadlines.DefaultNodeActiveDeadline.String(), "Default value of node timeout that includes the time spent queued.")
- cmdFlags.String(fmt.Sprintf("%v%v", prefix, "node-config.default-deadlines.workflow-active-deadline"), defaultConfig.NodeConfig.DefaultDeadlines.DefaultWorkflowActiveDeadline.String(), "Default value of workflow timeout that includes the time spent queued.")
cmdFlags.Int64(fmt.Sprintf("%v%v", prefix, "node-config.max-node-retries-system-failures"), defaultConfig.NodeConfig.MaxNodeRetriesOnSystemFailures, "Maximum number of retries per node for node failure due to infra issues")
cmdFlags.Int32(fmt.Sprintf("%v%v", prefix, "node-config.interruptible-failure-threshold"), defaultConfig.NodeConfig.InterruptibleFailureThreshold, "number of failures for a node to be still considered interruptible. Negative numbers are treated as complementary (ex. -1 means last attempt is non-interruptible).'")
cmdFlags.Int32(fmt.Sprintf("%v%v", prefix, "node-config.default-max-attempts"), defaultConfig.NodeConfig.DefaultMaxAttempts, "Default maximum number of attempts for a node")
@@ -100,7 +99,6 @@ func (cfg Config) GetPFlagSet(prefix string) *pflag.FlagSet {
cmdFlags.Int(fmt.Sprintf("%v%v", prefix, "max-streak-length"), defaultConfig.MaxStreakLength, "Maximum number of consecutive rounds that one propeller worker can use for one workflow - >1 => turbo-mode is enabled.")
cmdFlags.String(fmt.Sprintf("%v%v", prefix, "event-config.raw-output-policy"), defaultConfig.EventConfig.RawOutputPolicy, "How output data should be passed along in execution events.")
cmdFlags.Bool(fmt.Sprintf("%v%v", prefix, "event-config.fallback-to-output-reference"), defaultConfig.EventConfig.FallbackToOutputReference, "Whether output data should be sent by reference when it is too large to be sent inline in execution events.")
- cmdFlags.Bool(fmt.Sprintf("%v%v", prefix, "event-config.-"), defaultConfig.EventConfig.ErrorOnAlreadyExists, "")
cmdFlags.StringSlice(fmt.Sprintf("%v%v", prefix, "include-shard-key-label"), defaultConfig.IncludeShardKeyLabel, "Include the specified shard key label in the k8s FlyteWorkflow CRD label selector")
cmdFlags.StringSlice(fmt.Sprintf("%v%v", prefix, "exclude-shard-key-label"), defaultConfig.ExcludeShardKeyLabel, "Exclude the specified shard key label from the k8s FlyteWorkflow CRD label selector")
cmdFlags.StringSlice(fmt.Sprintf("%v%v", prefix, "include-project-label"), defaultConfig.IncludeProjectLabel, "Include the specified project label in the k8s FlyteWorkflow CRD label selector")
diff --git a/flytepropeller/pkg/controller/config/config_flags_test.go b/flytepropeller/pkg/controller/config/config_flags_test.go
index 91bc6d4f9d5..caad3af8010 100755
--- a/flytepropeller/pkg/controller/config/config_flags_test.go
+++ b/flytepropeller/pkg/controller/config/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
@@ -673,20 +673,6 @@ func TestConfig_SetFlags(t *testing.T) {
}
})
})
- t.Run("Test_node-config.default-deadlines.workflow-active-deadline", func(t *testing.T) {
-
- t.Run("Override", func(t *testing.T) {
- testValue := defaultConfig.NodeConfig.DefaultDeadlines.DefaultWorkflowActiveDeadline.String()
-
- cmdFlags.Set("node-config.default-deadlines.workflow-active-deadline", testValue)
- if vString, err := cmdFlags.GetString("node-config.default-deadlines.workflow-active-deadline"); err == nil {
- testDecodeJson_Config(t, fmt.Sprintf("%v", vString), &actual.NodeConfig.DefaultDeadlines.DefaultWorkflowActiveDeadline)
-
- } else {
- assert.FailNow(t, err.Error())
- }
- })
- })
t.Run("Test_node-config.max-node-retries-system-failures", func(t *testing.T) {
t.Run("Override", func(t *testing.T) {
@@ -799,20 +785,6 @@ func TestConfig_SetFlags(t *testing.T) {
}
})
})
- t.Run("Test_event-config.-", func(t *testing.T) {
-
- t.Run("Override", func(t *testing.T) {
- testValue := "1"
-
- cmdFlags.Set("event-config.-", testValue)
- if vBool, err := cmdFlags.GetBool("event-config.-"); err == nil {
- testDecodeJson_Config(t, fmt.Sprintf("%v", vBool), &actual.EventConfig.ErrorOnAlreadyExists)
-
- } else {
- assert.FailNow(t, err.Error())
- }
- })
- })
t.Run("Test_include-shard-key-label", func(t *testing.T) {
t.Run("Override", func(t *testing.T) {
diff --git a/flytepropeller/pkg/controller/executors/mocks/client.go b/flytepropeller/pkg/controller/executors/mocks/client.go
index 2308456563c..10263c5d440 100644
--- a/flytepropeller/pkg/controller/executors/mocks/client.go
+++ b/flytepropeller/pkg/controller/executors/mocks/client.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -22,7 +22,7 @@ func (_m *Client) EXPECT() *Client_Expecter {
return &Client_Expecter{mock: &_m.Mock}
}
-// GetCache provides a mock function with given fields:
+// GetCache provides a mock function with no fields
func (_m *Client) GetCache() cache.Cache {
ret := _m.Called()
@@ -69,7 +69,7 @@ func (_c *Client_GetCache_Call) RunAndReturn(run func() cache.Cache) *Client_Get
return _c
}
-// GetClient provides a mock function with given fields:
+// GetClient provides a mock function with no fields
func (_m *Client) GetClient() client.Client {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/executors/mocks/control_flow.go b/flytepropeller/pkg/controller/executors/mocks/control_flow.go
index d1ea4d3bbc9..966d9a463b0 100644
--- a/flytepropeller/pkg/controller/executors/mocks/control_flow.go
+++ b/flytepropeller/pkg/controller/executors/mocks/control_flow.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *ControlFlow) EXPECT() *ControlFlow_Expecter {
return &ControlFlow_Expecter{mock: &_m.Mock}
}
-// CurrentNodeExecutionCount provides a mock function with given fields:
+// CurrentNodeExecutionCount provides a mock function with no fields
func (_m *ControlFlow) CurrentNodeExecutionCount() uint32 {
ret := _m.Called()
@@ -62,7 +62,7 @@ func (_c *ControlFlow_CurrentNodeExecutionCount_Call) RunAndReturn(run func() ui
return _c
}
-// CurrentParallelism provides a mock function with given fields:
+// CurrentParallelism provides a mock function with no fields
func (_m *ControlFlow) CurrentParallelism() uint32 {
ret := _m.Called()
@@ -107,7 +107,7 @@ func (_c *ControlFlow_CurrentParallelism_Call) RunAndReturn(run func() uint32) *
return _c
}
-// CurrentTaskExecutionCount provides a mock function with given fields:
+// CurrentTaskExecutionCount provides a mock function with no fields
func (_m *ControlFlow) CurrentTaskExecutionCount() uint32 {
ret := _m.Called()
@@ -152,7 +152,7 @@ func (_c *ControlFlow_CurrentTaskExecutionCount_Call) RunAndReturn(run func() ui
return _c
}
-// IncrementNodeExecutionCount provides a mock function with given fields:
+// IncrementNodeExecutionCount provides a mock function with no fields
func (_m *ControlFlow) IncrementNodeExecutionCount() uint32 {
ret := _m.Called()
@@ -197,7 +197,7 @@ func (_c *ControlFlow_IncrementNodeExecutionCount_Call) RunAndReturn(run func()
return _c
}
-// IncrementParallelism provides a mock function with given fields:
+// IncrementParallelism provides a mock function with no fields
func (_m *ControlFlow) IncrementParallelism() uint32 {
ret := _m.Called()
@@ -242,7 +242,7 @@ func (_c *ControlFlow_IncrementParallelism_Call) RunAndReturn(run func() uint32)
return _c
}
-// IncrementTaskExecutionCount provides a mock function with given fields:
+// IncrementTaskExecutionCount provides a mock function with no fields
func (_m *ControlFlow) IncrementTaskExecutionCount() uint32 {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/executors/mocks/dag_structure.go b/flytepropeller/pkg/controller/executors/mocks/dag_structure.go
index ee2866b397a..05353ae1301 100644
--- a/flytepropeller/pkg/controller/executors/mocks/dag_structure.go
+++ b/flytepropeller/pkg/controller/executors/mocks/dag_structure.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytepropeller/pkg/controller/executors/mocks/dag_structure_with_start_node.go b/flytepropeller/pkg/controller/executors/mocks/dag_structure_with_start_node.go
index 130b3404a11..edb88df7acc 100644
--- a/flytepropeller/pkg/controller/executors/mocks/dag_structure_with_start_node.go
+++ b/flytepropeller/pkg/controller/executors/mocks/dag_structure_with_start_node.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -78,7 +78,7 @@ func (_c *DAGStructureWithStartNode_FromNode_Call) RunAndReturn(run func(string)
return _c
}
-// StartNode provides a mock function with given fields:
+// StartNode provides a mock function with no fields
func (_m *DAGStructureWithStartNode) StartNode() v1alpha1.ExecutableNode {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/executors/mocks/execution_context.go b/flytepropeller/pkg/controller/executors/mocks/execution_context.go
index cbcd5015254..e576b0ad374 100644
--- a/flytepropeller/pkg/controller/executors/mocks/execution_context.go
+++ b/flytepropeller/pkg/controller/executors/mocks/execution_context.go
@@ -1,18 +1,14 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
+ v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
executors "github.com/flyteorg/flyte/flytepropeller/pkg/controller/executors"
-
mock "github.com/stretchr/testify/mock"
-
- types "k8s.io/apimachinery/pkg/types"
-
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
- v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ types "k8s.io/apimachinery/pkg/types"
)
// ExecutionContext is an autogenerated mock type for the ExecutionContext type
@@ -28,7 +24,7 @@ func (_m *ExecutionContext) EXPECT() *ExecutionContext_Expecter {
return &ExecutionContext_Expecter{mock: &_m.Mock}
}
-// CurrentNodeExecutionCount provides a mock function with given fields:
+// CurrentNodeExecutionCount provides a mock function with no fields
func (_m *ExecutionContext) CurrentNodeExecutionCount() uint32 {
ret := _m.Called()
@@ -73,7 +69,7 @@ func (_c *ExecutionContext_CurrentNodeExecutionCount_Call) RunAndReturn(run func
return _c
}
-// CurrentParallelism provides a mock function with given fields:
+// CurrentParallelism provides a mock function with no fields
func (_m *ExecutionContext) CurrentParallelism() uint32 {
ret := _m.Called()
@@ -118,7 +114,7 @@ func (_c *ExecutionContext_CurrentParallelism_Call) RunAndReturn(run func() uint
return _c
}
-// CurrentTaskExecutionCount provides a mock function with given fields:
+// CurrentTaskExecutionCount provides a mock function with no fields
func (_m *ExecutionContext) CurrentTaskExecutionCount() uint32 {
ret := _m.Called()
@@ -211,7 +207,7 @@ func (_c *ExecutionContext_FindSubWorkflow_Call) RunAndReturn(run func(string) v
return _c
}
-// GetAnnotations provides a mock function with given fields:
+// GetAnnotations provides a mock function with no fields
func (_m *ExecutionContext) GetAnnotations() map[string]string {
ret := _m.Called()
@@ -258,7 +254,7 @@ func (_c *ExecutionContext_GetAnnotations_Call) RunAndReturn(run func() map[stri
return _c
}
-// GetConsoleURL provides a mock function with given fields:
+// GetConsoleURL provides a mock function with no fields
func (_m *ExecutionContext) GetConsoleURL() string {
ret := _m.Called()
@@ -303,7 +299,7 @@ func (_c *ExecutionContext_GetConsoleURL_Call) RunAndReturn(run func() string) *
return _c
}
-// GetCreationTimestamp provides a mock function with given fields:
+// GetCreationTimestamp provides a mock function with no fields
func (_m *ExecutionContext) GetCreationTimestamp() v1.Time {
ret := _m.Called()
@@ -348,7 +344,7 @@ func (_c *ExecutionContext_GetCreationTimestamp_Call) RunAndReturn(run func() v1
return _c
}
-// GetDefinitionVersion provides a mock function with given fields:
+// GetDefinitionVersion provides a mock function with no fields
func (_m *ExecutionContext) GetDefinitionVersion() v1alpha1.WorkflowDefinitionVersion {
ret := _m.Called()
@@ -393,7 +389,7 @@ func (_c *ExecutionContext_GetDefinitionVersion_Call) RunAndReturn(run func() v1
return _c
}
-// GetEventVersion provides a mock function with given fields:
+// GetEventVersion provides a mock function with no fields
func (_m *ExecutionContext) GetEventVersion() v1alpha1.EventVersion {
ret := _m.Called()
@@ -438,7 +434,7 @@ func (_c *ExecutionContext_GetEventVersion_Call) RunAndReturn(run func() v1alpha
return _c
}
-// GetExecutionConfig provides a mock function with given fields:
+// GetExecutionConfig provides a mock function with no fields
func (_m *ExecutionContext) GetExecutionConfig() v1alpha1.ExecutionConfig {
ret := _m.Called()
@@ -483,7 +479,7 @@ func (_c *ExecutionContext_GetExecutionConfig_Call) RunAndReturn(run func() v1al
return _c
}
-// GetExecutionID provides a mock function with given fields:
+// GetExecutionID provides a mock function with no fields
func (_m *ExecutionContext) GetExecutionID() v1alpha1.WorkflowExecutionIdentifier {
ret := _m.Called()
@@ -528,7 +524,7 @@ func (_c *ExecutionContext_GetExecutionID_Call) RunAndReturn(run func() v1alpha1
return _c
}
-// GetID provides a mock function with given fields:
+// GetID provides a mock function with no fields
func (_m *ExecutionContext) GetID() string {
ret := _m.Called()
@@ -573,7 +569,7 @@ func (_c *ExecutionContext_GetID_Call) RunAndReturn(run func() string) *Executio
return _c
}
-// GetK8sWorkflowID provides a mock function with given fields:
+// GetK8sWorkflowID provides a mock function with no fields
func (_m *ExecutionContext) GetK8sWorkflowID() types.NamespacedName {
ret := _m.Called()
@@ -618,7 +614,7 @@ func (_c *ExecutionContext_GetK8sWorkflowID_Call) RunAndReturn(run func() types.
return _c
}
-// GetLabels provides a mock function with given fields:
+// GetLabels provides a mock function with no fields
func (_m *ExecutionContext) GetLabels() map[string]string {
ret := _m.Called()
@@ -665,7 +661,7 @@ func (_c *ExecutionContext_GetLabels_Call) RunAndReturn(run func() map[string]st
return _c
}
-// GetName provides a mock function with given fields:
+// GetName provides a mock function with no fields
func (_m *ExecutionContext) GetName() string {
ret := _m.Called()
@@ -710,7 +706,7 @@ func (_c *ExecutionContext_GetName_Call) RunAndReturn(run func() string) *Execut
return _c
}
-// GetNamespace provides a mock function with given fields:
+// GetNamespace provides a mock function with no fields
func (_m *ExecutionContext) GetNamespace() string {
ret := _m.Called()
@@ -755,7 +751,7 @@ func (_c *ExecutionContext_GetNamespace_Call) RunAndReturn(run func() string) *E
return _c
}
-// GetOnFailurePolicy provides a mock function with given fields:
+// GetOnFailurePolicy provides a mock function with no fields
func (_m *ExecutionContext) GetOnFailurePolicy() v1alpha1.WorkflowOnFailurePolicy {
ret := _m.Called()
@@ -800,7 +796,7 @@ func (_c *ExecutionContext_GetOnFailurePolicy_Call) RunAndReturn(run func() v1al
return _c
}
-// GetOwnerReference provides a mock function with given fields:
+// GetOwnerReference provides a mock function with no fields
func (_m *ExecutionContext) GetOwnerReference() v1.OwnerReference {
ret := _m.Called()
@@ -845,7 +841,7 @@ func (_c *ExecutionContext_GetOwnerReference_Call) RunAndReturn(run func() v1.Ow
return _c
}
-// GetParentInfo provides a mock function with given fields:
+// GetParentInfo provides a mock function with no fields
func (_m *ExecutionContext) GetParentInfo() executors.ImmutableParentInfo {
ret := _m.Called()
@@ -892,7 +888,7 @@ func (_c *ExecutionContext_GetParentInfo_Call) RunAndReturn(run func() executors
return _c
}
-// GetRawOutputDataConfig provides a mock function with given fields:
+// GetRawOutputDataConfig provides a mock function with no fields
func (_m *ExecutionContext) GetRawOutputDataConfig() v1alpha1.RawOutputDataConfig {
ret := _m.Called()
@@ -937,7 +933,7 @@ func (_c *ExecutionContext_GetRawOutputDataConfig_Call) RunAndReturn(run func()
return _c
}
-// GetSecurityContext provides a mock function with given fields:
+// GetSecurityContext provides a mock function with no fields
func (_m *ExecutionContext) GetSecurityContext() core.SecurityContext {
ret := _m.Called()
@@ -982,7 +978,7 @@ func (_c *ExecutionContext_GetSecurityContext_Call) RunAndReturn(run func() core
return _c
}
-// GetServiceAccountName provides a mock function with given fields:
+// GetServiceAccountName provides a mock function with no fields
func (_m *ExecutionContext) GetServiceAccountName() string {
ret := _m.Called()
@@ -1085,7 +1081,7 @@ func (_c *ExecutionContext_GetTask_Call) RunAndReturn(run func(string) (v1alpha1
return _c
}
-// IncrementNodeExecutionCount provides a mock function with given fields:
+// IncrementNodeExecutionCount provides a mock function with no fields
func (_m *ExecutionContext) IncrementNodeExecutionCount() uint32 {
ret := _m.Called()
@@ -1130,7 +1126,7 @@ func (_c *ExecutionContext_IncrementNodeExecutionCount_Call) RunAndReturn(run fu
return _c
}
-// IncrementParallelism provides a mock function with given fields:
+// IncrementParallelism provides a mock function with no fields
func (_m *ExecutionContext) IncrementParallelism() uint32 {
ret := _m.Called()
@@ -1175,7 +1171,7 @@ func (_c *ExecutionContext_IncrementParallelism_Call) RunAndReturn(run func() ui
return _c
}
-// IncrementTaskExecutionCount provides a mock function with given fields:
+// IncrementTaskExecutionCount provides a mock function with no fields
func (_m *ExecutionContext) IncrementTaskExecutionCount() uint32 {
ret := _m.Called()
@@ -1220,7 +1216,7 @@ func (_c *ExecutionContext_IncrementTaskExecutionCount_Call) RunAndReturn(run fu
return _c
}
-// IsInterruptible provides a mock function with given fields:
+// IsInterruptible provides a mock function with no fields
func (_m *ExecutionContext) IsInterruptible() bool {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/executors/mocks/fake.go b/flytepropeller/pkg/controller/executors/mocks/fake.go
index 240867a14c5..39dfd78d5be 100644
--- a/flytepropeller/pkg/controller/executors/mocks/fake.go
+++ b/flytepropeller/pkg/controller/executors/mocks/fake.go
@@ -15,6 +15,10 @@ import (
type FakeInformers struct {
}
+func (f *FakeInformers) RemoveInformer(ctx context.Context, obj client.Object) error {
+ return nil
+}
+
func (f *FakeInformers) Get(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error {
return nil
}
diff --git a/flytepropeller/pkg/controller/executors/mocks/immutable_execution_context.go b/flytepropeller/pkg/controller/executors/mocks/immutable_execution_context.go
index c042b008fcb..d9985624a6a 100644
--- a/flytepropeller/pkg/controller/executors/mocks/immutable_execution_context.go
+++ b/flytepropeller/pkg/controller/executors/mocks/immutable_execution_context.go
@@ -1,17 +1,14 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
+ v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
mock "github.com/stretchr/testify/mock"
-
- types "k8s.io/apimachinery/pkg/types"
-
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
- v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ types "k8s.io/apimachinery/pkg/types"
)
// ImmutableExecutionContext is an autogenerated mock type for the ImmutableExecutionContext type
@@ -27,7 +24,7 @@ func (_m *ImmutableExecutionContext) EXPECT() *ImmutableExecutionContext_Expecte
return &ImmutableExecutionContext_Expecter{mock: &_m.Mock}
}
-// GetAnnotations provides a mock function with given fields:
+// GetAnnotations provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetAnnotations() map[string]string {
ret := _m.Called()
@@ -74,7 +71,7 @@ func (_c *ImmutableExecutionContext_GetAnnotations_Call) RunAndReturn(run func()
return _c
}
-// GetConsoleURL provides a mock function with given fields:
+// GetConsoleURL provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetConsoleURL() string {
ret := _m.Called()
@@ -119,7 +116,7 @@ func (_c *ImmutableExecutionContext_GetConsoleURL_Call) RunAndReturn(run func()
return _c
}
-// GetCreationTimestamp provides a mock function with given fields:
+// GetCreationTimestamp provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetCreationTimestamp() v1.Time {
ret := _m.Called()
@@ -164,7 +161,7 @@ func (_c *ImmutableExecutionContext_GetCreationTimestamp_Call) RunAndReturn(run
return _c
}
-// GetDefinitionVersion provides a mock function with given fields:
+// GetDefinitionVersion provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetDefinitionVersion() v1alpha1.WorkflowDefinitionVersion {
ret := _m.Called()
@@ -209,7 +206,7 @@ func (_c *ImmutableExecutionContext_GetDefinitionVersion_Call) RunAndReturn(run
return _c
}
-// GetEventVersion provides a mock function with given fields:
+// GetEventVersion provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetEventVersion() v1alpha1.EventVersion {
ret := _m.Called()
@@ -254,7 +251,7 @@ func (_c *ImmutableExecutionContext_GetEventVersion_Call) RunAndReturn(run func(
return _c
}
-// GetExecutionConfig provides a mock function with given fields:
+// GetExecutionConfig provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetExecutionConfig() v1alpha1.ExecutionConfig {
ret := _m.Called()
@@ -299,7 +296,7 @@ func (_c *ImmutableExecutionContext_GetExecutionConfig_Call) RunAndReturn(run fu
return _c
}
-// GetExecutionID provides a mock function with given fields:
+// GetExecutionID provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetExecutionID() v1alpha1.WorkflowExecutionIdentifier {
ret := _m.Called()
@@ -344,7 +341,7 @@ func (_c *ImmutableExecutionContext_GetExecutionID_Call) RunAndReturn(run func()
return _c
}
-// GetID provides a mock function with given fields:
+// GetID provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetID() string {
ret := _m.Called()
@@ -389,7 +386,7 @@ func (_c *ImmutableExecutionContext_GetID_Call) RunAndReturn(run func() string)
return _c
}
-// GetK8sWorkflowID provides a mock function with given fields:
+// GetK8sWorkflowID provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetK8sWorkflowID() types.NamespacedName {
ret := _m.Called()
@@ -434,7 +431,7 @@ func (_c *ImmutableExecutionContext_GetK8sWorkflowID_Call) RunAndReturn(run func
return _c
}
-// GetLabels provides a mock function with given fields:
+// GetLabels provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetLabels() map[string]string {
ret := _m.Called()
@@ -481,7 +478,7 @@ func (_c *ImmutableExecutionContext_GetLabels_Call) RunAndReturn(run func() map[
return _c
}
-// GetName provides a mock function with given fields:
+// GetName provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetName() string {
ret := _m.Called()
@@ -526,7 +523,7 @@ func (_c *ImmutableExecutionContext_GetName_Call) RunAndReturn(run func() string
return _c
}
-// GetNamespace provides a mock function with given fields:
+// GetNamespace provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetNamespace() string {
ret := _m.Called()
@@ -571,7 +568,7 @@ func (_c *ImmutableExecutionContext_GetNamespace_Call) RunAndReturn(run func() s
return _c
}
-// GetOnFailurePolicy provides a mock function with given fields:
+// GetOnFailurePolicy provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetOnFailurePolicy() v1alpha1.WorkflowOnFailurePolicy {
ret := _m.Called()
@@ -616,7 +613,7 @@ func (_c *ImmutableExecutionContext_GetOnFailurePolicy_Call) RunAndReturn(run fu
return _c
}
-// GetOwnerReference provides a mock function with given fields:
+// GetOwnerReference provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetOwnerReference() v1.OwnerReference {
ret := _m.Called()
@@ -661,7 +658,7 @@ func (_c *ImmutableExecutionContext_GetOwnerReference_Call) RunAndReturn(run fun
return _c
}
-// GetRawOutputDataConfig provides a mock function with given fields:
+// GetRawOutputDataConfig provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetRawOutputDataConfig() v1alpha1.RawOutputDataConfig {
ret := _m.Called()
@@ -706,7 +703,7 @@ func (_c *ImmutableExecutionContext_GetRawOutputDataConfig_Call) RunAndReturn(ru
return _c
}
-// GetSecurityContext provides a mock function with given fields:
+// GetSecurityContext provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetSecurityContext() core.SecurityContext {
ret := _m.Called()
@@ -751,7 +748,7 @@ func (_c *ImmutableExecutionContext_GetSecurityContext_Call) RunAndReturn(run fu
return _c
}
-// GetServiceAccountName provides a mock function with given fields:
+// GetServiceAccountName provides a mock function with no fields
func (_m *ImmutableExecutionContext) GetServiceAccountName() string {
ret := _m.Called()
@@ -796,7 +793,7 @@ func (_c *ImmutableExecutionContext_GetServiceAccountName_Call) RunAndReturn(run
return _c
}
-// IsInterruptible provides a mock function with given fields:
+// IsInterruptible provides a mock function with no fields
func (_m *ImmutableExecutionContext) IsInterruptible() bool {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/executors/mocks/immutable_parent_info.go b/flytepropeller/pkg/controller/executors/mocks/immutable_parent_info.go
index 02cf1f41168..c5007d3b9d3 100644
--- a/flytepropeller/pkg/controller/executors/mocks/immutable_parent_info.go
+++ b/flytepropeller/pkg/controller/executors/mocks/immutable_parent_info.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *ImmutableParentInfo) EXPECT() *ImmutableParentInfo_Expecter {
return &ImmutableParentInfo_Expecter{mock: &_m.Mock}
}
-// CurrentAttempt provides a mock function with given fields:
+// CurrentAttempt provides a mock function with no fields
func (_m *ImmutableParentInfo) CurrentAttempt() uint32 {
ret := _m.Called()
@@ -62,7 +62,7 @@ func (_c *ImmutableParentInfo_CurrentAttempt_Call) RunAndReturn(run func() uint3
return _c
}
-// GetUniqueID provides a mock function with given fields:
+// GetUniqueID provides a mock function with no fields
func (_m *ImmutableParentInfo) GetUniqueID() string {
ret := _m.Called()
@@ -107,7 +107,7 @@ func (_c *ImmutableParentInfo_GetUniqueID_Call) RunAndReturn(run func() string)
return _c
}
-// IsInDynamicChain provides a mock function with given fields:
+// IsInDynamicChain provides a mock function with no fields
func (_m *ImmutableParentInfo) IsInDynamicChain() bool {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/executors/mocks/node_lookup.go b/flytepropeller/pkg/controller/executors/mocks/node_lookup.go
index 25e3c763d54..50b25449d0d 100644
--- a/flytepropeller/pkg/controller/executors/mocks/node_lookup.go
+++ b/flytepropeller/pkg/controller/executors/mocks/node_lookup.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- mock "github.com/stretchr/testify/mock"
-
v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ mock "github.com/stretchr/testify/mock"
)
// NodeLookup is an autogenerated mock type for the NodeLookup type
diff --git a/flytepropeller/pkg/controller/executors/mocks/parent_info_getter.go b/flytepropeller/pkg/controller/executors/mocks/parent_info_getter.go
index e4b2c768193..4d1f3c370b2 100644
--- a/flytepropeller/pkg/controller/executors/mocks/parent_info_getter.go
+++ b/flytepropeller/pkg/controller/executors/mocks/parent_info_getter.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *ParentInfoGetter) EXPECT() *ParentInfoGetter_Expecter {
return &ParentInfoGetter_Expecter{mock: &_m.Mock}
}
-// GetParentInfo provides a mock function with given fields:
+// GetParentInfo provides a mock function with no fields
func (_m *ParentInfoGetter) GetParentInfo() executors.ImmutableParentInfo {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/executors/mocks/sub_workflow_getter.go b/flytepropeller/pkg/controller/executors/mocks/sub_workflow_getter.go
index f925ea24185..61d88d9b474 100644
--- a/flytepropeller/pkg/controller/executors/mocks/sub_workflow_getter.go
+++ b/flytepropeller/pkg/controller/executors/mocks/sub_workflow_getter.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytepropeller/pkg/controller/executors/mocks/task_details_getter.go b/flytepropeller/pkg/controller/executors/mocks/task_details_getter.go
index 467254c8f27..786ab819e50 100644
--- a/flytepropeller/pkg/controller/executors/mocks/task_details_getter.go
+++ b/flytepropeller/pkg/controller/executors/mocks/task_details_getter.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytepropeller/pkg/controller/executors/mocks/workflow.go b/flytepropeller/pkg/controller/executors/mocks/workflow.go
index 8891e630c82..b372ab26084 100644
--- a/flytepropeller/pkg/controller/executors/mocks/workflow.go
+++ b/flytepropeller/pkg/controller/executors/mocks/workflow.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- mock "github.com/stretchr/testify/mock"
-
v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ mock "github.com/stretchr/testify/mock"
)
// Workflow is an autogenerated mock type for the Workflow type
diff --git a/flytepropeller/pkg/controller/mocks/limiter.go b/flytepropeller/pkg/controller/mocks/limiter.go
index 709cdd4d654..9a96df01444 100644
--- a/flytepropeller/pkg/controller/mocks/limiter.go
+++ b/flytepropeller/pkg/controller/mocks/limiter.go
@@ -1,16 +1,14 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
+ time "time"
interfaces "github.com/flyteorg/flyte/flytepropeller/pkg/controller/interfaces"
mock "github.com/stretchr/testify/mock"
-
rate "golang.org/x/time/rate"
-
- time "time"
)
// Limiter is an autogenerated mock type for the Limiter type
@@ -26,7 +24,7 @@ func (_m *Limiter) EXPECT() *Limiter_Expecter {
return &Limiter_Expecter{mock: &_m.Mock}
}
-// Allow provides a mock function with given fields:
+// Allow provides a mock function with no fields
func (_m *Limiter) Allow() bool {
ret := _m.Called()
@@ -118,7 +116,7 @@ func (_c *Limiter_AllowN_Call) RunAndReturn(run func(time.Time, int) bool) *Limi
return _c
}
-// Burst provides a mock function with given fields:
+// Burst provides a mock function with no fields
func (_m *Limiter) Burst() int {
ret := _m.Called()
@@ -163,7 +161,7 @@ func (_c *Limiter_Burst_Call) RunAndReturn(run func() int) *Limiter_Burst_Call {
return _c
}
-// Limit provides a mock function with given fields:
+// Limit provides a mock function with no fields
func (_m *Limiter) Limit() rate.Limit {
ret := _m.Called()
@@ -208,7 +206,7 @@ func (_c *Limiter_Limit_Call) RunAndReturn(run func() rate.Limit) *Limiter_Limit
return _c
}
-// Reserve provides a mock function with given fields:
+// Reserve provides a mock function with no fields
func (_m *Limiter) Reserve() interfaces.Reservation {
ret := _m.Called()
@@ -333,7 +331,7 @@ func (_c *Limiter_SetBurst_Call) Return() *Limiter_SetBurst_Call {
}
func (_c *Limiter_SetBurst_Call) RunAndReturn(run func(int)) *Limiter_SetBurst_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -367,7 +365,7 @@ func (_c *Limiter_SetBurstAt_Call) Return() *Limiter_SetBurstAt_Call {
}
func (_c *Limiter_SetBurstAt_Call) RunAndReturn(run func(time.Time, int)) *Limiter_SetBurstAt_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -400,7 +398,7 @@ func (_c *Limiter_SetLimit_Call) Return() *Limiter_SetLimit_Call {
}
func (_c *Limiter_SetLimit_Call) RunAndReturn(run func(rate.Limit)) *Limiter_SetLimit_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -434,11 +432,11 @@ func (_c *Limiter_SetLimitAt_Call) Return() *Limiter_SetLimitAt_Call {
}
func (_c *Limiter_SetLimitAt_Call) RunAndReturn(run func(time.Time, rate.Limit)) *Limiter_SetLimitAt_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// Tokens provides a mock function with given fields:
+// Tokens provides a mock function with no fields
func (_m *Limiter) Tokens() float64 {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/mocks/reservation.go b/flytepropeller/pkg/controller/mocks/reservation.go
index d609c0b034b..909b38e1b08 100644
--- a/flytepropeller/pkg/controller/mocks/reservation.go
+++ b/flytepropeller/pkg/controller/mocks/reservation.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -21,7 +21,7 @@ func (_m *Reservation) EXPECT() *Reservation_Expecter {
return &Reservation_Expecter{mock: &_m.Mock}
}
-// Cancel provides a mock function with given fields:
+// Cancel provides a mock function with no fields
func (_m *Reservation) Cancel() {
_m.Called()
}
@@ -49,7 +49,7 @@ func (_c *Reservation_Cancel_Call) Return() *Reservation_Cancel_Call {
}
func (_c *Reservation_Cancel_Call) RunAndReturn(run func()) *Reservation_Cancel_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
@@ -82,11 +82,11 @@ func (_c *Reservation_CancelAt_Call) Return() *Reservation_CancelAt_Call {
}
func (_c *Reservation_CancelAt_Call) RunAndReturn(run func(time.Time)) *Reservation_CancelAt_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
-// Delay provides a mock function with given fields:
+// Delay provides a mock function with no fields
func (_m *Reservation) Delay() time.Duration {
ret := _m.Called()
@@ -177,7 +177,7 @@ func (_c *Reservation_DelayFrom_Call) RunAndReturn(run func(time.Time) time.Dura
return _c
}
-// OK provides a mock function with given fields:
+// OK provides a mock function with no fields
func (_m *Reservation) OK() bool {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/nodes/array/event_recorder.go b/flytepropeller/pkg/controller/nodes/array/event_recorder.go
index d9feafe9509..1cfaa8c726f 100644
--- a/flytepropeller/pkg/controller/nodes/array/event_recorder.go
+++ b/flytepropeller/pkg/controller/nodes/array/event_recorder.go
@@ -9,7 +9,7 @@ import (
"github.com/golang/protobuf/ptypes"
idlcore "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
- "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event"
+ events "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/logs"
pluginscore "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/encoding"
@@ -18,6 +18,7 @@ import (
"github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/k8s/pod"
"github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
"github.com/flyteorg/flyte/flytepropeller/pkg/controller/config"
+ "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes"
"github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/common"
"github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces"
"github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/task"
@@ -48,53 +49,99 @@ func (t *taskExecutionID) GetUniqueNodeID() string {
return t.nodeID
}
+//go:generate mockery --all --case=underscore
+
type arrayEventRecorder interface {
interfaces.EventRecorder
process(ctx context.Context, nCtx interfaces.NodeExecutionContext, index int, retryAttempt uint32) error
- finalize(ctx context.Context, nCtx interfaces.NodeExecutionContext, taskPhase idlcore.TaskExecution_Phase, taskPhaseVersion uint32, eventConfig *config.EventConfig) error
+ finalize(ctx context.Context, nCtx interfaces.NodeExecutionContext, taskPhase idlcore.TaskExecution_Phase, taskPhaseVersion uint32, eventConfig *config.EventConfig, arrayNodeExecutionError *idlcore.ExecutionError) error
finalizeRequired(ctx context.Context) bool
}
+func mapNodeExecutionPhaseToTaskExecutionPhase(nodePhase idlcore.NodeExecution_Phase) idlcore.TaskExecution_Phase {
+ switch nodePhase {
+ case idlcore.NodeExecution_UNDEFINED:
+ return idlcore.TaskExecution_UNDEFINED
+ case idlcore.NodeExecution_QUEUED:
+ return idlcore.TaskExecution_QUEUED
+ case idlcore.NodeExecution_RUNNING, idlcore.NodeExecution_DYNAMIC_RUNNING:
+ return idlcore.TaskExecution_RUNNING
+ case idlcore.NodeExecution_SUCCEEDED:
+ return idlcore.TaskExecution_SUCCEEDED
+ case idlcore.NodeExecution_FAILING, idlcore.NodeExecution_FAILED, idlcore.NodeExecution_TIMED_OUT:
+ return idlcore.TaskExecution_FAILED
+ case idlcore.NodeExecution_ABORTED:
+ return idlcore.TaskExecution_ABORTED
+ case idlcore.NodeExecution_SKIPPED:
+ return idlcore.TaskExecution_UNDEFINED
+ case idlcore.NodeExecution_RECOVERED:
+ return idlcore.TaskExecution_SUCCEEDED
+ default:
+ return idlcore.TaskExecution_UNDEFINED
+ }
+}
+
+func mapNodePhaseToNodeExecutionPhase(nodePhase v1alpha1.NodePhase) idlcore.NodeExecution_Phase {
+ switch nodePhase {
+ case v1alpha1.NodePhaseNotYetStarted:
+ return idlcore.NodeExecution_UNDEFINED
+ case v1alpha1.NodePhaseQueued:
+ return idlcore.NodeExecution_QUEUED
+ case v1alpha1.NodePhaseRunning:
+ return idlcore.NodeExecution_RUNNING
+ case v1alpha1.NodePhaseFailing:
+ return idlcore.NodeExecution_FAILING
+ case v1alpha1.NodePhaseSucceeding:
+ return idlcore.NodeExecution_SUCCEEDED
+ case v1alpha1.NodePhaseSucceeded:
+ return idlcore.NodeExecution_SUCCEEDED
+ case v1alpha1.NodePhaseFailed:
+ return idlcore.NodeExecution_FAILED
+ case v1alpha1.NodePhaseSkipped:
+ return idlcore.NodeExecution_SKIPPED
+ case v1alpha1.NodePhaseRetryableFailure:
+ return idlcore.NodeExecution_FAILED
+ case v1alpha1.NodePhaseTimingOut:
+ return idlcore.NodeExecution_TIMED_OUT
+ case v1alpha1.NodePhaseTimedOut:
+ return idlcore.NodeExecution_TIMED_OUT
+ case v1alpha1.NodePhaseDynamicRunning:
+ return idlcore.NodeExecution_DYNAMIC_RUNNING
+ case v1alpha1.NodePhaseRecovered:
+ return idlcore.NodeExecution_RECOVERED
+ default:
+ return idlcore.NodeExecution_UNDEFINED
+ }
+}
+
type externalResourcesEventRecorder struct {
interfaces.EventRecorder
- externalResources []*event.ExternalResourceInfo
- nodeEvents []*event.NodeExecutionEvent
- taskEvents []*event.TaskExecutionEvent
+ externalResources []*events.ExternalResourceInfo
+ nodeEvents []*events.NodeExecutionEvent
+ taskEvents []*events.TaskExecutionEvent
}
-func (e *externalResourcesEventRecorder) RecordNodeEvent(ctx context.Context, event *event.NodeExecutionEvent, eventConfig *config.EventConfig) error {
+func (e *externalResourcesEventRecorder) RecordNodeEvent(ctx context.Context, event *events.NodeExecutionEvent, eventConfig *config.EventConfig) error {
e.nodeEvents = append(e.nodeEvents, event)
return nil
}
-func (e *externalResourcesEventRecorder) RecordTaskEvent(ctx context.Context, event *event.TaskExecutionEvent, eventConfig *config.EventConfig) error {
+func (e *externalResourcesEventRecorder) RecordTaskEvent(ctx context.Context, event *events.TaskExecutionEvent, eventConfig *config.EventConfig) error {
e.taskEvents = append(e.taskEvents, event)
return nil
}
func (e *externalResourcesEventRecorder) process(ctx context.Context, nCtx interfaces.NodeExecutionContext, index int, retryAttempt uint32) error {
- // generate externalResourceID
- currentNodeUniqueID := nCtx.NodeID()
- if nCtx.ExecutionContext().GetEventVersion() != v1alpha1.EventVersion0 {
- var err error
- currentNodeUniqueID, err = common.GenerateUniqueID(nCtx.ExecutionContext().GetParentInfo(), nCtx.NodeID())
- if err != nil {
- return err
- }
- }
-
- uniqueID, err := encoding.FixedLengthUniqueIDForParts(task.IDMaxLength, []string{nCtx.NodeExecutionMetadata().GetOwnerID().Name, currentNodeUniqueID, strconv.Itoa(int(retryAttempt))})
+ externalResourceID, err := generateExternalResourceID(nCtx, index, retryAttempt)
if err != nil {
return err
}
- externalResourceID := fmt.Sprintf("%s-n%d-%d", uniqueID, index, retryAttempt)
-
// process events
cacheStatus := idlcore.CatalogCacheStatus_CACHE_DISABLED
for _, nodeExecutionEvent := range e.nodeEvents {
switch target := nodeExecutionEvent.GetTargetMetadata().(type) {
- case *event.NodeExecutionEvent_TaskNodeMetadata:
+ case *events.NodeExecutionEvent_TaskNodeMetadata:
if target.TaskNodeMetadata != nil {
cacheStatus = target.TaskNodeMetadata.GetCacheStatus()
}
@@ -104,7 +151,7 @@ func (e *externalResourcesEventRecorder) process(ctx context.Context, nCtx inter
// fastcache will not emit task events for cache hits. we need to manually detect a
// transition to `SUCCEEDED` and add an `ExternalResourceInfo` for it.
if cacheStatus == idlcore.CatalogCacheStatus_CACHE_HIT && len(e.taskEvents) == 0 {
- e.externalResources = append(e.externalResources, &event.ExternalResourceInfo{
+ e.externalResources = append(e.externalResources, &events.ExternalResourceInfo{
ExternalId: externalResourceID,
Index: uint32(index), // #nosec G115
RetryAttempt: retryAttempt,
@@ -136,7 +183,7 @@ func (e *externalResourcesEventRecorder) process(ctx context.Context, nCtx inter
log.Name = fmt.Sprintf("%s-%d", log.GetName(), index)
}
- externalResourceInfo := event.ExternalResourceInfo{
+ externalResourceInfo := events.ExternalResourceInfo{
ExternalId: externalResourceID,
Index: uint32(index), // #nosec G115
Logs: taskExecutionEvent.GetLogs(),
@@ -160,8 +207,55 @@ func (e *externalResourcesEventRecorder) process(ctx context.Context, nCtx inter
return nil
}
+func updateExternalResourceSubnodePhases(nCtx interfaces.NodeExecutionContext, existingExternalResources []*events.ExternalResourceInfo) ([]*events.ExternalResourceInfo, error) {
+ arrayNodeState := nCtx.NodeStateReader().GetArrayNodeState()
+ subNodePhases := arrayNodeState.SubNodePhases.GetItems()
+ subNodeRetryAttempts := arrayNodeState.SubNodeRetryAttempts.GetItems()
+
+ updatedExternalResources := make([]*events.ExternalResourceInfo, 0, len(subNodePhases))
+
+ existingExternalResourcesMap := make(map[uint32]*events.ExternalResourceInfo)
+ for _, resource := range existingExternalResources {
+ existingExternalResourcesMap[resource.GetIndex()] = resource
+ }
+
+ for index, subNodePhase := range subNodePhases {
+ // #nosec G115
+ if existingResource, exists := existingExternalResourcesMap[uint32(index)]; exists {
+ updatedExternalResources = append(updatedExternalResources, existingResource)
+ continue
+ }
+
+ // ensure that all subnodes have the latest state set to handle scenarios where
+ // eventing fails due to taskPhaseVersion being out of sync
+ // Note: in opting for eventual subnode phase consistency when the array node reaches a terminal phase
+ // instead of having retries to ensure subnodes are updated while running, subnodes could potentially
+ // in rare cases drop fields such as logs.
+
+ nodePhase := v1alpha1.NodePhase(subNodePhase) // #nosec G115
+ nodeExecutionPhase := mapNodePhaseToNodeExecutionPhase(nodePhase)
+ // Note: this shouldn't happen as the lengths should always match
+ var retryAttempt uint32
+ if index < len(subNodeRetryAttempts) {
+ retryAttempt = uint32(subNodeRetryAttempts[index]) // #nosec G115
+ }
+ externalResourceID, err := generateExternalResourceID(nCtx, index, retryAttempt)
+ if err != nil {
+ return nil, err
+ }
+ updatedExternalResources = append(updatedExternalResources, &events.ExternalResourceInfo{
+ ExternalId: externalResourceID,
+ Phase: mapNodeExecutionPhaseToTaskExecutionPhase(nodeExecutionPhase),
+ Index: uint32(index), // #nosec G115
+ RetryAttempt: retryAttempt, // #nosec G115
+ })
+ }
+
+ return updatedExternalResources, nil
+}
+
func (e *externalResourcesEventRecorder) finalize(ctx context.Context, nCtx interfaces.NodeExecutionContext,
- taskPhase idlcore.TaskExecution_Phase, taskPhaseVersion uint32, eventConfig *config.EventConfig) error {
+ taskPhase idlcore.TaskExecution_Phase, taskPhaseVersion uint32, eventConfig *config.EventConfig, arrayNodeExecutionError *idlcore.ExecutionError) error {
// build TaskExecutionEvent
occurredAt, err := ptypes.TimestampProto(time.Now())
@@ -189,14 +283,23 @@ func (e *externalResourcesEventRecorder) finalize(ctx context.Context, nCtx inte
nodeExecutionID.NodeId = currentNodeUniqueID
}
- taskExecutionEvent := &event.TaskExecutionEvent{
+ if nodes.IsTerminalTaskPhase(taskPhase) {
+ updatedExternalResources, err := updateExternalResourceSubnodePhases(nCtx, e.externalResources)
+ if err != nil {
+ logger.Errorf(ctx, "failed to update external resource phases for ArrayNode with error: %v", err)
+ return err
+ }
+ e.externalResources = updatedExternalResources
+ }
+
+ taskExecutionEvent := &events.TaskExecutionEvent{
TaskId: taskID,
ParentNodeExecutionId: &nodeExecutionID,
RetryAttempt: 0, // ArrayNode will never retry
Phase: taskPhase,
PhaseVersion: taskPhaseVersion,
OccurredAt: occurredAt,
- Metadata: &event.TaskExecutionMetadata{
+ Metadata: &events.TaskExecutionMetadata{
ExternalResources: e.externalResources,
PluginIdentifier: "k8s-array",
},
@@ -213,12 +316,12 @@ func (e *externalResourcesEventRecorder) finalize(ctx context.Context, nCtx inte
return err
}
- taskExecutionEvent.InputValue = &event.TaskExecutionEvent_InputData{
+ taskExecutionEvent.InputValue = &events.TaskExecutionEvent_InputData{
InputData: literalMap,
}
} else {
// pass inputs by reference
- taskExecutionEvent.InputValue = &event.TaskExecutionEvent_InputUri{
+ taskExecutionEvent.InputValue = &events.TaskExecutionEvent_InputUri{
InputUri: nCtx.InputReader().GetInputPath().String(),
}
}
@@ -226,9 +329,14 @@ func (e *externalResourcesEventRecorder) finalize(ctx context.Context, nCtx inte
// only attach output uri if taskPhase is SUCCEEDED
if taskPhase == idlcore.TaskExecution_SUCCEEDED {
- taskExecutionEvent.OutputResult = &event.TaskExecutionEvent_OutputUri{
+ taskExecutionEvent.OutputResult = &events.TaskExecutionEvent_OutputUri{
OutputUri: v1alpha1.GetOutputsFile(nCtx.NodeStatus().GetOutputDir()).String(),
}
+ } else if taskPhase == idlcore.TaskExecution_FAILED {
+ // attach first evaluated error(s) if taskPhase is FAILED
+ taskExecutionEvent.OutputResult = &events.TaskExecutionEvent_Error{
+ Error: arrayNodeExecutionError,
+ }
}
// record TaskExecutionEvent
@@ -248,7 +356,7 @@ func (*passThroughEventRecorder) process(ctx context.Context, nCtx interfaces.No
}
func (*passThroughEventRecorder) finalize(ctx context.Context, nCtx interfaces.NodeExecutionContext,
- taskPhase idlcore.TaskExecution_Phase, taskPhaseVersion uint32, eventConfig *config.EventConfig) error {
+ taskPhase idlcore.TaskExecution_Phase, taskPhaseVersion uint32, eventConfig *config.EventConfig, arrayNodeExecutionError *idlcore.ExecutionError) error {
return nil
}
@@ -359,14 +467,14 @@ func sendEvents(ctx context.Context, nCtx interfaces.NodeExecutionContext, index
if nCtx.ExecutionContext() != nil && nCtx.ExecutionContext().GetParentInfo() != nil && nCtx.ExecutionContext().GetParentInfo().IsInDynamicChain() {
dynamic = true
}
- nodeExecutionEvent := &event.NodeExecutionEvent{
+ nodeExecutionEvent := &events.NodeExecutionEvent{
Id: &idlcore.NodeExecutionIdentifier{
NodeId: subNodeID,
ExecutionId: workflowExecutionID,
},
Phase: nodePhase,
OccurredAt: timestamp,
- ParentNodeMetadata: &event.ParentNodeExecutionMetadata{
+ ParentNodeMetadata: &events.ParentNodeExecutionMetadata{
NodeId: nCtx.NodeID(),
},
ReportedAt: timestamp,
@@ -378,7 +486,7 @@ func sendEvents(ctx context.Context, nCtx interfaces.NodeExecutionContext, index
}
// send TaskExecutionEvent
- taskExecutionEvent := &event.TaskExecutionEvent{
+ taskExecutionEvent := &events.TaskExecutionEvent{
TaskId: &idlcore.Identifier{
ResourceType: idlcore.ResourceType_TASK,
Project: workflowExecutionID.GetProject(),
@@ -399,3 +507,26 @@ func sendEvents(ctx context.Context, nCtx interfaces.NodeExecutionContext, index
return nil
}
+
+func generateExternalResourceID(nCtx interfaces.NodeExecutionContext, index int, retryAttempt uint32) (string, error) {
+ currentNodeUniqueID := nCtx.NodeID()
+ if nCtx.ExecutionContext().GetEventVersion() != v1alpha1.EventVersion0 {
+ var err error
+ currentNodeUniqueID, err = common.GenerateUniqueID(nCtx.ExecutionContext().GetParentInfo(), nCtx.NodeID())
+ if err != nil {
+ return "", err
+ }
+ }
+
+ uniqueID, err := encoding.FixedLengthUniqueIDForParts(task.IDMaxLength, []string{nCtx.NodeExecutionMetadata().GetOwnerID().Name, currentNodeUniqueID, strconv.Itoa(int(nCtx.CurrentAttempt()))})
+ if err != nil {
+ return "", err
+ }
+
+ // Note: if the subNode is a task, then this value should map to the subNode's pod name. Services such as
+ // usage utilize ExternalResourceInfo.ExternalId to identify the pod.
+
+ externalResourceID := fmt.Sprintf("%s-n%d-%d", uniqueID, index, retryAttempt)
+
+ return externalResourceID, nil
+}
diff --git a/flytepropeller/pkg/controller/nodes/array/event_recorder_test.go b/flytepropeller/pkg/controller/nodes/array/event_recorder_test.go
index 97795c59247..eeca9ca2950 100644
--- a/flytepropeller/pkg/controller/nodes/array/event_recorder_test.go
+++ b/flytepropeller/pkg/controller/nodes/array/event_recorder_test.go
@@ -14,7 +14,9 @@ import (
"github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
"github.com/flyteorg/flyte/flytepropeller/pkg/controller/config"
execmocks "github.com/flyteorg/flyte/flytepropeller/pkg/controller/executors/mocks"
+ "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/handler"
"github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces/mocks"
+ "github.com/flyteorg/flyte/flytestdlib/bitarray"
)
type bufferedEventRecorder struct {
@@ -55,12 +57,12 @@ func TestGetPluginLogs(t *testing.T) {
// create NodeExecutionContext
nCtx := &mocks.NodeExecutionContext{}
- nCtx.EXPECT().CurrentAttempt().Return(uint32(0))
+ nCtx.On("CurrentAttempt").Return(uint32(0))
executionContext := &execmocks.ExecutionContext{}
- executionContext.EXPECT().GetEventVersion().Return(1)
- executionContext.EXPECT().GetParentInfo().Return(nil)
- executionContext.EXPECT().GetTask(taskRef).Return(
+ executionContext.On("GetEventVersion").Return(v1alpha1.EventVersion1)
+ executionContext.On("GetParentInfo").Return(nil)
+ executionContext.On("GetTask", taskRef).Return(
&v1alpha1.TaskSpec{
TaskTemplate: &idlcore.TaskTemplate{
Id: &idlcore.Identifier{
@@ -74,13 +76,13 @@ func TestGetPluginLogs(t *testing.T) {
},
nil,
)
- nCtx.EXPECT().ExecutionContext().Return(executionContext)
+ nCtx.On("ExecutionContext").Return(executionContext)
- nCtx.EXPECT().Node().Return(&arrayNodeSpec)
+ nCtx.On("Node").Return(&arrayNodeSpec)
nodeExecutionMetadata := &mocks.NodeExecutionMetadata{}
- nodeExecutionMetadata.EXPECT().GetNamespace().Return("node_namespace")
- nodeExecutionMetadata.EXPECT().GetNodeExecutionID().Return(&idlcore.NodeExecutionIdentifier{
+ nodeExecutionMetadata.On("GetNamespace").Return("node_namespace")
+ nodeExecutionMetadata.On("GetNodeExecutionID").Return(&idlcore.NodeExecutionIdentifier{
NodeId: "node_id",
ExecutionId: &idlcore.WorkflowExecutionIdentifier{
Project: "node_project",
@@ -88,13 +90,13 @@ func TestGetPluginLogs(t *testing.T) {
Name: "node_name",
},
})
- nodeExecutionMetadata.EXPECT().GetOwnerID().Return(types.NamespacedName{
+ nodeExecutionMetadata.On("GetOwnerID").Return(types.NamespacedName{
Namespace: "wf_namespace",
Name: "wf_name",
})
- nCtx.EXPECT().NodeExecutionMetadata().Return(nodeExecutionMetadata)
+ nCtx.On("NodeExecutionMetadata").Return(nodeExecutionMetadata)
- nCtx.EXPECT().NodeID().Return("foo")
+ nCtx.On("NodeID").Return("foo")
// call `getPluginLogs`
logs, err := getPluginLogs(mapLogPlugin, nCtx, 1, 0)
@@ -104,3 +106,273 @@ func TestGetPluginLogs(t *testing.T) {
assert.Equal(t, "bar", logs[0].GetName())
assert.Equal(t, "/console/projects/node_project/domains/node_domain/executions/node_name/nodeId/foo/taskId/task_name/attempt/0/mappedIndex/1/mappedAttempt/0/view/logs?duration=all", logs[0].GetUri())
}
+
+func TestGetExternalResourceID(t *testing.T) {
+
+ tests := []struct {
+ nodeID string
+ currentNodeAttempt uint32
+ index int
+ retryAttempt uint32
+ expectedExternalResourceID string
+ }{
+ {
+ nodeID: "n2",
+ currentNodeAttempt: 0,
+ index: 0,
+ retryAttempt: 0,
+ expectedExternalResourceID: "exec_name-n2-0-n0-0",
+ },
+ {
+ nodeID: "n0",
+ currentNodeAttempt: 1,
+ index: 2,
+ retryAttempt: 3,
+ expectedExternalResourceID: "exec_name-n0-1-n2-3",
+ },
+ }
+
+ for _, test := range tests {
+ execContext := &execmocks.ExecutionContext{}
+ execContext.On("GetEventVersion").Return(v1alpha1.EventVersion0)
+
+ nodeExecMetadata := &mocks.NodeExecutionMetadata{}
+ nodeExecMetadata.On("GetOwnerID").Return(types.NamespacedName{Name: "exec_name"})
+
+ nCtx := &mocks.NodeExecutionContext{}
+ nCtx.On("NodeID").Return(test.nodeID)
+ nCtx.On("ExecutionContext").Return(execContext)
+ nCtx.On("NodeExecutionMetadata").Return(nodeExecMetadata)
+ nCtx.On("CurrentAttempt").Return(test.currentNodeAttempt)
+
+ externalResourceID, err := generateExternalResourceID(nCtx, test.index, test.retryAttempt)
+ assert.Nil(t, err)
+ assert.Equal(t, test.expectedExternalResourceID, externalResourceID)
+ }
+}
+
+func TestUpdateExternalResourceSubnodePhases(t *testing.T) {
+ tests := []struct {
+ name string
+ subNodePhases []v1alpha1.NodePhase
+ subNodeRetryAttempts []uint32
+ existingExternalResources []*event.ExternalResourceInfo
+ expectedUpdatedExternalResources []*event.ExternalResourceInfo
+ }{
+ {
+ name: "all new resources - empty existing",
+ subNodePhases: []v1alpha1.NodePhase{
+ v1alpha1.NodePhaseSucceeded,
+ v1alpha1.NodePhaseFailed,
+ v1alpha1.NodePhaseRunning,
+ },
+ subNodeRetryAttempts: []uint32{0, 1, 2},
+ existingExternalResources: []*event.ExternalResourceInfo{},
+ expectedUpdatedExternalResources: []*event.ExternalResourceInfo{
+ {
+ ExternalId: "test-name-test-node-0-n0-0",
+ Index: 0,
+ RetryAttempt: 0,
+ Phase: idlcore.TaskExecution_SUCCEEDED,
+ },
+ {
+ ExternalId: "test-name-test-node-0-n1-1",
+ Index: 1,
+ RetryAttempt: 1,
+ Phase: idlcore.TaskExecution_FAILED,
+ },
+ {
+ ExternalId: "test-name-test-node-0-n2-2",
+ Index: 2,
+ RetryAttempt: 2,
+ Phase: idlcore.TaskExecution_RUNNING,
+ },
+ },
+ },
+ {
+ name: "some existing resources - preserve order",
+ subNodePhases: []v1alpha1.NodePhase{
+ v1alpha1.NodePhaseSucceeded,
+ v1alpha1.NodePhaseFailed,
+ v1alpha1.NodePhaseRunning,
+ v1alpha1.NodePhaseQueued,
+ },
+ subNodeRetryAttempts: []uint32{0, 1, 2, 3},
+ existingExternalResources: []*event.ExternalResourceInfo{
+ {
+ ExternalId: "existing-0",
+ Index: 0,
+ RetryAttempt: 0,
+ Phase: idlcore.TaskExecution_SUCCEEDED,
+ },
+ {
+ ExternalId: "existing-2",
+ Index: 2,
+ RetryAttempt: 2,
+ Phase: idlcore.TaskExecution_RUNNING,
+ },
+ },
+ expectedUpdatedExternalResources: []*event.ExternalResourceInfo{
+ {
+ ExternalId: "existing-0",
+ Index: 0,
+ RetryAttempt: 0,
+ Phase: idlcore.TaskExecution_SUCCEEDED,
+ },
+ {
+ ExternalId: "test-name-test-node-0-n1-1",
+ Index: 1,
+ RetryAttempt: 1,
+ Phase: idlcore.TaskExecution_FAILED,
+ },
+ {
+ ExternalId: "existing-2",
+ Index: 2,
+ RetryAttempt: 2,
+ Phase: idlcore.TaskExecution_RUNNING,
+ },
+ {
+ ExternalId: "test-name-test-node-0-n3-3",
+ Index: 3,
+ RetryAttempt: 3,
+ Phase: idlcore.TaskExecution_QUEUED,
+ },
+ },
+ },
+ {
+ name: "all existing resources - no new ones",
+ subNodePhases: []v1alpha1.NodePhase{
+ v1alpha1.NodePhaseSucceeded,
+ v1alpha1.NodePhaseFailed,
+ },
+ subNodeRetryAttempts: []uint32{0, 1},
+ existingExternalResources: []*event.ExternalResourceInfo{
+ {
+ ExternalId: "existing-0",
+ Index: 0,
+ RetryAttempt: 0,
+ Phase: idlcore.TaskExecution_SUCCEEDED,
+ },
+ {
+ ExternalId: "existing-1",
+ Index: 1,
+ RetryAttempt: 1,
+ Phase: idlcore.TaskExecution_FAILED,
+ },
+ },
+ expectedUpdatedExternalResources: []*event.ExternalResourceInfo{
+ {
+ ExternalId: "existing-0",
+ Index: 0,
+ RetryAttempt: 0,
+ Phase: idlcore.TaskExecution_SUCCEEDED,
+ },
+ {
+ ExternalId: "existing-1",
+ Index: 1,
+ RetryAttempt: 1,
+ Phase: idlcore.TaskExecution_FAILED,
+ },
+ },
+ },
+ {
+ name: "preserve existing resource data",
+ subNodePhases: []v1alpha1.NodePhase{
+ v1alpha1.NodePhaseSucceeded,
+ v1alpha1.NodePhaseFailed,
+ v1alpha1.NodePhaseRunning,
+ },
+ subNodeRetryAttempts: []uint32{5, 10, 15}, // Different from existing
+ existingExternalResources: []*event.ExternalResourceInfo{
+ {
+ ExternalId: "preserve-this-id",
+ Index: 1,
+ RetryAttempt: 99, // Should preserve this, not use 10
+ Phase: idlcore.TaskExecution_SUCCEEDED, // Should preserve this
+ Logs: []*idlcore.TaskLog{
+ {Name: "test-log"},
+ },
+ CacheStatus: idlcore.CatalogCacheStatus_CACHE_HIT,
+ },
+ },
+ expectedUpdatedExternalResources: []*event.ExternalResourceInfo{
+ {
+ ExternalId: "test-name-test-node-0-n0-5",
+ Index: 0,
+ RetryAttempt: 5,
+ Phase: idlcore.TaskExecution_SUCCEEDED,
+ },
+ {
+ ExternalId: "preserve-this-id",
+ Index: 1,
+ RetryAttempt: 99, // Preserved from existing
+ Phase: idlcore.TaskExecution_SUCCEEDED,
+ Logs: []*idlcore.TaskLog{
+ {Name: "test-log"},
+ },
+ CacheStatus: idlcore.CatalogCacheStatus_CACHE_HIT,
+ },
+ {
+ ExternalId: "test-name-test-node-0-n2-15",
+ Index: 2,
+ RetryAttempt: 15,
+ Phase: idlcore.TaskExecution_RUNNING,
+ },
+ },
+ },
+ }
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ nCtx := &mocks.NodeExecutionContext{}
+ nodeStateReader := &mocks.NodeStateReader{}
+ executionContext := &execmocks.ExecutionContext{}
+ nodeExecutionMetadata := &mocks.NodeExecutionMetadata{}
+
+ arrayNodeState := &handler.ArrayNodeState{}
+ if len(test.subNodePhases) > 0 {
+ subNodePhasesArray, err := bitarray.NewCompactArray(uint(len(test.subNodePhases)), bitarray.Item(v1alpha1.NodePhaseRecovered))
+ assert.NoError(t, err)
+ subNodeRetryAttemptsArray, err := bitarray.NewCompactArray(uint(len(test.subNodeRetryAttempts)), bitarray.Item(100))
+ assert.NoError(t, err)
+
+ for i, phase := range test.subNodePhases {
+ subNodePhasesArray.SetItem(i, bitarray.Item(phase)) // #nosec G115
+ }
+ for i, retryAttempt := range test.subNodeRetryAttempts {
+ subNodeRetryAttemptsArray.SetItem(i, bitarray.Item(retryAttempt))
+ }
+
+ arrayNodeState.SubNodePhases = subNodePhasesArray
+ arrayNodeState.SubNodeRetryAttempts = subNodeRetryAttemptsArray
+ } else {
+ subNodePhasesArray, err := bitarray.NewCompactArray(0, bitarray.Item(v1alpha1.NodePhaseRecovered))
+ assert.NoError(t, err)
+ subNodeRetryAttemptsArray, err := bitarray.NewCompactArray(0, bitarray.Item(100))
+ assert.NoError(t, err)
+ arrayNodeState.SubNodePhases = subNodePhasesArray
+ arrayNodeState.SubNodeRetryAttempts = subNodeRetryAttemptsArray
+ }
+
+ executionContext.On("GetEventVersion").Return(v1alpha1.EventVersion0)
+
+ nodeExecutionMetadata.On("GetOwnerID").Return(types.NamespacedName{
+ Namespace: "test-namespace",
+ Name: "test-name",
+ })
+
+ nCtx.On("NodeStateReader").Return(nodeStateReader)
+ nCtx.On("ExecutionContext").Return(executionContext)
+ nCtx.On("NodeExecutionMetadata").Return(nodeExecutionMetadata)
+ nCtx.On("NodeID").Return("test-node")
+ nCtx.On("CurrentAttempt").Return(uint32(0))
+ nodeStateReader.On("GetArrayNodeState").Return(*arrayNodeState)
+
+ result, err := updateExternalResourceSubnodePhases(nCtx, test.existingExternalResources)
+
+ assert.NoError(t, err)
+ assert.NotNil(t, result)
+ assert.Equal(t, test.expectedUpdatedExternalResources, result)
+ })
+ }
+}
diff --git a/flytepropeller/pkg/controller/nodes/array/execution_context_test.go b/flytepropeller/pkg/controller/nodes/array/execution_context_test.go
new file mode 100644
index 00000000000..eecd2d0cee2
--- /dev/null
+++ b/flytepropeller/pkg/controller/nodes/array/execution_context_test.go
@@ -0,0 +1,66 @@
+package array
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ "github.com/flyteorg/flyte/flytepropeller/pkg/controller/executors"
+)
+
+// mockImmutableExecutionContext implements just GetExecutionConfig for testing
+type mockImmutableExecutionContext struct {
+ executors.ImmutableExecutionContext
+ config v1alpha1.ExecutionConfig
+}
+
+func (m *mockImmutableExecutionContext) GetExecutionConfig() v1alpha1.ExecutionConfig {
+ return m.config
+}
+
+func TestNewArrayExecutionContext(t *testing.T) {
+ baseConfig := v1alpha1.ExecutionConfig{
+ MaxParallelism: 10,
+ EnvironmentVariables: map[string]string{"EXISTING": "value"},
+ }
+ immExecContext := &mockImmutableExecutionContext{config: baseConfig}
+
+ t.Run("MaxParallelismDisabled", func(t *testing.T) {
+ parentExecContext := executors.NewExecutionContext(immExecContext, nil, nil, nil, executors.InitializeControlFlow())
+ arrayExecContext := newArrayExecutionContext(parentExecContext, 0)
+
+ assert.Equal(t, uint32(0), arrayExecContext.GetExecutionConfig().MaxParallelism)
+ })
+
+ t.Run("EnvironmentVariables", func(t *testing.T) {
+ parentExecContext := executors.NewExecutionContext(immExecContext, nil, nil, nil, executors.InitializeControlFlow())
+ arrayExecContext := newArrayExecutionContext(parentExecContext, 3)
+
+ config := arrayExecContext.GetExecutionConfig()
+ assert.Equal(t, "value", config.EnvironmentVariables["EXISTING"])
+ assert.Equal(t, FlyteK8sArrayIndexVarName, config.EnvironmentVariables[JobIndexVarName])
+ assert.Equal(t, "3", config.EnvironmentVariables[FlyteK8sArrayIndexVarName])
+
+ // verify parent env vars not mutated
+ assert.NotContains(t, baseConfig.EnvironmentVariables, JobIndexVarName)
+ })
+
+ t.Run("SubNodeParallelismIsolatedFromParent", func(t *testing.T) {
+ parentControlFlow := executors.InitializeControlFlow()
+ parentExecContext := executors.NewExecutionContext(immExecContext, nil, nil, nil, parentControlFlow)
+
+ // simulate what buildArrayNodeContext does: create a fresh control flow for the subnode
+ childControlFlow := executors.InitializeControlFlow()
+ childBaseContext := executors.NewExecutionContext(parentExecContext, nil, nil, nil, childControlFlow)
+ arrayExecContext := newArrayExecutionContext(childBaseContext, 0)
+
+ // incrementing parallelism on the array execution context should not affect the parent
+ arrayExecContext.IncrementParallelism()
+ arrayExecContext.IncrementParallelism()
+ arrayExecContext.IncrementParallelism()
+
+ assert.Equal(t, uint32(3), arrayExecContext.CurrentParallelism())
+ assert.Equal(t, uint32(0), parentControlFlow.CurrentParallelism())
+ })
+}
diff --git a/flytepropeller/pkg/controller/nodes/array/handler.go b/flytepropeller/pkg/controller/nodes/array/handler.go
index 4196251d6ca..a772d40bb39 100644
--- a/flytepropeller/pkg/controller/nodes/array/handler.go
+++ b/flytepropeller/pkg/controller/nodes/array/handler.go
@@ -2,6 +2,7 @@ package array
import (
"context"
+ "errors"
"fmt"
"math"
"slices"
@@ -21,12 +22,11 @@ import (
"github.com/flyteorg/flyte/flytepropeller/pkg/controller/config"
"github.com/flyteorg/flyte/flytepropeller/pkg/controller/executors"
"github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/common"
- "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/errors"
+ flyteErr "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/errors"
"github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/handler"
"github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces"
"github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/task/k8s"
"github.com/flyteorg/flyte/flytestdlib/bitarray"
- stdConfig "github.com/flyteorg/flyte/flytestdlib/config"
"github.com/flyteorg/flyte/flytestdlib/logger"
"github.com/flyteorg/flyte/flytestdlib/promutils"
"github.com/flyteorg/flyte/flytestdlib/storage"
@@ -119,11 +119,11 @@ func (a *arrayNodeHandler) Abort(ctx context.Context, nCtx interfaces.NodeExecut
}
if messageCollector.Length() > 0 {
- return fmt.Errorf(messageCollector.Summary(events.MaxErrorMessageLength)) //nolint:govet,staticcheck
+ return errors.New(messageCollector.Summary(events.MaxErrorMessageLength))
}
// update state for subNodes
- if err := eventRecorder.finalize(ctx, nCtx, taskPhase, 0, a.eventConfig); err != nil {
+ if err := eventRecorder.finalize(ctx, nCtx, taskPhase, 0, a.eventConfig, arrayNodeState.Error); err != nil {
// a task event with abort phase is already emitted when handling ArrayNodePhaseFailing
if !eventsErr.IsAlreadyExists(err) {
logger.Errorf(ctx, "ArrayNode event recording failed: [%s]", err.Error())
@@ -167,7 +167,7 @@ func (a *arrayNodeHandler) Finalize(ctx context.Context, nCtx interfaces.NodeExe
}
if messageCollector.Length() > 0 {
- return fmt.Errorf(messageCollector.Summary(events.MaxErrorMessageLength)) //nolint:govet,staticcheck
+ return errors.New(messageCollector.Summary(events.MaxErrorMessageLength))
}
return nil
@@ -211,7 +211,7 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu
if err != nil {
errMsg := fmt.Sprintf("Failed to validate literal type for [%s] with err: %s", key, err)
return handler.DoTransition(handler.TransitionTypeEphemeral,
- handler.PhaseInfoFailure(idlcore.ExecutionError_USER, errors.IDLNotFoundErr, errMsg, nil),
+ handler.PhaseInfoFailure(idlcore.ExecutionError_USER, flyteErr.IDLNotFoundErr, errMsg, nil),
), nil
}
if variable.GetOffloadedMetadata() != nil {
@@ -220,7 +220,7 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu
err := common.ReadLargeLiteral(ctx, nCtx.DataStore(), variable)
if err != nil {
return handler.DoTransition(handler.TransitionTypeEphemeral,
- handler.PhaseInfoFailure(idlcore.ExecutionError_SYSTEM, errors.RuntimeExecutionError, "couldn't read the offloaded literal", nil),
+ handler.PhaseInfoFailure(idlcore.ExecutionError_SYSTEM, flyteErr.RuntimeExecutionError, "couldn't read the offloaded literal", nil),
), nil
}
}
@@ -231,7 +231,7 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu
size = collectionLength
} else if size != collectionLength {
return handler.DoTransition(handler.TransitionTypeEphemeral,
- handler.PhaseInfoFailure(idlcore.ExecutionError_USER, errors.InvalidArrayLength,
+ handler.PhaseInfoFailure(idlcore.ExecutionError_USER, flyteErr.InvalidArrayLength,
fmt.Sprintf("input arrays have different lengths: expecting '%d' found '%d'", size, collectionLength), nil),
), nil
}
@@ -244,7 +244,7 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu
size = 1
} else {
return handler.DoTransition(handler.TransitionTypeEphemeral,
- handler.PhaseInfoFailure(idlcore.ExecutionError_USER, errors.InvalidArrayLength, "no input array provided", nil),
+ handler.PhaseInfoFailure(idlcore.ExecutionError_USER, flyteErr.InvalidArrayLength, "no input array provided", nil),
), nil
}
}
@@ -252,8 +252,18 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu
// initialize ArrayNode state
maxSystemFailuresValue := int(config.GetConfig().NodeConfig.MaxNodeRetriesOnSystemFailures)
maxAttemptsValue := int(config.GetConfig().NodeConfig.DefaultMaxAttempts)
- if nCtx.Node().GetRetryStrategy() != nil && nCtx.Node().GetRetryStrategy().MinAttempts != nil && *nCtx.Node().GetRetryStrategy().MinAttempts != 1 {
- maxAttemptsValue = *nCtx.Node().GetRetryStrategy().MinAttempts
+
+ retryStrategy := nCtx.Node().GetRetryStrategy()
+ subNodeRetryStrategy := nCtx.Node().GetArrayNode().GetSubNodeSpec().GetRetryStrategy()
+
+ if retryStrategy != nil && retryStrategy.MinAttempts != nil && *retryStrategy.MinAttempts != 1 {
+ maxAttemptsValue = *retryStrategy.MinAttempts
+ }
+
+ // Ensure that the bitarray used for tracking retry attempts is large enough to accommodate the retry budget
+ // that is potentially set on the task decorator
+ if subNodeRetryStrategy != nil && subNodeRetryStrategy.MinAttempts != nil && *subNodeRetryStrategy.MinAttempts != 1 {
+ maxAttemptsValue = max(maxAttemptsValue, *subNodeRetryStrategy.MinAttempts)
}
if config.GetConfig().NodeConfig.IgnoreRetryCause {
@@ -452,7 +462,9 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu
}
// if there is a failing node set the error message if it has not been previous set
- if failingCount > 0 && arrayNodeState.Error == nil {
+ if failingCount > 0 || failedCount > 0 && arrayNodeState.Error == nil {
+ // only set the error message as the collector summary can be the concatenation of multiple errors
+ // evaluated in the same evaluation
arrayNodeState.Error = &idlcore.ExecutionError{
Message: subNodeFailureCollector.Summary(events.MaxErrorMessageLength),
}
@@ -557,7 +569,7 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu
taskNode, err := nCtx.ExecutionContext().GetTask(taskID)
if err != nil {
return handler.DoTransition(handler.TransitionTypeEphemeral, handler.PhaseInfoFailure(idlcore.ExecutionError_SYSTEM,
- errors.BadSpecificationError, fmt.Sprintf("failed to find ArrayNode subNode task with id: '%s'", taskID), nil)), nil
+ flyteErr.BadSpecificationError, fmt.Sprintf("failed to find ArrayNode subNode task with id: '%s'", taskID), nil)), nil
}
if outputs := taskNode.CoreTask().GetInterface().GetOutputs(); outputs != nil {
@@ -621,7 +633,7 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu
}
// ensure task_execution set to succeeded
- if err := eventRecorder.finalize(ctx, nCtx, idlcore.TaskExecution_SUCCEEDED, 0, a.eventConfig); err != nil {
+ if err := eventRecorder.finalize(ctx, nCtx, idlcore.TaskExecution_SUCCEEDED, 0, a.eventConfig, arrayNodeState.Error); err != nil {
if !eventsErr.IsAlreadyExists(err) {
logger.Errorf(ctx, "ArrayNode event recording failed: [%s]", err.Error())
return handler.UnknownTransition, err
@@ -636,7 +648,7 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu
},
)), nil
default:
- return handler.UnknownTransition, errors.Errorf(errors.IllegalStateError, nCtx.NodeID(), "invalid ArrayNode phase %+v", arrayNodeState.Phase)
+ return handler.UnknownTransition, flyteErr.Errorf(flyteErr.IllegalStateError, nCtx.NodeID(), "invalid ArrayNode phase %+v", arrayNodeState.Phase)
}
// if there were changes to subNode status then the eventRecorder will require finalizing to
@@ -660,35 +672,12 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu
arrayNodeState.TaskPhaseVersion++
}
- maxRetries := config.GetConfig().ArrayNode.MaxTaskPhaseVersionAttempts
- retries := 0
- for retries <= maxRetries {
- err := eventRecorder.finalize(ctx, nCtx, taskPhase, arrayNodeState.TaskPhaseVersion, a.eventConfig)
-
- if err == nil {
- break
- }
-
- // Handle potential race condition if FlyteWorkflow CRD fails to get synced
- if eventsErr.IsAlreadyExists(err) {
- if !incrementTaskPhaseVersion {
- break
- }
- logger.Warnf(ctx, "Event version already exists, bumping version and retrying (%d/%d): [%s]", retries+1, maxRetries, err.Error())
- arrayNodeState.TaskPhaseVersion++
- } else {
- logger.Errorf(ctx, "ArrayNode event recording failed: [%s]", err.Error())
- return handler.UnknownTransition, err
- }
-
- retries++
- if retries > maxRetries {
- logger.Errorf(ctx, "ArrayNode event recording failed after %d retries: [%s]", maxRetries, err.Error())
- return handler.UnknownTransition, err
- }
+ if err := eventRecorder.finalize(ctx, nCtx, taskPhase, arrayNodeState.TaskPhaseVersion, a.eventConfig, arrayNodeState.Error); err != nil {
+ logger.Errorf(ctx, "ArrayNode event recording failed: [%s]", err.Error())
+ return handler.UnknownTransition, err
}
- // if the ArrayNode phase has changed we need to reset the taskPhaseVersion to 0
+ // if the ArrayNode phase has changed, then we need to reset the taskPhaseVersion to 0
if currentArrayNodePhase != arrayNodeState.Phase {
arrayNodeState.TaskPhaseVersion = 0
}
@@ -733,21 +722,9 @@ func New(nodeExecutor interfaces.Node, eventConfig *config.EventConfig, literalO
return nil, err
}
- eventConfigCopy, err := stdConfig.DeepCopyConfig(eventConfig)
- if err != nil {
- return nil, err
- }
-
- deepCopiedEventConfig, ok := eventConfigCopy.(*config.EventConfig)
- if !ok {
- return nil, fmt.Errorf("deep copy error: expected *config.EventConfig, but got %T", eventConfigCopy)
- }
-
- deepCopiedEventConfig.ErrorOnAlreadyExists = true
-
arrayScope := scope.NewSubScope("array")
return &arrayNodeHandler{
- eventConfig: deepCopiedEventConfig,
+ eventConfig: eventConfig,
literalOffloadingConfig: literalOffloadingConfig,
gatherOutputsRequestChannel: make(chan *gatherOutputsRequest),
metrics: newMetrics(arrayScope),
@@ -837,7 +814,10 @@ func (a *arrayNodeHandler) buildArrayNodeContext(ctx context.Context, nCtx inter
if err != nil {
return nil, nil, nil, nil, nil, nil, err
}
- arrayExecutionContext := newArrayExecutionContext(executors.NewExecutionContextWithParentInfo(nCtx.ExecutionContext(), newParentInfo), subNodeIndex)
+ // set new parent info and re-initialize the sub-node's control flow to not share/update the parent wf state
+ arrayExecutionContext := newArrayExecutionContext(
+ executors.NewExecutionContext(nCtx.ExecutionContext(), nCtx.ExecutionContext(), nCtx.ExecutionContext(), newParentInfo, executors.InitializeControlFlow()),
+ subNodeIndex)
arrayNodeExecutionContextBuilder := newArrayNodeExecutionContextBuilder(a.nodeExecutor.GetNodeExecutionContextBuilder(),
subNodeID, subNodeIndex, subNodeStatus, inputReader, eventRecorder)
diff --git a/flytepropeller/pkg/controller/nodes/array/handler_test.go b/flytepropeller/pkg/controller/nodes/array/handler_test.go
index b8bbfff7075..ac5ba233780 100644
--- a/flytepropeller/pkg/controller/nodes/array/handler_test.go
+++ b/flytepropeller/pkg/controller/nodes/array/handler_test.go
@@ -15,7 +15,6 @@ import (
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event"
"github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core"
pluginiomocks "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io/mocks"
- eventsErr "github.com/flyteorg/flyte/flytepropeller/events/errors"
eventmocks "github.com/flyteorg/flyte/flytepropeller/events/mocks"
"github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
"github.com/flyteorg/flyte/flytepropeller/pkg/controller/config"
@@ -48,13 +47,14 @@ var (
},
}
workflowMaxParallelism = uint32(10)
+ testError = &idlcore.ExecutionError{Message: "test error"}
)
func createArrayNodeHandler(ctx context.Context, t *testing.T, nodeHandler interfaces.NodeHandler, dataStore *storage.DataStore, scope promutils.Scope) (interfaces.NodeHandler, error) {
// mock components
adminClient := launchplan.NewFailFastLaunchPlanExecutor()
enqueueWorkflowFunc := func(workflowID v1alpha1.WorkflowID) {}
- eventConfig := &config.EventConfig{ErrorOnAlreadyExists: true}
+ eventConfig := &config.EventConfig{}
offloadingConfig := config.LiteralOffloadingConfig{Enabled: false}
literalOffloadingConfig := config.LiteralOffloadingConfig{Enabled: true, MinSizeInMBForOffloading: 1024, MaxSizeInMBForOffloading: 1024 * 1024}
mockEventSink := eventmocks.NewMockEventSink()
@@ -208,9 +208,12 @@ func TestAbort(t *testing.T) {
inputMap map[string][]int64
subNodePhases []v1alpha1.NodePhase
subNodeTaskPhases []core.Phase
+ expectedAbortCalls int
expectedExternalResourcePhases []idlcore.TaskExecution_Phase
- arrayNodeState v1alpha1.ArrayNodePhase
+ arrayNodeStatePhase v1alpha1.ArrayNodePhase
+ arrayNodeStateError *idlcore.ExecutionError
expectedTaskExecutionPhase idlcore.TaskExecution_Phase
+ expectTaskExecutionError bool
}{
{
name: "Aborted after failed",
@@ -219,9 +222,12 @@ func TestAbort(t *testing.T) {
},
subNodePhases: []v1alpha1.NodePhase{v1alpha1.NodePhaseSucceeded, v1alpha1.NodePhaseRunning, v1alpha1.NodePhaseNotYetStarted},
subNodeTaskPhases: []core.Phase{core.PhaseSuccess, core.PhaseRunning, core.PhaseUndefined},
- expectedExternalResourcePhases: []idlcore.TaskExecution_Phase{idlcore.TaskExecution_ABORTED},
- arrayNodeState: v1alpha1.ArrayNodePhaseFailing,
+ expectedExternalResourcePhases: []idlcore.TaskExecution_Phase{idlcore.TaskExecution_SUCCEEDED, idlcore.TaskExecution_ABORTED, idlcore.TaskExecution_UNDEFINED},
+ expectedAbortCalls: 1,
+ arrayNodeStatePhase: v1alpha1.ArrayNodePhaseFailing,
+ arrayNodeStateError: testError,
expectedTaskExecutionPhase: idlcore.TaskExecution_FAILED,
+ expectTaskExecutionError: true,
},
{
name: "Aborted while running",
@@ -230,8 +236,10 @@ func TestAbort(t *testing.T) {
},
subNodePhases: []v1alpha1.NodePhase{v1alpha1.NodePhaseSucceeded, v1alpha1.NodePhaseRunning, v1alpha1.NodePhaseNotYetStarted},
subNodeTaskPhases: []core.Phase{core.PhaseSuccess, core.PhaseRunning, core.PhaseUndefined},
- expectedExternalResourcePhases: []idlcore.TaskExecution_Phase{idlcore.TaskExecution_ABORTED},
- arrayNodeState: v1alpha1.ArrayNodePhaseExecuting,
+ expectedExternalResourcePhases: []idlcore.TaskExecution_Phase{idlcore.TaskExecution_SUCCEEDED, idlcore.TaskExecution_ABORTED, idlcore.TaskExecution_UNDEFINED},
+ expectedAbortCalls: 1,
+ arrayNodeStatePhase: v1alpha1.ArrayNodePhaseExecuting,
+ arrayNodeStateError: testError,
expectedTaskExecutionPhase: idlcore.TaskExecution_ABORTED,
},
}
@@ -266,7 +274,8 @@ func TestAbort(t *testing.T) {
// initialize ArrayNodeState
arrayNodeState := &handler.ArrayNodeState{
- Phase: test.arrayNodeState,
+ Phase: test.arrayNodeStatePhase,
+ Error: test.arrayNodeStateError,
}
for _, item := range []struct {
arrayReference *bitarray.CompactArray
@@ -298,11 +307,17 @@ func TestAbort(t *testing.T) {
err = arrayNodeHandler.Abort(ctx, nCtx, "foo")
assert.NoError(t, err)
- nodeHandler.AssertNumberOfCalls(t, "Abort", len(test.expectedExternalResourcePhases))
+ nodeHandler.AssertNumberOfCalls(t, "Abort", test.expectedAbortCalls)
if len(test.expectedExternalResourcePhases) > 0 {
assert.Equal(t, 1, len(eventRecorder.taskExecutionEvents))
assert.Equal(t, test.expectedTaskExecutionPhase, eventRecorder.taskExecutionEvents[0].GetPhase())
+ if test.expectTaskExecutionError {
+ assert.Equal(t, testError.GetMessage(), eventRecorder.taskExecutionEvents[0].GetError().GetMessage())
+ } else {
+ assert.Nil(t, eventRecorder.taskExecutionEvents[0].GetError())
+ }
+
externalResources := eventRecorder.taskExecutionEvents[0].GetMetadata().GetExternalResources()
assert.Equal(t, len(test.expectedExternalResourcePhases), len(externalResources))
for i, expectedPhase := range test.expectedExternalResourcePhases {
@@ -821,61 +836,6 @@ func TestHandleArrayNodePhaseExecuting(t *testing.T) {
expectedTransitionPhase: handler.EPhaseRunning,
expectedExternalResourcePhases: []idlcore.TaskExecution_Phase{idlcore.TaskExecution_FAILED, idlcore.TaskExecution_SUCCEEDED},
},
- {
- name: "EventingAlreadyExists_EventuallySucceeds",
- parallelism: uint32Ptr(0),
- subNodePhases: []v1alpha1.NodePhase{
- v1alpha1.NodePhaseQueued,
- v1alpha1.NodePhaseQueued,
- },
- subNodeTaskPhases: []core.Phase{
- core.PhaseRunning,
- core.PhaseRunning,
- },
- subNodeTransitions: []handler.Transition{
- handler.DoTransition(handler.TransitionTypeEphemeral, handler.PhaseInfoRunning(&handler.ExecutionInfo{})),
- handler.DoTransition(handler.TransitionTypeEphemeral, handler.PhaseInfoRunning(&handler.ExecutionInfo{})),
- },
- expectedArrayNodePhase: v1alpha1.ArrayNodePhaseExecuting,
- expectedArrayNodeSubPhases: []v1alpha1.NodePhase{
- v1alpha1.NodePhaseRunning,
- v1alpha1.NodePhaseRunning,
- },
- expectedTaskPhaseVersion: 2,
- expectedTransitionPhase: handler.EPhaseRunning,
- expectedExternalResourcePhases: []idlcore.TaskExecution_Phase{idlcore.TaskExecution_RUNNING, idlcore.TaskExecution_RUNNING},
- useFakeEventRecorder: true,
- eventRecorderFailures: 2,
- eventRecorderError: &eventsErr.EventError{Code: eventsErr.AlreadyExists, Cause: fmt.Errorf("err")},
- incrementParallelismCount: 1,
- expectedEventingCalls: 2,
- },
- {
- name: "EventingAlreadyExists_EventuallyFails",
- parallelism: uint32Ptr(0),
- subNodePhases: []v1alpha1.NodePhase{
- v1alpha1.NodePhaseQueued,
- v1alpha1.NodePhaseQueued,
- },
- subNodeTaskPhases: []core.Phase{
- core.PhaseRunning,
- core.PhaseRunning,
- },
- subNodeTransitions: []handler.Transition{
- handler.DoTransition(handler.TransitionTypeEphemeral, handler.PhaseInfoRunning(&handler.ExecutionInfo{})),
- handler.DoTransition(handler.TransitionTypeEphemeral, handler.PhaseInfoRunning(&handler.ExecutionInfo{})),
- },
- expectedArrayNodeSubPhases: []v1alpha1.NodePhase{
- v1alpha1.NodePhaseQueued,
- v1alpha1.NodePhaseQueued,
- },
- expectedExternalResourcePhases: []idlcore.TaskExecution_Phase{idlcore.TaskExecution_RUNNING, idlcore.TaskExecution_RUNNING},
- useFakeEventRecorder: true,
- eventRecorderFailures: 5,
- eventRecorderError: &eventsErr.EventError{Code: eventsErr.AlreadyExists, Cause: fmt.Errorf("err")},
- expectHandleError: true,
- expectedEventingCalls: 4,
- },
{
name: "EventingFails",
parallelism: uint32Ptr(0),
@@ -1236,6 +1196,101 @@ func TestHandleArrayNodePhaseExecutingSubNodeFailures(t *testing.T) {
}
}
+func TestHandleArrayNodePhaseExecutingSubNodeRetryBitArraySizing(t *testing.T) {
+ // Regression test: when the sub-node spec has a RetryStrategy with MinAttempts
+ // higher than config.DefaultMaxAttempts, the bitarray for tracking retry attempts
+ // must be sized to accommodate the sub-node's retry budget. Previously, before #6802,
+ // only the array node's retry strategy was considered for sizing, causing a panic when the
+ // attempt count exceeded the bitarray capacity:
+ // panic: Value [2] is too big. Max value is [1].
+ ctx := context.Background()
+
+ config.GetConfig().NodeConfig.DefaultMaxAttempts = 1
+ config.GetConfig().NodeConfig.MaxNodeRetriesOnSystemFailures = 0
+ config.GetConfig().NodeConfig.IgnoreRetryCause = false
+
+ // The task itself is configured with 3 attempts, the array node
+ // defaults to the config of 1 attempt max
+ subNodeMinAttempts := 3
+ nodeSpec := v1alpha1.NodeSpec{
+ ID: "foo",
+ ArrayNode: &v1alpha1.ArrayNodeSpec{
+ SubNodeSpec: &v1alpha1.NodeSpec{
+ Kind: v1alpha1.NodeKindTask,
+ TaskRef: &taskRef,
+ RetryStrategy: &v1alpha1.RetryStrategy{
+ MinAttempts: &subNodeMinAttempts,
+ },
+ },
+ },
+ }
+
+ inputValues := map[string][]int64{
+ "foo": {1},
+ "bar": {2},
+ }
+ literalMap := convertMapToArrayLiterals(inputValues)
+
+ scope := promutils.NewTestScope()
+ dataStore, err := storage.NewDataStore(&storage.Config{
+ Type: storage.TypeMemory,
+ }, scope)
+ assert.NoError(t, err)
+
+ eventRecorder := newBufferedEventRecorder()
+ arrayNodeState := &handler.ArrayNodeState{
+ Phase: v1alpha1.ArrayNodePhaseNone,
+ }
+ nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, literalMap, &nodeSpec, arrayNodeState, 0, workflowMaxParallelism)
+
+ // initialize ArrayNodeHandler
+ nodeHandler := &mocks.NodeHandler{}
+ nodeHandler.EXPECT().Abort(mock.Anything, mock.Anything, mock.Anything).Return(nil)
+ nodeHandler.EXPECT().Finalize(mock.Anything, mock.Anything).Return(nil)
+ nodeHandler.EXPECT().FinalizeRequired().Return(false)
+ nodeHandler.EXPECT().Handle(mock.Anything, mock.Anything).Return(
+ handler.DoTransition(handler.TransitionTypeEphemeral,
+ handler.PhaseInfoRetryableFailure(idlcore.ExecutionError_USER, "", "", &handler.ExecutionInfo{})),
+ nil,
+ )
+
+ arrayNodeHandler, err := createArrayNodeHandler(ctx, t, nodeHandler, dataStore, scope)
+ assert.NoError(t, err)
+
+ // evaluate node to transition from None to Executing (bitarrays are sized here)
+ _, err = arrayNodeHandler.Handle(ctx, nCtx)
+ assert.NoError(t, err)
+ assert.Equal(t, v1alpha1.ArrayNodePhaseExecuting, arrayNodeState.Phase)
+
+ for i := 0; i < len(arrayNodeState.SubNodePhases.GetItems()); i++ {
+ arrayNodeState.SubNodePhases.SetItem(i, bitarray.Item(v1alpha1.NodePhaseRunning))
+ }
+
+ for i := 0; i < len(arrayNodeState.SubNodeTaskPhases.GetItems()); i++ {
+ arrayNodeState.SubNodeTaskPhases.SetItem(i, bitarray.Item(core.PhaseRunning))
+ }
+
+ // evaluate node until failure - without #6802 this panics because the bitarray for
+ // SubNodeRetryAttempts was only sized for DefaultMaxAttempts (1) but the sub-node's
+ // RetryStrategy in this example allows 3 attempts
+ attempts := 1
+ for i := 0; i < 100; i++ { // safety limit
+ nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, literalMap, &nodeSpec, arrayNodeState, 0, workflowMaxParallelism)
+ _, err = arrayNodeHandler.Handle(ctx, nCtx)
+ assert.NoError(t, err)
+
+ if arrayNodeState.Phase == v1alpha1.ArrayNodePhaseFailing {
+ break
+ }
+
+ if arrayNodeState.SubNodePhases.GetItem(0) == bitarray.Item(v1alpha1.NodePhaseRetryableFailure) {
+ attempts++
+ }
+ }
+
+ assert.Equal(t, subNodeMinAttempts, attempts)
+}
+
func TestHandleArrayNodePhaseSucceeding(t *testing.T) {
ctx := context.Background()
scope := promutils.NewTestScope()
@@ -1295,6 +1350,7 @@ func TestHandleArrayNodePhaseSucceeding(t *testing.T) {
Phase: v1alpha1.ArrayNodePhaseSucceeding,
SubNodePhases: subNodePhases,
SubNodeRetryAttempts: retryAttempts,
+ Error: testError,
}
// create NodeExecutionContext
@@ -1361,6 +1417,7 @@ func TestHandleArrayNodePhaseSucceeding(t *testing.T) {
assert.Equal(t, 1, len(eventRecorder.taskExecutionEvents))
assert.Equal(t, idlcore.TaskExecution_SUCCEEDED, eventRecorder.taskExecutionEvents[0].GetPhase())
+ assert.Nil(t, eventRecorder.taskExecutionEvents[0].GetError())
})
}
}
@@ -1406,6 +1463,7 @@ func TestHandleArrayNodePhaseFailing(t *testing.T) {
// initialize ArrayNodeState
arrayNodeState := &handler.ArrayNodeState{
Phase: v1alpha1.ArrayNodePhaseFailing,
+ Error: testError,
}
for _, item := range []struct {
@@ -1442,6 +1500,7 @@ func TestHandleArrayNodePhaseFailing(t *testing.T) {
assert.Equal(t, 1, len(eventRecorder.taskExecutionEvents))
assert.Equal(t, idlcore.TaskExecution_FAILED, eventRecorder.taskExecutionEvents[0].GetPhase())
+ assert.Equal(t, testError.GetMessage(), eventRecorder.taskExecutionEvents[0].GetError().GetMessage())
})
}
}
diff --git a/flytepropeller/pkg/controller/nodes/array/mocks/array_event_recorder.go b/flytepropeller/pkg/controller/nodes/array/mocks/array_event_recorder.go
index 8f585a87d1a..b88ecc8962c 100644
--- a/flytepropeller/pkg/controller/nodes/array/mocks/array_event_recorder.go
+++ b/flytepropeller/pkg/controller/nodes/array/mocks/array_event_recorder.go
@@ -1,18 +1,14 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- config "github.com/flyteorg/flyte/flytepropeller/pkg/controller/config"
-
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
-
event "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event"
-
+ config "github.com/flyteorg/flyte/flytepropeller/pkg/controller/config"
interfaces "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces"
-
mock "github.com/stretchr/testify/mock"
)
@@ -125,17 +121,17 @@ func (_c *arrayEventRecorder_RecordTaskEvent_Call) RunAndReturn(run func(context
return _c
}
-// finalize provides a mock function with given fields: ctx, nCtx, taskPhase, taskPhaseVersion, eventConfig
-func (_m *arrayEventRecorder) finalize(ctx context.Context, nCtx interfaces.NodeExecutionContext, taskPhase core.TaskExecution_Phase, taskPhaseVersion uint32, eventConfig *config.EventConfig) error {
- ret := _m.Called(ctx, nCtx, taskPhase, taskPhaseVersion, eventConfig)
+// finalize provides a mock function with given fields: ctx, nCtx, taskPhase, taskPhaseVersion, eventConfig, arrayNodeExecutionError
+func (_m *arrayEventRecorder) finalize(ctx context.Context, nCtx interfaces.NodeExecutionContext, taskPhase core.TaskExecution_Phase, taskPhaseVersion uint32, eventConfig *config.EventConfig, arrayNodeExecutionError *core.ExecutionError) error {
+ ret := _m.Called(ctx, nCtx, taskPhase, taskPhaseVersion, eventConfig, arrayNodeExecutionError)
if len(ret) == 0 {
panic("no return value specified for finalize")
}
var r0 error
- if rf, ok := ret.Get(0).(func(context.Context, interfaces.NodeExecutionContext, core.TaskExecution_Phase, uint32, *config.EventConfig) error); ok {
- r0 = rf(ctx, nCtx, taskPhase, taskPhaseVersion, eventConfig)
+ if rf, ok := ret.Get(0).(func(context.Context, interfaces.NodeExecutionContext, core.TaskExecution_Phase, uint32, *config.EventConfig, *core.ExecutionError) error); ok {
+ r0 = rf(ctx, nCtx, taskPhase, taskPhaseVersion, eventConfig, arrayNodeExecutionError)
} else {
r0 = ret.Error(0)
}
@@ -154,13 +150,14 @@ type arrayEventRecorder_finalize_Call struct {
// - taskPhase core.TaskExecution_Phase
// - taskPhaseVersion uint32
// - eventConfig *config.EventConfig
-func (_e *arrayEventRecorder_Expecter) finalize(ctx interface{}, nCtx interface{}, taskPhase interface{}, taskPhaseVersion interface{}, eventConfig interface{}) *arrayEventRecorder_finalize_Call {
- return &arrayEventRecorder_finalize_Call{Call: _e.mock.On("finalize", ctx, nCtx, taskPhase, taskPhaseVersion, eventConfig)}
+// - arrayNodeExecutionError *core.ExecutionError
+func (_e *arrayEventRecorder_Expecter) finalize(ctx interface{}, nCtx interface{}, taskPhase interface{}, taskPhaseVersion interface{}, eventConfig interface{}, arrayNodeExecutionError interface{}) *arrayEventRecorder_finalize_Call {
+ return &arrayEventRecorder_finalize_Call{Call: _e.mock.On("finalize", ctx, nCtx, taskPhase, taskPhaseVersion, eventConfig, arrayNodeExecutionError)}
}
-func (_c *arrayEventRecorder_finalize_Call) Run(run func(ctx context.Context, nCtx interfaces.NodeExecutionContext, taskPhase core.TaskExecution_Phase, taskPhaseVersion uint32, eventConfig *config.EventConfig)) *arrayEventRecorder_finalize_Call {
+func (_c *arrayEventRecorder_finalize_Call) Run(run func(ctx context.Context, nCtx interfaces.NodeExecutionContext, taskPhase core.TaskExecution_Phase, taskPhaseVersion uint32, eventConfig *config.EventConfig, arrayNodeExecutionError *core.ExecutionError)) *arrayEventRecorder_finalize_Call {
_c.Call.Run(func(args mock.Arguments) {
- run(args[0].(context.Context), args[1].(interfaces.NodeExecutionContext), args[2].(core.TaskExecution_Phase), args[3].(uint32), args[4].(*config.EventConfig))
+ run(args[0].(context.Context), args[1].(interfaces.NodeExecutionContext), args[2].(core.TaskExecution_Phase), args[3].(uint32), args[4].(*config.EventConfig), args[5].(*core.ExecutionError))
})
return _c
}
@@ -170,7 +167,7 @@ func (_c *arrayEventRecorder_finalize_Call) Return(_a0 error) *arrayEventRecorde
return _c
}
-func (_c *arrayEventRecorder_finalize_Call) RunAndReturn(run func(context.Context, interfaces.NodeExecutionContext, core.TaskExecution_Phase, uint32, *config.EventConfig) error) *arrayEventRecorder_finalize_Call {
+func (_c *arrayEventRecorder_finalize_Call) RunAndReturn(run func(context.Context, interfaces.NodeExecutionContext, core.TaskExecution_Phase, uint32, *config.EventConfig, *core.ExecutionError) error) *arrayEventRecorder_finalize_Call {
_c.Call.Return(run)
return _c
}
diff --git a/flytepropeller/pkg/controller/nodes/branch/comparator.go b/flytepropeller/pkg/controller/nodes/branch/comparator.go
index b52456ea511..dbaacb26ac3 100644
--- a/flytepropeller/pkg/controller/nodes/branch/comparator.go
+++ b/flytepropeller/pkg/controller/nodes/branch/comparator.go
@@ -1,6 +1,7 @@
package branch
import (
+ "fmt"
"reflect"
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
@@ -79,7 +80,7 @@ func Evaluate(lValue *core.Primitive, rValue *core.Primitive, op core.Comparison
}
comps, ok := perTypeComparators[lValueType.String()]
if !ok {
- return false, errors.Errorf("Comparator not defined for type: [%v]", lValueType.String()) //nolint:govet,staticcheck
+ return false, fmt.Errorf("comparator not defined for type: [%v]", lValueType.String())
}
isBoolean := false
if lValueType.String() == primitiveBooleanType {
diff --git a/flytepropeller/pkg/controller/nodes/branch/evaluator.go b/flytepropeller/pkg/controller/nodes/branch/evaluator.go
index c6d717cfe84..e19f31a793f 100644
--- a/flytepropeller/pkg/controller/nodes/branch/evaluator.go
+++ b/flytepropeller/pkg/controller/nodes/branch/evaluator.go
@@ -136,7 +136,7 @@ func DecideBranch(ctx context.Context, nl executors.NodeLookup, nodeID v1alpha1.
if selectedNodeID == nil {
if node.GetElseFail() != nil {
- return nil, errors.Errorf(ErrorCodeUserProvidedError, node.GetElseFail().GetMessage()) //nolint:govet,staticcheck
+ return nil, errors.Error(ErrorCodeUserProvidedError, node.GetElseFail().GetMessage())
}
return nil, errors.Errorf(ErrorCodeMalformedBranch, "No branch satisfied")
}
diff --git a/flytepropeller/pkg/controller/nodes/branch/handler.go b/flytepropeller/pkg/controller/nodes/branch/handler.go
index ef15af1a427..92f67dcee31 100644
--- a/flytepropeller/pkg/controller/nodes/branch/handler.go
+++ b/flytepropeller/pkg/controller/nodes/branch/handler.go
@@ -123,6 +123,25 @@ func (b *branchHandler) getExecutionContextForDownstream(nCtx interfaces.NodeExe
return executors.NewExecutionContextWithParentInfo(nCtx.ExecutionContext(), newParentInfo), nil
}
+// setupBranchTakenNodePaths sets the DataDir and OutputDir on the branch-taken node's
+// status using the branch node's OutputDir as the base, and returns the computed OutputDir.
+// This must be called before recursing into the branch-taken node so that any nested handler
+// (e.g. a dynamic node) finds the correct paths.
+func (b *branchHandler) setupBranchTakenNodePaths(ctx context.Context, nCtx interfaces.NodeExecutionContext, branchTakenNode v1alpha1.ExecutableNode) (storage.DataReference, error) {
+ childNodeStatus := nCtx.ContextualNodeLookup().GetNodeExecutionStatus(ctx, branchTakenNode.GetID())
+ childDataDir, err := nCtx.DataStore().ConstructReference(ctx, nCtx.NodeStatus().GetOutputDir(), branchTakenNode.GetID())
+ if err != nil {
+ return "", err
+ }
+ childOutputDir, err := nCtx.DataStore().ConstructReference(ctx, childDataDir, strconv.Itoa(int(childNodeStatus.GetAttempts())))
+ if err != nil {
+ return "", err
+ }
+ childNodeStatus.SetDataDir(childDataDir)
+ childNodeStatus.SetOutputDir(childOutputDir)
+ return childOutputDir, nil
+}
+
func (b *branchHandler) recurseDownstream(ctx context.Context, nCtx interfaces.NodeExecutionContext, branchTakenNode v1alpha1.ExecutableNode) (handler.Transition, error) {
// TODO we should replace the call to RecursiveNodeHandler with a call to SingleNode Handler. The inputs are also already known ahead of time
// There is no DAGStructure for the branch nodes, the branch taken node is the leaf node. The node itself may be arbitrarily complex, but in that case the node should reference a subworkflow etc
@@ -133,17 +152,10 @@ func (b *branchHandler) recurseDownstream(ctx context.Context, nCtx interfaces.N
errors.Errorf(errors.IllegalStateError, nCtx.NodeID(), "nodeLookup must be supplied.")
}
- childNodeStatus := nl.GetNodeExecutionStatus(ctx, branchTakenNode.GetID())
- childDataDir, err := nCtx.DataStore().ConstructReference(ctx, nCtx.NodeStatus().GetOutputDir(), branchTakenNode.GetID())
+ childOutputDir, err := b.setupBranchTakenNodePaths(ctx, nCtx, branchTakenNode)
if err != nil {
return handler.UnknownTransition, err
}
- childOutputDir, err := nCtx.DataStore().ConstructReference(ctx, childDataDir, strconv.Itoa(int(childNodeStatus.GetAttempts())))
- if err != nil {
- return handler.UnknownTransition, err
- }
- childNodeStatus.SetDataDir(childDataDir)
- childNodeStatus.SetOutputDir(childOutputDir)
upstreamNodeIds, err := nCtx.ContextualNodeLookup().ToNode(branchTakenNode.GetID())
if err != nil {
return handler.UnknownTransition, err
@@ -172,7 +184,7 @@ func (b *branchHandler) recurseDownstream(ctx context.Context, nCtx interfaces.N
return handler.DoTransition(handler.TransitionTypeEphemeral, phase), nil
}
- if downstreamStatus.HasFailed() {
+ if downstreamStatus.HasFailed() || downstreamStatus.HasTimedOut() {
return handler.DoTransition(handler.TransitionTypeEphemeral, handler.PhaseInfoFailureErr(downstreamStatus.Err, nil)), nil
}
@@ -213,6 +225,9 @@ func (b *branchHandler) Abort(ctx context.Context, nCtx interfaces.NodeExecution
// TODO we should replace the call to RecursiveNodeHandler with a call to SingleNode Handler. The inputs are also already known ahead of time
// There is no DAGStructure for the branch nodes, the branch taken node is the leaf node. The node itself may be arbitrarily complex, but in that case the node should reference a subworkflow etc
// The parent of the BranchTaken Node is the actual Branch Node and all the data is just forwarded from the Branch to the executed node.
+ if _, err := b.setupBranchTakenNodePaths(ctx, nCtx, branchTakenNode); err != nil {
+ return err
+ }
upstreamNodeIds, err := nCtx.ContextualNodeLookup().ToNode(branchTakenNode.GetID())
if err != nil {
return err
@@ -257,6 +272,9 @@ func (b *branchHandler) Finalize(ctx context.Context, nCtx interfaces.NodeExecut
// TODO we should replace the call to RecursiveNodeHandler with a call to SingleNode Handler. The inputs are also already known ahead of time
// There is no DAGStructure for the branch nodes, the branch taken node is the leaf node. The node itself may be arbitrarily complex, but in that case the node should reference a subworkflow etc
// The parent of the BranchTaken Node is the actual Branch Node and all the data is just forwarded from the Branch to the executed node.
+ if _, err := b.setupBranchTakenNodePaths(ctx, nCtx, branchTakenNode); err != nil {
+ return err
+ }
upstreamNodeIds, err := nCtx.ContextualNodeLookup().ToNode(branchTakenNode.GetID())
if err != nil {
return err
diff --git a/flytepropeller/pkg/controller/nodes/branch/handler_test.go b/flytepropeller/pkg/controller/nodes/branch/handler_test.go
index 937e09a2915..a0fd6eac478 100644
--- a/flytepropeller/pkg/controller/nodes/branch/handler_test.go
+++ b/flytepropeller/pkg/controller/nodes/branch/handler_test.go
@@ -181,6 +181,8 @@ func TestBranchHandler_RecurseDownstream(t *testing.T) {
bn, false, handler.EPhaseRunning, v1alpha1.NodePhaseRunning, true, ""},
{"childFailure", interfaces.NodeStatusFailed(expectedError), nil,
bn, false, handler.EPhaseFailed, v1alpha1.NodePhaseFailed, true, ""},
+ {"childTimedOut", interfaces.NodeStatusTimedOut, nil,
+ bn, false, handler.EPhaseFailed, v1alpha1.NodePhaseTimedOut, true, ""},
{"childComplete", interfaces.NodeStatusComplete, nil,
bn, false, handler.EPhaseSuccess, v1alpha1.NodePhaseSucceeded, true, ""},
{"childCompleteNoOutputs", interfaces.NodeStatusComplete, nil,
@@ -334,9 +336,75 @@ func TestBranchHandler_AbortNode(t *testing.T) {
mock.Anything,
mock.Anything, mock.Anything, mock.Anything).Return(nil)
mockNodeLookup.EXPECT().GetNode(*s.s.FinalizedNodeID).Return(n, true)
+ childNodeStatus := &mocks2.ExecutableNodeStatus{}
+ childNodeStatus.EXPECT().GetAttempts().Return(0)
+ childNodeStatus.On("SetDataDir", storage.DataReference("/output-dir/n2")).Once()
+ childNodeStatus.On("SetOutputDir", storage.DataReference("/output-dir/n2/0")).Once()
+ mockNodeLookup.EXPECT().GetNodeExecutionStatus(ctx, n2).Return(childNodeStatus)
branch := New(mockNodeExecutor, eventConfig, promutils.NewTestScope())
err := branch.Abort(ctx, nCtx, "")
assert.NoError(t, err)
+ childNodeStatus.AssertExpectations(t)
+ })
+}
+
+func TestBranchHandler_FinalizeNode(t *testing.T) {
+ ctx := context.TODO()
+ n1 := "n1"
+ n2 := "n2"
+
+ exp, _ := getComparisonExpression(1.0, core.ComparisonExpression_EQ, 1.0)
+ branchNode := &v1alpha1.BranchNodeSpec{
+ If: v1alpha1.IfBlock{
+ Condition: v1alpha1.BooleanExpression{
+ BooleanExpression: &core.BooleanExpression{
+ Expr: &core.BooleanExpression_Comparison{
+ Comparison: exp,
+ },
+ },
+ },
+ ThenNode: &n1,
+ },
+ }
+
+ n := &v1alpha1.NodeSpec{
+ ID: n2,
+ BranchNode: branchNode,
+ }
+
+ t.Run("NoBranchNode", func(t *testing.T) {
+ mockNodeExecutor := &mocks.Node{}
+ eCtx := &execMocks.ExecutionContext{}
+ eCtx.EXPECT().GetParentInfo().Return(nil)
+ nCtx, _ := createNodeContext(v1alpha1.BranchNodeError, nil, n, nil, nil, eCtx)
+ branch := New(mockNodeExecutor, eventConfig, promutils.NewTestScope())
+ err := branch.Finalize(ctx, nCtx)
+ assert.NoError(t, err)
+ })
+
+ t.Run("BranchNodeSuccess", func(t *testing.T) {
+ mockNodeExecutor := &mocks.Node{}
+ mockNodeLookup := &execMocks.NodeLookup{}
+ mockNodeLookup.EXPECT().ToNode(mock.Anything).Return(nil, nil)
+ eCtx := &execMocks.ExecutionContext{}
+ eCtx.EXPECT().GetParentInfo().Return(parentInfo{})
+ nCtx, s := createNodeContext(v1alpha1.BranchNodeSuccess, &n1, n, nil, mockNodeLookup, eCtx)
+ newParentInfo, _ := common.CreateParentInfo(parentInfo{}, nCtx.NodeID(), nCtx.CurrentAttempt(), false)
+ expectedExecContext := executors.NewExecutionContextWithParentInfo(nCtx.ExecutionContext(), newParentInfo)
+ mockNodeExecutor.EXPECT().FinalizeHandler(mock.Anything,
+ mock.MatchedBy(func(e executors.ExecutionContext) bool { return assert.Equal(t, e, expectedExecContext) }),
+ mock.Anything,
+ mock.Anything, mock.Anything).Return(nil)
+ mockNodeLookup.EXPECT().GetNode(*s.s.FinalizedNodeID).Return(n, true)
+ childNodeStatus := &mocks2.ExecutableNodeStatus{}
+ childNodeStatus.EXPECT().GetAttempts().Return(0)
+ childNodeStatus.On("SetDataDir", storage.DataReference("/output-dir/n2")).Once()
+ childNodeStatus.On("SetOutputDir", storage.DataReference("/output-dir/n2/0")).Once()
+ mockNodeLookup.EXPECT().GetNodeExecutionStatus(ctx, n2).Return(childNodeStatus)
+ branch := New(mockNodeExecutor, eventConfig, promutils.NewTestScope())
+ err := branch.Finalize(ctx, nCtx)
+ assert.NoError(t, err)
+ childNodeStatus.AssertExpectations(t)
})
}
diff --git a/flytepropeller/pkg/controller/nodes/catalog/config_flags_test.go b/flytepropeller/pkg/controller/nodes/catalog/config_flags_test.go
index 2e7537e9812..c872c0dd212 100755
--- a/flytepropeller/pkg/controller/nodes/catalog/config_flags_test.go
+++ b/flytepropeller/pkg/controller/nodes/catalog/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytepropeller/pkg/controller/nodes/common/utils.go b/flytepropeller/pkg/controller/nodes/common/utils.go
index 839be0c99f5..95bb0dc8599 100644
--- a/flytepropeller/pkg/controller/nodes/common/utils.go
+++ b/flytepropeller/pkg/controller/nodes/common/utils.go
@@ -109,9 +109,7 @@ func OffloadLargeLiteral(ctx context.Context, datastore *storage.DataStore, data
literalSizeMB := literalSizeBytes / MB
// check if the literal is large
if literalSizeMB >= literalOffloadingConfig.MaxSizeInMBForOffloading {
- errString := fmt.Sprintf("Literal size [%d] MB is larger than the max size [%d] MB for offloading", literalSizeMB, literalOffloadingConfig.MaxSizeInMBForOffloading)
- logger.Errorf(ctx, errString)
- return fmt.Errorf(errString) //nolint:govet,staticcheck
+ return fmt.Errorf("literal size [%d] MB is larger than the max size [%d] MB for offloading", literalSizeMB, literalOffloadingConfig.MaxSizeInMBForOffloading)
}
if literalSizeMB < literalOffloadingConfig.MinSizeInMBForOffloading {
logger.Debugf(ctx, "Literal size [%d] MB is smaller than the min size [%d] MB for offloading", literalSizeMB, literalOffloadingConfig.MinSizeInMBForOffloading)
@@ -120,9 +118,7 @@ func OffloadLargeLiteral(ctx context.Context, datastore *storage.DataStore, data
inferredType := validators.LiteralTypeForLiteral(toBeOffloaded)
if inferredType == nil {
- errString := "Failed to determine literal type for offloaded literal"
- logger.Errorf(ctx, errString)
- return fmt.Errorf(errString) //nolint:govet,staticcheck
+ return fmt.Errorf("failed to determine literal type for offloaded literal")
}
// offload the literal
diff --git a/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow_test.go b/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow_test.go
index b1a14041b0a..68e786df8de 100644
--- a/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow_test.go
+++ b/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow_test.go
@@ -497,7 +497,7 @@ func Test_dynamicNodeHandler_buildContextualDynamicWorkflow_withLaunchPlans(t *t
composedPBStore.EXPECT().WriteRaw(
mock.MatchedBy(func(ctx context.Context) bool { return true }),
storage.DataReference("s3://my-s3-bucket/foo/bar/futures_compiled.pb"),
- int64(1501),
+ int64(1476),
storage.Options{},
mock.MatchedBy(func(rdr *bytes.Reader) bool { return true })).Return(errors.New("foo"))
composedPBStore.EXPECT().WriteProtobuf(
diff --git a/flytepropeller/pkg/controller/nodes/dynamic/handler.go b/flytepropeller/pkg/controller/nodes/dynamic/handler.go
index 20e74b1231b..d97b46d98f6 100644
--- a/flytepropeller/pkg/controller/nodes/dynamic/handler.go
+++ b/flytepropeller/pkg/controller/nodes/dynamic/handler.go
@@ -243,6 +243,12 @@ func (d dynamicNodeTaskNodeHandler) Abort(ctx context.Context, nCtx interfaces.N
if err != nil {
if stdErrors.IsCausedBy(err, utils.ErrorCodeUser) {
logger.Errorf(ctx, "failed to build dynamic workflow, user error: %s", err)
+ // If the dynamic workflow cannot be built because of a user error, i.e. malformed dynamic workflow,
+ // the error is deterministic and there are no nodes that need to be cleaned up as the dynamic worklow
+ // was never able to launch sub nodes.
+ // Returning an error on Abort would be treated as a transient system error that is retried as often as the
+ // system retry budget allows, surfacing the underlying user error only later aftr the system retry budget is exhausted.
+ return nil
}
return err
}
@@ -277,7 +283,15 @@ func (d dynamicNodeTaskNodeHandler) Finalize(ctx context.Context, nCtx interface
logger.Infof(ctx, "Finalizing dynamic workflow RetryAttempt [%d]", nCtx.CurrentAttempt())
dCtx, err := d.buildContextualDynamicWorkflow(ctx, nCtx)
if err != nil {
- errs = append(errs, err)
+ if !stdErrors.IsCausedBy(err, utils.ErrorCodeUser) {
+ // If the dynamic workflow cannot be built because of a user error, i.e. malformed dynamic workflow,
+ // the error is deterministic and there are no nodes that need to be cleaned up as the dynamic worklow
+ // was never able to launch sub nodes.
+ // Including the user error in the errors returned by Finalize would cause a transient system error
+ // that is retried as often as the system retry budget allows, surfacing the underlying user error only
+ // after the system retry budget is exhausted.
+ errs = append(errs, err)
+ }
} else {
if dCtx.isDynamic {
if err := d.nodeExecutor.FinalizeHandler(ctx, dCtx.execContext, dCtx.subWorkflow, dCtx.nodeLookup, dCtx.subWorkflow.StartNode()); err != nil {
diff --git a/flytepropeller/pkg/controller/nodes/dynamic/handler_test.go b/flytepropeller/pkg/controller/nodes/dynamic/handler_test.go
index 843d3ef5bbf..984ce23016d 100644
--- a/flytepropeller/pkg/controller/nodes/dynamic/handler_test.go
+++ b/flytepropeller/pkg/controller/nodes/dynamic/handler_test.go
@@ -822,6 +822,119 @@ func createDynamicJobSpecWithLaunchPlans() *core.DynamicJobSpec {
}
}
+func createNodeContext(t assert.TestingT, ttype string, finalOutput storage.DataReference) *nodeMocks.NodeExecutionContext {
+ ctx := context.TODO()
+ nodeID := "n1"
+ wfExecID := &core.WorkflowExecutionIdentifier{
+ Project: "project",
+ Domain: "domain",
+ Name: "name",
+ }
+
+ nm := &nodeMocks.NodeExecutionMetadata{}
+ nm.EXPECT().GetAnnotations().Return(map[string]string{})
+ nm.EXPECT().GetNodeExecutionID().Return(&core.NodeExecutionIdentifier{
+ ExecutionId: wfExecID,
+ NodeId: nodeID,
+ })
+ nm.EXPECT().GetK8sServiceAccount().Return("service-account")
+ nm.EXPECT().GetLabels().Return(map[string]string{})
+ nm.EXPECT().GetNamespace().Return("namespace")
+ nm.EXPECT().GetOwnerID().Return(types.NamespacedName{Namespace: "namespace", Name: "name"})
+ nm.EXPECT().GetOwnerReference().Return(v1.OwnerReference{
+ Kind: "sample",
+ Name: "name",
+ })
+
+ taskID := &core.Identifier{}
+ tk := &core.TaskTemplate{
+ Id: taskID,
+ Type: "test",
+ Metadata: &core.TaskMetadata{
+ Discoverable: true,
+ },
+ Interface: &core.TypedInterface{
+ Outputs: &core.VariableMap{
+ Variables: map[string]*core.Variable{
+ "x": {
+ Type: &core.LiteralType{
+ Type: &core.LiteralType_Simple{
+ Simple: core.SimpleType_INTEGER,
+ },
+ },
+ },
+ },
+ },
+ },
+ }
+ tr := &nodeMocks.TaskReader{}
+ tr.EXPECT().GetTaskID().Return(taskID)
+ tr.EXPECT().GetTaskType().Return(ttype)
+ tr.EXPECT().Read(ctx).Return(tk, nil)
+
+ n := &flyteMocks.ExecutableNode{}
+ n.EXPECT().GetTaskID().Return(&tID)
+
+ dataStore, err := storage.NewDataStore(&storage.Config{Type: storage.TypeMemory}, promutils.NewTestScope())
+ assert.NoError(t, err)
+
+ ir := &ioMocks.InputReader{}
+ nCtx := &nodeMocks.NodeExecutionContext{}
+ nCtx.EXPECT().NodeExecutionMetadata().Return(nm)
+ nCtx.EXPECT().Node().Return(n)
+ nCtx.EXPECT().InputReader().Return(ir)
+ nCtx.EXPECT().CurrentAttempt().Return(uint32(1))
+ nCtx.EXPECT().TaskReader().Return(tr)
+ nCtx.EXPECT().NodeID().Return(nodeID)
+ nCtx.EXPECT().EnqueueOwnerFunc().Return(func() error { return nil })
+ nCtx.EXPECT().DataStore().Return(dataStore)
+ execContext := executorMocks.ExecutionContext{}
+ execContext.EXPECT().GetEventVersion().Return(v1alpha1.EventVersion0)
+ execContext.EXPECT().GetParentInfo().Return(nil)
+ nCtx.EXPECT().ExecutionContext().Return(&execContext)
+
+ endNodeStatus := &flyteMocks.ExecutableNodeStatus{}
+ endNodeStatus.EXPECT().GetDataDir().Return("end-node")
+ endNodeStatus.EXPECT().GetOutputDir().Return("end-node")
+
+ subNs := &flyteMocks.ExecutableNodeStatus{}
+ subNs.On("SetDataDir", mock.Anything).Return()
+ subNs.On("SetOutputDir", mock.Anything).Return()
+ subNs.On("ResetDirty").Return()
+ subNs.EXPECT().GetOutputDir().Return(finalOutput)
+ subNs.On("SetParentTaskID", mock.Anything).Return()
+ subNs.On("SetParentNodeID", mock.Anything).Return()
+ subNs.EXPECT().GetAttempts().Return(0)
+
+ dynamicNS := &flyteMocks.ExecutableNodeStatus{}
+ dynamicNS.On("SetDataDir", mock.Anything).Return()
+ dynamicNS.On("SetOutputDir", mock.Anything).Return()
+ dynamicNS.On("SetParentTaskID", mock.Anything).Return()
+ dynamicNS.On("SetParentNodeID", mock.Anything).Return()
+ dynamicNS.EXPECT().GetNodeExecutionStatus(ctx, "n1-1-Node_1").Return(subNs)
+ dynamicNS.EXPECT().GetNodeExecutionStatus(ctx, "n1-1-Node_2").Return(subNs)
+ dynamicNS.EXPECT().GetNodeExecutionStatus(ctx, "n1-1-Node_3").Return(subNs)
+ dynamicNS.EXPECT().GetNodeExecutionStatus(ctx, v1alpha1.EndNodeID).Return(endNodeStatus)
+
+ ns := &flyteMocks.ExecutableNodeStatus{}
+ ns.EXPECT().GetDataDir().Return("data-dir")
+ ns.EXPECT().GetOutputDir().Return("output-dir")
+ ns.EXPECT().GetNodeExecutionStatus(ctx, dynamicNodeID).Return(dynamicNS)
+ nCtx.EXPECT().NodeStatus().Return(ns)
+
+ w := &flyteMocks.ExecutableWorkflow{}
+ ws := &flyteMocks.ExecutableWorkflowStatus{}
+ ws.EXPECT().GetNodeExecutionStatus(ctx, nodeID).Return(ns)
+ w.EXPECT().GetExecutionStatus().Return(ws)
+
+ r := &nodeMocks.NodeStateReader{}
+ r.EXPECT().GetDynamicNodeState().Return(handler.DynamicNodeState{
+ Phase: v1alpha1.DynamicNodePhaseExecuting,
+ })
+ nCtx.EXPECT().NodeStateReader().Return(r)
+ return nCtx
+}
+
func TestDynamicNodeTaskNodeHandler_Finalize(t *testing.T) {
ctx := context.TODO()
@@ -845,122 +958,8 @@ func TestDynamicNodeTaskNodeHandler_Finalize(t *testing.T) {
assert.NotZero(t, len(h.ExpectedCalls))
assert.Equal(t, "Finalize", h.ExpectedCalls[0].Method)
})
-
- createNodeContext := func(ttype string, finalOutput storage.DataReference) *nodeMocks.NodeExecutionContext {
- ctx := context.TODO()
- nodeID := "n1"
- wfExecID := &core.WorkflowExecutionIdentifier{
- Project: "project",
- Domain: "domain",
- Name: "name",
- }
-
- nm := &nodeMocks.NodeExecutionMetadata{}
- nm.EXPECT().GetAnnotations().Return(map[string]string{})
- nm.EXPECT().GetNodeExecutionID().Return(&core.NodeExecutionIdentifier{
- ExecutionId: wfExecID,
- NodeId: nodeID,
- })
- nm.EXPECT().GetK8sServiceAccount().Return("service-account")
- nm.EXPECT().GetLabels().Return(map[string]string{})
- nm.EXPECT().GetNamespace().Return("namespace")
- nm.EXPECT().GetOwnerID().Return(types.NamespacedName{Namespace: "namespace", Name: "name"})
- nm.EXPECT().GetOwnerReference().Return(v1.OwnerReference{
- Kind: "sample",
- Name: "name",
- })
-
- taskID := &core.Identifier{}
- tk := &core.TaskTemplate{
- Id: taskID,
- Type: "test",
- Metadata: &core.TaskMetadata{
- Discoverable: true,
- },
- Interface: &core.TypedInterface{
- Outputs: &core.VariableMap{
- Variables: map[string]*core.Variable{
- "x": {
- Type: &core.LiteralType{
- Type: &core.LiteralType_Simple{
- Simple: core.SimpleType_INTEGER,
- },
- },
- },
- },
- },
- },
- }
- tr := &nodeMocks.TaskReader{}
- tr.EXPECT().GetTaskID().Return(taskID)
- tr.EXPECT().GetTaskType().Return(ttype)
- tr.EXPECT().Read(ctx).Return(tk, nil)
-
- n := &flyteMocks.ExecutableNode{}
- n.EXPECT().GetTaskID().Return(&tID)
-
- dataStore, err := storage.NewDataStore(&storage.Config{Type: storage.TypeMemory}, promutils.NewTestScope())
- assert.NoError(t, err)
-
- ir := &ioMocks.InputReader{}
- nCtx := &nodeMocks.NodeExecutionContext{}
- nCtx.EXPECT().NodeExecutionMetadata().Return(nm)
- nCtx.EXPECT().Node().Return(n)
- nCtx.EXPECT().InputReader().Return(ir)
- nCtx.EXPECT().CurrentAttempt().Return(uint32(1))
- nCtx.EXPECT().TaskReader().Return(tr)
- nCtx.EXPECT().NodeID().Return(nodeID)
- nCtx.EXPECT().EnqueueOwnerFunc().Return(func() error { return nil })
- nCtx.EXPECT().DataStore().Return(dataStore)
- execContext := executorMocks.ExecutionContext{}
- execContext.EXPECT().GetEventVersion().Return(v1alpha1.EventVersion0)
- execContext.EXPECT().GetParentInfo().Return(nil)
- nCtx.EXPECT().ExecutionContext().Return(&execContext)
-
- endNodeStatus := &flyteMocks.ExecutableNodeStatus{}
- endNodeStatus.EXPECT().GetDataDir().Return("end-node")
- endNodeStatus.EXPECT().GetOutputDir().Return("end-node")
-
- subNs := &flyteMocks.ExecutableNodeStatus{}
- subNs.On("SetDataDir", mock.Anything).Return()
- subNs.On("SetOutputDir", mock.Anything).Return()
- subNs.On("ResetDirty").Return()
- subNs.EXPECT().GetOutputDir().Return(finalOutput)
- subNs.On("SetParentTaskID", mock.Anything).Return()
- subNs.On("SetParentNodeID", mock.Anything).Return()
- subNs.EXPECT().GetAttempts().Return(0)
-
- dynamicNS := &flyteMocks.ExecutableNodeStatus{}
- dynamicNS.On("SetDataDir", mock.Anything).Return()
- dynamicNS.On("SetOutputDir", mock.Anything).Return()
- dynamicNS.On("SetParentTaskID", mock.Anything).Return()
- dynamicNS.On("SetParentNodeID", mock.Anything).Return()
- dynamicNS.EXPECT().GetNodeExecutionStatus(ctx, "n1-1-Node_1").Return(subNs)
- dynamicNS.EXPECT().GetNodeExecutionStatus(ctx, "n1-1-Node_2").Return(subNs)
- dynamicNS.EXPECT().GetNodeExecutionStatus(ctx, "n1-1-Node_3").Return(subNs)
- dynamicNS.EXPECT().GetNodeExecutionStatus(ctx, v1alpha1.EndNodeID).Return(endNodeStatus)
-
- ns := &flyteMocks.ExecutableNodeStatus{}
- ns.EXPECT().GetDataDir().Return("data-dir")
- ns.EXPECT().GetOutputDir().Return("output-dir")
- ns.EXPECT().GetNodeExecutionStatus(ctx, dynamicNodeID).Return(dynamicNS)
- nCtx.EXPECT().NodeStatus().Return(ns)
-
- w := &flyteMocks.ExecutableWorkflow{}
- ws := &flyteMocks.ExecutableWorkflowStatus{}
- ws.EXPECT().GetNodeExecutionStatus(ctx, nodeID).Return(ns)
- w.EXPECT().GetExecutionStatus().Return(ws)
-
- r := &nodeMocks.NodeStateReader{}
- r.EXPECT().GetDynamicNodeState().Return(handler.DynamicNodeState{
- Phase: v1alpha1.DynamicNodePhaseExecuting,
- })
- nCtx.EXPECT().NodeStateReader().Return(r)
- return nCtx
- }
t.Run("dynamicnodephase-executing", func(t *testing.T) {
-
- nCtx := createNodeContext("test", "x")
+ nCtx := createNodeContext(t, "test", "x")
f, err := nCtx.DataStore().ConstructReference(context.TODO(), nCtx.NodeStatus().GetOutputDir(), "futures.pb")
assert.NoError(t, err)
dj := createDynamicJobSpec()
@@ -981,7 +980,7 @@ func TestDynamicNodeTaskNodeHandler_Finalize(t *testing.T) {
t.Run("dynamicnodephase-executing-parenterror", func(t *testing.T) {
- nCtx := createNodeContext("test", "x")
+ nCtx := createNodeContext(t, "test", "x")
f, err := nCtx.DataStore().ConstructReference(context.TODO(), nCtx.NodeStatus().GetOutputDir(), "futures.pb")
assert.NoError(t, err)
dj := createDynamicJobSpec()
@@ -1002,7 +1001,7 @@ func TestDynamicNodeTaskNodeHandler_Finalize(t *testing.T) {
t.Run("dynamicnodephase-executing-childerror", func(t *testing.T) {
- nCtx := createNodeContext("test", "x")
+ nCtx := createNodeContext(t, "test", "x")
f, err := nCtx.DataStore().ConstructReference(context.TODO(), nCtx.NodeStatus().GetOutputDir(), "futures.pb")
assert.NoError(t, err)
dj := createDynamicJobSpec()
@@ -1020,6 +1019,80 @@ func TestDynamicNodeTaskNodeHandler_Finalize(t *testing.T) {
assert.NotZero(t, len(n.ExpectedCalls))
assert.Equal(t, "FinalizeHandler", n.ExpectedCalls[0].Method)
})
+ t.Run("dynamicnodephase-failing-malformed-dynamic-workflow", func(t *testing.T) {
+
+ nCtx := createNodeContext(t, "test-finalize", "y")
+ f, err := nCtx.DataStore().ConstructReference(context.TODO(), nCtx.NodeStatus().GetOutputDir(), "futures.pb")
+ assert.NoError(t, err)
+
+ malformedDynJobSpec := &core.DynamicJobSpec{
+ Tasks: []*core.TaskTemplate{}, // No tasks defined
+ Nodes: []*core.Node{
+ {
+ Id: "Node_1",
+ Target: &core.Node_TaskNode{
+ TaskNode: &core.TaskNode{
+ Reference: &core.TaskNode_ReferenceId{
+ ReferenceId: &core.Identifier{Name: "non_existent_task"}, // References task that doesn't exist
+ },
+ },
+ },
+ },
+ },
+ }
+
+ assert.NoError(t, nCtx.DataStore().WriteProtobuf(context.TODO(), f, storage.Options{}, malformedDynJobSpec))
+
+ mockLPLauncher := &lpMocks.Reader{}
+ h := &mocks.TaskNodeHandler{}
+ h.EXPECT().Finalize(ctx, nCtx).Return(nil)
+ n := &nodeMocks.Node{}
+ n.EXPECT().FinalizeHandler(ctx, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("err"))
+ d := New(h, n, mockLPLauncher, eventConfig, promutils.NewTestScope())
+
+ // buildContextualDynamicWorkflow returning a user error (malformed dynamic workflow) should not lead
+ // to failure of Finalize
+ assert.NoError(t, d.Finalize(ctx, nCtx))
+ })
+}
+
+func TestDynamicNodeTaskNodeHandler_Abort(t *testing.T) {
+ t.Run("dynamicnodephase-failing-malformed-dynamic-workflow", func(t *testing.T) {
+ ctx := context.TODO()
+
+ nCtx := createNodeContext(t, "test-abort", "y")
+ f, err := nCtx.DataStore().ConstructReference(context.TODO(), nCtx.NodeStatus().GetOutputDir(), "futures.pb")
+ assert.NoError(t, err)
+
+ malformedDynJobSpec := &core.DynamicJobSpec{
+ Tasks: []*core.TaskTemplate{}, // No tasks defined
+ Nodes: []*core.Node{
+ {
+ Id: "Node_1",
+ Target: &core.Node_TaskNode{
+ TaskNode: &core.TaskNode{
+ Reference: &core.TaskNode_ReferenceId{
+ ReferenceId: &core.Identifier{Name: "non_existent_task"}, // References task that doesn't exist
+ },
+ },
+ },
+ },
+ },
+ }
+
+ assert.NoError(t, nCtx.DataStore().WriteProtobuf(context.TODO(), f, storage.Options{}, malformedDynJobSpec))
+
+ mockLPLauncher := &lpMocks.Reader{}
+ h := &mocks.TaskNodeHandler{}
+ h.EXPECT().Abort(ctx, nCtx, "reason").Return(nil)
+ n := &nodeMocks.Node{}
+ n.EXPECT().AbortHandler(ctx, mock.Anything, mock.Anything, mock.Anything, mock.Anything, "reason").Return(fmt.Errorf("err"))
+ d := New(h, n, mockLPLauncher, eventConfig, promutils.NewTestScope())
+
+ // buildContextualDynamicWorkflow returning a user error (malformed dynamic workflow) should not lead
+ // to failure of Abort
+ assert.NoError(t, d.Abort(ctx, nCtx, "reason"))
+ })
}
func init() {
diff --git a/flytepropeller/pkg/controller/nodes/dynamic/mocks/task_node_handler.go b/flytepropeller/pkg/controller/nodes/dynamic/mocks/task_node_handler.go
index a1ac3e43a4a..d6e5cfe014d 100644
--- a/flytepropeller/pkg/controller/nodes/dynamic/mocks/task_node_handler.go
+++ b/flytepropeller/pkg/controller/nodes/dynamic/mocks/task_node_handler.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -7,17 +7,12 @@ import (
catalog "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/catalog"
- handler "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/handler"
-
- interfaces "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces"
-
io "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io"
-
ioutils "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/ioutils"
-
- mock "github.com/stretchr/testify/mock"
-
v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ handler "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/handler"
+ interfaces "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces"
+ mock "github.com/stretchr/testify/mock"
)
// TaskNodeHandler is an autogenerated mock type for the TaskNodeHandler type
@@ -128,7 +123,7 @@ func (_c *TaskNodeHandler_Finalize_Call) RunAndReturn(run func(context.Context,
return _c
}
-// FinalizeRequired provides a mock function with given fields:
+// FinalizeRequired provides a mock function with no fields
func (_m *TaskNodeHandler) FinalizeRequired() bool {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/nodes/executor.go b/flytepropeller/pkg/controller/nodes/executor.go
index 94710ce4309..9ba59313896 100644
--- a/flytepropeller/pkg/controller/nodes/executor.go
+++ b/flytepropeller/pkg/controller/nodes/executor.go
@@ -79,6 +79,7 @@ type nodeMetrics struct {
// Measures the latency between the time a node's been queued to the time the handler reported the executable moved
// to running state
QueuingLatency labeled.StopWatch
+ ParallelismWaitLatency labeled.StopWatch
NodeExecutionTime labeled.StopWatch
NodeInputGatherLatency labeled.StopWatch
@@ -211,6 +212,14 @@ func (c *recursiveNodeExecutor) RecursiveNodeHandler(ctx context.Context, execCo
}
if IsMaxParallelismAchieved(ctx, currentNode, nodePhase, execContext) {
+ parentNodeEndTime, err := GetParentNodeMaxEndTime(ctx, dag, nl, currentNode)
+ if err != nil {
+ logger.Warnf(ctx, "Failed to record parallelism wait latency for node. Error: %s", err.Error())
+ } else {
+ if !parentNodeEndTime.IsZero() {
+ c.metrics.ParallelismWaitLatency.Observe(ctx, parentNodeEndTime.Time, time.Now())
+ }
+ }
return interfaces.NodeStatusRunning, nil
}
@@ -825,7 +834,7 @@ func (c *nodeExecutor) isEligibleForRetry(nCtx interfaces.NodeExecutionContext,
if err.GetKind() == core.ExecutionError_SYSTEM {
currentAttempt = nodeStatus.GetSystemFailures()
maxAttempts = c.maxNodeRetriesForSystemFailures
- isEligible = currentAttempt < c.maxNodeRetriesForSystemFailures
+ isEligible = currentAttempt < maxAttempts
return
}
@@ -1471,6 +1480,7 @@ func NewExecutor(ctx context.Context, nodeConfig config.NodeConfig, store *stora
ResolutionFailure: labeled.NewCounter("input_resolve_fail", "Indicates failure in resolving node inputs", nodeScope),
TransitionLatency: labeled.NewStopWatch("transition_latency", "Measures the latency between the last parent node stoppedAt time and current node's queued time.", time.Millisecond, nodeScope, labeled.EmitUnlabeledMetric),
QueuingLatency: labeled.NewStopWatch("queueing_latency", "Measures the latency between the time a node's been queued to the time the handler reported the executable moved to running state", time.Millisecond, nodeScope, labeled.EmitUnlabeledMetric),
+ ParallelismWaitLatency: labeled.NewStopWatch("parallelism_wait_latency", "Measures the time a node spends waiting for a parallelism slot to become available.", time.Millisecond, nodeScope, labeled.EmitUnlabeledMetric),
NodeExecutionTime: labeled.NewStopWatch("node_exec_latency", "Measures the time taken to execute one node, a node can be complex so it may encompass sub-node latency.", time.Microsecond, nodeScope, labeled.EmitUnlabeledMetric),
NodeInputGatherLatency: labeled.NewStopWatch("node_input_latency", "Measures the latency to aggregate inputs and check readiness of a node", time.Millisecond, nodeScope, labeled.EmitUnlabeledMetric),
catalogHitCount: labeled.NewCounter("discovery_hit_count", "Task cached in Discovery", scope),
diff --git a/flytepropeller/pkg/controller/nodes/gate/mocks/signal_service_client.go b/flytepropeller/pkg/controller/nodes/gate/mocks/signal_service_client.go
index db21197e3a3..2fb03131b4b 100644
--- a/flytepropeller/pkg/controller/nodes/gate/mocks/signal_service_client.go
+++ b/flytepropeller/pkg/controller/nodes/gate/mocks/signal_service_client.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -7,9 +7,8 @@ import (
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
- grpc "google.golang.org/grpc"
-
mock "github.com/stretchr/testify/mock"
+ grpc "google.golang.org/grpc"
)
// SignalServiceClient is an autogenerated mock type for the SignalServiceClient type
diff --git a/flytepropeller/pkg/controller/nodes/interfaces/mocks/cacheable_node_handler.go b/flytepropeller/pkg/controller/nodes/interfaces/mocks/cacheable_node_handler.go
index d62482df7f3..59ae1b48666 100644
--- a/flytepropeller/pkg/controller/nodes/interfaces/mocks/cacheable_node_handler.go
+++ b/flytepropeller/pkg/controller/nodes/interfaces/mocks/cacheable_node_handler.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,11 +6,8 @@ import (
context "context"
catalog "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/catalog"
-
handler "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/handler"
-
interfaces "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces"
-
mock "github.com/stretchr/testify/mock"
)
@@ -122,7 +119,7 @@ func (_c *CacheableNodeHandler_Finalize_Call) RunAndReturn(run func(context.Cont
return _c
}
-// FinalizeRequired provides a mock function with given fields:
+// FinalizeRequired provides a mock function with no fields
func (_m *CacheableNodeHandler) FinalizeRequired() bool {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/nodes/interfaces/mocks/event_recorder.go b/flytepropeller/pkg/controller/nodes/interfaces/mocks/event_recorder.go
index 52cbd1d3613..e6cd5e30238 100644
--- a/flytepropeller/pkg/controller/nodes/interfaces/mocks/event_recorder.go
+++ b/flytepropeller/pkg/controller/nodes/interfaces/mocks/event_recorder.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- config "github.com/flyteorg/flyte/flytepropeller/pkg/controller/config"
-
event "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event"
+ config "github.com/flyteorg/flyte/flytepropeller/pkg/controller/config"
mock "github.com/stretchr/testify/mock"
)
diff --git a/flytepropeller/pkg/controller/nodes/interfaces/mocks/handler_factory.go b/flytepropeller/pkg/controller/nodes/interfaces/mocks/handler_factory.go
index 087ceb10c96..eb20c1fb1c4 100644
--- a/flytepropeller/pkg/controller/nodes/interfaces/mocks/handler_factory.go
+++ b/flytepropeller/pkg/controller/nodes/interfaces/mocks/handler_factory.go
@@ -1,14 +1,13 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
+ v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
interfaces "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces"
mock "github.com/stretchr/testify/mock"
-
- v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
)
// HandlerFactory is an autogenerated mock type for the HandlerFactory type
diff --git a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node.go b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node.go
index 5717013a613..8b2b336e785 100644
--- a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node.go
+++ b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,13 +6,10 @@ import (
context "context"
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
+ v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
executors "github.com/flyteorg/flyte/flytepropeller/pkg/controller/executors"
-
interfaces "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces"
-
mock "github.com/stretchr/testify/mock"
-
- v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
)
// Node is an autogenerated mock type for the Node type
@@ -129,7 +126,7 @@ func (_c *Node_FinalizeHandler_Call) RunAndReturn(run func(context.Context, exec
return _c
}
-// GetNodeExecutionContextBuilder provides a mock function with given fields:
+// GetNodeExecutionContextBuilder provides a mock function with no fields
func (_m *Node) GetNodeExecutionContextBuilder() interfaces.NodeExecutionContextBuilder {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_execution_context.go b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_execution_context.go
index ca7f0390838..5b8d77ca6f5 100644
--- a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_execution_context.go
+++ b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_execution_context.go
@@ -1,20 +1,15 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
- executors "github.com/flyteorg/flyte/flytepropeller/pkg/controller/executors"
- interfaces "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces"
-
io "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io"
-
ioutils "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/ioutils"
-
- mock "github.com/stretchr/testify/mock"
-
- storage "github.com/flyteorg/flyte/flytestdlib/storage"
-
v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
+ executors "github.com/flyteorg/flyte/flytepropeller/pkg/controller/executors"
+ interfaces "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces"
+ storage "github.com/flyteorg/flyte/flytestdlib/storage"
+ mock "github.com/stretchr/testify/mock"
)
// NodeExecutionContext is an autogenerated mock type for the NodeExecutionContext type
@@ -30,7 +25,7 @@ func (_m *NodeExecutionContext) EXPECT() *NodeExecutionContext_Expecter {
return &NodeExecutionContext_Expecter{mock: &_m.Mock}
}
-// ContextualNodeLookup provides a mock function with given fields:
+// ContextualNodeLookup provides a mock function with no fields
func (_m *NodeExecutionContext) ContextualNodeLookup() executors.NodeLookup {
ret := _m.Called()
@@ -77,7 +72,7 @@ func (_c *NodeExecutionContext_ContextualNodeLookup_Call) RunAndReturn(run func(
return _c
}
-// CurrentAttempt provides a mock function with given fields:
+// CurrentAttempt provides a mock function with no fields
func (_m *NodeExecutionContext) CurrentAttempt() uint32 {
ret := _m.Called()
@@ -122,7 +117,7 @@ func (_c *NodeExecutionContext_CurrentAttempt_Call) RunAndReturn(run func() uint
return _c
}
-// DataStore provides a mock function with given fields:
+// DataStore provides a mock function with no fields
func (_m *NodeExecutionContext) DataStore() *storage.DataStore {
ret := _m.Called()
@@ -169,7 +164,7 @@ func (_c *NodeExecutionContext_DataStore_Call) RunAndReturn(run func() *storage.
return _c
}
-// EnqueueOwnerFunc provides a mock function with given fields:
+// EnqueueOwnerFunc provides a mock function with no fields
func (_m *NodeExecutionContext) EnqueueOwnerFunc() func() error {
ret := _m.Called()
@@ -216,7 +211,7 @@ func (_c *NodeExecutionContext_EnqueueOwnerFunc_Call) RunAndReturn(run func() fu
return _c
}
-// EventsRecorder provides a mock function with given fields:
+// EventsRecorder provides a mock function with no fields
func (_m *NodeExecutionContext) EventsRecorder() interfaces.EventRecorder {
ret := _m.Called()
@@ -263,7 +258,7 @@ func (_c *NodeExecutionContext_EventsRecorder_Call) RunAndReturn(run func() inte
return _c
}
-// ExecutionContext provides a mock function with given fields:
+// ExecutionContext provides a mock function with no fields
func (_m *NodeExecutionContext) ExecutionContext() executors.ExecutionContext {
ret := _m.Called()
@@ -310,7 +305,7 @@ func (_c *NodeExecutionContext_ExecutionContext_Call) RunAndReturn(run func() ex
return _c
}
-// InputReader provides a mock function with given fields:
+// InputReader provides a mock function with no fields
func (_m *NodeExecutionContext) InputReader() io.InputReader {
ret := _m.Called()
@@ -357,7 +352,7 @@ func (_c *NodeExecutionContext_InputReader_Call) RunAndReturn(run func() io.Inpu
return _c
}
-// Node provides a mock function with given fields:
+// Node provides a mock function with no fields
func (_m *NodeExecutionContext) Node() v1alpha1.ExecutableNode {
ret := _m.Called()
@@ -404,7 +399,7 @@ func (_c *NodeExecutionContext_Node_Call) RunAndReturn(run func() v1alpha1.Execu
return _c
}
-// NodeExecutionMetadata provides a mock function with given fields:
+// NodeExecutionMetadata provides a mock function with no fields
func (_m *NodeExecutionContext) NodeExecutionMetadata() interfaces.NodeExecutionMetadata {
ret := _m.Called()
@@ -451,7 +446,7 @@ func (_c *NodeExecutionContext_NodeExecutionMetadata_Call) RunAndReturn(run func
return _c
}
-// NodeID provides a mock function with given fields:
+// NodeID provides a mock function with no fields
func (_m *NodeExecutionContext) NodeID() string {
ret := _m.Called()
@@ -496,7 +491,7 @@ func (_c *NodeExecutionContext_NodeID_Call) RunAndReturn(run func() string) *Nod
return _c
}
-// NodeStateReader provides a mock function with given fields:
+// NodeStateReader provides a mock function with no fields
func (_m *NodeExecutionContext) NodeStateReader() interfaces.NodeStateReader {
ret := _m.Called()
@@ -543,7 +538,7 @@ func (_c *NodeExecutionContext_NodeStateReader_Call) RunAndReturn(run func() int
return _c
}
-// NodeStateWriter provides a mock function with given fields:
+// NodeStateWriter provides a mock function with no fields
func (_m *NodeExecutionContext) NodeStateWriter() interfaces.NodeStateWriter {
ret := _m.Called()
@@ -590,7 +585,7 @@ func (_c *NodeExecutionContext_NodeStateWriter_Call) RunAndReturn(run func() int
return _c
}
-// NodeStatus provides a mock function with given fields:
+// NodeStatus provides a mock function with no fields
func (_m *NodeExecutionContext) NodeStatus() v1alpha1.ExecutableNodeStatus {
ret := _m.Called()
@@ -637,7 +632,7 @@ func (_c *NodeExecutionContext_NodeStatus_Call) RunAndReturn(run func() v1alpha1
return _c
}
-// OutputShardSelector provides a mock function with given fields:
+// OutputShardSelector provides a mock function with no fields
func (_m *NodeExecutionContext) OutputShardSelector() ioutils.ShardSelector {
ret := _m.Called()
@@ -684,7 +679,7 @@ func (_c *NodeExecutionContext_OutputShardSelector_Call) RunAndReturn(run func()
return _c
}
-// RawOutputPrefix provides a mock function with given fields:
+// RawOutputPrefix provides a mock function with no fields
func (_m *NodeExecutionContext) RawOutputPrefix() storage.DataReference {
ret := _m.Called()
@@ -729,7 +724,7 @@ func (_c *NodeExecutionContext_RawOutputPrefix_Call) RunAndReturn(run func() sto
return _c
}
-// TaskReader provides a mock function with given fields:
+// TaskReader provides a mock function with no fields
func (_m *NodeExecutionContext) TaskReader() interfaces.TaskReader {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_execution_context_builder.go b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_execution_context_builder.go
index 62062ca5f72..722cf5a55da 100644
--- a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_execution_context_builder.go
+++ b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_execution_context_builder.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -7,7 +7,6 @@ import (
executors "github.com/flyteorg/flyte/flytepropeller/pkg/controller/executors"
interfaces "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces"
-
mock "github.com/stretchr/testify/mock"
)
diff --git a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_execution_metadata.go b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_execution_metadata.go
index 1e673657161..702b153e8a2 100644
--- a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_execution_metadata.go
+++ b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_execution_metadata.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,10 +6,8 @@ import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
mock "github.com/stretchr/testify/mock"
-
- types "k8s.io/apimachinery/pkg/types"
-
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ types "k8s.io/apimachinery/pkg/types"
)
// NodeExecutionMetadata is an autogenerated mock type for the NodeExecutionMetadata type
@@ -25,7 +23,7 @@ func (_m *NodeExecutionMetadata) EXPECT() *NodeExecutionMetadata_Expecter {
return &NodeExecutionMetadata_Expecter{mock: &_m.Mock}
}
-// GetAnnotations provides a mock function with given fields:
+// GetAnnotations provides a mock function with no fields
func (_m *NodeExecutionMetadata) GetAnnotations() map[string]string {
ret := _m.Called()
@@ -72,7 +70,7 @@ func (_c *NodeExecutionMetadata_GetAnnotations_Call) RunAndReturn(run func() map
return _c
}
-// GetConsoleURL provides a mock function with given fields:
+// GetConsoleURL provides a mock function with no fields
func (_m *NodeExecutionMetadata) GetConsoleURL() string {
ret := _m.Called()
@@ -117,7 +115,7 @@ func (_c *NodeExecutionMetadata_GetConsoleURL_Call) RunAndReturn(run func() stri
return _c
}
-// GetInterruptibleFailureThreshold provides a mock function with given fields:
+// GetInterruptibleFailureThreshold provides a mock function with no fields
func (_m *NodeExecutionMetadata) GetInterruptibleFailureThreshold() int32 {
ret := _m.Called()
@@ -162,7 +160,7 @@ func (_c *NodeExecutionMetadata_GetInterruptibleFailureThreshold_Call) RunAndRet
return _c
}
-// GetK8sServiceAccount provides a mock function with given fields:
+// GetK8sServiceAccount provides a mock function with no fields
func (_m *NodeExecutionMetadata) GetK8sServiceAccount() string {
ret := _m.Called()
@@ -207,7 +205,7 @@ func (_c *NodeExecutionMetadata_GetK8sServiceAccount_Call) RunAndReturn(run func
return _c
}
-// GetLabels provides a mock function with given fields:
+// GetLabels provides a mock function with no fields
func (_m *NodeExecutionMetadata) GetLabels() map[string]string {
ret := _m.Called()
@@ -254,7 +252,7 @@ func (_c *NodeExecutionMetadata_GetLabels_Call) RunAndReturn(run func() map[stri
return _c
}
-// GetNamespace provides a mock function with given fields:
+// GetNamespace provides a mock function with no fields
func (_m *NodeExecutionMetadata) GetNamespace() string {
ret := _m.Called()
@@ -299,7 +297,7 @@ func (_c *NodeExecutionMetadata_GetNamespace_Call) RunAndReturn(run func() strin
return _c
}
-// GetNodeExecutionID provides a mock function with given fields:
+// GetNodeExecutionID provides a mock function with no fields
func (_m *NodeExecutionMetadata) GetNodeExecutionID() *core.NodeExecutionIdentifier {
ret := _m.Called()
@@ -346,7 +344,7 @@ func (_c *NodeExecutionMetadata_GetNodeExecutionID_Call) RunAndReturn(run func()
return _c
}
-// GetOwnerID provides a mock function with given fields:
+// GetOwnerID provides a mock function with no fields
func (_m *NodeExecutionMetadata) GetOwnerID() types.NamespacedName {
ret := _m.Called()
@@ -391,7 +389,7 @@ func (_c *NodeExecutionMetadata_GetOwnerID_Call) RunAndReturn(run func() types.N
return _c
}
-// GetOwnerReference provides a mock function with given fields:
+// GetOwnerReference provides a mock function with no fields
func (_m *NodeExecutionMetadata) GetOwnerReference() v1.OwnerReference {
ret := _m.Called()
@@ -436,7 +434,7 @@ func (_c *NodeExecutionMetadata_GetOwnerReference_Call) RunAndReturn(run func()
return _c
}
-// GetSecurityContext provides a mock function with given fields:
+// GetSecurityContext provides a mock function with no fields
func (_m *NodeExecutionMetadata) GetSecurityContext() core.SecurityContext {
ret := _m.Called()
@@ -481,7 +479,7 @@ func (_c *NodeExecutionMetadata_GetSecurityContext_Call) RunAndReturn(run func()
return _c
}
-// IsInterruptible provides a mock function with given fields:
+// IsInterruptible provides a mock function with no fields
func (_m *NodeExecutionMetadata) IsInterruptible() bool {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_executor.go b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_executor.go
index 55c81327d16..f3275929e96 100644
--- a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_executor.go
+++ b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_executor.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -7,7 +7,6 @@ import (
executors "github.com/flyteorg/flyte/flytepropeller/pkg/controller/executors"
interfaces "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces"
-
mock "github.com/stretchr/testify/mock"
)
diff --git a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_handler.go b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_handler.go
index dfc69050b4b..173df6549d6 100644
--- a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_handler.go
+++ b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_handler.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -7,7 +7,6 @@ import (
handler "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/handler"
interfaces "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces"
-
mock "github.com/stretchr/testify/mock"
)
@@ -119,7 +118,7 @@ func (_c *NodeHandler_Finalize_Call) RunAndReturn(run func(context.Context, inte
return _c
}
-// FinalizeRequired provides a mock function with given fields:
+// FinalizeRequired provides a mock function with no fields
func (_m *NodeHandler) FinalizeRequired() bool {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_state_reader.go b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_state_reader.go
index a26cdf4329f..761ba13d852 100644
--- a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_state_reader.go
+++ b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_state_reader.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -21,7 +21,7 @@ func (_m *NodeStateReader) EXPECT() *NodeStateReader_Expecter {
return &NodeStateReader_Expecter{mock: &_m.Mock}
}
-// GetArrayNodeState provides a mock function with given fields:
+// GetArrayNodeState provides a mock function with no fields
func (_m *NodeStateReader) GetArrayNodeState() handler.ArrayNodeState {
ret := _m.Called()
@@ -66,7 +66,7 @@ func (_c *NodeStateReader_GetArrayNodeState_Call) RunAndReturn(run func() handle
return _c
}
-// GetBranchNodeState provides a mock function with given fields:
+// GetBranchNodeState provides a mock function with no fields
func (_m *NodeStateReader) GetBranchNodeState() handler.BranchNodeState {
ret := _m.Called()
@@ -111,7 +111,7 @@ func (_c *NodeStateReader_GetBranchNodeState_Call) RunAndReturn(run func() handl
return _c
}
-// GetDynamicNodeState provides a mock function with given fields:
+// GetDynamicNodeState provides a mock function with no fields
func (_m *NodeStateReader) GetDynamicNodeState() handler.DynamicNodeState {
ret := _m.Called()
@@ -156,7 +156,7 @@ func (_c *NodeStateReader_GetDynamicNodeState_Call) RunAndReturn(run func() hand
return _c
}
-// GetGateNodeState provides a mock function with given fields:
+// GetGateNodeState provides a mock function with no fields
func (_m *NodeStateReader) GetGateNodeState() handler.GateNodeState {
ret := _m.Called()
@@ -201,7 +201,7 @@ func (_c *NodeStateReader_GetGateNodeState_Call) RunAndReturn(run func() handler
return _c
}
-// GetTaskNodeState provides a mock function with given fields:
+// GetTaskNodeState provides a mock function with no fields
func (_m *NodeStateReader) GetTaskNodeState() handler.TaskNodeState {
ret := _m.Called()
@@ -246,7 +246,7 @@ func (_c *NodeStateReader_GetTaskNodeState_Call) RunAndReturn(run func() handler
return _c
}
-// GetWorkflowNodeState provides a mock function with given fields:
+// GetWorkflowNodeState provides a mock function with no fields
func (_m *NodeStateReader) GetWorkflowNodeState() handler.WorkflowNodeState {
ret := _m.Called()
@@ -291,7 +291,7 @@ func (_c *NodeStateReader_GetWorkflowNodeState_Call) RunAndReturn(run func() han
return _c
}
-// HasArrayNodeState provides a mock function with given fields:
+// HasArrayNodeState provides a mock function with no fields
func (_m *NodeStateReader) HasArrayNodeState() bool {
ret := _m.Called()
@@ -336,7 +336,7 @@ func (_c *NodeStateReader_HasArrayNodeState_Call) RunAndReturn(run func() bool)
return _c
}
-// HasBranchNodeState provides a mock function with given fields:
+// HasBranchNodeState provides a mock function with no fields
func (_m *NodeStateReader) HasBranchNodeState() bool {
ret := _m.Called()
@@ -381,7 +381,7 @@ func (_c *NodeStateReader_HasBranchNodeState_Call) RunAndReturn(run func() bool)
return _c
}
-// HasDynamicNodeState provides a mock function with given fields:
+// HasDynamicNodeState provides a mock function with no fields
func (_m *NodeStateReader) HasDynamicNodeState() bool {
ret := _m.Called()
@@ -426,7 +426,7 @@ func (_c *NodeStateReader_HasDynamicNodeState_Call) RunAndReturn(run func() bool
return _c
}
-// HasGateNodeState provides a mock function with given fields:
+// HasGateNodeState provides a mock function with no fields
func (_m *NodeStateReader) HasGateNodeState() bool {
ret := _m.Called()
@@ -471,7 +471,7 @@ func (_c *NodeStateReader_HasGateNodeState_Call) RunAndReturn(run func() bool) *
return _c
}
-// HasTaskNodeState provides a mock function with given fields:
+// HasTaskNodeState provides a mock function with no fields
func (_m *NodeStateReader) HasTaskNodeState() bool {
ret := _m.Called()
@@ -516,7 +516,7 @@ func (_c *NodeStateReader_HasTaskNodeState_Call) RunAndReturn(run func() bool) *
return _c
}
-// HasWorkflowNodeState provides a mock function with given fields:
+// HasWorkflowNodeState provides a mock function with no fields
func (_m *NodeStateReader) HasWorkflowNodeState() bool {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_state_writer.go b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_state_writer.go
index 1fdd329ba4f..597cc20a10e 100644
--- a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_state_writer.go
+++ b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node_state_writer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -21,7 +21,7 @@ func (_m *NodeStateWriter) EXPECT() *NodeStateWriter_Expecter {
return &NodeStateWriter_Expecter{mock: &_m.Mock}
}
-// ClearNodeStatus provides a mock function with given fields:
+// ClearNodeStatus provides a mock function with no fields
func (_m *NodeStateWriter) ClearNodeStatus() {
_m.Called()
}
@@ -49,7 +49,7 @@ func (_c *NodeStateWriter_ClearNodeStatus_Call) Return() *NodeStateWriter_ClearN
}
func (_c *NodeStateWriter_ClearNodeStatus_Call) RunAndReturn(run func()) *NodeStateWriter_ClearNodeStatus_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytepropeller/pkg/controller/nodes/interfaces/mocks/setup_context.go b/flytepropeller/pkg/controller/nodes/interfaces/mocks/setup_context.go
index 92e154e2f5e..fa990258ba6 100644
--- a/flytepropeller/pkg/controller/nodes/interfaces/mocks/setup_context.go
+++ b/flytepropeller/pkg/controller/nodes/interfaces/mocks/setup_context.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *SetupContext) EXPECT() *SetupContext_Expecter {
return &SetupContext_Expecter{mock: &_m.Mock}
}
-// EnqueueOwner provides a mock function with given fields:
+// EnqueueOwner provides a mock function with no fields
func (_m *SetupContext) EnqueueOwner() func(string) {
ret := _m.Called()
@@ -67,7 +67,7 @@ func (_c *SetupContext_EnqueueOwner_Call) RunAndReturn(run func() func(string))
return _c
}
-// MetricsScope provides a mock function with given fields:
+// MetricsScope provides a mock function with no fields
func (_m *SetupContext) MetricsScope() promutils.Scope {
ret := _m.Called()
@@ -114,7 +114,7 @@ func (_c *SetupContext_MetricsScope_Call) RunAndReturn(run func() promutils.Scop
return _c
}
-// OwnerKind provides a mock function with given fields:
+// OwnerKind provides a mock function with no fields
func (_m *SetupContext) OwnerKind() string {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/nodes/interfaces/mocks/task_reader.go b/flytepropeller/pkg/controller/nodes/interfaces/mocks/task_reader.go
index 9b8db1de9f5..1bfa6bef38d 100644
--- a/flytepropeller/pkg/controller/nodes/interfaces/mocks/task_reader.go
+++ b/flytepropeller/pkg/controller/nodes/interfaces/mocks/task_reader.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -23,7 +23,7 @@ func (_m *TaskReader) EXPECT() *TaskReader_Expecter {
return &TaskReader_Expecter{mock: &_m.Mock}
}
-// GetTaskID provides a mock function with given fields:
+// GetTaskID provides a mock function with no fields
func (_m *TaskReader) GetTaskID() *core.Identifier {
ret := _m.Called()
@@ -70,7 +70,7 @@ func (_c *TaskReader_GetTaskID_Call) RunAndReturn(run func() *core.Identifier) *
return _c
}
-// GetTaskType provides a mock function with given fields:
+// GetTaskType provides a mock function with no fields
func (_m *TaskReader) GetTaskType() string {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/nodes/mocks/output_resolver.go b/flytepropeller/pkg/controller/nodes/mocks/output_resolver.go
index c3f15544f96..6b3b5e3d574 100644
--- a/flytepropeller/pkg/controller/nodes/mocks/output_resolver.go
+++ b/flytepropeller/pkg/controller/nodes/mocks/output_resolver.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -7,7 +7,6 @@ import (
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
executors "github.com/flyteorg/flyte/flytepropeller/pkg/controller/executors"
-
mock "github.com/stretchr/testify/mock"
v1alpha1 "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1"
diff --git a/flytepropeller/pkg/controller/nodes/node_exec_context.go b/flytepropeller/pkg/controller/nodes/node_exec_context.go
index 9c477666565..06d794f6ada 100644
--- a/flytepropeller/pkg/controller/nodes/node_exec_context.go
+++ b/flytepropeller/pkg/controller/nodes/node_exec_context.go
@@ -36,9 +36,6 @@ type eventRecorder struct {
func (e eventRecorder) RecordTaskEvent(ctx context.Context, ev *event.TaskExecutionEvent, eventConfig *config.EventConfig) error {
if err := e.taskEventRecorder.RecordTaskEvent(ctx, ev, eventConfig); err != nil {
if eventsErr.IsAlreadyExists(err) {
- if eventConfig.ErrorOnAlreadyExists {
- return err
- }
logger.Warningf(ctx, "Failed to record taskEvent, error [%s]. Trying to record state: %s. Ignoring this error!", err.Error(), ev.GetPhase())
return nil
} else if eventsErr.IsEventAlreadyInTerminalStateError(err) {
diff --git a/flytepropeller/pkg/controller/nodes/recovery/mocks/client.go b/flytepropeller/pkg/controller/nodes/recovery/mocks/client.go
index 8080f73d339..24180d83120 100644
--- a/flytepropeller/pkg/controller/nodes/recovery/mocks/client.go
+++ b/flytepropeller/pkg/controller/nodes/recovery/mocks/client.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,9 +6,7 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
-
mock "github.com/stretchr/testify/mock"
)
diff --git a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/adminconfig_flags_test.go b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/adminconfig_flags_test.go
index 7e4f8f4a67c..4228237579f 100755
--- a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/adminconfig_flags_test.go
+++ b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/adminconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/executor.go b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/executor.go
index 3911556f4c2..36748ca7fc2 100644
--- a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/executor.go
+++ b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/executor.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,11 +6,8 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
-
launchplan "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/subworkflow/launchplan"
-
mock "github.com/stretchr/testify/mock"
)
diff --git a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/flyte_admin.go b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/flyte_admin.go
index 807d09a3383..a640f7ad872 100644
--- a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/flyte_admin.go
+++ b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/flyte_admin.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,11 +6,8 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
-
launchplan "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/subworkflow/launchplan"
-
mock "github.com/stretchr/testify/mock"
)
diff --git a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/reader.go b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/reader.go
index d773e6d6971..987d8b971d3 100644
--- a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/reader.go
+++ b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/reader.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,7 +6,6 @@ import (
context "context"
admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
-
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
mock "github.com/stretchr/testify/mock"
diff --git a/flytepropeller/pkg/controller/nodes/task/config/config_flags_test.go b/flytepropeller/pkg/controller/nodes/task/config/config_flags_test.go
index cc2f0253498..437e02f054d 100755
--- a/flytepropeller/pkg/controller/nodes/task/config/config_flags_test.go
+++ b/flytepropeller/pkg/controller/nodes/task/config/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytepropeller/pkg/controller/nodes/task/event_recorder_test.go b/flytepropeller/pkg/controller/nodes/task/event_recorder_test.go
index 53e17552811..17dc9a70b5c 100644
--- a/flytepropeller/pkg/controller/nodes/task/event_recorder_test.go
+++ b/flytepropeller/pkg/controller/nodes/task/event_recorder_test.go
@@ -3,7 +3,6 @@ package task
import (
"context"
"testing"
- "time"
"github.com/stretchr/testify/assert"
@@ -17,7 +16,7 @@ func TestBufferedEventRecorder(t *testing.T) {
assert.NotNil(t, bev)
assert.Equal(t, bev.GetAll(ctx), []pluginCore.PhaseInfo{})
- ev1 := pluginCore.PhaseInfoInitializing(time.Now(), 0, "starting", nil)
+ ev1 := pluginCore.PhaseInfoInitializing(0, "starting", nil)
assert.NoError(t, bev.RecordRaw(ctx, ev1))
assert.Equal(t, bev.GetAll(ctx), []pluginCore.PhaseInfo{ev1})
diff --git a/flytepropeller/pkg/controller/nodes/task/fakeplugins/next_phase_state_plugin.go b/flytepropeller/pkg/controller/nodes/task/fakeplugins/next_phase_state_plugin.go
index 1586b02155a..9a6aaf008f0 100644
--- a/flytepropeller/pkg/controller/nodes/task/fakeplugins/next_phase_state_plugin.go
+++ b/flytepropeller/pkg/controller/nodes/task/fakeplugins/next_phase_state_plugin.go
@@ -67,13 +67,13 @@ func (n NextPhaseStatePlugin) Handle(ctx context.Context, tCtx pluginCore.TaskEx
case pluginCore.PhaseNotReady:
return pluginCore.DoTransition(pluginCore.PhaseInfoNotReady(time.Now(), s.PhaseVersion, "not-ready")), nil
case pluginCore.PhaseInitializing:
- return pluginCore.DoTransition(pluginCore.PhaseInfoInitializing(time.Now(), s.PhaseVersion, "initializing", s.TaskInfo)), nil
+ return pluginCore.DoTransition(pluginCore.PhaseInfoInitializing(s.PhaseVersion, "initializing", s.TaskInfo)), nil
case pluginCore.PhaseQueued:
return pluginCore.DoTransition(pluginCore.PhaseInfoQueued(time.Now(), s.PhaseVersion, "queued")), nil
case pluginCore.PhaseRunning:
return pluginCore.DoTransition(pluginCore.PhaseInfoRunning(s.PhaseVersion, s.TaskInfo)), nil
case pluginCore.PhaseWaitingForResources:
- return pluginCore.DoTransition(pluginCore.PhaseInfoWaitingForResourcesInfo(time.Now(), s.PhaseVersion, "waiting", nil)), nil
+ return pluginCore.DoTransition(pluginCore.PhaseInfoWaitingForResourcesInfo(s.PhaseVersion, "waiting", nil)), nil
}
return pluginCore.UnknownTransition, nil
}
diff --git a/flytepropeller/pkg/controller/nodes/task/handler.go b/flytepropeller/pkg/controller/nodes/task/handler.go
index c40d5bea014..2cd958780cb 100644
--- a/flytepropeller/pkg/controller/nodes/task/handler.go
+++ b/flytepropeller/pkg/controller/nodes/task/handler.go
@@ -408,12 +408,12 @@ func (t Handler) ResolvePlugin(ctx context.Context, ttype string, executionConfi
return p, nil
}
- if t.connectorService != nil && t.connectorService.ContainTaskType(ttype) {
+ if t.connectorService != nil && t.connectorService.CorePlugin != nil && t.connectorService.ContainTaskType(ttype) {
return t.connectorService.CorePlugin, nil
}
// The agent service plugin is deprecated and will be removed in the future
- if t.agentService != nil && t.agentService.ContainTaskType(ttype) {
+ if t.agentService != nil && t.agentService.CorePlugin != nil && t.agentService.ContainTaskType(ttype) {
return t.agentService.CorePlugin, nil
}
diff --git a/flytepropeller/pkg/controller/nodes/task/k8s/plugin_manager.go b/flytepropeller/pkg/controller/nodes/task/k8s/plugin_manager.go
index bae215536ac..96c6e1e98e8 100644
--- a/flytepropeller/pkg/controller/nodes/task/k8s/plugin_manager.go
+++ b/flytepropeller/pkg/controller/nodes/task/k8s/plugin_manager.go
@@ -23,6 +23,7 @@ import (
"sigs.k8s.io/controller-runtime/pkg/event"
"sigs.k8s.io/controller-runtime/pkg/handler"
"sigs.k8s.io/controller-runtime/pkg/predicate"
+ "sigs.k8s.io/controller-runtime/pkg/reconcile"
"sigs.k8s.io/controller-runtime/pkg/source"
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
@@ -67,12 +68,13 @@ type PluginState struct {
}
type PluginMetrics struct {
- Scope promutils.Scope
- GetCacheMiss labeled.StopWatch
- GetCacheHit labeled.StopWatch
- GetAPILatency labeled.StopWatch
- ResourceDeleted labeled.Counter
- TaskPodErrors *prometheus.CounterVec
+ Scope promutils.Scope
+ GetCacheMiss labeled.StopWatch
+ GetCacheHit labeled.StopWatch
+ GetAPILatency labeled.StopWatch
+ ResourceDeleted labeled.Counter
+ TaskPodErrors *prometheus.CounterVec
+ ClearFinalizersFailures labeled.Counter
}
func newPluginMetrics(s promutils.Scope) PluginMetrics {
@@ -88,6 +90,7 @@ func newPluginMetrics(s promutils.Scope) PluginMetrics {
" called with a deleted resource.", s),
TaskPodErrors: s.MustNewCounterVec("task_pod_errors", "Counts how many times task pods failed in given phase with given code",
"phase", "error_code"),
+ ClearFinalizersFailures: labeled.NewCounter("clear_finalizers_failures", "Counts how many times clearing finalizers failed.", s),
}
}
@@ -211,7 +214,11 @@ func (e *PluginManager) launchResource(ctx context.Context, tCtx pluginsCore.Tas
o, err := e.plugin.BuildResource(ctx, k8sTaskCtx)
if err != nil {
- return pluginsCore.UnknownTransition, err
+ // If the resource cannot be constructed then permanently fail because this does not
+ // depend on any external system so this is not a transient error. Notify the user
+ // immediately so they can fix the task definition.
+ return pluginsCore.DoTransition(pluginsCore.PhaseInfoFailure("FailedToBuildResource",
+ fmt.Sprintf("could not build resource for task: %v", err.Error()), nil)), nil
}
taskTemplate, err := tCtx.TaskReader().Read(ctx)
@@ -248,10 +255,10 @@ func (e *PluginManager) launchResource(ctx context.Context, tCtx pluginsCore.Tas
fmt.Sprintf("requested resources exceed limits: %v", err.Error()), nil)), nil
} else if stdErrors.IsCausedBy(err, errors.BackOffError) {
logger.Warnf(ctx, "Failed to launch job, resource quota exceeded. err: %v", err)
- return pluginsCore.DoTransition(pluginsCore.PhaseInfoWaitingForResourcesInfo(time.Now(), pluginsCore.DefaultPhaseVersion, fmt.Sprintf("Exceeded resourcequota: %s", err.Error()), nil)), nil
+ return pluginsCore.DoTransition(pluginsCore.PhaseInfoWaitingForResourcesInfo(pluginsCore.DefaultPhaseVersion, fmt.Sprintf("Exceeded resourcequota: %s", err.Error()), nil)), nil
} else if e.backOffController == nil && backoff.IsResourceQuotaExceeded(err) {
logger.Warnf(ctx, "Failed to launch job, resource quota exceeded and the operation is not guarded by back-off. err: %v", err)
- return pluginsCore.DoTransition(pluginsCore.PhaseInfoWaitingForResourcesInfo(time.Now(), pluginsCore.DefaultPhaseVersion, fmt.Sprintf("Exceeded resourcequota: %s", err.Error()), nil)), nil
+ return pluginsCore.DoTransition(pluginsCore.PhaseInfoWaitingForResourcesInfo(pluginsCore.DefaultPhaseVersion, fmt.Sprintf("Exceeded resourcequota: %s", err.Error()), nil)), nil
} else if k8serrors.IsForbidden(err) {
return pluginsCore.DoTransition(pluginsCore.PhaseInfoRetryableFailure("RuntimeFailure", err.Error(), nil)), nil
} else if k8serrors.IsBadRequest(err) || k8serrors.IsInvalid(err) {
@@ -475,13 +482,17 @@ func (e PluginManager) Abort(ctx context.Context, tCtx pluginsCore.TaskExecution
// clearFinalizer removes the Flyte finalizer (if it exists) from the k8s resource
func (e *PluginManager) clearFinalizer(ctx context.Context, o client.Object) error {
+ original := o.DeepCopyObject().(client.Object)
+
// Checking for the old finalizer too for backwards compatibility. This should eventually be removed
// Go does short-circuiting and we have to make sure both are removed
finalizerRemoved := controllerutil.RemoveFinalizer(o, finalizer)
oldFinalizerRemoved := controllerutil.RemoveFinalizer(o, oldFinalizer)
if finalizerRemoved || oldFinalizerRemoved {
- err := e.kubeClient.GetClient().Update(ctx, o)
+ // Patch finalizers to reduce conflicts caused by a stale informer cache vs full Update().
+ err := e.kubeClient.GetClient().Patch(ctx, o, client.MergeFrom(original))
if err != nil && !isK8sObjectNotExists(err) {
+ e.metrics.ClearFinalizersFailures.Inc(ctx)
logger.Warningf(ctx, "Failed to clear finalizer for Resource with name: %v/%v. Error: %v",
o.GetNamespace(), o.GetName(), err)
return err
@@ -602,7 +613,51 @@ func NewPluginManager(ctx context.Context, iCtx pluginsCore.SetupContext, entry
}
logger.Infof(ctx, "Initializing K8s plugin [%s]", entry.ID)
- src := source.Kind(iCtx.KubeClient().GetCache(), entry.ResourceToWatch)
+
+ metricsScope := iCtx.MetricsScope().NewSubScope(entry.ID)
+ updateCount := labeled.NewCounter("informer_update", "Update events from informer", metricsScope)
+ droppedUpdateCount := labeled.NewCounter("informer_update_dropped", "Update events from informer that have the same resource version", metricsScope)
+ genericCount := labeled.NewCounter("informer_generic", "Generic events from informer", metricsScope)
+
+ enqueueOwner := iCtx.EnqueueOwner()
+
+ handlers := handler.Funcs{
+ CreateFunc: func(ctx context.Context, evt event.CreateEvent, q2 workqueue.TypedRateLimitingInterface[reconcile.Request]) {
+ logger.Debugf(context.Background(), "Create received for %s, ignoring.", evt.Object.GetName())
+ },
+ UpdateFunc: func(ctx context.Context, evt event.UpdateEvent, q2 workqueue.TypedRateLimitingInterface[reconcile.Request]) {
+ if evt.ObjectNew == nil {
+ logger.Warn(context.Background(), "Received an Update event with nil MetaNew.")
+ } else if evt.ObjectOld == nil || evt.ObjectOld.GetResourceVersion() != evt.ObjectNew.GetResourceVersion() {
+ // attempt to enqueue this tasks owner by retrieving the workfowID from the resource labels
+ newCtx := contextutils.WithNamespace(context.Background(), evt.ObjectNew.GetNamespace())
+
+ workflowID, exists := evt.ObjectNew.GetLabels()[compiler.ExecutionIDLabel]
+ if exists {
+ logger.Debugf(ctx, "Enqueueing owner for updated object [%v/%v]", evt.ObjectNew.GetNamespace(), evt.ObjectNew.GetName())
+ namespacedName := k8stypes.NamespacedName{
+ Name: workflowID,
+ Namespace: evt.ObjectNew.GetNamespace(),
+ }
+
+ if err := enqueueOwner(namespacedName); err != nil {
+ logger.Warnf(context.Background(), "Failed to handle Update event for object [%v]", namespacedName)
+ }
+ updateCount.Inc(newCtx)
+ }
+ } else {
+ newCtx := contextutils.WithNamespace(context.Background(), evt.ObjectNew.GetNamespace())
+ droppedUpdateCount.Inc(newCtx)
+ }
+ },
+ DeleteFunc: func(ctx context.Context, evt event.DeleteEvent, q2 workqueue.TypedRateLimitingInterface[reconcile.Request]) {
+ logger.Debugf(context.Background(), "Delete received for %s, ignoring.", evt.Object.GetName())
+ },
+ GenericFunc: func(ctx context.Context, evt event.GenericEvent, q2 workqueue.TypedRateLimitingInterface[reconcile.Request]) {
+ logger.Debugf(context.Background(), "Generic received for %s, ignoring.", evt.Object.GetName())
+ genericCount.Inc(ctx)
+ },
+ }
workflowParentPredicate := func(o metav1.Object) bool {
if entry.Plugin.GetProperties().DisableInjectOwnerReferences {
@@ -619,72 +674,32 @@ func NewPluginManager(ctx context.Context, iCtx pluginsCore.SetupContext, entry
return false
}
- metricsScope := iCtx.MetricsScope().NewSubScope(entry.ID)
- updateCount := labeled.NewCounter("informer_update", "Update events from informer", metricsScope)
- droppedUpdateCount := labeled.NewCounter("informer_update_dropped", "Update events from informer that have the same resource version", metricsScope)
- genericCount := labeled.NewCounter("informer_generic", "Generic events from informer", metricsScope)
+ predicates := predicate.Funcs{
+ CreateFunc: func(createEvent event.CreateEvent) bool {
+ return false
+ },
+ UpdateFunc: func(updateEvent event.UpdateEvent) bool {
+ // TODO we should filter out events in case there are no updates observed between the old and new?
+ return workflowParentPredicate(updateEvent.ObjectNew)
+ },
+ DeleteFunc: func(deleteEvent event.DeleteEvent) bool {
+ return false
+ },
+ GenericFunc: func(genericEvent event.GenericEvent) bool {
+ return workflowParentPredicate(genericEvent.Object)
+ },
+ }
+
+ src := source.Kind(iCtx.KubeClient().GetCache(), entry.ResourceToWatch, handlers, predicates)
- enqueueOwner := iCtx.EnqueueOwner()
err := src.Start(
ctx,
- // Handlers
- handler.Funcs{
- CreateFunc: func(ctx context.Context, evt event.CreateEvent, q2 workqueue.RateLimitingInterface) {
- logger.Debugf(context.Background(), "Create received for %s, ignoring.", evt.Object.GetName())
- },
- UpdateFunc: func(ctx context.Context, evt event.UpdateEvent, q2 workqueue.RateLimitingInterface) {
- if evt.ObjectNew == nil {
- logger.Warn(context.Background(), "Received an Update event with nil MetaNew.")
- } else if evt.ObjectOld == nil || evt.ObjectOld.GetResourceVersion() != evt.ObjectNew.GetResourceVersion() {
- // attempt to enqueue this tasks owner by retrieving the workfowID from the resource labels
- newCtx := contextutils.WithNamespace(context.Background(), evt.ObjectNew.GetNamespace())
-
- workflowID, exists := evt.ObjectNew.GetLabels()[compiler.ExecutionIDLabel]
- if exists {
- logger.Debugf(ctx, "Enqueueing owner for updated object [%v/%v]", evt.ObjectNew.GetNamespace(), evt.ObjectNew.GetName())
- namespacedName := k8stypes.NamespacedName{
- Name: workflowID,
- Namespace: evt.ObjectNew.GetNamespace(),
- }
-
- if err := enqueueOwner(namespacedName); err != nil {
- logger.Warnf(context.Background(), "Failed to handle Update event for object [%v]", namespacedName)
- }
- updateCount.Inc(newCtx)
- }
- } else {
- newCtx := contextutils.WithNamespace(context.Background(), evt.ObjectNew.GetNamespace())
- droppedUpdateCount.Inc(newCtx)
- }
- },
- DeleteFunc: func(ctx context.Context, evt event.DeleteEvent, q2 workqueue.RateLimitingInterface) {
- logger.Debugf(context.Background(), "Delete received for %s, ignoring.", evt.Object.GetName())
- },
- GenericFunc: func(ctx context.Context, evt event.GenericEvent, q2 workqueue.RateLimitingInterface) {
- logger.Debugf(context.Background(), "Generic received for %s, ignoring.", evt.Object.GetName())
- genericCount.Inc(ctx)
- },
- },
// Queue - configured for high throughput so we very infrequently rate limit node updates
- workqueue.NewNamedRateLimitingQueue(&workqueue.BucketRateLimiter{
+ workqueue.NewTypedRateLimitingQueueWithConfig[reconcile.Request](&workqueue.TypedBucketRateLimiter[reconcile.Request]{
Limiter: rate.NewLimiter(rate.Limit(10000), 10000),
- }, entry.ResourceToWatch.GetObjectKind().GroupVersionKind().Kind),
- // Predicates
- predicate.Funcs{
- CreateFunc: func(createEvent event.CreateEvent) bool {
- return false
- },
- UpdateFunc: func(updateEvent event.UpdateEvent) bool {
- // TODO we should filter out events in case there are no updates observed between the old and new?
- return workflowParentPredicate(updateEvent.ObjectNew)
- },
- DeleteFunc: func(deleteEvent event.DeleteEvent) bool {
- return false
- },
- GenericFunc: func(genericEvent event.GenericEvent) bool {
- return workflowParentPredicate(genericEvent.Object)
- },
- })
+ }, workqueue.TypedRateLimitingQueueConfig[reconcile.Request]{
+ Name: entry.ResourceToWatch.GetObjectKind().GroupVersionKind().Kind,
+ }))
if err != nil {
return nil, err
diff --git a/flytepropeller/pkg/controller/nodes/task/k8s/plugin_manager_test.go b/flytepropeller/pkg/controller/nodes/task/k8s/plugin_manager_test.go
index 07ac46e68d5..0007fac8e83 100644
--- a/flytepropeller/pkg/controller/nodes/task/k8s/plugin_manager_test.go
+++ b/flytepropeller/pkg/controller/nodes/task/k8s/plugin_manager_test.go
@@ -6,7 +6,6 @@ import (
"fmt"
"reflect"
"testing"
- "time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
@@ -769,19 +768,9 @@ func TestPluginManager_Handle_PluginState(t *testing.T) {
},
}
- phaseInfoQueued := pluginsCore.PhaseInfoQueuedWithTaskInfo(time.Now(), pluginStateQueued.K8sPluginState.PhaseVersion, pluginStateQueued.K8sPluginState.Reason, nil)
- phaseInfoQueuedVersion1 := pluginsCore.PhaseInfoQueuedWithTaskInfo(
- time.Now(),
- pluginStateQueuedVersion1.K8sPluginState.PhaseVersion,
- pluginStateQueuedVersion1.K8sPluginState.Reason,
- nil,
- )
- phaseInfoQueuedReasonBar := pluginsCore.PhaseInfoQueuedWithTaskInfo(
- time.Now(),
- pluginStateQueuedReasonBar.K8sPluginState.PhaseVersion,
- pluginStateQueuedReasonBar.K8sPluginState.Reason,
- nil,
- )
+ phaseInfoQueued := pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginStateQueued.K8sPluginState.PhaseVersion, pluginStateQueued.K8sPluginState.Reason, nil)
+ phaseInfoQueuedVersion1 := pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginStateQueuedVersion1.K8sPluginState.PhaseVersion, pluginStateQueuedVersion1.K8sPluginState.Reason, nil)
+ phaseInfoQueuedReasonBar := pluginsCore.PhaseInfoQueuedWithTaskInfo(pluginStateQueuedReasonBar.K8sPluginState.PhaseVersion, pluginStateQueuedReasonBar.K8sPluginState.Reason, nil)
phaseInfoRunning := pluginsCore.PhaseInfoRunning(0, nil)
tests := []struct {
diff --git a/flytepropeller/pkg/controller/nodes/task/k8s/task_exec_context_test.go b/flytepropeller/pkg/controller/nodes/task/k8s/task_exec_context_test.go
index b99c20956df..1121f1b4304 100644
--- a/flytepropeller/pkg/controller/nodes/task/k8s/task_exec_context_test.go
+++ b/flytepropeller/pkg/controller/nodes/task/k8s/task_exec_context_test.go
@@ -56,7 +56,7 @@ func Test_newTaskExecutionMetadata(t *testing.T) {
})
assert.NoError(t, err)
- assert.Equal(t, map[string]string{
+ assert.Equal(t, map[string]string{ //nolint:gosec
"existingKey": "existingValue",
"flyte.secrets/s0": "m4zg54lqhiqce2lzl4txe22voarau12fpe4caitnpfpwwzlzeifg122vnz1f53tfof1ws3tfnvsw34b1ebcu3vs6kzavecq",
}, actual.GetAnnotations())
diff --git a/flytepropeller/pkg/controller/nodes/task/resourcemanager/config/config_flags_test.go b/flytepropeller/pkg/controller/nodes/task/resourcemanager/config/config_flags_test.go
index b7b0bd03f42..173a0a38bad 100755
--- a/flytepropeller/pkg/controller/nodes/task/resourcemanager/config/config_flags_test.go
+++ b/flytepropeller/pkg/controller/nodes/task/resourcemanager/config/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytepropeller/pkg/controller/nodes/task/resourcemanager/mocks/redis_client.go b/flytepropeller/pkg/controller/nodes/task/resourcemanager/mocks/redis_client.go
index 6d2ecb29106..8670c8100f2 100644
--- a/flytepropeller/pkg/controller/nodes/task/resourcemanager/mocks/redis_client.go
+++ b/flytepropeller/pkg/controller/nodes/task/resourcemanager/mocks/redis_client.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *RedisClient) EXPECT() *RedisClient_Expecter {
return &RedisClient_Expecter{mock: &_m.Mock}
}
-// Ping provides a mock function with given fields:
+// Ping provides a mock function with no fields
func (_m *RedisClient) Ping() (string, error) {
ret := _m.Called()
diff --git a/flytepropeller/pkg/controller/nodes/task/secretmanager/config_flags_test.go b/flytepropeller/pkg/controller/nodes/task/secretmanager/config_flags_test.go
index 66a9dffc74d..0221177bf32 100755
--- a/flytepropeller/pkg/controller/nodes/task/secretmanager/config_flags_test.go
+++ b/flytepropeller/pkg/controller/nodes/task/secretmanager/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytepropeller/pkg/controller/nodes/task/transformer_test.go b/flytepropeller/pkg/controller/nodes/task/transformer_test.go
index 2cb885d39f9..91a6f236a75 100644
--- a/flytepropeller/pkg/controller/nodes/task/transformer_test.go
+++ b/flytepropeller/pkg/controller/nodes/task/transformer_test.go
@@ -85,7 +85,7 @@ func TestToTaskExecutionEvent(t *testing.T) {
TaskExecContext: tCtx,
InputReader: in,
OutputWriter: out,
- Info: pluginCore.PhaseInfoWaitingForResourcesInfo(n, 0, "reason", &pluginCore.TaskInfo{
+ Info: pluginCore.PhaseInfoWaitingForResourcesInfo(0, "reason", &pluginCore.TaskInfo{
OccurredAt: &n,
}),
NodeExecutionMetadata: &nodeExecutionMetadata,
@@ -280,7 +280,7 @@ func TestToTaskExecutionEventWithParent(t *testing.T) {
TaskExecContext: tCtx,
InputReader: in,
OutputWriter: out,
- Info: pluginCore.PhaseInfoWaitingForResourcesInfo(n, 0, "reason", &pluginCore.TaskInfo{
+ Info: pluginCore.PhaseInfoWaitingForResourcesInfo(0, "reason", &pluginCore.TaskInfo{
OccurredAt: &n,
}),
NodeExecutionMetadata: &nodeExecutionMetadata,
diff --git a/flytepropeller/pkg/controller/workflow/executor.go b/flytepropeller/pkg/controller/workflow/executor.go
index 93c98f0c8f4..1d5be1b6fb6 100644
--- a/flytepropeller/pkg/controller/workflow/executor.go
+++ b/flytepropeller/pkg/controller/workflow/executor.go
@@ -461,7 +461,7 @@ func (c *workflowExecutor) HandleFlyteWorkflow(ctx context.Context, w *v1alpha1.
case v1alpha1.WorkflowPhaseHandlingFailureNode:
newStatus, err := c.handleFailureNode(ctx, w)
if err != nil {
- return errors.Errorf("failed to handle failure node for workflow [%s], err: [%s]", w.ID, err.Error()) //nolint:govet,staticcheck
+ return fmt.Errorf("failed to handle failure node for workflow [%s]: %w", w.ID, err)
}
failureErr := c.TransitionToPhase(ctx, w.ExecutionID.WorkflowExecutionIdentifier, wStatus, newStatus)
// Ignore ExecutionNotFound and IncompatibleCluster errors to allow graceful failure
diff --git a/flytepropeller/pkg/controller/workflowstore/config_flags_test.go b/flytepropeller/pkg/controller/workflowstore/config_flags_test.go
index ec6a643ecfd..9ab770b409d 100755
--- a/flytepropeller/pkg/controller/workflowstore/config_flags_test.go
+++ b/flytepropeller/pkg/controller/workflowstore/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytepropeller/pkg/controller/workflowstore/mocks/FlyteWorkflow.go b/flytepropeller/pkg/controller/workflowstore/mocks/FlyteWorkflow.go
index bdb9ddd160a..1e78f0a99a2 100644
--- a/flytepropeller/pkg/controller/workflowstore/mocks/FlyteWorkflow.go
+++ b/flytepropeller/pkg/controller/workflowstore/mocks/FlyteWorkflow.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytepropeller/pkg/controller/workflowstore/passthrough.go b/flytepropeller/pkg/controller/workflowstore/passthrough.go
index 55bb0be8254..26951316d6f 100644
--- a/flytepropeller/pkg/controller/workflowstore/passthrough.go
+++ b/flytepropeller/pkg/controller/workflowstore/passthrough.go
@@ -2,9 +2,12 @@ package workflowstore
import (
"context"
+ "errors"
+ "strings"
"time"
"github.com/prometheus/client_golang/prometheus"
+ "go.etcd.io/etcd/api/v3/v3rpc/rpctypes"
kubeerrors "k8s.io/apimachinery/pkg/api/errors"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -64,7 +67,12 @@ func (p *passthroughWorkflowStore) Update(ctx context.Context, workflow *v1alpha
if kubeerrors.IsConflict(err) {
p.metrics.workflowUpdateConflictCount.Inc()
}
- if kubeerrors.IsRequestEntityTooLargeError(err) {
+ // Check for request too large errors from both K8s API server and etcd
+ // We check both the error type and string because the error might lose its type
+ // information when propagated through the Kubernetes API server
+ if kubeerrors.IsRequestEntityTooLargeError(err) ||
+ errors.Is(err, rpctypes.ErrRequestTooLarge) ||
+ strings.Contains(err.Error(), "etcdserver: request is too large") {
p.metrics.workflowTooLarge.Inc()
return nil, ErrWorkflowToLarge
}
diff --git a/flytepropeller/pkg/signals/signal_posix.go b/flytepropeller/pkg/signals/signal_posix.go
index 9a4fc96cca8..24a7bd61c77 100644
--- a/flytepropeller/pkg/signals/signal_posix.go
+++ b/flytepropeller/pkg/signals/signal_posix.go
@@ -1,5 +1,4 @@
//go:build !windows
-// +build !windows
/*
Copyright 2017 The Kubernetes Authors.
diff --git a/flytepropeller/pkg/webhook/config/config.go b/flytepropeller/pkg/webhook/config/config.go
index 71e901ad5b2..f79d236df51 100644
--- a/flytepropeller/pkg/webhook/config/config.go
+++ b/flytepropeller/pkg/webhook/config/config.go
@@ -14,7 +14,7 @@ import (
//go:generate pflags Config --default-var=DefaultConfig
var (
- DefaultConfig = &Config{
+ DefaultConfig = &Config{ //nolint:gosec
SecretName: "flyte-pod-webhook",
ServiceName: "flyte-pod-webhook",
ServicePort: 443,
diff --git a/flytepropeller/pkg/webhook/config/config_flags_test.go b/flytepropeller/pkg/webhook/config/config_flags_test.go
index 613a0f6a3b8..cf138678341 100755
--- a/flytepropeller/pkg/webhook/config/config_flags_test.go
+++ b/flytepropeller/pkg/webhook/config/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytepropeller/pkg/webhook/mocks/global_secret_provider.go b/flytepropeller/pkg/webhook/mocks/global_secret_provider.go
index 79488740eda..57e64c6de7d 100644
--- a/flytepropeller/pkg/webhook/mocks/global_secret_provider.go
+++ b/flytepropeller/pkg/webhook/mocks/global_secret_provider.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytepropeller/pkg/webhook/mocks/mutator.go b/flytepropeller/pkg/webhook/mocks/mutator.go
index b7f57a8d763..579c731def1 100644
--- a/flytepropeller/pkg/webhook/mocks/mutator.go
+++ b/flytepropeller/pkg/webhook/mocks/mutator.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -22,7 +22,7 @@ func (_m *Mutator) EXPECT() *Mutator_Expecter {
return &Mutator_Expecter{mock: &_m.Mock}
}
-// ID provides a mock function with given fields:
+// ID provides a mock function with no fields
func (_m *Mutator) ID() string {
ret := _m.Called()
diff --git a/flytepropeller/pkg/webhook/mocks/secrets_injector.go b/flytepropeller/pkg/webhook/mocks/secrets_injector.go
index 4e38917a085..ec869f81dd3 100644
--- a/flytepropeller/pkg/webhook/mocks/secrets_injector.go
+++ b/flytepropeller/pkg/webhook/mocks/secrets_injector.go
@@ -1,16 +1,13 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
context "context"
- config "github.com/flyteorg/flyte/flytepropeller/pkg/webhook/config"
-
core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
-
+ config "github.com/flyteorg/flyte/flytepropeller/pkg/webhook/config"
mock "github.com/stretchr/testify/mock"
-
v1 "k8s.io/api/core/v1"
)
@@ -94,7 +91,7 @@ func (_c *SecretsInjector_Inject_Call) RunAndReturn(run func(context.Context, *c
return _c
}
-// Type provides a mock function with given fields:
+// Type provides a mock function with no fields
func (_m *SecretsInjector) Type() config.SecretManagerType {
ret := _m.Called()
diff --git a/flytepropeller/pkg/webhook/pod.go b/flytepropeller/pkg/webhook/pod.go
index 9e3a300bf65..f1ebdbaad85 100644
--- a/flytepropeller/pkg/webhook/pod.go
+++ b/flytepropeller/pkg/webhook/pod.go
@@ -55,7 +55,7 @@ const webhookName = "flyte-pod-webhook.flyte.org"
// PodMutator implements controller-runtime WebHook interface.
type PodMutator struct {
- decoder *admission.Decoder
+ decoder admission.Decoder
cfg *config.Config
Mutators []MutatorConfig
}
diff --git a/flytepropeller/pkg/webhook/secrets_test.go b/flytepropeller/pkg/webhook/secrets_test.go
index f1636139e41..48cc9486e26 100644
--- a/flytepropeller/pkg/webhook/secrets_test.go
+++ b/flytepropeller/pkg/webhook/secrets_test.go
@@ -24,7 +24,7 @@ func TestSecretsWebhook_Mutate(t *testing.T) {
podWithAnnotations := &corev1.Pod{
ObjectMeta: v1.ObjectMeta{
- Annotations: map[string]string{
+ Annotations: map[string]string{ //nolint:gosec
"flyte.secrets/s0": "nnsxsorcnv4v623fperca",
},
},
diff --git a/flytepropeller/pkg/webhook/vault_secret_manager_test.go b/flytepropeller/pkg/webhook/vault_secret_manager_test.go
index cd7803d27d9..8b77a5ef970 100644
--- a/flytepropeller/pkg/webhook/vault_secret_manager_test.go
+++ b/flytepropeller/pkg/webhook/vault_secret_manager_test.go
@@ -48,7 +48,7 @@ func RetrieveUUID(annotations map[string]string) string {
func ExpectedKVv1(uuid string) *corev1.Pod {
expected := &corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
- Annotations: map[string]string{
+ Annotations: map[string]string{ //nolint:gosec
"vault.hashicorp.com/agent-inject": "true",
"vault.hashicorp.com/secret-volume-path": "/etc/flyte/secrets",
"vault.hashicorp.com/role": "flyte",
@@ -66,7 +66,7 @@ func ExpectedKVv1(uuid string) *corev1.Pod {
func ExpectedKVv2(uuid string) *corev1.Pod {
expected := &corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
- Annotations: map[string]string{
+ Annotations: map[string]string{ //nolint:gosec
"vault.hashicorp.com/agent-inject": "true",
"vault.hashicorp.com/secret-volume-path": "/etc/flyte/secrets",
"vault.hashicorp.com/role": "flyte",
@@ -84,7 +84,7 @@ func ExpectedKVv2(uuid string) *corev1.Pod {
func ExpectedExtraAnnotation(uuid string) *corev1.Pod {
expected := &corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
- Annotations: map[string]string{
+ Annotations: map[string]string{ //nolint:gosec
"vault.hashicorp.com/agent-inject": "true",
"vault.hashicorp.com/secret-volume-path": "/etc/flyte/secrets",
"vault.hashicorp.com/role": "flyte",
@@ -103,7 +103,7 @@ func ExpectedExtraAnnotation(uuid string) *corev1.Pod {
func ExpectedExistingRoleAnnotation(uuid string) *corev1.Pod {
expected := &corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
- Annotations: map[string]string{
+ Annotations: map[string]string{ //nolint:gosec
"vault.hashicorp.com/agent-inject": "true",
"vault.hashicorp.com/secret-volume-path": "/etc/flyte/secrets",
"vault.hashicorp.com/role": "my-role",
@@ -121,7 +121,7 @@ func ExpectedExistingRoleAnnotation(uuid string) *corev1.Pod {
func ExpectedConfigAnnotation(uuid string) *corev1.Pod {
expected := &corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
- Annotations: map[string]string{
+ Annotations: map[string]string{ //nolint:gosec
"vault.hashicorp.com/agent-inject": "true",
"vault.hashicorp.com/secret-volume-path": "/etc/flyte/secrets",
"vault.hashicorp.com/role": "flyte",
@@ -139,7 +139,7 @@ func ExpectedConfigAnnotation(uuid string) *corev1.Pod {
func ExpectedDB(uuid string) *corev1.Pod {
expected := &corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
- Annotations: map[string]string{
+ Annotations: map[string]string{ //nolint:gosec
"vault.hashicorp.com/agent-inject": "true",
"vault.hashicorp.com/secret-volume-path": "/etc/flyte/secrets",
"vault.hashicorp.com/role": "flyte",
diff --git a/flytepropeller/plugins/loader.go b/flytepropeller/plugins/loader.go
index a2983abb15e..87f03a072b6 100644
--- a/flytepropeller/plugins/loader.go
+++ b/flytepropeller/plugins/loader.go
@@ -5,7 +5,6 @@ import (
// Common place to import all plugins, so that it can be imported by Singlebinary (flytelite) or by propeller main
_ "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/array/awsbatch"
_ "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/array/k8s"
- _ "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/hive"
_ "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/k8s/dask"
_ "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/k8s/kfoperators/mpi"
_ "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/k8s/kfoperators/pytorch"
diff --git a/flytestdlib/.golangci.yml b/flytestdlib/.golangci.yml
index 4ae605454ba..6a885a1c878 100644
--- a/flytestdlib/.golangci.yml
+++ b/flytestdlib/.golangci.yml
@@ -1,31 +1,38 @@
-run:
- skip-dirs:
- - pkg/client
+version: "2"
linters:
- disable-all: true
+ default: none
enable:
- errcheck
- - gosec
- - gci
- goconst
- - goimports
- - gosimple
+ - gosec
- govet
- ineffassign
- misspell
- nakedret
- - staticcheck
- - typecheck
+ - protogetter
- unconvert
- unused
- - protogetter
-linters-settings:
- gci:
- custom-order: true
- sections:
- - standard
- - default
- - prefix(github.com/flyteorg)
- skip-generated: true
- goconst:
- ignore-tests: true
+ exclusions:
+ generated: lax
+ presets:
+ - comments
+ - common-false-positives
+ - legacy
+ - std-error-handling
+ rules:
+ - linters:
+ - goconst
+ path: (.+)_test\.go
+formatters:
+ enable:
+ - gci
+ - goimports
+ settings:
+ gci:
+ sections:
+ - standard
+ - default
+ - prefix(github.com/flyteorg)
+ custom-order: true
+ exclusions:
+ generated: lax
\ No newline at end of file
diff --git a/flytestdlib/cache/in_memory_auto_refresh.go b/flytestdlib/cache/in_memory_auto_refresh.go
index c3072f5b268..887e5afd265 100644
--- a/flytestdlib/cache/in_memory_auto_refresh.go
+++ b/flytestdlib/cache/in_memory_auto_refresh.go
@@ -291,7 +291,7 @@ func (w *InMemoryAutoRefresh) enqueueBatches(ctx context.Context) error {
for _, batch := range batches {
b := batch
w.workqueue.AddRateLimited(&b)
- for i := 1; i < len(b); i++ {
+ for i := 0; i < len(b); i++ {
w.processing.Store(b[i].GetID(), w.clock.Now())
}
}
diff --git a/flytestdlib/cache/in_memory_auto_refresh_test.go b/flytestdlib/cache/in_memory_auto_refresh_test.go
index 869c79fd8ed..2c13cea0983 100644
--- a/flytestdlib/cache/in_memory_auto_refresh_test.go
+++ b/flytestdlib/cache/in_memory_auto_refresh_test.go
@@ -342,3 +342,86 @@ func TestInProcessing(t *testing.T) {
_, found := cache.processing.Load("test1")
assert.False(t, found)
}
+
+func TestFirstItemInBatchMarkedAsProcessing(t *testing.T) {
+ testResyncPeriod := 10 * time.Millisecond
+ rateLimiter := workqueue.DefaultControllerRateLimiter()
+ fakeClock := testingclock.NewFakeClock(time.Now())
+
+ t.Run("single item batch - first item should be marked as processing", func(t *testing.T) {
+ cache, err := NewInMemoryAutoRefresh("fake_single", syncFakeItem, rateLimiter, testResyncPeriod, 1, 10, promutils.NewTestScope(), WithClock(fakeClock), WithSyncOnCreate(false))
+ assert.NoError(t, err)
+
+ ctx, cancel := context.WithCancel(context.Background())
+ assert.NoError(t, cache.Start(ctx))
+ defer cancel()
+
+ assert.Eventually(t, func() bool { return cache.enqueueLoopRunning.Load() }, time.Second, time.Millisecond)
+
+ // Create a single item
+ itemID := "single_item"
+ _, err = cache.GetOrCreate(itemID, fakeCacheItem{val: 0})
+ assert.NoError(t, err)
+
+ fakeClock.Step(testResyncPeriod)
+
+ // Wait for the item to be enqueued and marked as processing
+ assert.Eventually(t, func() bool {
+ return cache.inProcessing(itemID)
+ }, time.Second, time.Millisecond, "First (and only) item in single-item batch should be marked as processing")
+
+ // Verify the processing map contains the item
+ _, found := cache.processing.Load(itemID)
+ assert.True(t, found, "Item should be in processing map")
+ })
+
+ t.Run("multi-item batch - all items should be marked as processing", func(t *testing.T) {
+ // Custom batch function that creates batches of 3 items
+ createBatches := func(_ context.Context, snapshot []ItemWrapper) ([]Batch, error) {
+ if len(snapshot) == 0 {
+ return []Batch{}, nil
+ }
+ batches := []Batch{{}}
+ for i, item := range snapshot {
+ batches[0] = append(batches[0], item)
+ if (i+1)%3 == 0 && i < len(snapshot)-1 {
+ batches = append(batches, Batch{})
+ }
+ }
+ return batches, nil
+ }
+
+ cache, err := NewInMemoryAutoRefresh("fake_multi", syncFakeItem, rateLimiter, testResyncPeriod, 1, 10, promutils.NewTestScope(), WithClock(fakeClock), WithCreateBatchesFunc(createBatches), WithSyncOnCreate(false))
+ assert.NoError(t, err)
+
+ ctx, cancel := context.WithCancel(context.Background())
+ assert.NoError(t, cache.Start(ctx))
+ defer cancel()
+
+ assert.Eventually(t, func() bool { return cache.enqueueLoopRunning.Load() }, time.Second, time.Millisecond)
+
+ // Create 3 items that will be batched together
+ itemIDs := []string{"item_0", "item_1", "item_2"}
+ for _, id := range itemIDs {
+ _, err = cache.GetOrCreate(id, fakeCacheItem{val: 0})
+ assert.NoError(t, err)
+ }
+
+ // Trigger the enqueue loop
+ fakeClock.Step(testResyncPeriod)
+
+ // Wait for all items to be marked as processing
+ for _, id := range itemIDs {
+ assert.Eventually(t, func() bool {
+ return cache.inProcessing(id)
+ }, time.Second, time.Millisecond, "Item %s should be marked as processing", id)
+ }
+
+ // Verify the processing map contains all items
+ for i, id := range itemIDs {
+ _, found := cache.processing.Load(id)
+ assert.True(t, found, "Item at index %d (id=%s) should be in processing map", i, id)
+ }
+ })
+
+}
diff --git a/flytestdlib/cache/mocks/AutoRefresh.go b/flytestdlib/cache/mocks/AutoRefresh.go
index 3bdc8b17fc1..f8a420d98f1 100644
--- a/flytestdlib/cache/mocks/AutoRefresh.go
+++ b/flytestdlib/cache/mocks/AutoRefresh.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,7 +6,6 @@ import (
context "context"
cache "github.com/flyteorg/flyte/flytestdlib/cache"
-
mock "github.com/stretchr/testify/mock"
)
diff --git a/flytestdlib/cache/mocks/CreateBatchesFunc.go b/flytestdlib/cache/mocks/CreateBatchesFunc.go
index 3c3685df918..e163a5493ad 100644
--- a/flytestdlib/cache/mocks/CreateBatchesFunc.go
+++ b/flytestdlib/cache/mocks/CreateBatchesFunc.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,7 +6,6 @@ import (
context "context"
cache "github.com/flyteorg/flyte/flytestdlib/cache"
-
mock "github.com/stretchr/testify/mock"
)
diff --git a/flytestdlib/cache/mocks/Item.go b/flytestdlib/cache/mocks/Item.go
index 58360f0e07a..c2a9eab2920 100644
--- a/flytestdlib/cache/mocks/Item.go
+++ b/flytestdlib/cache/mocks/Item.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *Item) EXPECT() *Item_Expecter {
return &Item_Expecter{mock: &_m.Mock}
}
-// IsTerminal provides a mock function with given fields:
+// IsTerminal provides a mock function with no fields
func (_m *Item) IsTerminal() bool {
ret := _m.Called()
diff --git a/flytestdlib/cache/mocks/ItemWrapper.go b/flytestdlib/cache/mocks/ItemWrapper.go
index bb0b49923f1..1ddacbb5191 100644
--- a/flytestdlib/cache/mocks/ItemWrapper.go
+++ b/flytestdlib/cache/mocks/ItemWrapper.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -20,7 +20,7 @@ func (_m *ItemWrapper) EXPECT() *ItemWrapper_Expecter {
return &ItemWrapper_Expecter{mock: &_m.Mock}
}
-// GetID provides a mock function with given fields:
+// GetID provides a mock function with no fields
func (_m *ItemWrapper) GetID() string {
ret := _m.Called()
@@ -65,7 +65,7 @@ func (_c *ItemWrapper_GetID_Call) RunAndReturn(run func() string) *ItemWrapper_G
return _c
}
-// GetItem provides a mock function with given fields:
+// GetItem provides a mock function with no fields
func (_m *ItemWrapper) GetItem() cache.Item {
ret := _m.Called()
diff --git a/flytestdlib/cache/mocks/Option.go b/flytestdlib/cache/mocks/Option.go
index 88e52b5bf90..0a586430fa3 100644
--- a/flytestdlib/cache/mocks/Option.go
+++ b/flytestdlib/cache/mocks/Option.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -49,7 +49,7 @@ func (_c *Option_Execute_Call) Return() *Option_Execute_Call {
}
func (_c *Option_Execute_Call) RunAndReturn(run func(*cache.Options)) *Option_Execute_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytestdlib/cache/mocks/SyncFunc.go b/flytestdlib/cache/mocks/SyncFunc.go
index 945e9cbdb83..9715f70771d 100644
--- a/flytestdlib/cache/mocks/SyncFunc.go
+++ b/flytestdlib/cache/mocks/SyncFunc.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,7 +6,6 @@ import (
context "context"
cache "github.com/flyteorg/flyte/flytestdlib/cache"
-
mock "github.com/stretchr/testify/mock"
)
diff --git a/flytestdlib/cli/pflags/api/generator.go b/flytestdlib/cli/pflags/api/generator.go
index e281cb0c4d3..7588ac8dcd2 100644
--- a/flytestdlib/cli/pflags/api/generator.go
+++ b/flytestdlib/cli/pflags/api/generator.go
@@ -179,7 +179,10 @@ func pflagValueTypesToList(m map[string]PFlagValueType) []PFlagValueType {
// met; encountered a basic type (e.g. string, int... etc.) or the field type implements UnmarshalJSON.
// If passed a non-empty defaultValueAccessor, it'll be used to fill in default values instead of any default value
// specified in pflag tag.
-func discoverFieldsRecursive(ctx context.Context, workingDirPkg string, typ *types.Named, defaultValueAccessor, fieldPath string, bindDefaultVar bool) ([]FieldInfo, []PFlagValueType, error) {
+func discoverFieldsRecursive(ctx context.Context, workingDirPkg string, typ interface {
+ Obj() *types.TypeName
+ Underlying() types.Type
+}, defaultValueAccessor, fieldPath string, bindDefaultVar bool) ([]FieldInfo, []PFlagValueType, error) {
logger.Printf(ctx, "Finding all fields in [%v.%v.%v]",
typ.Obj().Pkg().Path(), typ.Obj().Pkg().Name(), typ.Obj().Name())
@@ -235,9 +238,109 @@ func discoverFieldsRecursive(ctx context.Context, workingDirPkg string, typ *typ
}
addField(typ, f)
+ case *types.Alias:
+ // For alias types, they will show up as Alias but their underlying type will be basic.
+ if b, isBasic := t.Underlying().(*types.Basic); isBasic {
+ f, err := buildBasicField(ctx, tag, b, defaultValueAccessor, fieldPath, variable, false, false, isPtr, bindDefaultVar, nil)
+ if err != nil {
+ return fields, pflagValueTypesToList(pflagValueTypes), err
+ }
+
+ addField(typ, f)
+ break
+ }
+
+ if _, isStruct := t.Underlying().(*types.Struct); !isStruct {
+ // TODO: Add a more descriptive error message.
+ return nil, []PFlagValueType{}, fmt.Errorf("invalid type. it must be struct, received [%v] for field [%v]", t.Underlying().String(), tag.Name)
+ }
+
+ // If the type has json unmarshaler, then stop the recursion and assume the type is string. config package
+ // will use json unmarshaler to fill in the final config object.
+ jsonUnmarshaler := isJSONUnmarshaler(t)
+
+ defaultValue := tag.DefaultValue
+ bindDefaultVarForField := bindDefaultVar
+ testValue := defaultValue
+ if len(defaultValueAccessor) > 0 {
+ defaultValue = appendAccessors(defaultValueAccessor, fieldPath, variable.Name())
+
+ if isStringer(t) {
+ if !bindDefaultVar {
+ defaultValue = defaultValue + ".String()"
+ testValue = defaultValue
+ } else {
+ testValue = defaultValue + ".String()"
+ }
+
+ // Don't do anything, we will generate PFlagValue implementation to use this.
+ } else if isJSONMarshaler(t) {
+ logger.Infof(ctx, "Field [%v] of type [%v] does not implement Stringer interface."+
+ " Will use %s.mustMarshalJSON() to get its default value.", defaultValueAccessor, variable.Name(), t.String())
+ defaultValue = fmt.Sprintf("%s.mustMarshalJSON(%s)", defaultValueAccessor, defaultValue)
+ bindDefaultVarForField = false
+ testValue = defaultValue
+ } else {
+ logger.Infof(ctx, "Field [%v] of type [%v] does not implement Stringer interface."+
+ " Will use %s.mustMarshalJSON() to get its default value.", defaultValueAccessor, variable.Name(), t.String())
+ defaultValue = fmt.Sprintf("%s.mustJsonMarshal(%s)", defaultValueAccessor, defaultValue)
+ bindDefaultVarForField = false
+ testValue = defaultValue
+ }
+ }
+
+ if len(testValue) == 0 {
+ testValue = `"1"`
+ }
+
+ logger.Infof(ctx, "[%v] is of an Alias type (struct) with default value [%v].", tag.Name, tag.DefaultValue)
+
+ if jsonUnmarshaler {
+ logger.Infof(logger.WithIndent(ctx, indent), "Type is json unmarshallable.")
+
+ addField(typ, FieldInfo{
+ Name: tag.Name,
+ GoName: variable.Name(),
+ Typ: types.Typ[types.String],
+ FlagMethodName: "String",
+ TestFlagMethodName: "String",
+ DefaultValue: defaultValue,
+ UsageString: tag.Usage,
+ TestValue: testValue,
+ TestStrategy: JSON,
+ ShouldBindDefault: bindDefaultVarForField,
+ LocalTypeName: t.Obj().Name(),
+ })
+ } else {
+ logger.Infof(ctx, "Traversing fields in type.")
+
+ nested, otherPflagValueTypes, err := discoverFieldsRecursive(logger.WithIndent(ctx, indent), workingDirPkg, t, defaultValueAccessor, appendAccessors(fieldPath, variable.Name()), bindDefaultVar)
+ if err != nil {
+ return nil, []PFlagValueType{}, err
+ }
+
+ for _, subField := range nested {
+ addField(subField.Typ, FieldInfo{
+ Name: fmt.Sprintf("%v.%v", tag.Name, subField.Name),
+ GoName: fmt.Sprintf("%v.%v", variable.Name(), subField.GoName),
+ Typ: subField.Typ,
+ FlagMethodName: subField.FlagMethodName,
+ TestFlagMethodName: subField.TestFlagMethodName,
+ DefaultValue: subField.DefaultValue,
+ UsageString: subField.UsageString,
+ TestValue: subField.TestValue,
+ TestStrategy: subField.TestStrategy,
+ ShouldBindDefault: bindDefaultVar,
+ LocalTypeName: subField.LocalTypeName,
+ })
+ }
+
+ for _, vType := range otherPflagValueTypes {
+ pflagValueTypes[vType.Name] = vType
+ }
+ }
case *types.Named:
- // For type aliases/named types (e.g. `type Foo int`), they will show up as Named but their underlying type
- // will be basic.
+ // For named types, they will show up as Named but their underlying type will be basic.
if _, isBasic := t.Underlying().(*types.Basic); isBasic {
logger.Debugf(ctx, "type [%v] is a named basic type. Using buildNamedBasicField to generate it.", t.Obj().Name())
f, err := buildNamedBasicField(ctx, workingDirPkg, tag, t, defaultValueAccessor, fieldPath, variable, isPtr, bindDefaultVar)
@@ -295,7 +398,7 @@ func discoverFieldsRecursive(ctx context.Context, workingDirPkg string, typ *typ
logger.Infof(ctx, "[%v] is of a Named type (struct) with default value [%v].", tag.Name, tag.DefaultValue)
if jsonUnmarshaler {
- logger.Infof(logger.WithIndent(ctx, indent), "Type is json unmarhslalable.")
+ logger.Infof(logger.WithIndent(ctx, indent), "Type is json unmarshallable.")
addField(typ, FieldInfo{
Name: tag.Name,
diff --git a/flytestdlib/cli/pflags/api/generator_test.go b/flytestdlib/cli/pflags/api/generator_test.go
index eb1e63ec4d7..4ecf1e7b764 100644
--- a/flytestdlib/cli/pflags/api/generator_test.go
+++ b/flytestdlib/cli/pflags/api/generator_test.go
@@ -109,8 +109,8 @@ func TestNewGenerator(t *testing.T) {
}
if *update {
- assert.NoError(t, os.WriteFile(goldenFilePath, codeBytes, os.ModePerm)) // #nosec G306
- assert.NoError(t, os.WriteFile(goldenTestFilePath, testBytes, os.ModePerm)) // #nosec G306
+ assert.NoError(t, os.WriteFile(goldenFilePath, codeBytes, os.ModePerm)) //nolint:gosec
+ assert.NoError(t, os.WriteFile(goldenTestFilePath, testBytes, os.ModePerm)) //nolint:gosec
}
goldenOutput, err := os.ReadFile(filepath.Clean(goldenFilePath))
diff --git a/flytestdlib/cli/pflags/api/templates.go b/flytestdlib/cli/pflags/api/templates.go
index f486ee45414..c265eb5870b 100644
--- a/flytestdlib/cli/pflags/api/templates.go
+++ b/flytestdlib/cli/pflags/api/templates.go
@@ -98,7 +98,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
{{- range $path, $name := .Imports}}
{{$name}} "{{$path}}"
diff --git a/flytestdlib/cli/pflags/api/testdata/testtype_bind_test.go b/flytestdlib/cli/pflags/api/testdata/testtype_bind_test.go
index 6aeacdaab78..b51fa61ebc0 100755
--- a/flytestdlib/cli/pflags/api/testdata/testtype_bind_test.go
+++ b/flytestdlib/cli/pflags/api/testdata/testtype_bind_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytestdlib/cli/pflags/api/testdata/testtype_test.go b/flytestdlib/cli/pflags/api/testdata/testtype_test.go
index f59d0a2454c..a996cbd2838 100755
--- a/flytestdlib/cli/pflags/api/testdata/testtype_test.go
+++ b/flytestdlib/cli/pflags/api/testdata/testtype_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytestdlib/cli/pflags/api/utils.go b/flytestdlib/cli/pflags/api/utils.go
index 47e3df9b1d9..2cb66745796 100644
--- a/flytestdlib/cli/pflags/api/utils.go
+++ b/flytestdlib/cli/pflags/api/utils.go
@@ -38,7 +38,9 @@ func isPFlagValue(t types.Type) bool {
return implementsAllOfMethods(t, "String", "Set", "Type")
}
-func hasStringConstructor(t *types.Named) bool {
+func hasStringConstructor(t interface {
+ Obj() *types.TypeName
+}) bool {
return t.Obj().Parent().Lookup(fmt.Sprintf("%sString", t.Obj().Name())) != nil
}
diff --git a/flytestdlib/config/viper/viper.go b/flytestdlib/config/viper/viper.go
index 9ba4a552c21..ad3c461860b 100644
--- a/flytestdlib/config/viper/viper.go
+++ b/flytestdlib/config/viper/viper.go
@@ -6,16 +6,18 @@ import (
"encoding/json"
"flag"
"fmt"
+ "os"
"reflect"
"strings"
"sync"
"github.com/fsnotify/fsnotify"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/pkg/errors"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
viperLib "github.com/spf13/viper"
+ "gopkg.in/yaml.v3"
"k8s.io/apimachinery/pkg/util/sets"
"github.com/flyteorg/flyte/flytestdlib/config"
@@ -182,18 +184,22 @@ func sliceToMapHook(f reflect.Kind, t reflect.Kind, data interface{}) (interface
// Only handle slice -> map conversion
if f == reflect.Slice && t == reflect.Map {
// this will be the target result
- res := map[interface{}]interface{}{}
+ res := map[string]interface{}{}
// It's safe to convert data into a slice since we did the type assertion above.
asSlice := data.([]interface{})
for _, item := range asSlice {
- asMap, casted := item.(map[interface{}]interface{})
- if !casted {
+ switch m := item.(type) {
+ case map[string]interface{}:
+ for key, value := range m {
+ res[key] = value
+ }
+ case map[interface{}]interface{}:
+ for key, value := range m {
+ res[fmt.Sprintf("%v", key)] = value
+ }
+ default:
return data, nil
}
-
- for key, value := range asMap {
- res[key] = value
- }
}
return res, nil
@@ -261,7 +267,61 @@ func jsonUnmarshallerHook(_, to reflect.Type, data interface{}) (interface{}, er
// Parses RootType config from parsed Viper settings. This should be called after viper has parsed config file/pflags...etc.
func (v viperAccessor) parseViperConfig(root config.Section) error {
// We use AllSettings instead of AllKeys to get the root level keys folded.
- return v.parseViperConfigRecursive(root, v.viper.AllSettings())
+ settings := v.viper.AllSettings()
+
+ // Viper v1.21+ recursively lowercases all map keys, including those inside
+ // arrays. This breaks the array-based workaround for case-sensitive map keys
+ // (see: https://github.com/spf13/viper#does-viper-support-case-sensitive-keys).
+ // Re-read config files directly to restore case-sensitive keys within arrays.
+ for _, configFile := range v.viper.ConfigFilesUsed() {
+ if configFile == "" {
+ continue
+ }
+
+ data, err := os.ReadFile(configFile)
+ if err != nil {
+ return fmt.Errorf("failed to read config file %q for case-sensitive key restoration: %w", configFile, err)
+ }
+
+ var rawSettings map[string]interface{}
+ if err := yaml.Unmarshal(data, &rawSettings); err != nil {
+ return fmt.Errorf("failed to parse config file %q for case-sensitive key restoration: %w", configFile, err)
+ }
+
+ restoreCaseSensitiveArrayKeys(settings, rawSettings)
+ }
+
+ return v.parseViperConfigRecursive(root, settings)
+}
+
+// restoreCaseSensitiveArrayKeys walks viperData and rawData in parallel.
+// When an array value is found in viperData, it is replaced with the
+// corresponding value from rawData to preserve the original key casing.
+func restoreCaseSensitiveArrayKeys(viperData, rawData map[string]interface{}) {
+ for lowerKey, viperVal := range viperData {
+ // Find matching key in rawData (case-insensitive match)
+ var rawVal interface{}
+ for rawKey, rv := range rawData {
+ if strings.EqualFold(rawKey, lowerKey) {
+ rawVal = rv
+ break
+ }
+ }
+
+ if rawVal == nil {
+ continue
+ }
+
+ switch viperVal.(type) {
+ case []interface{}:
+ // Replace the lowercased array with the case-preserved original
+ viperData[lowerKey] = rawVal
+ case map[string]interface{}:
+ if rawMap, ok := rawVal.(map[string]interface{}); ok {
+ restoreCaseSensitiveArrayKeys(viperVal.(map[string]interface{}), rawMap)
+ }
+ }
+ }
}
func (v viperAccessor) parseViperConfigRecursive(root config.Section, settings interface{}) error {
diff --git a/flytestdlib/database/dbconfig_flags_test.go b/flytestdlib/database/dbconfig_flags_test.go
index fd49e69fd89..3d1c776cd47 100755
--- a/flytestdlib/database/dbconfig_flags_test.go
+++ b/flytestdlib/database/dbconfig_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytestdlib/database/postgres.go b/flytestdlib/database/postgres.go
index 5f1c30f7f2c..08dfb3d614e 100644
--- a/flytestdlib/database/postgres.go
+++ b/flytestdlib/database/postgres.go
@@ -8,7 +8,6 @@ import (
"os"
"strings"
- oldPgConn "github.com/jackc/pgconn"
"github.com/jackc/pgx/v5/pgconn"
"gorm.io/driver/postgres"
"gorm.io/gorm"
@@ -113,21 +112,11 @@ func CreatePostgresReadOnlyDbConnection(ctx context.Context, gormConfig *gorm.Co
}
func IsPgErrorWithCode(err error, code string) bool {
- // Newer versions of the gorm postgres driver seem to use
- // "github.com/jackc/pgx/v5/pgconn"
- // See https://github.com/go-gorm/gorm/issues/4135
- // Let's just try both of them to make sure.
pgErr := &pgconn.PgError{}
if errors.As(err, &pgErr) {
// err chain does not contain a pgconn.PgError
return pgErr.Code == code
}
- oldPgErr := &oldPgConn.PgError{}
- if errors.As(err, &oldPgErr) {
- // err chain does not contain a pgconn.PgError
- return oldPgErr.Code == code
- }
-
return false
}
diff --git a/flytestdlib/database/postgres_test.go b/flytestdlib/database/postgres_test.go
index eb22c6b3aa2..81bc315fb0d 100644
--- a/flytestdlib/database/postgres_test.go
+++ b/flytestdlib/database/postgres_test.go
@@ -8,7 +8,7 @@ import (
"os"
"testing"
- "github.com/jackc/pgconn"
+ "github.com/jackc/pgx/v5/pgconn"
"github.com/stretchr/testify/assert"
)
@@ -150,8 +150,6 @@ func TestIsInvalidDBPgError(t *testing.T) {
}
for _, tc := range testCases {
- tc := tc
-
t.Run(tc.Name, func(t *testing.T) {
assert.Equal(t, tc.ExpectedResult, IsPgErrorWithCode(tc.Err, PqInvalidDBCode))
})
@@ -189,7 +187,6 @@ func TestIsPgDbAlreadyExistsError(t *testing.T) {
}
for _, tc := range testCases {
- tc := tc
t.Run(tc.Name, func(t *testing.T) {
assert.Equal(t, tc.ExpectedResult, IsPgErrorWithCode(tc.Err, PqDbAlreadyExistsCode))
})
diff --git a/flytestdlib/errors/error.go b/flytestdlib/errors/error.go
index fb646deb4f6..ea82f160625 100644
--- a/flytestdlib/errors/error.go
+++ b/flytestdlib/errors/error.go
@@ -58,6 +58,14 @@ func Errorf(errorCode ErrorCode, msgFmt string, args ...interface{}) error {
}
}
+// Creates a new error using an error code and a message.
+func Error(errorCode ErrorCode, msg string) error {
+ return &err{
+ code: errorCode,
+ message: msg,
+ }
+}
+
// Wraps a root cause error with another. This is useful to unify an error type in a package.
func Wrapf(code ErrorCode, cause error, msgFmt string, args ...interface{}) error {
return &errorWithCause{
diff --git a/flytestdlib/fastcheck/mocks/filter.go b/flytestdlib/fastcheck/mocks/filter.go
index 4a61c89a71b..63884c47d6c 100644
--- a/flytestdlib/fastcheck/mocks/filter.go
+++ b/flytestdlib/fastcheck/mocks/filter.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytestdlib/go.mod b/flytestdlib/go.mod
index 6a1e76a4542..950ac32c942 100644
--- a/flytestdlib/go.mod
+++ b/flytestdlib/go.mod
@@ -1,6 +1,6 @@
module github.com/flyteorg/flyte/flytestdlib
-go 1.22
+go 1.26.0
require (
github.com/aws/aws-sdk-go v1.47.11
@@ -9,51 +9,50 @@ require (
github.com/ernesto-jimenez/gogen v0.0.0-20180125220232-d7d4131e6607
github.com/fatih/color v1.13.0
github.com/fatih/structtag v1.2.0
- github.com/flyteorg/stow v0.3.11
- github.com/fsnotify/fsnotify v1.6.0
+ github.com/flyteorg/stow v0.3.12
+ github.com/fsnotify/fsnotify v1.9.0
github.com/ghodss/yaml v1.0.0
github.com/go-gormigrate/gormigrate/v2 v2.1.1
github.com/go-test/deep v1.0.7
- github.com/golang/protobuf v1.5.3
+ github.com/go-viper/mapstructure/v2 v2.4.0
+ github.com/golang/protobuf v1.5.4
github.com/hashicorp/golang-lru v0.5.4
- github.com/jackc/pgconn v1.14.3
- github.com/jackc/pgx/v5 v5.5.5
+ github.com/jackc/pgx/v5 v5.9.2
github.com/magiconair/properties v1.8.6
- github.com/mitchellh/mapstructure v1.5.0
github.com/pkg/errors v0.9.1
- github.com/prometheus/client_golang v1.19.1-0.20240620110541-bccd68204bf4
- github.com/prometheus/common v0.53.0
+ github.com/prometheus/client_golang v1.22.0
+ github.com/prometheus/common v0.62.0
github.com/sirupsen/logrus v1.9.3
- github.com/spf13/cobra v1.7.0
- github.com/spf13/pflag v1.0.5
- github.com/spf13/viper v1.11.0
- github.com/stretchr/testify v1.9.0
- go.opentelemetry.io/otel v1.24.0
+ github.com/spf13/cobra v1.9.1
+ github.com/spf13/pflag v1.0.10
+ github.com/spf13/viper v1.21.0
+ github.com/stretchr/testify v1.11.1
+ go.opentelemetry.io/otel v1.43.0
go.opentelemetry.io/otel/exporters/jaeger v1.17.0
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0
- go.opentelemetry.io/otel/sdk v1.24.0
- go.opentelemetry.io/otel/trace v1.24.0
- golang.org/x/time v0.5.0
- golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d
- google.golang.org/grpc v1.62.1
- google.golang.org/protobuf v1.34.1
+ go.opentelemetry.io/otel/sdk v1.43.0
+ go.opentelemetry.io/otel/trace v1.43.0
+ golang.org/x/time v0.9.0
+ golang.org/x/tools v0.42.0
+ google.golang.org/grpc v1.80.0
+ google.golang.org/protobuf v1.36.11
+ gopkg.in/yaml.v3 v3.0.1
gorm.io/driver/postgres v1.5.3
gorm.io/driver/sqlite v1.5.4
gorm.io/gorm v1.25.4
gotest.tools v2.2.0+incompatible
- k8s.io/api v0.28.2
- k8s.io/apimachinery v0.28.2
- k8s.io/client-go v0.28.1
- k8s.io/utils v0.0.0-20230406110748-d93618cff8a2
- sigs.k8s.io/controller-runtime v0.0.0-00010101000000-000000000000
+ k8s.io/api v0.34.1
+ k8s.io/apimachinery v0.34.1
+ k8s.io/client-go v0.34.1
+ k8s.io/utils v0.0.0-20250604170112-4c0f3b243397
+ sigs.k8s.io/controller-runtime v0.16.6
)
require (
cloud.google.com/go v0.112.0 // indirect
- cloud.google.com/go/compute v1.23.3 // indirect
- cloud.google.com/go/compute/metadata v0.2.3 // indirect
+ cloud.google.com/go/compute/metadata v0.9.0 // indirect
cloud.google.com/go/iam v1.1.5 // indirect
cloud.google.com/go/storage v1.36.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 // indirect
@@ -62,103 +61,89 @@ require (
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
github.com/beorn7/perks v1.0.1 // indirect
- github.com/cenkalti/backoff/v4 v4.2.1 // indirect
+ github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/emicklei/go-restful/v3 v3.9.0 // indirect
- github.com/evanphx/json-patch v5.6.0+incompatible // indirect
- github.com/evanphx/json-patch/v5 v5.6.0 // indirect
+ github.com/emicklei/go-restful/v3 v3.12.2 // indirect
+ github.com/evanphx/json-patch/v5 v5.9.11 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
+ github.com/fxamacker/cbor/v2 v2.9.0 // indirect
+ github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
- github.com/go-openapi/jsonpointer v0.19.6 // indirect
+ github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.20.2 // indirect
- github.com/go-openapi/swag v0.22.3 // indirect
+ github.com/go-openapi/swag v0.23.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/google/gnostic-models v0.6.8 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
+ github.com/google/gnostic-models v0.7.0 // indirect
+ github.com/google/go-cmp v0.7.0 // indirect
github.com/google/s2a-go v0.1.7 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect
- github.com/hashicorp/hcl v1.0.0 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
- github.com/jackc/chunkreader/v2 v2.0.1 // indirect
- github.com/jackc/pgio v1.0.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
- github.com/jackc/pgproto3/v2 v2.3.3 // indirect
- github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
- github.com/jackc/puddle/v2 v2.2.1 // indirect
+ github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
+ github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
- github.com/klauspost/compress v1.17.8 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.12 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/mattn/go-sqlite3 v1.14.24 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/ncw/swift v1.0.53 // indirect
- github.com/pelletier/go-toml v1.9.4 // indirect
- github.com/pelletier/go-toml/v2 v2.0.0-beta.8 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
- github.com/spf13/afero v1.8.2 // indirect
- github.com/spf13/cast v1.4.1 // indirect
- github.com/spf13/jwalterweatherman v1.1.0 // indirect
+ github.com/sagikazarmark/locafero v0.11.0 // indirect
+ github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
+ github.com/spf13/afero v1.15.0 // indirect
+ github.com/spf13/cast v1.10.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
- github.com/subosito/gotenv v1.2.0 // indirect
+ github.com/subosito/gotenv v1.6.0 // indirect
+ github.com/x448/float16 v0.8.4 // indirect
go.opencensus.io v0.24.0 // indirect
+ go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
- go.opentelemetry.io/otel/metric v1.24.0 // indirect
- go.opentelemetry.io/proto/otlp v1.1.0 // indirect
- golang.org/x/crypto v0.31.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect
+ go.opentelemetry.io/otel/metric v1.43.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.10.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.49.0 // indirect
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
- golang.org/x/mod v0.17.0 // indirect
- golang.org/x/net v0.33.0 // indirect
- golang.org/x/oauth2 v0.18.0 // indirect
- golang.org/x/sync v0.10.0 // indirect
- golang.org/x/sys v0.28.0 // indirect
- golang.org/x/term v0.27.0 // indirect
- golang.org/x/text v0.21.0 // indirect
+ golang.org/x/mod v0.33.0 // indirect
+ golang.org/x/net v0.52.0 // indirect
+ golang.org/x/oauth2 v0.35.0 // indirect
+ golang.org/x/sync v0.20.0 // indirect
+ golang.org/x/sys v0.42.0 // indirect
+ golang.org/x/term v0.41.0 // indirect
+ golang.org/x/text v0.35.0 // indirect
google.golang.org/api v0.155.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
- gopkg.in/ini.v1 v1.66.4 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
- gopkg.in/yaml.v3 v3.0.1 // indirect
- k8s.io/klog/v2 v2.100.1 // indirect
- k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
- sigs.k8s.io/yaml v1.3.0 // indirect
-)
-
-replace (
- github.com/flyteorg/flyte/datacatalog => ../datacatalog
- github.com/flyteorg/flyte/flyteadmin => ../flyteadmin
- github.com/flyteorg/flyte/flyteplugins => ../flyteplugins
- github.com/flyteorg/flyte/flytepropeller => ../flytepropeller
- github.com/flyteorg/flyte/flytestdlib => ../flytestdlib
- k8s.io/api => k8s.io/api v0.28.2
- k8s.io/apimachinery => k8s.io/apimachinery v0.28.2
- k8s.io/client-go => k8s.io/client-go v0.28.2
- sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.16.2
+ k8s.io/klog/v2 v2.130.1 // indirect
+ k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
+ sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
+ sigs.k8s.io/randfill v1.0.0 // indirect
+ sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
+ sigs.k8s.io/yaml v1.6.0 // indirect
)
diff --git a/flytestdlib/go.sum b/flytestdlib/go.sum
index ea92a547cfd..3503a6fc8cc 100644
--- a/flytestdlib/go.sum
+++ b/flytestdlib/go.sum
@@ -1,51 +1,12 @@
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.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
-cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
-cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
-cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
-cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
-cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
-cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
-cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
-cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
-cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
-cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
-cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
-cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM=
cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4=
-cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
-cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
-cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
-cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
-cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
-cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=
-cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI=
-cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
-cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
-cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
-cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
+cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
+cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI=
cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8=
-cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
-cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
-cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
-cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
-cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
-cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
-cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
-cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
-cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8=
cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8=
-dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc=
@@ -59,7 +20,6 @@ github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0/go.mod h1:WCPBHsOXfB
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
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/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/aws/aws-sdk-go v1.47.11 h1:Dol+MA+hQblbnXUI3Vk9qvoekU6O1uDEuAItezjiWNQ=
@@ -68,8 +28,10 @@ github.com/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1 h1:VRtJdDi2lq
github.com/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1/go.mod h1:jvdWlw8vowVGnZqSDC7yhPd7AifQeQbRDkZcQXV2nRg=
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/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
-github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+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 v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
@@ -77,147 +39,111 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927 h1:SKI1/fuSdodxmNNyVBR8d7X/HuLnRpvvFO0AgyQk764=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
-github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
github.com/coocood/freecache v1.1.1 h1:uukNF7QKCZEdZ9gAV7WQzvh0SbjwdMF6m3x3rxEkaPc=
github.com/coocood/freecache v1.1.1/go.mod h1:OKrEjkGVoxZhyWAJoeFi5BMLUJm2Tit0kpGkIr7NGYY=
-github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE=
-github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU=
+github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
+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.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
-github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
+github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=
+github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
github.com/ernesto-jimenez/gogen v0.0.0-20180125220232-d7d4131e6607 h1:cTavhURetDkezJCvxFggiyLeP40Mrk/TtVg2+ycw1Es=
github.com/ernesto-jimenez/gogen v0.0.0-20180125220232-d7d4131e6607/go.mod h1:Cg4fM0vhYWOZdgM7RIOSTRNIc8/VT7CXClC3Ni86lu4=
github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww=
-github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4=
+github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
+github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/flyteorg/stow v0.3.11 h1:Uf4fzVbghCqMNvx50XvYzwdNeQDBSKQJ7zddWu7p3eI=
-github.com/flyteorg/stow v0.3.11/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
-github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
-github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
+github.com/flyteorg/stow v0.3.12 h1:RRXI5RUdxaK6A46HrO0D2r14cRlW1lJRL6qyzqpVMPU=
+github.com/flyteorg/stow v0.3.12/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
+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.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
+github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
+github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gormigrate/gormigrate/v2 v2.1.1 h1:eGS0WTFRV30r103lU8JNXY27KbviRnqqIDobW3EV3iY=
github.com/go-gormigrate/gormigrate/v2 v2.1.1/go.mod h1:L7nJ620PFDKei9QOhJzqA8kRCk+E3UbV2f5gv+1ndLc=
-github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+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-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo=
github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA=
-github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
+github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
+github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
-github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
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-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
+github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
+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/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-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/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
-github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
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.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
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.4.3/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.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
-github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-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/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
-github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
+github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
+github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.4.1/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.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.4/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.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-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/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 h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
-github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
-github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=
github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
-github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
+github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -225,45 +151,22 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
-github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
-github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
-github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
-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/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=
github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
-github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28=
-github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
-github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8=
-github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
-github.com/jackc/pgconn v1.14.3 h1:bVoTr12EGANZz66nZPkMInAV/KHD2TxH9npjXXgiB3w=
-github.com/jackc/pgconn v1.14.3/go.mod h1:RZbme4uasqzybK2RK5c65VsHxoyaml09lx3tXOcO/VM=
-github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE=
-github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8=
-github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5Wi/+Zz7xoE5ALHsRQlOctkOiHc=
-github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
-github.com/jackc/pgproto3/v2 v2.3.3 h1:1HLSx5H+tXR9pW3in3zaztoEwQYRC9SQaYUHjTSUOag=
-github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
-github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
-github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
-github.com/jackc/pgx/v5 v5.5.5 h1:amBjrZVmksIdNjxGW/IiIMzxMKZFelXbUoPNb+8sjQw=
-github.com/jackc/pgx/v5 v5.5.5/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A=
-github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
-github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
-github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
+github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
+github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
+github.com/jackc/pgx/v5 v5.9.2 h1:3ZhOzMWnR4yJ+RW1XImIPsD1aNSz4T4fyP7zlQb56hw=
+github.com/jackc/pgx/v5 v5.9.2/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4=
+github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
+github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
@@ -276,14 +179,10 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
-github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/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.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU=
-github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
-github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+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/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -305,344 +204,185 @@ github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM=
github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
-github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
-github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/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 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/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/ncw/swift v1.0.53 h1:luHjjTNtekIEvHg5KdAFIBaH7bWfNkefwFnpDffSIks=
github.com/ncw/swift v1.0.53/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM=
-github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU=
-github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM=
-github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
-github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
-github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM=
-github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
+github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM=
+github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
+github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4=
+github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
+github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
+github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
-github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
+github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
+github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/prometheus/client_golang v1.19.1-0.20240620110541-bccd68204bf4 h1:GCiMVi+gRj5QaXuw8Gkz71k8US0ilrLJmoG/mp5+8dI=
-github.com/prometheus/client_golang v1.19.1-0.20240620110541-bccd68204bf4/go.mod h1:JJCmTHsrwjUPYl5HyuWSzf8ZNGQzncCeuj37Rby0GzI=
+github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
+github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE=
-github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U=
+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/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+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/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc=
+github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
-github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
-github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
-github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
-github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
-github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
-github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
-github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44=
-github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk=
+github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
+github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
+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 v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
+github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
+github.com/spf13/pflag v1.0.6/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.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
+github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
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/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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
-github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
-github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+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.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
+github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
+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/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
-go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
-go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
+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.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
-go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
-go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q=
+go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
+go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 h1:zr8ymM5OWWjjiWRzwTfZ67c905+2TMHYp2lMJ52QTyM=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0/go.mod h1:sQs7FT2iLVJ+67vYngGJkPe1qr39IzaBzaj9IDNNY8k=
-go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
-go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
-go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
-go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
-go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
-go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI=
-go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY=
+go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
+go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
+go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
+go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
+go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
+go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
+go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
+go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
+go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=
+go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=
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.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c=
go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk=
+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-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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
-golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
+golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
+golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
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-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
-golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
-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-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
-golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/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.1.1-0.20191107180719-034126e5016b/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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
-golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8=
+golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w=
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-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-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-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/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-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200707034311-ab3426394381/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-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=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
-golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
+golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
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-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
-golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
+golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
+golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
-golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
+golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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-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-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-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-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-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
-golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
-golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
-golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
+golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=
+golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=
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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
-golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
+golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
+golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
+golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-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-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
-golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
-golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
+golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=
+golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
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=
@@ -651,96 +391,28 @@ golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3j
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
-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/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
-google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
-google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
-google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
-google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
+gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
+gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA=
google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk=
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/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-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-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
-google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
-google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 h1:VPWxll4HlMw1Vs/qXtN7BvhZqsS9cdAittCNvVENElA=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
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.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
-google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
-google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
-google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
+google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM=
+google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4=
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=
@@ -749,22 +421,16 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi
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.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
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.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
-google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4=
+gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
gopkg.in/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.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4=
-gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/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=
@@ -780,36 +446,30 @@ gorm.io/gorm v1.25.4/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
-honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-k8s.io/api v0.28.2 h1:9mpl5mOb6vXZvqbQmankOfPIGiudghwCoLl1EYfUZbw=
-k8s.io/api v0.28.2/go.mod h1:RVnJBsjU8tcMq7C3iaRSGMeaKt2TWEUXcpIt/90fjEg=
-k8s.io/apiextensions-apiserver v0.28.0 h1:CszgmBL8CizEnj4sj7/PtLGey6Na3YgWyGCPONv7E9E=
-k8s.io/apiextensions-apiserver v0.28.0/go.mod h1:uRdYiwIuu0SyqJKriKmqEN2jThIJPhVmOWETm8ud1VE=
-k8s.io/apimachinery v0.28.2 h1:KCOJLrc6gu+wV1BYgwik4AF4vXOlVJPdiqn0yAWWwXQ=
-k8s.io/apimachinery v0.28.2/go.mod h1:RdzF87y/ngqk9H4z3EL2Rppv5jj95vGS/HaFXrLDApU=
-k8s.io/client-go v0.28.2 h1:DNoYI1vGq0slMBN/SWKMZMw0Rq+0EQW6/AK4v9+3VeY=
-k8s.io/client-go v0.28.2/go.mod h1:sMkApowspLuc7omj1FOSUxSoqjr+d5Q0Yc0LOFnYFJY=
-k8s.io/component-base v0.28.1 h1:LA4AujMlK2mr0tZbQDZkjWbdhTV5bRyEyAFe0TJxlWg=
-k8s.io/component-base v0.28.1/go.mod h1:jI11OyhbX21Qtbav7JkhehyBsIRfnO8oEgoAR12ArIU=
-k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
-k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
-k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ=
-k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM=
-k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk=
-k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
-rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
-rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
-sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU=
-sigs.k8s.io/controller-runtime v0.16.2/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
-sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
-sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
+k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
+k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
+k8s.io/apiextensions-apiserver v0.28.9 h1:yzPHp+4IASHeu7XIPkAKJrY4UjWdjiAjOcQMd6oNKj0=
+k8s.io/apiextensions-apiserver v0.28.9/go.mod h1:Rjhvq5y3JESdZgV2UOByldyefCfRrUguVpBLYOAIbVs=
+k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4=
+k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
+k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY=
+k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8=
+k8s.io/component-base v0.28.9 h1:ySM2PR8Z/xaUSG1Akd3yM6dqUezTltI7S5aV41MMuuc=
+k8s.io/component-base v0.28.9/go.mod h1:QtWzscEhCKRfHV24/S+11BwWjVxhC6fd3RYoEgZcWFU=
+k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
+k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
+k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA=
+k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
+k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y=
+k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+sigs.k8s.io/controller-runtime v0.16.6 h1:FiXwTuFF5ZJKmozfP2Z0j7dh6kmxP4Ou1KLfxgKKC3I=
+sigs.k8s.io/controller-runtime v0.16.6/go.mod h1:+dQzkZxnylD0u49e0a+7AR+vlibEBaThmPca7lTyUsI=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
+sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
+sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
diff --git a/flytestdlib/logger/config_flags_test.go b/flytestdlib/logger/config_flags_test.go
index 8c6eb2c276f..e59c41cbb4d 100755
--- a/flytestdlib/logger/config_flags_test.go
+++ b/flytestdlib/logger/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytestdlib/otelutils/config_flags_test.go b/flytestdlib/otelutils/config_flags_test.go
index 6435a88e540..61f5341f724 100755
--- a/flytestdlib/otelutils/config_flags_test.go
+++ b/flytestdlib/otelutils/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytestdlib/otelutils/factory.go b/flytestdlib/otelutils/factory.go
index 89c2c420d19..6a57da8fb82 100644
--- a/flytestdlib/otelutils/factory.go
+++ b/flytestdlib/otelutils/factory.go
@@ -12,7 +12,7 @@ import (
"go.opentelemetry.io/otel/exporters/stdout/stdouttrace"
"go.opentelemetry.io/otel/sdk/resource"
"go.opentelemetry.io/otel/sdk/trace"
- semconv "go.opentelemetry.io/otel/semconv/v1.24.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.40.0"
rawtrace "go.opentelemetry.io/otel/trace"
"go.opentelemetry.io/otel/trace/noop"
diff --git a/flytestdlib/profutils/config.go b/flytestdlib/profutils/config.go
new file mode 100644
index 00000000000..26cd35ab874
--- /dev/null
+++ b/flytestdlib/profutils/config.go
@@ -0,0 +1,20 @@
+package profutils
+
+import "github.com/flyteorg/flyte/flytestdlib/config"
+
+//go:generate pflags Config --default-var=defaultConfig
+
+const configSectionKey = "prof"
+
+var (
+ configSection = config.MustRegisterSection(configSectionKey, defaultConfig)
+ defaultConfig = &Config{}
+)
+
+type Config struct {
+ DisableConfigEndpoint bool `config:"DisableConfigEndpoint"`
+}
+
+func GetConfig() *Config {
+ return configSection.GetConfig().(*Config)
+}
diff --git a/flyteplugins/go/tasks/plugins/hive/config/config_flags.go b/flytestdlib/profutils/config_flags.go
similarity index 52%
rename from flyteplugins/go/tasks/plugins/hive/config/config_flags.go
rename to flytestdlib/profutils/config_flags.go
index ba7c5f2eaa1..df4a28ce2e9 100755
--- a/flyteplugins/go/tasks/plugins/hive/config/config_flags.go
+++ b/flytestdlib/profutils/config_flags.go
@@ -1,7 +1,7 @@
// Code generated by go generate; DO NOT EDIT.
// This file was generated by robots.
-package config
+package profutils
import (
"encoding/json"
@@ -50,12 +50,6 @@ func (Config) mustMarshalJSON(v json.Marshaler) string {
// flags is json-name.json-sub-name... etc.
func (cfg Config) GetPFlagSet(prefix string) *pflag.FlagSet {
cmdFlags := pflag.NewFlagSet("Config", pflag.ExitOnError)
- cmdFlags.String(fmt.Sprintf("%v%v", prefix, "endpoint"), defaultConfig.Endpoint.String(), "Endpoint for qubole to use")
- cmdFlags.String(fmt.Sprintf("%v%v", prefix, "commandApiPath"), defaultConfig.CommandAPIPath.String(), "API Path where commands can be launched on Qubole. Should be a valid url.")
- cmdFlags.String(fmt.Sprintf("%v%v", prefix, "analyzeLinkPath"), defaultConfig.AnalyzeLinkPath.String(), "URL path where queries can be visualized on qubole website. Should be a valid url.")
- cmdFlags.String(fmt.Sprintf("%v%v", prefix, "quboleTokenKey"), defaultConfig.TokenKey, "Name of the key where to find Qubole token in the secret manager.")
- cmdFlags.Int(fmt.Sprintf("%v%v", prefix, "lruCacheSize"), defaultConfig.LruCacheSize, "Size of the AutoRefreshCache")
- cmdFlags.Int(fmt.Sprintf("%v%v", prefix, "workers"), defaultConfig.Workers, "Number of parallel workers to refresh the cache")
- cmdFlags.String(fmt.Sprintf("%v%v", prefix, "defaultClusterLabel"), defaultConfig.DefaultClusterLabel, "The default cluster label. This will be used if label is not specified on the hive job.")
+ cmdFlags.Bool(fmt.Sprintf("%v%v", prefix, "DisableConfigEndpoint"), defaultConfig.DisableConfigEndpoint, "")
return cmdFlags
}
diff --git a/flyteplugins/go/tasks/plugins/hive/config/config_flags_test.go b/flytestdlib/profutils/config_flags_test.go
similarity index 52%
rename from flyteplugins/go/tasks/plugins/hive/config/config_flags_test.go
rename to flytestdlib/profutils/config_flags_test.go
index 87181845683..a9caae82a0d 100755
--- a/flyteplugins/go/tasks/plugins/hive/config/config_flags_test.go
+++ b/flytestdlib/profutils/config_flags_test.go
@@ -1,7 +1,7 @@
// Code generated by go generate; DO NOT EDIT.
// This file was generated by robots.
-package config
+package profutils
import (
"encoding/json"
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
@@ -99,98 +99,14 @@ func TestConfig_SetFlags(t *testing.T) {
cmdFlags := actual.GetPFlagSet("")
assert.True(t, cmdFlags.HasFlags())
- t.Run("Test_endpoint", func(t *testing.T) {
-
- t.Run("Override", func(t *testing.T) {
- testValue := defaultConfig.Endpoint.String()
-
- cmdFlags.Set("endpoint", testValue)
- if vString, err := cmdFlags.GetString("endpoint"); err == nil {
- testDecodeJson_Config(t, fmt.Sprintf("%v", vString), &actual.Endpoint)
-
- } else {
- assert.FailNow(t, err.Error())
- }
- })
- })
- t.Run("Test_commandApiPath", func(t *testing.T) {
-
- t.Run("Override", func(t *testing.T) {
- testValue := defaultConfig.CommandAPIPath.String()
-
- cmdFlags.Set("commandApiPath", testValue)
- if vString, err := cmdFlags.GetString("commandApiPath"); err == nil {
- testDecodeJson_Config(t, fmt.Sprintf("%v", vString), &actual.CommandAPIPath)
-
- } else {
- assert.FailNow(t, err.Error())
- }
- })
- })
- t.Run("Test_analyzeLinkPath", func(t *testing.T) {
-
- t.Run("Override", func(t *testing.T) {
- testValue := defaultConfig.AnalyzeLinkPath.String()
-
- cmdFlags.Set("analyzeLinkPath", testValue)
- if vString, err := cmdFlags.GetString("analyzeLinkPath"); err == nil {
- testDecodeJson_Config(t, fmt.Sprintf("%v", vString), &actual.AnalyzeLinkPath)
-
- } else {
- assert.FailNow(t, err.Error())
- }
- })
- })
- t.Run("Test_quboleTokenKey", func(t *testing.T) {
-
- t.Run("Override", func(t *testing.T) {
- testValue := "1"
-
- cmdFlags.Set("quboleTokenKey", testValue)
- if vString, err := cmdFlags.GetString("quboleTokenKey"); err == nil {
- testDecodeJson_Config(t, fmt.Sprintf("%v", vString), &actual.TokenKey)
-
- } else {
- assert.FailNow(t, err.Error())
- }
- })
- })
- t.Run("Test_lruCacheSize", func(t *testing.T) {
-
- t.Run("Override", func(t *testing.T) {
- testValue := "1"
-
- cmdFlags.Set("lruCacheSize", testValue)
- if vInt, err := cmdFlags.GetInt("lruCacheSize"); err == nil {
- testDecodeJson_Config(t, fmt.Sprintf("%v", vInt), &actual.LruCacheSize)
-
- } else {
- assert.FailNow(t, err.Error())
- }
- })
- })
- t.Run("Test_workers", func(t *testing.T) {
-
- t.Run("Override", func(t *testing.T) {
- testValue := "1"
-
- cmdFlags.Set("workers", testValue)
- if vInt, err := cmdFlags.GetInt("workers"); err == nil {
- testDecodeJson_Config(t, fmt.Sprintf("%v", vInt), &actual.Workers)
-
- } else {
- assert.FailNow(t, err.Error())
- }
- })
- })
- t.Run("Test_defaultClusterLabel", func(t *testing.T) {
+ t.Run("Test_DisableConfigEndpoint", func(t *testing.T) {
t.Run("Override", func(t *testing.T) {
testValue := "1"
- cmdFlags.Set("defaultClusterLabel", testValue)
- if vString, err := cmdFlags.GetString("defaultClusterLabel"); err == nil {
- testDecodeJson_Config(t, fmt.Sprintf("%v", vString), &actual.DefaultClusterLabel)
+ cmdFlags.Set("DisableConfigEndpoint", testValue)
+ if vBool, err := cmdFlags.GetBool("DisableConfigEndpoint"); err == nil {
+ testDecodeJson_Config(t, fmt.Sprintf("%v", vBool), &actual.DisableConfigEndpoint)
} else {
assert.FailNow(t, err.Error())
diff --git a/flytestdlib/profutils/server.go b/flytestdlib/profutils/server.go
index e4623c159d3..4b19960d304 100644
--- a/flytestdlib/profutils/server.go
+++ b/flytestdlib/profutils/server.go
@@ -100,7 +100,7 @@ func StartProfilingServer(ctx context.Context, pprofPort int) error {
Addr: fmt.Sprintf(":%d", pprofPort),
}
- go func() {
+ go func() { //nolint:gosec
<-ctx.Done()
if err := srv.Shutdown(context.Background()); err != nil {
logger.Errorf(ctx, "Failed to gracefully shutdown profiling server. Error: %v", err)
@@ -110,14 +110,17 @@ func StartProfilingServer(ctx context.Context, pprofPort int) error {
return srv.ListenAndServe()
}
-func configureGlobalHTTPHandler(handlers map[string]http.Handler) error {
+func configureGlobalHTTPHandler(cfg *Config, handlers map[string]http.Handler) error {
if handlers == nil {
handlers = map[string]http.Handler{}
}
+
handlers[metricsPath] = promhttp.Handler()
handlers[healthcheck] = http.HandlerFunc(healtcheckHandler)
handlers[versionPath] = http.HandlerFunc(versionHandler)
- handlers[configPath] = http.HandlerFunc(configHandler)
+ if !cfg.DisableConfigEndpoint {
+ handlers[configPath] = http.HandlerFunc(configHandler)
+ }
for p, h := range handlers {
http.Handle(p, h)
@@ -126,14 +129,15 @@ func configureGlobalHTTPHandler(handlers map[string]http.Handler) error {
return nil
}
-// Forwards the call to StartProfilingServer
+// StartProfilingServerWithDefaultHandlers forwards the call to StartProfilingServer
// Also registers:
// 1. the prometheus HTTP handler on '/metrics' path shared with the profiling server.
// 2. A healthcheck (L7) handler on '/healthcheck'.
// 3. A version handler on '/version' provides information about the specific build.
// 4. A config handler on '/config' provides a dump of the currently loaded config.
func StartProfilingServerWithDefaultHandlers(ctx context.Context, pprofPort int, handlers map[string]http.Handler) error {
- if err := configureGlobalHTTPHandler(handlers); err != nil {
+ cfg := GetConfig()
+ if err := configureGlobalHTTPHandler(cfg, handlers); err != nil {
return err
}
diff --git a/flytestdlib/profutils/server_test.go b/flytestdlib/profutils/server_test.go
index 9741aeae5a1..f208b1202b6 100644
--- a/flytestdlib/profutils/server_test.go
+++ b/flytestdlib/profutils/server_test.go
@@ -36,7 +36,7 @@ type TestObj struct {
}
func init() {
- if err := configureGlobalHTTPHandler(nil); err != nil {
+ if err := configureGlobalHTTPHandler(&Config{}, nil); err != nil {
panic(err)
}
}
@@ -77,6 +77,9 @@ func TestConfigHandler(t *testing.T) {
"type": "json",
},
},
+ "prof": map[string]interface{}{
+ "DisableConfigEndpoint": false,
+ },
}, m)
}
diff --git a/flytestdlib/random/mocks/comparable.go b/flytestdlib/random/mocks/comparable.go
index 68d328609d5..5323d8dc7dc 100644
--- a/flytestdlib/random/mocks/comparable.go
+++ b/flytestdlib/random/mocks/comparable.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytestdlib/random/mocks/weighted_random_list.go b/flytestdlib/random/mocks/weighted_random_list.go
index 26c21351786..80ba8c8ea4b 100644
--- a/flytestdlib/random/mocks/weighted_random_list.go
+++ b/flytestdlib/random/mocks/weighted_random_list.go
@@ -1,13 +1,12 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
import (
rand "math/rand"
- mock "github.com/stretchr/testify/mock"
-
random "github.com/flyteorg/flyte/flytestdlib/random"
+ mock "github.com/stretchr/testify/mock"
)
// WeightedRandomList is an autogenerated mock type for the WeightedRandomList type
@@ -23,7 +22,7 @@ func (_m *WeightedRandomList) EXPECT() *WeightedRandomList_Expecter {
return &WeightedRandomList_Expecter{mock: &_m.Mock}
}
-// Get provides a mock function with given fields:
+// Get provides a mock function with no fields
func (_m *WeightedRandomList) Get() random.Comparable {
ret := _m.Called()
@@ -128,7 +127,7 @@ func (_c *WeightedRandomList_GetWithSeed_Call) RunAndReturn(run func(rand.Source
return _c
}
-// Len provides a mock function with given fields:
+// Len provides a mock function with no fields
func (_m *WeightedRandomList) Len() int {
ret := _m.Called()
@@ -173,7 +172,7 @@ func (_c *WeightedRandomList_Len_Call) RunAndReturn(run func() int) *WeightedRan
return _c
}
-// List provides a mock function with given fields:
+// List provides a mock function with no fields
func (_m *WeightedRandomList) List() []random.Comparable {
ret := _m.Called()
diff --git a/flytestdlib/storage/config_flags_test.go b/flytestdlib/storage/config_flags_test.go
index c71a3e8f6df..940322a81fc 100755
--- a/flytestdlib/storage/config_flags_test.go
+++ b/flytestdlib/storage/config_flags_test.go
@@ -10,7 +10,7 @@ import (
"strings"
"testing"
- "github.com/mitchellh/mapstructure"
+ "github.com/go-viper/mapstructure/v2"
"github.com/stretchr/testify/assert"
)
diff --git a/flytestdlib/storage/copy_impl_test.go b/flytestdlib/storage/copy_impl_test.go
index 97d32ea2dd5..4ba3cb7c011 100644
--- a/flytestdlib/storage/copy_impl_test.go
+++ b/flytestdlib/storage/copy_impl_test.go
@@ -2,14 +2,14 @@ package storage
import (
"context"
- "fmt"
+ "errors"
"io"
"math/rand"
"testing"
"github.com/stretchr/testify/assert"
- "github.com/flyteorg/flyte/flytestdlib/errors"
+ flyteErr "github.com/flyteorg/flyte/flytestdlib/errors"
"github.com/flyteorg/flyte/flytestdlib/ioutils"
)
@@ -97,12 +97,11 @@ func TestCopyRaw_CachingErrorHandling(t *testing.T) {
store := dummyStore{
ReadRawCb: func(ctx context.Context, reference DataReference) (closer io.ReadCloser, e error) {
readerCalled = true
- //nolint:govet,staticcheck
- return ioutils.NewBytesReadCloser(bigD), errors.Wrapf(ErrFailedToWriteCache, fmt.Errorf(dummyErrorMsg), "Failed to Cache the metadata")
+ return ioutils.NewBytesReadCloser(bigD), flyteErr.Wrapf(ErrFailedToWriteCache, errors.New(dummyErrorMsg), "Failed to Cache the metadata")
},
WriteRawCb: func(ctx context.Context, reference DataReference, size int64, opts Options, raw io.Reader) error {
writerCalled = true
- return errors.Wrapf(ErrFailedToWriteCache, fmt.Errorf(dummyErrorMsg), "Failed to Cache the metadata") //nolint:govet,staticcheck
+ return flyteErr.Wrapf(ErrFailedToWriteCache, errors.New(dummyErrorMsg), "Failed to Cache the metadata")
},
}
@@ -124,11 +123,11 @@ func TestCopyRaw_CachingErrorHandling(t *testing.T) {
store := dummyStore{
ReadRawCb: func(ctx context.Context, reference DataReference) (closer io.ReadCloser, e error) {
readerCalled = true
- return ioutils.NewBytesReadCloser(bigD), fmt.Errorf(dummyErrorMsg) //nolint:govet,staticcheck
+ return ioutils.NewBytesReadCloser(bigD), errors.New(dummyErrorMsg)
},
WriteRawCb: func(ctx context.Context, reference DataReference, size int64, opts Options, raw io.Reader) error {
writerCalled = true
- return fmt.Errorf(dummyErrorMsg) //nolint:govet,staticcheck
+ return errors.New(dummyErrorMsg)
},
}
diff --git a/flytestdlib/storage/mocks/composed_protobuf_store.go b/flytestdlib/storage/mocks/composed_protobuf_store.go
index e86735fcafc..af5976581fb 100644
--- a/flytestdlib/storage/mocks/composed_protobuf_store.go
+++ b/flytestdlib/storage/mocks/composed_protobuf_store.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,11 +6,9 @@ import (
context "context"
io "io"
+ storage "github.com/flyteorg/flyte/flytestdlib/storage"
mock "github.com/stretchr/testify/mock"
-
protoiface "google.golang.org/protobuf/runtime/protoiface"
-
- storage "github.com/flyteorg/flyte/flytestdlib/storage"
)
// ComposedProtobufStore is an autogenerated mock type for the ComposedProtobufStore type
diff --git a/flytestdlib/storage/mocks/raw_store.go b/flytestdlib/storage/mocks/raw_store.go
index c0f1c8a77a7..2ce35658af2 100644
--- a/flytestdlib/storage/mocks/raw_store.go
+++ b/flytestdlib/storage/mocks/raw_store.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -6,9 +6,8 @@ import (
context "context"
io "io"
- mock "github.com/stretchr/testify/mock"
-
storage "github.com/flyteorg/flyte/flytestdlib/storage"
+ mock "github.com/stretchr/testify/mock"
)
// RawStore is an autogenerated mock type for the RawStore type
diff --git a/flytestdlib/storage/mocks/reference_constructor.go b/flytestdlib/storage/mocks/reference_constructor.go
index a9c039b7fde..846aeb077d2 100644
--- a/flytestdlib/storage/mocks/reference_constructor.go
+++ b/flytestdlib/storage/mocks/reference_constructor.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytestdlib/storage/protobuf_store_test.go b/flytestdlib/storage/protobuf_store_test.go
index 31ad4efd6b6..276769fe861 100644
--- a/flytestdlib/storage/protobuf_store_test.go
+++ b/flytestdlib/storage/protobuf_store_test.go
@@ -2,7 +2,7 @@ package storage
import (
"context"
- "fmt"
+ "errors"
"io"
"math/rand"
"net/http"
@@ -148,13 +148,13 @@ func TestDefaultProtobufStore_HardErrors(t *testing.T) {
dummyReadErrorMsg := "Dummy read error"
store := &dummyStore{
HeadCb: func(ctx context.Context, reference DataReference) (Metadata, error) {
- return MemoryMetadata{}, fmt.Errorf(dummyHeadErrorMsg) //nolint:govet,staticcheck
+ return MemoryMetadata{}, errors.New(dummyHeadErrorMsg)
},
WriteRawCb: func(ctx context.Context, reference DataReference, size int64, opts Options, raw io.Reader) error {
- return fmt.Errorf(dummyWriteErrorMsg) //nolint:govet,staticcheck
+ return errors.New(dummyWriteErrorMsg)
},
ReadRawCb: func(ctx context.Context, reference DataReference) (io.ReadCloser, error) {
- return nil, fmt.Errorf(dummyReadErrorMsg) //nolint:govet,staticcheck
+ return nil, errors.New(dummyReadErrorMsg)
},
}
pbErroneousStore := NewDefaultProtobufStoreWithMetrics(store, metrics.protoMetrics)
diff --git a/flytestdlib/storage/stow_store.go b/flytestdlib/storage/stow_store.go
index dbaddeee284..659a4fc99fe 100644
--- a/flytestdlib/storage/stow_store.go
+++ b/flytestdlib/storage/stow_store.go
@@ -291,7 +291,17 @@ func (s *StowStore) List(ctx context.Context, reference DataReference, maxItems
if err == nil {
results := make([]DataReference, len(items))
for index, item := range items {
- results[index] = DataReference(item.URL().String())
+ logger.Debugf(ctx, "Stow store appending k=%s url=[%v]", key, item.URL())
+ urlPath := item.URL().Path
+ if strings.HasPrefix(urlPath, "http") {
+ results[index] = DataReference(urlPath)
+ } else {
+ if item.URL().Scheme == "google" {
+ results[index] = DataReference("https://" + item.URL().Host + "/" + item.URL().Path)
+ } else {
+ results[index] = DataReference(item.URL().String())
+ }
+ }
}
if stow.IsCursorEnd(stowCursor) {
cursor = NewCursorAtEnd()
diff --git a/flytestdlib/utils/mocks/auto_refresh_cache.go b/flytestdlib/utils/mocks/auto_refresh_cache.go
index 3b1d2ed926a..0e38d86eff3 100644
--- a/flytestdlib/utils/mocks/auto_refresh_cache.go
+++ b/flytestdlib/utils/mocks/auto_refresh_cache.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -157,7 +157,7 @@ func (_c *AutoRefreshCache_Start_Call) Return() *AutoRefreshCache_Start_Call {
}
func (_c *AutoRefreshCache_Start_Call) RunAndReturn(run func(context.Context)) *AutoRefreshCache_Start_Call {
- _c.Call.Return(run)
+ _c.Run(run)
return _c
}
diff --git a/flytestdlib/utils/mocks/cache_item.go b/flytestdlib/utils/mocks/cache_item.go
index 2e2b65c50d1..5876aea4224 100644
--- a/flytestdlib/utils/mocks/cache_item.go
+++ b/flytestdlib/utils/mocks/cache_item.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *CacheItem) EXPECT() *CacheItem_Expecter {
return &CacheItem_Expecter{mock: &_m.Mock}
}
-// ID provides a mock function with given fields:
+// ID provides a mock function with no fields
func (_m *CacheItem) ID() string {
ret := _m.Called()
diff --git a/flytestdlib/utils/mocks/cache_sync_item.go b/flytestdlib/utils/mocks/cache_sync_item.go
index 14b147154af..8e0bed14dff 100644
--- a/flytestdlib/utils/mocks/cache_sync_item.go
+++ b/flytestdlib/utils/mocks/cache_sync_item.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytestdlib/utils/mocks/rate_limiter.go b/flytestdlib/utils/mocks/rate_limiter.go
index ea8e0b1144a..d12f6d40a47 100644
--- a/flytestdlib/utils/mocks/rate_limiter.go
+++ b/flytestdlib/utils/mocks/rate_limiter.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
diff --git a/flytestdlib/utils/mocks/sequencer.go b/flytestdlib/utils/mocks/sequencer.go
index 76eaa791f42..dbf23839c71 100644
--- a/flytestdlib/utils/mocks/sequencer.go
+++ b/flytestdlib/utils/mocks/sequencer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.3. DO NOT EDIT.
+// Code generated by mockery v2.53.5. DO NOT EDIT.
package mocks
@@ -17,7 +17,7 @@ func (_m *Sequencer) EXPECT() *Sequencer_Expecter {
return &Sequencer_Expecter{mock: &_m.Mock}
}
-// GetCur provides a mock function with given fields:
+// GetCur provides a mock function with no fields
func (_m *Sequencer) GetCur() uint64 {
ret := _m.Called()
@@ -62,7 +62,7 @@ func (_c *Sequencer_GetCur_Call) RunAndReturn(run func() uint64) *Sequencer_GetC
return _c
}
-// GetNext provides a mock function with given fields:
+// GetNext provides a mock function with no fields
func (_m *Sequencer) GetNext() uint64 {
ret := _m.Called()
diff --git a/go.mod b/go.mod
index 4a1852aefac..fdb92eeca4a 100644
--- a/go.mod
+++ b/go.mod
@@ -1,121 +1,140 @@
module github.com/flyteorg/flyte
-go 1.22
+go 1.26.0
require (
github.com/flyteorg/flyte/datacatalog v0.0.0-00010101000000-000000000000
github.com/flyteorg/flyte/flyteadmin v0.0.0-00010101000000-000000000000
+ github.com/flyteorg/flyte/flyteidl v0.0.0-00010101000000-000000000000
+ github.com/flyteorg/flyte/flyteplugins v0.0.0-00010101000000-000000000000
github.com/flyteorg/flyte/flytepropeller v0.0.0-00010101000000-000000000000
github.com/flyteorg/flyte/flytestdlib v0.0.0-00010101000000-000000000000
- github.com/golang/glog v1.2.4
- github.com/prometheus/client_golang v1.19.1
- github.com/spf13/cobra v1.7.0
- github.com/spf13/pflag v1.0.5
- golang.org/x/sync v0.10.0
+ github.com/golang/glog v1.2.5
+ github.com/kubeflow/spark-operator v0.0.0-20250325114751-1905be6e1dbd
+ github.com/prometheus/client_golang v1.23.0
+ github.com/spf13/cobra v1.9.1
+ github.com/spf13/pflag v1.0.10
+ github.com/stretchr/testify v1.11.1
+ golang.org/x/sync v0.20.0
+ google.golang.org/protobuf v1.36.11
gorm.io/driver/postgres v1.5.3
- sigs.k8s.io/controller-runtime v0.17.2
+ k8s.io/api v0.34.1
+ k8s.io/apimachinery v0.34.1
+ sigs.k8s.io/controller-runtime v0.22.4
)
require (
- cloud.google.com/go v0.112.0 // indirect
- cloud.google.com/go/compute v1.23.3 // indirect
- cloud.google.com/go/compute/metadata v0.2.3 // indirect
- cloud.google.com/go/iam v1.1.5 // indirect
- cloud.google.com/go/pubsub v1.34.0 // indirect
- cloud.google.com/go/storage v1.36.0 // indirect
+ cel.dev/expr v0.25.1 // indirect
+ cloud.google.com/go v0.115.1 // indirect
+ cloud.google.com/go/auth v0.9.3 // indirect
+ cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
+ cloud.google.com/go/compute/metadata v0.9.0 // indirect
+ cloud.google.com/go/iam v1.2.1 // indirect
+ cloud.google.com/go/monitoring v1.21.0 // indirect
+ cloud.google.com/go/pubsub v1.42.0 // indirect
+ cloud.google.com/go/storage v1.45.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
- github.com/GoogleCloudPlatform/spark-on-k8s-operator v0.0.0-20200723154620-6f35a1152625 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect
github.com/Masterminds/semver v1.5.0 // indirect
github.com/NYTimes/gizmo v1.3.6 // indirect
github.com/Shopify/sarama v1.26.4 // indirect
- github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 // indirect
- github.com/aws/aws-sdk-go v1.47.11 // indirect
- github.com/aws/aws-sdk-go-v2 v1.2.0 // indirect
- github.com/aws/aws-sdk-go-v2/config v1.0.0 // indirect
- github.com/aws/aws-sdk-go-v2/credentials v1.0.0 // indirect
- github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.0 // indirect
+ github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
+ github.com/aws/aws-sdk-go v1.55.5 // 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/athena v1.0.0 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.0 // indirect
- github.com/aws/aws-sdk-go-v2/service/sts v1.0.0 // indirect
- github.com/aws/smithy-go v1.1.0 // 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/benbjohnson/clock v1.3.0 // indirect
github.com/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b // indirect
- github.com/cenkalti/backoff/v4 v4.2.1 // indirect
+ github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/cloudevents/sdk-go/binding/format/protobuf/v2 v2.14.0 // indirect
github.com/cloudevents/sdk-go/protocol/kafka_sarama/v2 v2.8.0 // indirect
github.com/cloudevents/sdk-go/protocol/nats/v2 v2.15.2 // indirect
github.com/cloudevents/sdk-go/v2 v2.15.2 // indirect
+ github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect
github.com/coocood/freecache v1.1.1 // indirect
github.com/coreos/go-oidc/v3 v3.6.0 // indirect
github.com/dask/dask-kubernetes/v2023 v2023.0.0-20230626103304-abd02cd17b26 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
+ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
+ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
github.com/dgraph-io/ristretto v0.0.3 // indirect
github.com/eapache/go-resiliency v1.3.0 // indirect
github.com/eapache/go-xerial-snappy v0.0.0-20230111030713-bf00bc1b83b6 // indirect
github.com/eapache/queue v1.1.0 // indirect
- github.com/emicklei/go-restful/v3 v3.12.0 // indirect
- github.com/evanphx/json-patch v5.6.0+incompatible // indirect
- github.com/evanphx/json-patch/v5 v5.9.0 // indirect
- github.com/fatih/color v1.13.0 // indirect
+ github.com/emicklei/go-restful/v3 v3.13.0 // indirect
+ github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect
+ github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect
+ github.com/evanphx/json-patch v5.9.0+incompatible // indirect
+ github.com/evanphx/json-patch/v5 v5.9.11 // indirect
+ github.com/fatih/color v1.18.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/flyteorg/flyte/flyteidl v0.0.0-00010101000000-000000000000 // indirect
- github.com/flyteorg/flyte/flyteplugins v0.0.0-00010101000000-000000000000 // indirect
- github.com/flyteorg/stow v0.3.11 // indirect
- github.com/fsnotify/fsnotify v1.7.0 // indirect
+ github.com/flyteorg/stow v0.3.12 // indirect
+ github.com/fsnotify/fsnotify v1.9.0 // indirect
+ github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/ghodss/yaml v1.0.0 // indirect
github.com/go-gormigrate/gormigrate/v2 v2.1.1 // indirect
- github.com/go-jose/go-jose/v3 v3.0.4 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
+ github.com/go-jose/go-jose/v3 v3.0.5 // indirect
+ github.com/go-jose/go-jose/v4 v4.1.4 // indirect
+ github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
- github.com/go-openapi/jsonpointer v0.19.6 // indirect
- github.com/go-openapi/jsonreference v0.20.2 // indirect
- github.com/go-openapi/swag v0.22.3 // indirect
+ github.com/go-openapi/jsonpointer v0.21.2 // indirect
+ github.com/go-openapi/jsonreference v0.21.0 // indirect
+ github.com/go-openapi/swag v0.23.1 // indirect
github.com/go-redis/redis v6.15.7+incompatible // indirect
github.com/go-test/deep v1.0.7 // indirect
- github.com/goccy/go-json v0.10.2 // indirect
- github.com/gofrs/uuid v4.2.0+incompatible // indirect
+ github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
+ github.com/goccy/go-json v0.10.5 // indirect
+ github.com/gofrs/uuid v4.4.0+incompatible // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/golang/snappy v0.0.4 // indirect
- github.com/google/gnostic-models v0.6.8 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
- github.com/google/s2a-go v0.1.7 // indirect
+ github.com/google/btree v1.1.3 // indirect
+ github.com/google/gnostic-models v0.7.0 // indirect
+ github.com/google/go-cmp v0.7.0 // indirect
+ github.com/google/s2a-go v0.1.8 // indirect
github.com/google/uuid v1.6.0 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
- github.com/googleapis/gax-go/v2 v2.12.0 // indirect
+ github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect
+ github.com/googleapis/gax-go/v2 v2.13.0 // indirect
github.com/gorilla/handlers v1.5.1 // indirect
github.com/gorilla/securecookie v1.1.1 // indirect
- github.com/gorilla/websocket v1.5.0 // indirect
+ github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99 // indirect
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect
github.com/gtank/cryptopasta v0.0.0-20170601214702-1f550f6f2f69 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/imdario/mergo v0.3.13 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
- github.com/jackc/chunkreader/v2 v2.0.1 // indirect
- github.com/jackc/pgconn v1.14.3 // indirect
- github.com/jackc/pgio v1.0.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
- github.com/jackc/pgproto3/v2 v2.3.3 // indirect
- github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9 // indirect
- github.com/jackc/pgx/v5 v5.5.5 // indirect
- github.com/jackc/puddle/v2 v2.2.1 // indirect
+ github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
+ github.com/jackc/pgx/v5 v5.9.2 // indirect
+ github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/jcmturner/gofork v1.7.6 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
@@ -123,24 +142,24 @@ require (
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kelseyhightower/envconfig v1.4.0 // indirect
- github.com/klauspost/compress v1.17.8 // indirect
+ github.com/klauspost/compress v1.18.0 // indirect
github.com/kubeflow/training-operator v1.8.0 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/lestrrat-go/backoff/v2 v2.0.8 // indirect
github.com/lestrrat-go/blackmagic v1.0.2 // indirect
github.com/lestrrat-go/httpcc v1.0.1 // indirect
github.com/lestrrat-go/iter v1.0.2 // indirect
- github.com/lestrrat-go/jwx v1.2.29 // indirect
+ github.com/lestrrat-go/jwx v1.2.30 // indirect
github.com/lestrrat-go/option v1.0.1 // indirect
- github.com/magiconair/properties v1.8.6 // indirect
- github.com/mailru/easyjson v0.7.7 // indirect
- github.com/mattn/go-colorable v0.1.12 // indirect
- github.com/mattn/go-isatty v0.0.18 // indirect
+ github.com/magiconair/properties v1.8.7 // indirect
+ github.com/mailru/easyjson v0.9.0 // indirect
+ github.com/mattn/go-colorable v0.1.14 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect
github.com/mattn/goveralls v0.0.6 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/nats-io/nats.go v1.31.0 // indirect
@@ -151,73 +170,82 @@ require (
github.com/ory/go-acc v0.2.6 // indirect
github.com/ory/go-convenience v0.1.0 // indirect
github.com/ory/viper v1.7.5 // indirect
- github.com/ory/x v0.0.214 // indirect
+ github.com/ory/x v0.0.729 // indirect
github.com/pborman/uuid v1.2.0 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
- github.com/pelletier/go-toml/v2 v2.0.0-beta.8 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/pierrec/lz4 v2.5.2+incompatible // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/pkg/errors v0.9.1 // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/prometheus/client_model v0.6.1 // indirect
- github.com/prometheus/common v0.53.0 // indirect
- github.com/prometheus/procfs v0.15.1 // indirect
- github.com/ray-project/kuberay/ray-operator v1.1.0-rc.1 // indirect
+ 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/prometheus/client_model v0.6.2 // indirect
+ github.com/prometheus/common v0.65.0 // indirect
+ github.com/prometheus/procfs v0.17.0 // indirect
+ github.com/ray-project/kuberay/ray-operator v1.5.1 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
- github.com/robfig/cron/v3 v3.0.0 // indirect
+ github.com/robfig/cron/v3 v3.0.1 // indirect
+ github.com/sagikazarmark/locafero v0.11.0 // indirect
github.com/samber/lo v1.47.0 // indirect
github.com/santhosh-tekuri/jsonschema v1.2.4 // indirect
github.com/sendgrid/rest v2.6.9+incompatible // indirect
github.com/sendgrid/sendgrid-go v3.10.0+incompatible // indirect
github.com/shamaton/msgpack/v2 v2.2.2 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
- github.com/spf13/afero v1.9.2 // indirect
- github.com/spf13/cast v1.4.1 // indirect
+ github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
+ github.com/spf13/afero v1.15.0 // indirect
+ github.com/spf13/cast v1.10.0 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect
- github.com/spf13/viper v1.11.0 // indirect
+ github.com/spf13/viper v1.21.0 // indirect
+ github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
- github.com/stretchr/testify v1.9.0 // indirect
- github.com/subosito/gotenv v1.2.0 // indirect
- github.com/tidwall/gjson v1.17.1 // indirect
+ github.com/subosito/gotenv v1.6.0 // indirect
+ github.com/tidwall/gjson v1.18.0 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.1 // indirect
github.com/tidwall/sjson v1.2.5 // indirect
github.com/wI2L/jsondiff v0.6.0 // indirect
+ github.com/x448/float16 v0.8.4 // indirect
gitlab.com/yvesf/json-schema-compare v0.0.0-20190604192943-a900c04201f7 // indirect
+ go.etcd.io/etcd/api/v3 v3.6.4 // indirect
go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
- go.opentelemetry.io/otel v1.24.0 // indirect
+ go.opentelemetry.io/auto/sdk v1.2.1 // indirect
+ go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect
+ go.opentelemetry.io/otel v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 // indirect
- go.opentelemetry.io/otel/metric v1.24.0 // indirect
- go.opentelemetry.io/otel/sdk v1.24.0 // indirect
- go.opentelemetry.io/otel/trace v1.24.0 // indirect
- go.opentelemetry.io/proto/otlp v1.1.0 // indirect
+ go.opentelemetry.io/otel/metric v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.43.0 // indirect
+ go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect
+ go.opentelemetry.io/otel/trace v1.43.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.10.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
- golang.org/x/crypto v0.31.0 // indirect
- golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 // indirect
- golang.org/x/net v0.33.0 // indirect
- golang.org/x/oauth2 v0.18.0 // indirect
- golang.org/x/sys v0.28.0 // indirect
- golang.org/x/term v0.27.0 // indirect
- golang.org/x/text v0.21.0 // indirect
- golang.org/x/time v0.5.0 // indirect
- golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
+ go.yaml.in/yaml/v2 v2.4.2 // indirect
+ go.yaml.in/yaml/v3 v3.0.4 // indirect
+ golang.org/x/crypto v0.49.0 // indirect
+ golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect
+ golang.org/x/net v0.52.0 // indirect
+ golang.org/x/oauth2 v0.35.0 // indirect
+ golang.org/x/sys v0.42.0 // indirect
+ golang.org/x/term v0.41.0 // indirect
+ golang.org/x/text v0.35.0 // indirect
+ golang.org/x/time v0.12.0 // indirect
+ golang.org/x/tools v0.42.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
- google.golang.org/api v0.155.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
- google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
- google.golang.org/grpc v1.62.1 // indirect
- google.golang.org/protobuf v1.34.1 // indirect
+ google.golang.org/api v0.197.0 // indirect
+ google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect
+ google.golang.org/grpc v1.80.0 // indirect
+ gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
- gopkg.in/ini.v1 v1.66.4 // indirect
+ gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/jcmturner/aescts.v1 v1.0.1 // indirect
gopkg.in/jcmturner/dnsutils.v1 v1.0.1 // indirect
gopkg.in/jcmturner/gokrb5.v7 v7.5.0 // indirect
@@ -228,32 +256,23 @@ require (
gorm.io/driver/sqlite v1.5.4 // indirect
gorm.io/gorm v1.25.4 // indirect
gorm.io/plugin/opentelemetry v0.1.4 // indirect
- k8s.io/api v0.29.3 // indirect
- k8s.io/apiextensions-apiserver v0.29.0 // indirect
- k8s.io/apimachinery v0.29.3 // indirect
- k8s.io/client-go v0.29.3 // indirect
- k8s.io/component-base v0.29.0 // indirect
- k8s.io/klog/v2 v2.110.1 // indirect
- k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect
- k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
- sigs.k8s.io/yaml v1.4.0 // indirect
+ k8s.io/apiextensions-apiserver v0.34.1 // indirect
+ k8s.io/client-go v0.34.1 // indirect
+ k8s.io/klog/v2 v2.130.1 // indirect
+ k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3 // indirect
+ k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d // indirect
+ sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
+ sigs.k8s.io/randfill v1.0.0 // indirect
+ sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
+ sigs.k8s.io/yaml v1.6.0 // indirect
)
replace (
github.com/flyteorg/flyte/datacatalog => ./datacatalog
github.com/flyteorg/flyte/flyteadmin => ./flyteadmin
- github.com/flyteorg/flyte/flytecopilot => ./flytecopilot
github.com/flyteorg/flyte/flyteidl => ./flyteidl
github.com/flyteorg/flyte/flyteplugins => ./flyteplugins
github.com/flyteorg/flyte/flytepropeller => ./flytepropeller
github.com/flyteorg/flyte/flytestdlib => ./flytestdlib
- github.com/google/gnostic-models => github.com/google/gnostic-models v0.6.8
github.com/robfig/cron/v3 => github.com/unionai/cron/v3 v3.0.2-0.20220915080349-5790c370e63a
- k8s.io/api => k8s.io/api v0.28.2
- k8s.io/apimachinery => k8s.io/apimachinery v0.28.2
- k8s.io/client-go => k8s.io/client-go v0.28.2
- k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f
- sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.16.2
)
diff --git a/go.sum b/go.sum
index ff6a407beec..abb4e61ecb0 100644
--- a/go.sum
+++ b/go.sum
@@ -1,4 +1,6 @@
bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8=
+cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
+cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
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=
@@ -6,7 +8,6 @@ cloud.google.com/go v0.41.0/go.mod h1:OauMR7DV8fzvZIl2qg6rkaIhD/vmgk4iwEw/h6ercm
cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg=
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
@@ -15,46 +16,48 @@ cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6
cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
-cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
-cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
-cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
-cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
-cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
-cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM=
-cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4=
+cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ=
+cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc=
+cloud.google.com/go/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U=
+cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk=
+cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
+cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
-cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
-cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=
-cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI=
-cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
-cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
+cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
+cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
-cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI=
-cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8=
-cloud.google.com/go/kms v1.15.5 h1:pj1sRfut2eRbD9pFRjNnPNg/CzJPuQAzUujMIM1vVeM=
-cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI=
+cloud.google.com/go/iam v1.2.1 h1:QFct02HRb7H12J/3utj0qf5tobFh9V4vR6h9eX5EBRU=
+cloud.google.com/go/iam v1.2.1/go.mod h1:3VUIJDPpwT6p/amXRC5GY8fCCh70lxPygguVtI0Z4/g=
+cloud.google.com/go/kms v1.19.0 h1:x0OVJDl6UH1BSX4THKlMfdcFWoE4ruh90ZHuilZekrU=
+cloud.google.com/go/kms v1.19.0/go.mod h1:e4imokuPJUc17Trz2s6lEXFDt8bgDmvpVynH39bdrHM=
cloud.google.com/go/logging v1.0.0/go.mod h1:V1cc3ogwobYzQq5f2R7DS/GvRIrI4FKj01Gs5glwAls=
+cloud.google.com/go/logging v1.11.0 h1:v3ktVzXMV7CwHq1MBF65wcqLMA7i+z3YxbUsoK7mOKs=
+cloud.google.com/go/logging v1.11.0/go.mod h1:5LDiJC/RxTt+fHc1LAt20R9TKiUTReDg6RuuFOZ67+A=
+cloud.google.com/go/longrunning v0.6.1 h1:lOLTFxYpr8hcRtcwWir5ITh1PAKUD/sG2lKrTSYjyMc=
+cloud.google.com/go/longrunning v0.6.1/go.mod h1:nHISoOZpBcmlwbJmiVk5oDRz0qG/ZxPynEGs1iZ79s0=
+cloud.google.com/go/monitoring v1.21.0 h1:EMc0tB+d3lUewT2NzKC/hr8cSR9WsUieVywzIHetGro=
+cloud.google.com/go/monitoring v1.21.0/go.mod h1:tuJ+KNDdJbetSsbSGTqnaBvbauS5kr3Q/koy3Up6r+4=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
-cloud.google.com/go/pubsub v1.34.0 h1:ZtPbfwfi5rLaPeSvDC29fFoE20/tQvGrUS6kVJZJvkU=
-cloud.google.com/go/pubsub v1.34.0/go.mod h1:alj4l4rBg+N3YTFDDC+/YyFTs6JAjam2QfYsddcAW4c=
+cloud.google.com/go/pubsub v1.42.0 h1:PVTbzorLryFL5ue8esTS2BfehUs0ahyNOY9qcd+HMOs=
+cloud.google.com/go/pubsub v1.42.0/go.mod h1:KADJ6s4MbTwhXmse/50SebEhE4SmUwHi48z3/dHar1Y=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
-cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
-cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
-cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8=
-cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8=
+cloud.google.com/go/storage v1.45.0 h1:5av0QcIVj77t+44mV4gffFC/LscFRUhto6UBMB5SimM=
+cloud.google.com/go/storage v1.45.0/go.mod h1:wpPblkIuMP5jCB/E48Pz9zIo2S/zD8g+ITmxKkPCITE=
+cloud.google.com/go/trace v1.11.0 h1:UHX6cOJm45Zw/KIbqHe4kII8PupLt/V5tscZUkeiJVI=
+cloud.google.com/go/trace v1.11.0/go.mod h1:Aiemdi52635dBR7o3zuc9lLjXo3BwGaChEjCa3tJNmM=
contrib.go.opencensus.io/exporter/stackdriver v0.13.1/go.mod h1:z2tyTZtPmQ2HvWH4cOmVDgtY+1lomfKdbLnkJvZdc8c=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
+filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc=
@@ -74,8 +77,14 @@ github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q
github.com/DataDog/datadog-go v3.4.1+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/datadog-go v4.0.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/opencensus-go-exporter-datadog v0.0.0-20191210083620-6965a1cfed68/go.mod h1:gMGUEe16aZh0QN941HgDjwrdjU4iTthPoz2/AtDRADE=
-github.com/GoogleCloudPlatform/spark-on-k8s-operator v0.0.0-20200723154620-6f35a1152625 h1:cQyO5JQ2iuHnEcF3v24kdDMsgh04RjyFPDtuvD6PCE0=
-github.com/GoogleCloudPlatform/spark-on-k8s-operator v0.0.0-20200723154620-6f35a1152625/go.mod h1:6PnrZv6zUDkrNMw0mIoGRmGBR7i9LulhKPmxFq4rUiM=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1/go.mod h1:jyqM3eLpJ3IbIFDTKVz2rF9T/xWGW0rIriGwnz8l9Tk=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1 h1:oTX4vsorBZo/Zdum6OKPA4o7544hm6smoRv1QjpTwGo=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1/go.mod h1:0wEl7vrAD8mehJyohS9HZy+WyEOaQO2mJx86Cvh93kM=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 h1:8nn+rsCvTq9axyEh382S0PFLBeaFwNsT43IrPWzctRU=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1/go.mod h1:viRWSEhtMZqz1rhwmOVKkWl6SwmVowfL9O2YR5gI2PE=
github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
@@ -86,8 +95,9 @@ github.com/NYTimes/gizmo v1.3.6 h1:K+GRagPdAxojsT1TlTQlMkTeOmgfLxSdvuOhdki7GG0=
github.com/NYTimes/gizmo v1.3.6/go.mod h1:8S8QVnITA40p/1jGsUMcPI8R9SSKkoKu+8WF13s9Uhw=
github.com/NYTimes/logrotate v1.0.0/go.mod h1:GxNz1cSw1c6t99PXoZlw+nm90H6cyQyrH66pjVv7x88=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
-github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
+github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8=
+github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
@@ -108,32 +118,45 @@ github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgI
github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg=
-github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 h1:4daAzAu0S6Vi7/lbWECcX0j45yZReDZ56BQsrVBOEEY=
github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg=
+github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
+github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
github.com/aws/aws-sdk-go v1.23.19/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.31.3/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
-github.com/aws/aws-sdk-go v1.47.11 h1:Dol+MA+hQblbnXUI3Vk9qvoekU6O1uDEuAItezjiWNQ=
-github.com/aws/aws-sdk-go v1.47.11/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
+github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
+github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
github.com/aws/aws-sdk-go-v2 v1.0.0/go.mod h1:smfAbmpW+tcRVuNUjo3MOArSZmW72t62rkCzc2i0TWM=
-github.com/aws/aws-sdk-go-v2 v1.2.0 h1:BS+UYpbsElC82gB+2E2jiCBg36i8HlubTB/dO/moQ9c=
-github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo=
-github.com/aws/aws-sdk-go-v2/config v1.0.0 h1:x6vSFAwqAvhYPeSu60f0ZUlGHo3PKKmwDOTL8aMXtv4=
-github.com/aws/aws-sdk-go-v2/config v1.0.0/go.mod h1:WysE/OpUgE37tjtmtJd8GXgT8s1euilE5XtUkRNUQ1w=
-github.com/aws/aws-sdk-go-v2/credentials v1.0.0 h1:0M7netgZ8gCV4v7z1km+Fbl7j6KQYyZL7SS0/l5Jn/4=
-github.com/aws/aws-sdk-go-v2/credentials v1.0.0/go.mod h1:/SvsiqBf509hG4Bddigr3NB12MIpfHhZapyBurJe8aY=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.0 h1:lO7fH5n7Q1dKcDBpuTmwJylD1bOQiRig8LI6TD9yVQk=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.0/go.mod h1:wpMHDCXvOXZxGCRSidyepa8uJHY4vaBGfY2/+oKU/Bc=
+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/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/athena v1.0.0 h1:UfrZP3NMTTKpOsf/P8uCaOxz3U2CNGEizdQKcObY7Ds=
github.com/aws/aws-sdk-go-v2/service/athena v1.0.0/go.mod h1:qY8QFbemf2ceqweXcS6hQqiiIe1z42WqTvHsK2Lb0rE=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.0 h1:IAutMPSrynpvKOpHG6HyWHmh1xmxWAmYOK84NrQVqVQ=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.0/go.mod h1:3jExOmpbjgPnz2FJaMOfbSk1heTkZ66aD3yNtVhnjvI=
-github.com/aws/aws-sdk-go-v2/service/sts v1.0.0 h1:6XCgxNfE4L/Fnq+InhVNd16DKc6Ue1f3dJl3IwwJRUQ=
-github.com/aws/aws-sdk-go-v2/service/sts v1.0.0/go.mod h1:5f+cELGATgill5Pu3/vK3Ebuigstc+qYEHW5MvGWZO4=
+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/aws-xray-sdk-go v0.9.4/go.mod h1:XtMKdBQfpVut+tJEwI7+dJFRxxRdxHDyVNp2tHXRq04=
github.com/aws/smithy-go v1.0.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw=
-github.com/aws/smithy-go v1.1.0 h1:D6CSsM3gdxaGaqXnPgOBCeL6Mophqzu7KJOu7zW78sU=
-github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw=
+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/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=
github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
@@ -151,8 +174,10 @@ github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQ
github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs=
-github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
-github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+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 v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
@@ -175,10 +200,9 @@ github.com/cloudevents/sdk-go/v2 v2.8.0/go.mod h1:GpCBmUj7DIRiDhVvsK5d6WCbgTWs8D
github.com/cloudevents/sdk-go/v2 v2.15.2 h1:54+I5xQEnI73RBhWHxbI1XJcqOFOVJN85vb41+8mHUc=
github.com/cloudevents/sdk-go/v2 v2.15.2/go.mod h1:lL7kSWAE/V8VI4Wh0jbL2v/jvqsm6tjmaQBSvxcv4uE=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ=
-github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=
+github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk=
github.com/cockroachdb/cockroach-go v0.0.0-20190925194419-606b3d062051/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk=
@@ -202,18 +226,18 @@ github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7
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/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/cucumber/godog v0.8.1/go.mod h1:vSh3r/lM+psC1BPXvdkSEuNjmXfpVqrMGYAElF6hxnA=
github.com/dask/dask-kubernetes/v2023 v2023.0.0-20230626103304-abd02cd17b26 h1:6RByIva89lKEvwIzNQSUNcu8NG1p1wwwC4mJfVk/kqw=
github.com/dask/dask-kubernetes/v2023 v2023.0.0-20230626103304-abd02cd17b26/go.mod h1:OqIYr2QnxR3sQK2XahJIyWVcjz38LQ4GNcUzqezFpRg=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
-github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs=
-github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
+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/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
github.com/dgraph-io/ristretto v0.0.1/go.mod h1:T40EBc7CJke8TkpiYfGGKAeFjSaxuFXhuXRyumBd6RE=
github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E=
github.com/dgraph-io/ristretto v0.0.3 h1:jh22xisGBjrEVnRZ1DVTpBVQm0Xndu8sMl0CWDzSIBI=
@@ -242,44 +266,52 @@ github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFP
github.com/elastic/go-sysinfo v1.1.1/go.mod h1:i1ZYdU10oLNfRzq4vq62BEwD2fH8KaWh6eh0ikPT9F0=
github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU=
github.com/elazarl/goproxy v0.0.0-20181003060214-f58a169a71a5/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
-github.com/emicklei/go-restful/v3 v3.12.0 h1:y2DdzBAURM29NFF94q6RaY4vjIH1rtwDapwQtU84iWk=
-github.com/emicklei/go-restful/v3 v3.12.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes=
+github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
+github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=
+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/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=
+github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
-github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
-github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
-github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg=
-github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
+github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=
+github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
+github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls=
+github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
+github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
+github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
-github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
-github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
+github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
+github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/flyteorg/stow v0.3.11 h1:Uf4fzVbghCqMNvx50XvYzwdNeQDBSKQJ7zddWu7p3eI=
-github.com/flyteorg/stow v0.3.11/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
+github.com/flyteorg/stow v0.3.12 h1:RRXI5RUdxaK6A46HrO0D2r14cRlW1lJRL6qyzqpVMPU=
+github.com/flyteorg/stow v0.3.12/go.mod h1:nyaBf8ZWkpHWkKIl4rqKI2uXfPx+VbL0PmEtvq4Pxkc=
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/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ=
github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o=
-github.com/frankban/quicktest v1.10.0 h1:Gfh+GAJZOAoKZsIZeZbdn2JF10kN1XHNvjsvQK8gVkE=
github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y=
+github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
+github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
-github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
+github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
+github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
@@ -290,8 +322,10 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gormigrate/gormigrate/v2 v2.1.1 h1:eGS0WTFRV30r103lU8JNXY27KbviRnqqIDobW3EV3iY=
github.com/go-gormigrate/gormigrate/v2 v2.1.1/go.mod h1:L7nJ620PFDKei9QOhJzqA8kRCk+E3UbV2f5gv+1ndLc=
-github.com/go-jose/go-jose/v3 v3.0.4 h1:Wp5HA7bLQcKnf6YYao/4kpRpVMp/yf6+pJKV8WFSaNY=
-github.com/go-jose/go-jose/v3 v3.0.4/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
+github.com/go-jose/go-jose/v3 v3.0.5 h1:BLLJWbC4nMZOfuPVxoZIxeYsn6Nl2r1fITaJ78UQlVQ=
+github.com/go-jose/go-jose/v3 v3.0.5/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
+github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA=
+github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
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=
@@ -299,9 +333,8 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9
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.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
-github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+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-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
@@ -323,14 +356,14 @@ github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwds
github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
-github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
-github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
+github.com/go-openapi/jsonpointer v0.21.2 h1:AqQaNADVwq/VnkCmQg6ogE+M3FOsKTytwges0JdwVuA=
+github.com/go-openapi/jsonpointer v0.21.2/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk=
github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc=
github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=
-github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
-github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
+github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
+github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
@@ -361,8 +394,8 @@ github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
github.com/go-openapi/swag v0.19.7/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY=
github.com/go-openapi/swag v0.19.9/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY=
-github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
-github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
+github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU=
+github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0=
github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4=
github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA=
github.com/go-openapi/validate v0.19.3/go.mod h1:90Vh6jjkTn+OT1Eefm0ZixWNFjhtOH7vS9k0lo6zwJo=
@@ -372,13 +405,16 @@ github.com/go-redis/redis v6.15.7+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8w
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
-github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
-github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/go-sql-driver/mysql v1.9.0 h1:Y0zIbQXhQKmQgTp44Y1dp3wTXcn804QoTptLZT1vtvo=
+github.com/go-sql-driver/mysql v1.9.0/go.mod h1:pDetrLJeA3oMujJuvXc8RJoasr589B6A9fwzD3QMrqw=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
+github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
+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/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
github.com/gobuffalo/attrs v0.1.0/go.mod h1:fmNpaWyHM0tRm8gCZWKx8yY9fvaNLo2PyzBNSrBZ5Hw=
github.com/gobuffalo/buffalo v0.12.8-0.20181004233540-fac9bb505aa8/go.mod h1:sLyT7/dceRXJUxSsE813JTQtA3Eb1vjxWfo/N//vXIY=
@@ -627,12 +663,12 @@ github.com/gobuffalo/validate/v3 v3.1.0/go.mod h1:HFpjq+AIiA2RHoQnQVTFKF/ZpUPXwy
github.com/gobuffalo/validate/v3 v3.2.0/go.mod h1:PrhDOdDHxtN8KUgMvF3TDL0r1YZXV4sQnyFX/EmeETY=
github.com/gobuffalo/x v0.0.0-20181003152136-452098b06085/go.mod h1:WevpGD+5YOreDJznWevcn8NTmQEW5STSBgIkpkjzqXc=
github.com/gobuffalo/x v0.0.0-20181007152206-913e47c59ca7/go.mod h1:9rDPXaB3kXdKWzMc4odGQQdG2e2DIEmANy5aSJ9yesY=
-github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
-github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+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/gofrs/uuid v3.1.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
-github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0=
-github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
+github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA=
+github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gofrs/uuid/v3 v3.1.2/go.mod h1:xPwMqoocQ1L5G6pXX5BcE7N5jlzn2o19oqAKxwZW/kI=
github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
@@ -640,8 +676,6 @@ github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
-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.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
@@ -650,8 +684,8 @@ github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGw
github.com/golang/gddo v0.0.0-20180828051604-96d2a289f41e/go.mod h1:xEhNfoBDX1hzLm2Nf80qUvZ2sVwoMZ8d6IE2SrsQfh4=
github.com/golang/gddo v0.0.0-20190904175337-72a348e765d2/go.mod h1:xEhNfoBDX1hzLm2Nf80qUvZ2sVwoMZ8d6IE2SrsQfh4=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc=
-github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
+github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I=
+github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -664,7 +698,6 @@ github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFU
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -682,8 +715,6 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq
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.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/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
@@ -692,60 +723,52 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
-github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
-github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
+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/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
+github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.4.1/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.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/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.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-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-jsonnet v0.16.0/go.mod h1:sOcuej3UW1vpPTZOr8L7RQimqai1a57bt5j22LzGZCw=
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 h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
-github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=
-github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
+github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=
+github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8=
+github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
-github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
+github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM=
+github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
-github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
+github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw=
+github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
-github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
-github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
-github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
+github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s=
+github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A=
github.com/gopherjs/gopherjs v0.0.0-20181004151105-1babbf986f6f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
@@ -764,8 +787,8 @@ github.com/gorilla/sessions v1.1.2/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE
github.com/gorilla/sessions v1.1.3/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w=
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
-github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5THxAzdVpqr6/geYxZytqFMBCOtn/ujyeo=
+github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA=
github.com/gotestyourself/gotestyourself v1.3.0/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY=
github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY=
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
@@ -776,8 +799,8 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99 h1:JYghRBlGCZyCF2wNUJ8W0cwaQdtpcssJ4CgC406g+WU=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99/go.mod h1:3bDW6wMZJB7tiONtC/1Xpicra6Wp5GgbTbQWCbI5fkc=
github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=
github.com/gtank/cryptopasta v0.0.0-20170601214702-1f550f6f2f69 h1:7xsUJsB2NrdcttQPa7JLEaGzvdbk7KvfrjgHZXOQRo0=
github.com/gtank/cryptopasta v0.0.0-20170601214702-1f550f6f2f69/go.mod h1:YLEMZOtU+AZ7dhN9T/IpGhXVGly2bvkJQ+zxj3WeVQo=
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
@@ -795,7 +818,6 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
@@ -804,7 +826,6 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf
github.com/inhies/go-bytesize v0.0.0-20201103132853-d0aed0d254f8/go.mod h1:KrtyD5PFj++GKkFS/7/RRrfnRhAMGQwy75GLCHWrCNs=
github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo=
github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
-github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8=
github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ=
github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA=
@@ -813,13 +834,8 @@ github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsU
github.com/jackc/pgconn v1.3.2/go.mod h1:LvCquS3HbBKwgl7KbX9KyqEIumJAbm1UMcTvGaIf3bM=
github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI=
github.com/jackc/pgconn v1.6.0/go.mod h1:yeseQo4xhQbgyJs2c87RAXOH2i624N0Fh1KSPJya7qo=
-github.com/jackc/pgconn v1.14.3 h1:bVoTr12EGANZz66nZPkMInAV/KHD2TxH9npjXXgiB3w=
-github.com/jackc/pgconn v1.14.3/go.mod h1:RZbme4uasqzybK2RK5c65VsHxoyaml09lx3tXOcO/VM=
-github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE=
github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8=
github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE=
-github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5Wi/+Zz7xoE5ALHsRQlOctkOiHc=
-github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78=
@@ -829,11 +845,9 @@ github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvW
github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
github.com/jackc/pgproto3/v2 v2.0.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
-github.com/jackc/pgproto3/v2 v2.3.3 h1:1HLSx5H+tXR9pW3in3zaztoEwQYRC9SQaYUHjTSUOag=
-github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E=
-github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9 h1:L0QtFUgDarD7Fpv9jeVMgy/+Ec0mtnmYuImjTz6dtDA=
-github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
+github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
+github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg=
github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc=
github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw=
@@ -846,13 +860,13 @@ github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9
github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc=
github.com/jackc/pgx/v4 v4.4.1/go.mod h1:6iSW+JznC0YT+SgBn7rNxoEBsBgSmnC5FwyCekOGUiE=
github.com/jackc/pgx/v4 v4.6.0/go.mod h1:vPh43ZzxijXUVJ+t/EmXBtFmbFVO72cuneCT9oAlxAg=
-github.com/jackc/pgx/v5 v5.5.5 h1:amBjrZVmksIdNjxGW/IiIMzxMKZFelXbUoPNb+8sjQw=
-github.com/jackc/pgx/v5 v5.5.5/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A=
+github.com/jackc/pgx/v5 v5.9.2 h1:3ZhOzMWnR4yJ+RW1XImIPsD1aNSz4T4fyP7zlQb56hw=
+github.com/jackc/pgx/v5 v5.9.2/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4=
github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
-github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
-github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
+github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
+github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/jandelgado/gcov2lcov v1.0.4-0.20210120124023-b83752c6dc08/go.mod h1:NnSxK6TMlg1oGDBfGelGbjgorT5/L3cchlbtgFYZSss=
github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o=
github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o=
@@ -909,8 +923,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o
github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.9.8/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
-github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU=
-github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
+github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
github.com/knadh/koanf v0.14.1-0.20201201075439-e0853799f9ec/go.mod h1:H5mEFsTeWizwFXHKtsITL5ipsLTuAMQoGuQpp+1JL9U=
github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
@@ -920,7 +934,6 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
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=
@@ -930,6 +943,8 @@ github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
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/kubeflow/spark-operator v0.0.0-20250325114751-1905be6e1dbd h1:nNH2CU4UhtLUgq29LGcdpvkaPmtFM5gyjX8T+smXZRw=
+github.com/kubeflow/spark-operator v0.0.0-20250325114751-1905be6e1dbd/go.mod h1:qlTEw23y9A1Q5eGYCcM3nvv9wRvrQ0jTTLLYVueE95c=
github.com/kubeflow/training-operator v1.8.0 h1:cHXIz7BV3Ayp7W5Rqe20/ukmVEzraI+O/XRYKBHQcrg=
github.com/kubeflow/training-operator v1.8.0/go.mod h1:T6I15h1S09ncH5C6St/QEC7Dy6dpHZA5sPFo+VoJAvE=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
@@ -942,8 +957,8 @@ github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZ
github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI=
github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
-github.com/lestrrat-go/jwx v1.2.29 h1:QT0utmUJ4/12rmsVQrJ3u55bycPkKqGYuGT4tyRhxSQ=
-github.com/lestrrat-go/jwx v1.2.29/go.mod h1:hU8k2l6WF0ncx20uQdOmik/Gjg6E3/wIRtXSNFeZuB8=
+github.com/lestrrat-go/jwx v1.2.30 h1:VKIFrmjYn0z2J51iLPadqoHIVLzvWNa1kCsTqNDHYPA=
+github.com/lestrrat-go/jwx v1.2.30/go.mod h1:vMxrwFhunGZ3qddmfmEm2+uced8MSI6QFWGTKygjSzQ=
github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU=
github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
@@ -958,15 +973,15 @@ github.com/luna-duclos/instrumentedsql v1.1.3/go.mod h1:9J1njvFds+zN7y85EDhN9XNQ
github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
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/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
-github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
+github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
+github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
-github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
-github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
+github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
github.com/markbates/deplist v1.0.4/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM=
github.com/markbates/deplist v1.0.5/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM=
github.com/markbates/deplist v1.1.3/go.mod h1:BF7ioVzAJYEtzQN/os4rt8H8Ti3h0T7EoN+7eyALktE=
@@ -994,9 +1009,8 @@ github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcncea
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
-github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
-github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
-github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
+github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
@@ -1004,9 +1018,8 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
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/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
-github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
@@ -1032,8 +1045,9 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w
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/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
github.com/monoculum/formam v0.0.0-20180901015400-4e68be1d79ba/go.mod h1:RKgILGEJq24YyJ2ban8EO0RUVSJlF1pGsEvoLEACr/Q=
@@ -1068,8 +1082,8 @@ github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+
github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
-github.com/onsi/ginkgo/v2 v2.14.0 h1:vSmGj2Z5YPb9JwCWT6z6ihcUvDhuXLc3sJiqd3jMKAY=
-github.com/onsi/ginkgo/v2 v2.14.0/go.mod h1:JkUdW7JkN0V6rFvsHcJ478egV3XH9NxpD27Hal/PhZw=
+github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus=
+github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8=
github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
@@ -1077,8 +1091,8 @@ github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa
github.com/onsi/gomega v1.6.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
-github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8=
-github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
+github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y=
+github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0=
github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
@@ -1117,8 +1131,9 @@ github.com/ory/x v0.0.84/go.mod h1:RXLPBG7B+hAViONVg0sHwK+U/ie1Y/NeXrq1JcARfoE=
github.com/ory/x v0.0.93/go.mod h1:lfcTaGXpTZs7IEQAW00r9EtTCOxD//SiP5uWtNiz31g=
github.com/ory/x v0.0.110/go.mod h1:DJfkE3GdakhshNhw4zlKoRaL/ozg/lcTahA9OCih2BE=
github.com/ory/x v0.0.127/go.mod h1:FwUujfFuCj5d+xgLn4fGMYPnzriR5bdAIulFXMtnK0M=
-github.com/ory/x v0.0.214 h1:nz5ijvm5MVhYxWsQSuUrW1hj9F5QLZvPn/nLo5s06T4=
github.com/ory/x v0.0.214/go.mod h1:aRl57gzyD4GF0HQCekovXhv0xTZgAgiht3o8eVhsm9Q=
+github.com/ory/x v0.0.729 h1:7ttCYNCjCdspI6X0oaxGAXoiYWSBrwGRz6w/IG8s3I4=
+github.com/ory/x v0.0.729/go.mod h1:qdUK3Sp4K4nRbYJG0sEnFO1tDLN/Ct53G+ymre0JhCU=
github.com/parnurzeal/gorequest v0.2.15/go.mod h1:3Kh2QUMJoqw3icWAecsyzkpY7UzRfDhbRdTjtNwNiUE=
github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g=
github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
@@ -1129,8 +1144,8 @@ github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAv
github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs=
github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0=
-github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
+github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
+github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
@@ -1147,37 +1162,39 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
-github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+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 v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
github.com/prometheus/client_golang v0.9.4/go.mod h1:oCXIBxdI62A4cR6aTRJCgetEjecSIYzOEaeAn4iYEpM=
-github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
-github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
+github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc=
+github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE=
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=
-github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
-github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
+github.com/prometheus/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.0.0-20181126121408-4724e9255275/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.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE=
-github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U=
+github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE=
+github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
-github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
-github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
+github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0=
+github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
-github.com/ray-project/kuberay/ray-operator v1.1.0-rc.1 h1:skD8MXnQMO3QGUeTKt09VOXvuch/gJh8+6q3OLm0kAQ=
-github.com/ray-project/kuberay/ray-operator v1.1.0-rc.1/go.mod h1:ZqyKKvMP5nKDldQoKmur+Wcx7wVlV9Q98phFqHzr+KY=
+github.com/ray-project/kuberay/ray-operator v1.5.1 h1:7FJYmB8oM+cnjv1VYCj/TfzRZG4XHvvt5Ayn5pZ5A1c=
+github.com/ray-project/kuberay/ray-operator v1.5.1/go.mod h1:itUPJnr3QwoZT70gRgsWFpBolquuZtDRCkdA1lrAb7Y=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
@@ -1193,8 +1210,8 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
github.com/rogpeppe/go-internal v1.3.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.4.0/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.5.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+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/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU=
@@ -1203,6 +1220,8 @@ github.com/rubenv/sql-migrate v0.0.0-20190212093014-1007f53448d7/go.mod h1:WS0rl
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/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc=
+github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik=
github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc=
github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU=
github.com/santhosh-tekuri/jsonschema v1.2.4 h1:hNhW8e7t+H1vgY+1QeEQpveR6D4+OwKPXCfD2aieJis=
@@ -1252,6 +1271,8 @@ github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:X
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/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw=
+github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U=
github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
@@ -1259,36 +1280,40 @@ github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B
github.com/spf13/afero v1.2.0/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
github.com/spf13/afero v1.3.2/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
-github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw=
-github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y=
+github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
+github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg=
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.3.2-0.20200723214538-8d17101741c8/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
-github.com/spf13/cast v1.4.1/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.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
github.com/spf13/cobra v0.0.6/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
github.com/spf13/cobra v0.0.7/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
-github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
-github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
+github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
+github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/pflag v1.0.6/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.2.1/go.mod h1:P4AexN0a+C9tGAnUFNwDMYYZv3pjFuvmeiMyKRaNVlI=
github.com/spf13/viper v1.3.1/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
-github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44=
-github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk=
+github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
+github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
+github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=
+github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=
github.com/sqs/goreturns v0.0.0-20181028201513-538ac6014518/go.mod h1:CKI4AZ4XmGV240rTHfO0hfE83S6/a3/Q1siZJ/vXf7A=
github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693/go.mod h1:6hSY48PjDm4UObWmGLyJE9DxYVKTgR9kbCspXXJEhcU=
github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
@@ -1308,18 +1333,18 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+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.1.1/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
-github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
+github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
+github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
github.com/tidwall/gjson v1.3.2/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls=
github.com/tidwall/gjson v1.6.8/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI=
github.com/tidwall/gjson v1.7.1/go.mod h1:5/xDoumyyDNerp2U36lyolv46b3uF/9Bu6OfyQ9GImk=
github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
-github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U=
-github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
+github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E=
github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
@@ -1352,6 +1377,8 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/wI2L/jsondiff v0.6.0 h1:zrsH3FbfVa3JO9llxrcDy/XLkYPLgoMX6Mz3T2PP2AI=
github.com/wI2L/jsondiff v0.6.0/go.mod h1:D6aQ5gKgPF9g17j+E9N7aasmU1O+XvfmWm1y8UMmNpw=
+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/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
@@ -1361,7 +1388,6 @@ github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:
github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c/go.mod h1:UrdRz5enIKZ63MEE3IF9l2/ebyx59GyGgPi+tICQdmM=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
@@ -1369,11 +1395,15 @@ github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxt
github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0=
gitlab.com/yvesf/json-schema-compare v0.0.0-20190604192943-a900c04201f7 h1:BAkxmYRc1ZPl6Gap4HWqwPT8yLZMrgaAwx12Ft408sg=
gitlab.com/yvesf/json-schema-compare v0.0.0-20190604192943-a900c04201f7/go.mod h1:X40Z1OU8o1oiXWzBmkuYOaruzYGv60l0AxGiB0E9keI=
+go.einride.tech/aip v0.67.1 h1:d/4TW92OxXBngkSOwWS2CH5rez869KpKMaN44mdxkFI=
+go.einride.tech/aip v0.67.1/go.mod h1:ZGX4/zKw8dcgzdLsrvpOOGxfxI2QSk12SlP7d6c0/XI=
go.elastic.co/apm v1.8.0/go.mod h1:tCw6CkOJgkWnzEthFN9HUP1uL3Gjc/Ur6m7gRPLaoH0=
go.elastic.co/apm/module/apmhttp v1.8.0/go.mod h1:9LPFlEON51/lRbnWDfqAWErihIiAFDUMfMV27YjoWQ8=
go.elastic.co/apm/module/apmot v1.8.0/go.mod h1:Q5Xzabte8G/fkvDjr1jlDuOSUt9hkVWNZEHh6ZNaTjI=
go.elastic.co/fastjson v1.0.0/go.mod h1:PmeUOMMtLHQr9ZS9J9owrAVg0FkaZDRZJEFTTGHtchs=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
+go.etcd.io/etcd/api/v3 v3.6.4 h1:7F6N7toCKcV72QmoUKa23yYLiiljMrT4xCeBL9BmXdo=
+go.etcd.io/etcd/api/v3 v3.6.4/go.mod h1:eFhhvfR8Px1P6SEuLT600v+vrhdDTdcfMzmnxVXXSbk=
go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
go.mongodb.org/mongo-driver v1.3.0/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE=
@@ -1383,44 +1413,50 @@ go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
+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 v0.18.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ=
+go.opentelemetry.io/contrib/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE=
+go.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk=
+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/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.18.0/go.mod h1:iK1G0FgHurSJ/aYLg5LpnPI0pqdanM73S3dhyDp0Lk4=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
-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.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ=
go.opentelemetry.io/otel v0.18.0/go.mod h1:PT5zQj4lTsR1YeARt8YNKcFb88/c2IKoSABK9mX0r78=
-go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
-go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
+go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
+go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0 h1:zr8ymM5OWWjjiWRzwTfZ67c905+2TMHYp2lMJ52QTyM=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0/go.mod h1:sQs7FT2iLVJ+67vYngGJkPe1qr39IzaBzaj9IDNNY8k=
go.opentelemetry.io/otel/metric v0.18.0/go.mod h1:kEH2QtzAyBy3xDVQfGZKIcok4ZZFvd5xyKPfPcuK6pE=
-go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
-go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
+go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
+go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
go.opentelemetry.io/otel/oteltest v0.18.0/go.mod h1:NyierCU3/G8DLTva7KRzGii2fdxdR89zXKH1bNWY7Bo=
-go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
+go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
+go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
+go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
+go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
go.opentelemetry.io/otel/trace v0.18.0/go.mod h1:FzdUu3BPwZSZebfQ1vl5/tAa8LyMLXSJN57AXIt/iDk=
-go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
-go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
-go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI=
-go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY=
+go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
+go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
+go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=
+go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.5.1/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
+go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
@@ -1433,6 +1469,10 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
+go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
+go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
+go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180830192347-182538f80094/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
@@ -1472,13 +1512,10 @@ golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
-golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
-golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
-golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
-golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
+golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
+golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1493,8 +1530,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
+golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw=
+golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM=
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
@@ -1508,7 +1545,6 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/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=
@@ -1517,13 +1553,11 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
-golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8=
+golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180816102801-aaf60122140d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -1566,38 +1600,24 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200707034311-ab3426394381/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-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=
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-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
-golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
-golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
-golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
+golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced/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-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
-golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
+golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
+golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
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=
@@ -1606,14 +1626,12 @@ golang.org/x/sync v0.0.0-20190412183630-56d357773e84/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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/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.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
-golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
+golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/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-20180831094639-fa5fdf94c789/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1673,25 +1691,13 @@ golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/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-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-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1701,37 +1707,33 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
-golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
+golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
-golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
-golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
-golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
+golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=
+golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
+golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
+golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+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-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -1814,39 +1816,26 @@ golang.org/x/tools v0.0.0-20200308013534-11ec41452d41/go.mod h1:o4KQGtdN14AW+yjs
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
-golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
+golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=
+golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
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=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
gonum.org/v1/gonum v0.6.2/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU=
+gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
+gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
gonum.org/v1/netlib v0.0.0-20191229114700-bbb4dff026f8/go.mod h1:2IgXn/sJaRbePPBA1wRj8OE+QLvVaH0q8SK6TSTKlnk=
gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=
@@ -1864,16 +1853,9 @@ google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/
google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.25.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
-google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
-google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
-google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
-google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
-google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA=
-google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk=
+google.golang.org/api v0.197.0 h1:x6CwqQLsFiA5JKAiGyGBjc2bNtHtLddhJCE2IKuhhcQ=
+google.golang.org/api v0.197.0/go.mod h1:AuOuo20GoQ331nq7DquGHlU6d+2wN2fZ8O0ta60nRNw=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -1882,9 +1864,6 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww
google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-google.golang.org/appengine v1.6.7/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-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=
@@ -1911,27 +1890,14 @@ google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfG
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
-google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200806141610-86f49bd18e98/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
-google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU=
-google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
+google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU=
+google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 h1:VPWxll4HlMw1Vs/qXtN7BvhZqsS9cdAittCNvVENElA=
+google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
@@ -1948,15 +1914,11 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
-google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
-google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
+google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM=
+google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4=
google.golang.org/grpc/examples v0.0.0-20210304020650-930c79186c99/go.mod h1:Ly7ZA/ARzg8fnPU9TyZIxoz33sEUuWX7txiqs8lPTgE=
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=
@@ -1968,10 +1930,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
google.golang.org/protobuf v1.25.0/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.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
-google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
+google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/DataDog/dd-trace-go.v1 v1.22.0/go.mod h1:DVp8HmDh8PuTu2Z0fVVlBsyWaC++fzwVCaGWylTe3tg=
gopkg.in/DataDog/dd-trace-go.v1 v1.27.0/go.mod h1:Sp1lku8WJMvNV0kjDI4Ni/T7J/U3BO5ct5kEaoVU8+I=
gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
@@ -1984,6 +1944,8 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo=
+gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo=
gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
@@ -1996,8 +1958,8 @@ 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.55.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4=
-gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
+gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
+gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/jcmturner/aescts.v1 v1.0.1 h1:cVVZBK2b1zY26haWB4vbBiZrfFQnfbTVrE3xZq6hrEw=
gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo=
gopkg.in/jcmturner/dnsutils.v1 v1.0.1 h1:cIuC1OLRGZrld+16ZJvvZxVJeKPsvd5eUIvxfoN5hSM=
@@ -2055,24 +2017,21 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
-k8s.io/api v0.28.2 h1:9mpl5mOb6vXZvqbQmankOfPIGiudghwCoLl1EYfUZbw=
-k8s.io/api v0.28.2/go.mod h1:RVnJBsjU8tcMq7C3iaRSGMeaKt2TWEUXcpIt/90fjEg=
-k8s.io/apiextensions-apiserver v0.29.0 h1:0VuspFG7Hj+SxyF/Z/2T0uFbI5gb5LRgEyUVE3Q4lV0=
-k8s.io/apiextensions-apiserver v0.29.0/go.mod h1:TKmpy3bTS0mr9pylH0nOt/QzQRrW7/h7yLdRForMZwc=
-k8s.io/apimachinery v0.28.2 h1:KCOJLrc6gu+wV1BYgwik4AF4vXOlVJPdiqn0yAWWwXQ=
-k8s.io/apimachinery v0.28.2/go.mod h1:RdzF87y/ngqk9H4z3EL2Rppv5jj95vGS/HaFXrLDApU=
-k8s.io/client-go v0.28.2 h1:DNoYI1vGq0slMBN/SWKMZMw0Rq+0EQW6/AK4v9+3VeY=
-k8s.io/client-go v0.28.2/go.mod h1:sMkApowspLuc7omj1FOSUxSoqjr+d5Q0Yc0LOFnYFJY=
-k8s.io/component-base v0.29.0 h1:T7rjd5wvLnPBV1vC4zWd/iWRbV8Mdxs+nGaoaFzGw3s=
-k8s.io/component-base v0.29.0/go.mod h1:sADonFTQ9Zc9yFLghpDpmNXEdHyQmFIGbiuZbqAXQ1M=
-k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0=
-k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo=
-k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f h1:eeEUOoGYWhOz7EyXqhlR2zHKNw2mNJ9vzJmub6YN6kk=
-k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
-k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
-k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
+k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
+k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI=
+k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc=
+k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4=
+k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
+k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY=
+k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8=
+k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
+k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
+k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3 h1:liMHz39T5dJO1aOKHLvwaCjDbf07wVh6yaUlTpunnkE=
+k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
+k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d h1:wAhiDyZ4Tdtt7e46e9M5ZSAJ/MnPGPs+Ki1gHw4w1R0=
+k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=
modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=
@@ -2082,11 +2041,13 @@ rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
-sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU=
-sigs.k8s.io/controller-runtime v0.16.2/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
-sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
-sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
+sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A=
+sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
+sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
+sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=