typekro 0.28.1 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/advanced/index.d.ts +5 -1
- package/dist/advanced/index.d.ts.map +1 -1
- package/dist/advanced/index.js +2 -3
- package/dist/advanced/index.js.map +1 -1
- package/dist/alchemy/deployers.d.ts +6 -4
- package/dist/alchemy/deployers.d.ts.map +1 -1
- package/dist/alchemy/deployers.js +46 -9
- package/dist/alchemy/deployers.js.map +1 -1
- package/dist/alchemy/index.d.ts +2 -3
- package/dist/alchemy/index.d.ts.map +1 -1
- package/dist/alchemy/index.js +1 -1
- package/dist/alchemy/index.js.map +1 -1
- package/dist/alchemy/kro-delete.d.ts +6 -5
- package/dist/alchemy/kro-delete.d.ts.map +1 -1
- package/dist/alchemy/kro-delete.js +169 -22
- package/dist/alchemy/kro-delete.js.map +1 -1
- package/dist/alchemy/resource-registration.d.ts +24 -31
- package/dist/alchemy/resource-registration.d.ts.map +1 -1
- package/dist/alchemy/resource-registration.js +439 -75
- package/dist/alchemy/resource-registration.js.map +1 -1
- package/dist/alchemy/types.d.ts +56 -14
- package/dist/alchemy/types.d.ts.map +1 -1
- package/dist/alchemy/utilities.d.ts +2 -2
- package/dist/alchemy/utilities.d.ts.map +1 -1
- package/dist/compositions/typekro-runtime/typekro-runtime.d.ts.map +1 -1
- package/dist/compositions/typekro-runtime/typekro-runtime.js +31 -28
- package/dist/compositions/typekro-runtime/typekro-runtime.js.map +1 -1
- package/dist/compositions/typekro-runtime/types.d.ts +12 -0
- package/dist/compositions/typekro-runtime/types.d.ts.map +1 -1
- package/dist/core/composition/analysis-metadata.d.ts +15 -0
- package/dist/core/composition/analysis-metadata.d.ts.map +1 -0
- package/dist/core/composition/analysis-metadata.js +20 -0
- package/dist/core/composition/analysis-metadata.js.map +1 -0
- package/dist/core/composition/context.d.ts +4 -0
- package/dist/core/composition/context.d.ts.map +1 -1
- package/dist/core/composition/context.js +1 -0
- package/dist/core/composition/context.js.map +1 -1
- package/dist/core/composition/imperative.d.ts.map +1 -1
- package/dist/core/composition/imperative.js +39 -9
- package/dist/core/composition/imperative.js.map +1 -1
- package/dist/core/composition/nested-status-cel.js +3 -3
- package/dist/core/composition/nested-status-cel.js.map +1 -1
- package/dist/core/constants/brands.d.ts +1 -1
- package/dist/core/constants/brands.d.ts.map +1 -1
- package/dist/core/constants/brands.js +1 -1
- package/dist/core/constants/brands.js.map +1 -1
- package/dist/core/dependencies/resolver.d.ts +3 -1
- package/dist/core/dependencies/resolver.d.ts.map +1 -1
- package/dist/core/dependencies/resolver.js +29 -13
- package/dist/core/dependencies/resolver.js.map +1 -1
- package/dist/core/deployment/crd-manager.d.ts +4 -1
- package/dist/core/deployment/crd-manager.d.ts.map +1 -1
- package/dist/core/deployment/crd-manager.js +9 -4
- package/dist/core/deployment/crd-manager.js.map +1 -1
- package/dist/core/deployment/deletion-result.d.ts +22 -0
- package/dist/core/deployment/deletion-result.d.ts.map +1 -0
- package/dist/core/deployment/deletion-result.js +108 -0
- package/dist/core/deployment/deletion-result.js.map +1 -0
- package/dist/core/deployment/deployment-state-discovery.d.ts +1 -0
- package/dist/core/deployment/deployment-state-discovery.d.ts.map +1 -1
- package/dist/core/deployment/deployment-state-discovery.js +89 -9
- package/dist/core/deployment/deployment-state-discovery.js.map +1 -1
- package/dist/core/deployment/direct-factory.d.ts +46 -25
- package/dist/core/deployment/direct-factory.d.ts.map +1 -1
- package/dist/core/deployment/direct-factory.js +536 -126
- package/dist/core/deployment/direct-factory.js.map +1 -1
- package/dist/core/deployment/engine.d.ts +4 -1
- package/dist/core/deployment/engine.d.ts.map +1 -1
- package/dist/core/deployment/engine.js +105 -34
- package/dist/core/deployment/engine.js.map +1 -1
- package/dist/core/deployment/errors.d.ts +20 -1
- package/dist/core/deployment/errors.d.ts.map +1 -1
- package/dist/core/deployment/errors.js +55 -0
- package/dist/core/deployment/errors.js.map +1 -1
- package/dist/core/deployment/event-monitor.d.ts +4 -3
- package/dist/core/deployment/event-monitor.d.ts.map +1 -1
- package/dist/core/deployment/event-monitor.js +17 -5
- package/dist/core/deployment/event-monitor.js.map +1 -1
- package/dist/core/deployment/index.d.ts +1 -1
- package/dist/core/deployment/index.d.ts.map +1 -1
- package/dist/core/deployment/index.js +1 -1
- package/dist/core/deployment/index.js.map +1 -1
- package/dist/core/deployment/k8s-helpers.d.ts +1 -1
- package/dist/core/deployment/k8s-helpers.d.ts.map +1 -1
- package/dist/core/deployment/k8s-helpers.js +11 -5
- package/dist/core/deployment/k8s-helpers.js.map +1 -1
- package/dist/core/deployment/kro-factory.d.ts +54 -30
- package/dist/core/deployment/kro-factory.d.ts.map +1 -1
- package/dist/core/deployment/kro-factory.js +2002 -259
- package/dist/core/deployment/kro-factory.js.map +1 -1
- package/dist/core/deployment/kro-instance-admission.d.ts +17 -0
- package/dist/core/deployment/kro-instance-admission.d.ts.map +1 -0
- package/dist/core/deployment/kro-instance-admission.js +73 -0
- package/dist/core/deployment/kro-instance-admission.js.map +1 -0
- package/dist/core/deployment/kro-instance-safety.d.ts +0 -3
- package/dist/core/deployment/kro-instance-safety.d.ts.map +1 -1
- package/dist/core/deployment/kro-instance-safety.js +0 -11
- package/dist/core/deployment/kro-instance-safety.js.map +1 -1
- package/dist/core/deployment/kro-namespace-teardown.d.ts +63 -5
- package/dist/core/deployment/kro-namespace-teardown.d.ts.map +1 -1
- package/dist/core/deployment/kro-namespace-teardown.js +124 -12
- package/dist/core/deployment/kro-namespace-teardown.js.map +1 -1
- package/dist/core/deployment/kro-readiness.d.ts +2 -0
- package/dist/core/deployment/kro-readiness.d.ts.map +1 -1
- package/dist/core/deployment/kro-readiness.js +23 -6
- package/dist/core/deployment/kro-readiness.js.map +1 -1
- package/dist/core/deployment/poll-timeout.d.ts +1 -1
- package/dist/core/deployment/poll-timeout.d.ts.map +1 -1
- package/dist/core/deployment/poll-timeout.js +12 -1
- package/dist/core/deployment/poll-timeout.js.map +1 -1
- package/dist/core/deployment/resource-applier.d.ts +19 -3
- package/dist/core/deployment/resource-applier.d.ts.map +1 -1
- package/dist/core/deployment/resource-applier.js +263 -44
- package/dist/core/deployment/resource-applier.js.map +1 -1
- package/dist/core/deployment/rollback-manager.d.ts +6 -1
- package/dist/core/deployment/rollback-manager.d.ts.map +1 -1
- package/dist/core/deployment/rollback-manager.js +38 -12
- package/dist/core/deployment/rollback-manager.js.map +1 -1
- package/dist/core/deployment/schema-cel-evaluator.d.ts.map +1 -1
- package/dist/core/deployment/schema-cel-evaluator.js +63 -0
- package/dist/core/deployment/schema-cel-evaluator.js.map +1 -1
- package/dist/core/deployment/shared-utilities.d.ts +11 -6
- package/dist/core/deployment/shared-utilities.d.ts.map +1 -1
- package/dist/core/deployment/shared-utilities.js +169 -14
- package/dist/core/deployment/shared-utilities.js.map +1 -1
- package/dist/core/deployment/singleton-gitops.d.ts.map +1 -1
- package/dist/core/deployment/singleton-gitops.js +0 -2
- package/dist/core/deployment/singleton-gitops.js.map +1 -1
- package/dist/core/deployment/singleton-owner-drift.d.ts +11 -2
- package/dist/core/deployment/singleton-owner-drift.d.ts.map +1 -1
- package/dist/core/deployment/singleton-owner-drift.js +30 -13
- package/dist/core/deployment/singleton-owner-drift.js.map +1 -1
- package/dist/core/deployment/strategies/base-strategy.d.ts +2 -0
- package/dist/core/deployment/strategies/base-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/base-strategy.js +19 -2
- package/dist/core/deployment/strategies/base-strategy.js.map +1 -1
- package/dist/core/deployment/strategies/direct-strategy.d.ts +3 -0
- package/dist/core/deployment/strategies/direct-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/direct-strategy.js +31 -8
- package/dist/core/deployment/strategies/direct-strategy.js.map +1 -1
- package/dist/core/deployment/strategies/index.d.ts +1 -1
- package/dist/core/deployment/strategies/index.d.ts.map +1 -1
- package/dist/core/deployment/strategies/index.js +1 -1
- package/dist/core/deployment/strategies/index.js.map +1 -1
- package/dist/core/errors.d.ts +2 -2
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/core/expressions/analysis/cel-emitter.d.ts.map +1 -1
- package/dist/core/expressions/analysis/cel-emitter.js +17 -13
- package/dist/core/expressions/analysis/cel-emitter.js.map +1 -1
- package/dist/core/expressions/analysis/expression-metadata.d.ts +15 -0
- package/dist/core/expressions/analysis/expression-metadata.d.ts.map +1 -0
- package/dist/core/expressions/analysis/expression-metadata.js +10 -0
- package/dist/core/expressions/analysis/expression-metadata.js.map +1 -0
- package/dist/core/expressions/analysis/ready-when.d.ts +3 -0
- package/dist/core/expressions/analysis/ready-when.d.ts.map +1 -0
- package/dist/core/expressions/analysis/ready-when.js +127 -0
- package/dist/core/expressions/analysis/ready-when.js.map +1 -0
- package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts +3 -2
- package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-helpers.js +6 -4
- package/dist/core/expressions/composition/composition-analyzer-helpers.js.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-ternary.d.ts +3 -2
- package/dist/core/expressions/composition/composition-analyzer-ternary.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-ternary.js +12 -12
- package/dist/core/expressions/composition/composition-analyzer-ternary.js.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-traversal.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-traversal.js +68 -4
- package/dist/core/expressions/composition/composition-analyzer-traversal.js.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-types.d.ts +2 -0
- package/dist/core/expressions/composition/composition-analyzer-types.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer.js +2 -0
- package/dist/core/expressions/composition/composition-analyzer.js.map +1 -1
- package/dist/core/expressions/factory/status-builder-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/factory/status-builder-analyzer.js +14 -1
- package/dist/core/expressions/factory/status-builder-analyzer.js.map +1 -1
- package/dist/core/kubernetes/api.d.ts.map +1 -1
- package/dist/core/kubernetes/api.js +2 -3
- package/dist/core/kubernetes/api.js.map +1 -1
- package/dist/core/kubernetes/bun-api-client.d.ts +1 -1
- package/dist/core/kubernetes/bun-api-client.d.ts.map +1 -1
- package/dist/core/kubernetes/bun-api-client.js +17 -17
- package/dist/core/kubernetes/bun-api-client.js.map +1 -1
- package/dist/core/kubernetes/bun-http-library.d.ts +16 -0
- package/dist/core/kubernetes/bun-http-library.d.ts.map +1 -1
- package/dist/core/kubernetes/bun-http-library.js +7 -1
- package/dist/core/kubernetes/bun-http-library.js.map +1 -1
- package/dist/core/kubernetes/bun-watch.d.ts +30 -0
- package/dist/core/kubernetes/bun-watch.d.ts.map +1 -0
- package/dist/core/kubernetes/bun-watch.js +144 -0
- package/dist/core/kubernetes/bun-watch.js.map +1 -0
- package/dist/core/kubernetes/client-node-runtime.d.ts +10 -0
- package/dist/core/kubernetes/client-node-runtime.d.ts.map +1 -0
- package/dist/core/kubernetes/client-node-runtime.js +15 -0
- package/dist/core/kubernetes/client-node-runtime.js.map +1 -0
- package/dist/core/kubernetes/client-provider.d.ts +21 -1
- package/dist/core/kubernetes/client-provider.d.ts.map +1 -1
- package/dist/core/kubernetes/client-provider.js +10 -10
- package/dist/core/kubernetes/client-provider.js.map +1 -1
- package/dist/core/kubernetes/index.d.ts +1 -1
- package/dist/core/kubernetes/index.d.ts.map +1 -1
- package/dist/core/kubernetes/index.js.map +1 -1
- package/dist/core/metadata/resource-metadata.d.ts +24 -1
- package/dist/core/metadata/resource-metadata.d.ts.map +1 -1
- package/dist/core/metadata/resource-metadata.js +8 -4
- package/dist/core/metadata/resource-metadata.js.map +1 -1
- package/dist/core/planning/artifact-codec.d.ts +14 -0
- package/dist/core/planning/artifact-codec.d.ts.map +1 -0
- package/dist/core/planning/artifact-codec.js +329 -0
- package/dist/core/planning/artifact-codec.js.map +1 -0
- package/dist/core/planning/artifacts.d.ts +212 -0
- package/dist/core/planning/artifacts.d.ts.map +1 -0
- package/dist/core/planning/artifacts.js +5 -0
- package/dist/core/planning/artifacts.js.map +1 -0
- package/dist/core/planning/aspects.d.ts +11 -0
- package/dist/core/planning/aspects.d.ts.map +1 -0
- package/dist/core/planning/aspects.js +77 -0
- package/dist/core/planning/aspects.js.map +1 -0
- package/dist/core/planning/canonical.d.ts +10 -0
- package/dist/core/planning/canonical.d.ts.map +1 -0
- package/dist/core/planning/canonical.js +54 -0
- package/dist/core/planning/canonical.js.map +1 -0
- package/dist/core/planning/capabilities.d.ts +16 -0
- package/dist/core/planning/capabilities.d.ts.map +1 -0
- package/dist/core/planning/capabilities.js +90 -0
- package/dist/core/planning/capabilities.js.map +1 -0
- package/dist/core/planning/capture.d.ts +29 -0
- package/dist/core/planning/capture.d.ts.map +1 -0
- package/dist/core/planning/capture.js +18 -0
- package/dist/core/planning/capture.js.map +1 -0
- package/dist/core/planning/compiler.d.ts +12 -0
- package/dist/core/planning/compiler.d.ts.map +1 -0
- package/dist/core/planning/compiler.js +631 -0
- package/dist/core/planning/compiler.js.map +1 -0
- package/dist/core/planning/direct-runtime-adapter.d.ts +39 -0
- package/dist/core/planning/direct-runtime-adapter.d.ts.map +1 -0
- package/dist/core/planning/direct-runtime-adapter.js +238 -0
- package/dist/core/planning/direct-runtime-adapter.js.map +1 -0
- package/dist/core/planning/execution-record.d.ts +21 -0
- package/dist/core/planning/execution-record.d.ts.map +1 -0
- package/dist/core/planning/execution-record.js +304 -0
- package/dist/core/planning/execution-record.js.map +1 -0
- package/dist/core/planning/index.d.ts +20 -0
- package/dist/core/planning/index.d.ts.map +1 -0
- package/dist/core/planning/index.js +18 -0
- package/dist/core/planning/index.js.map +1 -0
- package/dist/core/planning/kro-bundle.d.ts +24 -0
- package/dist/core/planning/kro-bundle.d.ts.map +1 -0
- package/dist/core/planning/kro-bundle.js +314 -0
- package/dist/core/planning/kro-bundle.js.map +1 -0
- package/dist/core/planning/kro-runtime-adapter.d.ts +28 -0
- package/dist/core/planning/kro-runtime-adapter.d.ts.map +1 -0
- package/dist/core/planning/kro-runtime-adapter.js +211 -0
- package/dist/core/planning/kro-runtime-adapter.js.map +1 -0
- package/dist/core/planning/materialization.d.ts +54 -0
- package/dist/core/planning/materialization.d.ts.map +1 -0
- package/dist/core/planning/materialization.js +489 -0
- package/dist/core/planning/materialization.js.map +1 -0
- package/dist/core/planning/plan-codec.d.ts +11 -0
- package/dist/core/planning/plan-codec.d.ts.map +1 -0
- package/dist/core/planning/plan-codec.js +555 -0
- package/dist/core/planning/plan-codec.js.map +1 -0
- package/dist/core/planning/planner.d.ts +21 -0
- package/dist/core/planning/planner.d.ts.map +1 -0
- package/dist/core/planning/planner.js +1518 -0
- package/dist/core/planning/planner.js.map +1 -0
- package/dist/core/planning/schema.d.ts +10 -0
- package/dist/core/planning/schema.d.ts.map +1 -0
- package/dist/core/planning/schema.js +159 -0
- package/dist/core/planning/schema.js.map +1 -0
- package/dist/core/planning/types.d.ts +441 -0
- package/dist/core/planning/types.d.ts.map +1 -0
- package/dist/core/planning/types.js +3 -0
- package/dist/core/planning/types.js.map +1 -0
- package/dist/core/planning/values.d.ts +76 -0
- package/dist/core/planning/values.d.ts.map +1 -0
- package/dist/core/planning/values.js +852 -0
- package/dist/core/planning/values.js.map +1 -0
- package/dist/core/proxy/create-resource.d.ts +12 -0
- package/dist/core/proxy/create-resource.d.ts.map +1 -1
- package/dist/core/proxy/create-resource.js +41 -9
- package/dist/core/proxy/create-resource.js.map +1 -1
- package/dist/core/readiness/evaluator-factories.d.ts +3 -1
- package/dist/core/readiness/evaluator-factories.d.ts.map +1 -1
- package/dist/core/readiness/evaluator-factories.js +130 -5
- package/dist/core/readiness/evaluator-factories.js.map +1 -1
- package/dist/core/readiness/index.d.ts +2 -1
- package/dist/core/readiness/index.d.ts.map +1 -1
- package/dist/core/readiness/index.js +2 -1
- package/dist/core/readiness/index.js.map +1 -1
- package/dist/core/readiness/portable-strategies.d.ts +28 -0
- package/dist/core/readiness/portable-strategies.d.ts.map +1 -0
- package/dist/core/readiness/portable-strategies.js +55 -0
- package/dist/core/readiness/portable-strategies.js.map +1 -0
- package/dist/core/readiness/strategy-configuration.d.ts +12 -0
- package/dist/core/readiness/strategy-configuration.d.ts.map +1 -0
- package/dist/core/readiness/strategy-configuration.js +51 -0
- package/dist/core/readiness/strategy-configuration.js.map +1 -0
- package/dist/core/references/cel-evaluator.d.ts +5 -0
- package/dist/core/references/cel-evaluator.d.ts.map +1 -1
- package/dist/core/references/cel-evaluator.js +33 -2
- package/dist/core/references/cel-evaluator.js.map +1 -1
- package/dist/core/references/cel.d.ts +10 -7
- package/dist/core/references/cel.d.ts.map +1 -1
- package/dist/core/references/cel.js +13 -12
- package/dist/core/references/cel.js.map +1 -1
- package/dist/core/references/external-refs.d.ts +2 -0
- package/dist/core/references/external-refs.d.ts.map +1 -1
- package/dist/core/references/external-refs.js +3 -1
- package/dist/core/references/external-refs.js.map +1 -1
- package/dist/core/references/resolver.d.ts +7 -1
- package/dist/core/references/resolver.d.ts.map +1 -1
- package/dist/core/references/resolver.js +91 -9
- package/dist/core/references/resolver.js.map +1 -1
- package/dist/core/references/schema-proxy.d.ts.map +1 -1
- package/dist/core/references/schema-proxy.js +35 -21
- package/dist/core/references/schema-proxy.js.map +1 -1
- package/dist/core/resources/factory-registry.d.ts +64 -2
- package/dist/core/resources/factory-registry.d.ts.map +1 -1
- package/dist/core/resources/factory-registry.js +74 -3
- package/dist/core/resources/factory-registry.js.map +1 -1
- package/dist/core/resources/index.d.ts +3 -2
- package/dist/core/resources/index.d.ts.map +1 -1
- package/dist/core/resources/index.js +2 -1
- package/dist/core/resources/index.js.map +1 -1
- package/dist/core/resources/live-comparison.d.ts +58 -0
- package/dist/core/resources/live-comparison.d.ts.map +1 -0
- package/dist/core/resources/live-comparison.js +293 -0
- package/dist/core/resources/live-comparison.js.map +1 -0
- package/dist/core/runtime/standalone-operation.d.ts +12 -0
- package/dist/core/runtime/standalone-operation.d.ts.map +1 -0
- package/dist/core/runtime/standalone-operation.js +62 -0
- package/dist/core/runtime/standalone-operation.js.map +1 -0
- package/dist/core/serialization/cel-references.d.ts +1 -0
- package/dist/core/serialization/cel-references.d.ts.map +1 -1
- package/dist/core/serialization/cel-references.js +12 -2
- package/dist/core/serialization/cel-references.js.map +1 -1
- package/dist/core/serialization/core.d.ts.map +1 -1
- package/dist/core/serialization/core.js +277 -182
- package/dist/core/serialization/core.js.map +1 -1
- package/dist/core/serialization/schema.d.ts.map +1 -1
- package/dist/core/serialization/schema.js +350 -26
- package/dist/core/serialization/schema.js.map +1 -1
- package/dist/core/serialization/status-analysis-pipeline.d.ts +1 -1
- package/dist/core/serialization/status-analysis-pipeline.d.ts.map +1 -1
- package/dist/core/serialization/status-analysis-pipeline.js +14 -11
- package/dist/core/serialization/status-analysis-pipeline.js.map +1 -1
- package/dist/core/serialization/yaml.d.ts +5 -1
- package/dist/core/serialization/yaml.d.ts.map +1 -1
- package/dist/core/serialization/yaml.js +35 -182
- package/dist/core/serialization/yaml.js.map +1 -1
- package/dist/core/types/deployment.d.ts +135 -14
- package/dist/core/types/deployment.d.ts.map +1 -1
- package/dist/core/types/kubernetes.d.ts +3 -0
- package/dist/core/types/kubernetes.d.ts.map +1 -1
- package/dist/core/types/resource-graph.d.ts +7 -1
- package/dist/core/types/resource-graph.d.ts.map +1 -1
- package/dist/core/types/serialization.d.ts +8 -1
- package/dist/core/types/serialization.d.ts.map +1 -1
- package/dist/core/validation/cel-validator.d.ts.map +1 -1
- package/dist/core/validation/cel-validator.js +25 -16
- package/dist/core/validation/cel-validator.js.map +1 -1
- package/dist/experimental-planning.d.ts +13 -0
- package/dist/experimental-planning.d.ts.map +1 -0
- package/dist/experimental-planning.js +12 -0
- package/dist/experimental-planning.js.map +1 -0
- package/dist/factories/apisix/compositions/apisix-bootstrap.d.ts.map +1 -1
- package/dist/factories/apisix/compositions/apisix-bootstrap.js +29 -23
- package/dist/factories/apisix/compositions/apisix-bootstrap.js.map +1 -1
- package/dist/factories/apisix/compositions/apisix-helm-repository.d.ts +15 -0
- package/dist/factories/apisix/compositions/apisix-helm-repository.d.ts.map +1 -0
- package/dist/factories/apisix/compositions/apisix-helm-repository.js +28 -0
- package/dist/factories/apisix/compositions/apisix-helm-repository.js.map +1 -0
- package/dist/factories/apisix/compositions/index.d.ts +1 -0
- package/dist/factories/apisix/compositions/index.d.ts.map +1 -1
- package/dist/factories/apisix/compositions/index.js +1 -0
- package/dist/factories/apisix/compositions/index.js.map +1 -1
- package/dist/factories/apisix/types.d.ts +22 -0
- package/dist/factories/apisix/types.d.ts.map +1 -1
- package/dist/factories/apisix/types.js +16 -0
- package/dist/factories/apisix/types.js.map +1 -1
- package/dist/factories/apisix/utils/admin-credentials.d.ts +1 -0
- package/dist/factories/apisix/utils/admin-credentials.d.ts.map +1 -1
- package/dist/factories/apisix/utils/admin-credentials.js +5 -4
- package/dist/factories/apisix/utils/admin-credentials.js.map +1 -1
- package/dist/factories/caddy/compositions/caddy-ingress.d.ts.map +1 -1
- package/dist/factories/caddy/compositions/caddy-ingress.js +9 -2
- package/dist/factories/caddy/compositions/caddy-ingress.js.map +1 -1
- package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.d.ts.map +1 -1
- package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.js +11 -25
- package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.js.map +1 -1
- package/dist/factories/cert-manager/resources/certificates.d.ts.map +1 -1
- package/dist/factories/cert-manager/resources/certificates.js +2 -1
- package/dist/factories/cert-manager/resources/certificates.js.map +1 -1
- package/dist/factories/cert-manager/resources/challenges.d.ts.map +1 -1
- package/dist/factories/cert-manager/resources/challenges.js +3 -0
- package/dist/factories/cert-manager/resources/challenges.js.map +1 -1
- package/dist/factories/cilium/compositions/cilium-bootstrap.d.ts +4 -4
- package/dist/factories/cilium/resources/gateway.d.ts.map +1 -1
- package/dist/factories/cilium/resources/gateway.js +13 -12
- package/dist/factories/cilium/resources/gateway.js.map +1 -1
- package/dist/factories/cilium/resources/networking.d.ts.map +1 -1
- package/dist/factories/cilium/resources/networking.js +9 -0
- package/dist/factories/cilium/resources/networking.js.map +1 -1
- package/dist/factories/clickhouse/compositions/clickhouse-operator-bootstrap.d.ts +2 -1
- package/dist/factories/clickhouse/compositions/clickhouse-operator-bootstrap.d.ts.map +1 -1
- package/dist/factories/clickhouse/compositions/clickhouse-operator-bootstrap.js +2 -6
- package/dist/factories/clickhouse/compositions/clickhouse-operator-bootstrap.js.map +1 -1
- package/dist/factories/clickhouse/resources/installation.d.ts.map +1 -1
- package/dist/factories/clickhouse/resources/installation.js +2 -0
- package/dist/factories/clickhouse/resources/installation.js.map +1 -1
- package/dist/factories/clickhouse/resources/keeper.d.ts.map +1 -1
- package/dist/factories/clickhouse/resources/keeper.js +2 -0
- package/dist/factories/clickhouse/resources/keeper.js.map +1 -1
- package/dist/factories/clickhouse/types.d.ts +5 -2
- package/dist/factories/clickhouse/types.d.ts.map +1 -1
- package/dist/factories/clickhouse/types.js +2 -1
- package/dist/factories/clickhouse/types.js.map +1 -1
- package/dist/factories/clickstack/compositions/k8s-telemetry.d.ts +4 -2
- package/dist/factories/clickstack/compositions/k8s-telemetry.d.ts.map +1 -1
- package/dist/factories/clickstack/compositions/k8s-telemetry.js +2 -5
- package/dist/factories/clickstack/compositions/k8s-telemetry.js.map +1 -1
- package/dist/factories/clickstack/types.d.ts +2 -1
- package/dist/factories/clickstack/types.d.ts.map +1 -1
- package/dist/factories/clickstack/types.js +3 -1
- package/dist/factories/clickstack/types.js.map +1 -1
- package/dist/factories/clickstack/utils/helm-values-mapper.js.map +1 -1
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.d.ts +2 -1
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.d.ts.map +1 -1
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.js +3 -8
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.js.map +1 -1
- package/dist/factories/cnpg/resources/backup.d.ts.map +1 -1
- package/dist/factories/cnpg/resources/backup.js +2 -0
- package/dist/factories/cnpg/resources/backup.js.map +1 -1
- package/dist/factories/cnpg/resources/cluster.d.ts.map +1 -1
- package/dist/factories/cnpg/resources/cluster.js +2 -1
- package/dist/factories/cnpg/resources/cluster.js.map +1 -1
- package/dist/factories/cnpg/resources/pooler.d.ts.map +1 -1
- package/dist/factories/cnpg/resources/pooler.js +2 -0
- package/dist/factories/cnpg/resources/pooler.js.map +1 -1
- package/dist/factories/cnpg/resources/scheduled-backup.d.ts.map +1 -1
- package/dist/factories/cnpg/resources/scheduled-backup.js +2 -1
- package/dist/factories/cnpg/resources/scheduled-backup.js.map +1 -1
- package/dist/factories/cnpg/types.d.ts +6 -3
- package/dist/factories/cnpg/types.d.ts.map +1 -1
- package/dist/factories/cnpg/types.js +2 -1
- package/dist/factories/cnpg/types.js.map +1 -1
- package/dist/factories/dagster/compositions/dagster-bootstrap.d.ts +2 -0
- package/dist/factories/dagster/compositions/dagster-bootstrap.d.ts.map +1 -1
- package/dist/factories/dagster/types.d.ts +5 -0
- package/dist/factories/dagster/types.d.ts.map +1 -1
- package/dist/factories/dagster/types.js +1 -0
- package/dist/factories/dagster/types.js.map +1 -1
- package/dist/factories/dagster/utils/helm-values-mapper.js +3 -0
- package/dist/factories/dagster/utils/helm-values-mapper.js.map +1 -1
- package/dist/factories/external-dns/compositions/external-dns-bootstrap.d.ts.map +1 -1
- package/dist/factories/external-dns/compositions/external-dns-bootstrap.js +7 -4
- package/dist/factories/external-dns/compositions/external-dns-bootstrap.js.map +1 -1
- package/dist/factories/external-dns/resources/dns-endpoint.d.ts.map +1 -1
- package/dist/factories/external-dns/resources/dns-endpoint.js +20 -18
- package/dist/factories/external-dns/resources/dns-endpoint.js.map +1 -1
- package/dist/factories/flux/git-repository.d.ts.map +1 -1
- package/dist/factories/flux/git-repository.js +41 -34
- package/dist/factories/flux/git-repository.js.map +1 -1
- package/dist/factories/flux/kustomize/readiness-evaluators.d.ts +0 -6
- package/dist/factories/flux/kustomize/readiness-evaluators.d.ts.map +1 -1
- package/dist/factories/flux/kustomize/readiness-evaluators.js +12 -2
- package/dist/factories/flux/kustomize/readiness-evaluators.js.map +1 -1
- package/dist/factories/harbor/compositions/harbor-installation.d.ts +46 -38
- package/dist/factories/harbor/compositions/harbor-installation.d.ts.map +1 -1
- package/dist/factories/harbor/compositions/harbor-installation.js +4 -2
- package/dist/factories/harbor/compositions/harbor-installation.js.map +1 -1
- package/dist/factories/harbor/types.d.ts +13 -11
- package/dist/factories/harbor/types.d.ts.map +1 -1
- package/dist/factories/harbor/types.js +11 -9
- package/dist/factories/harbor/types.js.map +1 -1
- package/dist/factories/helm/helm-repository.d.ts.map +1 -1
- package/dist/factories/helm/helm-repository.js +14 -1
- package/dist/factories/helm/helm-repository.js.map +1 -1
- package/dist/factories/helm/index.d.ts +2 -0
- package/dist/factories/helm/index.d.ts.map +1 -1
- package/dist/factories/helm/index.js +1 -0
- package/dist/factories/helm/index.js.map +1 -1
- package/dist/factories/helm/readiness-evaluators.d.ts.map +1 -1
- package/dist/factories/helm/readiness-evaluators.js +46 -7
- package/dist/factories/helm/readiness-evaluators.js.map +1 -1
- package/dist/factories/helm/status.d.ts +18 -0
- package/dist/factories/helm/status.d.ts.map +1 -0
- package/dist/factories/helm/status.js +38 -0
- package/dist/factories/helm/status.js.map +1 -0
- package/dist/factories/index.d.ts +2 -2
- package/dist/factories/index.d.ts.map +1 -1
- package/dist/factories/index.js +4 -4
- package/dist/factories/index.js.map +1 -1
- package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts +1 -1
- package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts.map +1 -1
- package/dist/factories/inngest/compositions/inngest-bootstrap.js +2 -4
- package/dist/factories/inngest/compositions/inngest-bootstrap.js.map +1 -1
- package/dist/factories/inngest/resources/helm.d.ts.map +1 -1
- package/dist/factories/inngest/resources/helm.js +12 -3
- package/dist/factories/inngest/resources/helm.js.map +1 -1
- package/dist/factories/inngest/types.d.ts +3 -7
- package/dist/factories/inngest/types.d.ts.map +1 -1
- package/dist/factories/inngest/types.js +1 -1
- package/dist/factories/inngest/types.js.map +1 -1
- package/dist/factories/kro/kro-crd.d.ts.map +1 -1
- package/dist/factories/kro/kro-crd.js +32 -33
- package/dist/factories/kro/kro-crd.js.map +1 -1
- package/dist/factories/kro/kro-custom-resource.d.ts.map +1 -1
- package/dist/factories/kro/kro-custom-resource.js +91 -85
- package/dist/factories/kro/kro-custom-resource.js.map +1 -1
- package/dist/factories/kro/resource-graph-definition.d.ts.map +1 -1
- package/dist/factories/kro/resource-graph-definition.js +127 -117
- package/dist/factories/kro/resource-graph-definition.js.map +1 -1
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.d.ts.map +1 -1
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.js +27 -26
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.js.map +1 -1
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.d.ts.map +1 -1
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.js +22 -22
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.js.map +1 -1
- package/dist/factories/kubernetes/certificates/certificate-signing-request.d.ts.map +1 -1
- package/dist/factories/kubernetes/certificates/certificate-signing-request.js +41 -39
- package/dist/factories/kubernetes/certificates/certificate-signing-request.js.map +1 -1
- package/dist/factories/kubernetes/core/component-status.d.ts.map +1 -1
- package/dist/factories/kubernetes/core/component-status.js +14 -16
- package/dist/factories/kubernetes/core/component-status.js.map +1 -1
- package/dist/factories/kubernetes/core/namespace.d.ts.map +1 -1
- package/dist/factories/kubernetes/core/namespace.js +31 -38
- package/dist/factories/kubernetes/core/namespace.js.map +1 -1
- package/dist/factories/kubernetes/core/node.d.ts.map +1 -1
- package/dist/factories/kubernetes/core/node.js +17 -25
- package/dist/factories/kubernetes/core/node.js.map +1 -1
- package/dist/factories/kubernetes/core/pod.d.ts.map +1 -1
- package/dist/factories/kubernetes/core/pod.js +31 -35
- package/dist/factories/kubernetes/core/pod.js.map +1 -1
- package/dist/factories/kubernetes/extensions/custom-resource-definition.d.ts.map +1 -1
- package/dist/factories/kubernetes/extensions/custom-resource-definition.js +34 -36
- package/dist/factories/kubernetes/extensions/custom-resource-definition.js.map +1 -1
- package/dist/factories/kubernetes/extensions/custom-resource.d.ts.map +1 -1
- package/dist/factories/kubernetes/extensions/custom-resource.js +2 -4
- package/dist/factories/kubernetes/extensions/custom-resource.js.map +1 -1
- package/dist/factories/kubernetes/networking/endpoints.d.ts.map +1 -1
- package/dist/factories/kubernetes/networking/endpoints.js +29 -30
- package/dist/factories/kubernetes/networking/endpoints.js.map +1 -1
- package/dist/factories/kubernetes/networking/ingress.d.ts.map +1 -1
- package/dist/factories/kubernetes/networking/ingress.js +46 -57
- package/dist/factories/kubernetes/networking/ingress.js.map +1 -1
- package/dist/factories/kubernetes/networking/network-policy.d.ts +9 -0
- package/dist/factories/kubernetes/networking/network-policy.d.ts.map +1 -1
- package/dist/factories/kubernetes/networking/network-policy.js +51 -1
- package/dist/factories/kubernetes/networking/network-policy.js.map +1 -1
- package/dist/factories/kubernetes/networking/service.d.ts.map +1 -1
- package/dist/factories/kubernetes/networking/service.js +48 -40
- package/dist/factories/kubernetes/networking/service.js.map +1 -1
- package/dist/factories/kubernetes/policy/pod-disruption-budget.d.ts.map +1 -1
- package/dist/factories/kubernetes/policy/pod-disruption-budget.js +40 -46
- package/dist/factories/kubernetes/policy/pod-disruption-budget.js.map +1 -1
- package/dist/factories/kubernetes/policy/resource-quota.d.ts.map +1 -1
- package/dist/factories/kubernetes/policy/resource-quota.js +30 -34
- package/dist/factories/kubernetes/policy/resource-quota.js.map +1 -1
- package/dist/factories/kubernetes/storage/persistent-volume-claim.d.ts.map +1 -1
- package/dist/factories/kubernetes/storage/persistent-volume-claim.js +22 -21
- package/dist/factories/kubernetes/storage/persistent-volume-claim.js.map +1 -1
- package/dist/factories/kubernetes/storage/persistent-volume.d.ts.map +1 -1
- package/dist/factories/kubernetes/storage/persistent-volume.js +32 -38
- package/dist/factories/kubernetes/storage/persistent-volume.js.map +1 -1
- package/dist/factories/kubernetes/storage/volume-attachment.d.ts.map +1 -1
- package/dist/factories/kubernetes/storage/volume-attachment.js +12 -11
- package/dist/factories/kubernetes/storage/volume-attachment.js.map +1 -1
- package/dist/factories/kubernetes/workloads/cron-job.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/cron-job.js +39 -34
- package/dist/factories/kubernetes/workloads/cron-job.js.map +1 -1
- package/dist/factories/kubernetes/workloads/daemon-set.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/daemon-set.js +24 -23
- package/dist/factories/kubernetes/workloads/daemon-set.js.map +1 -1
- package/dist/factories/kubernetes/workloads/deployment.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/deployment.js +45 -35
- package/dist/factories/kubernetes/workloads/deployment.js.map +1 -1
- package/dist/factories/kubernetes/workloads/job.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/job.js +87 -77
- package/dist/factories/kubernetes/workloads/job.js.map +1 -1
- package/dist/factories/kubernetes/workloads/replica-set.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/replica-set.js +24 -24
- package/dist/factories/kubernetes/workloads/replica-set.js.map +1 -1
- package/dist/factories/kubernetes/workloads/replication-controller.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/replication-controller.js +37 -26
- package/dist/factories/kubernetes/workloads/replication-controller.js.map +1 -1
- package/dist/factories/kubernetes/workloads/stateful-set.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/stateful-set.js +69 -55
- package/dist/factories/kubernetes/workloads/stateful-set.js.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-artifact-applier.d.ts +15 -0
- package/dist/factories/kubernetes/yaml/yaml-artifact-applier.d.ts.map +1 -0
- package/dist/factories/kubernetes/yaml/yaml-artifact-applier.js +69 -0
- package/dist/factories/kubernetes/yaml/yaml-artifact-applier.js.map +1 -0
- package/dist/factories/kubernetes/yaml/yaml-directory.d.ts +2 -1
- package/dist/factories/kubernetes/yaml/yaml-directory.d.ts.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-directory.js +3 -34
- package/dist/factories/kubernetes/yaml/yaml-directory.js.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-file.d.ts +13 -91
- package/dist/factories/kubernetes/yaml/yaml-file.d.ts.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-file.js +21 -311
- package/dist/factories/kubernetes/yaml/yaml-file.js.map +1 -1
- package/dist/factories/nats/compositions/nats-bootstrap.d.ts +2 -2
- package/dist/factories/nats/compositions/nats-bootstrap.d.ts.map +1 -1
- package/dist/factories/nats/compositions/nats-bootstrap.js +2 -3
- package/dist/factories/nats/compositions/nats-bootstrap.js.map +1 -1
- package/dist/factories/nats/resources/jetstream.d.ts.map +1 -1
- package/dist/factories/nats/resources/jetstream.js +2 -0
- package/dist/factories/nats/resources/jetstream.js.map +1 -1
- package/dist/factories/nats/types.d.ts +3 -3
- package/dist/factories/nats/types.js +1 -1
- package/dist/factories/nats/types.js.map +1 -1
- package/dist/factories/ory/compositions/ory-platform-stack.d.ts.map +1 -1
- package/dist/factories/ory/compositions/ory-platform-stack.js +35 -9
- package/dist/factories/ory/compositions/ory-platform-stack.js.map +1 -1
- package/dist/factories/ory/resources/oathkeeper-rule.d.ts.map +1 -1
- package/dist/factories/ory/resources/oathkeeper-rule.js +11 -8
- package/dist/factories/ory/resources/oathkeeper-rule.js.map +1 -1
- package/dist/factories/ory/resources/oauth2-client.d.ts.map +1 -1
- package/dist/factories/ory/resources/oauth2-client.js +12 -9
- package/dist/factories/ory/resources/oauth2-client.js.map +1 -1
- package/dist/factories/ory/types.d.ts +3 -0
- package/dist/factories/ory/types.d.ts.map +1 -1
- package/dist/factories/ory/types.js +1 -0
- package/dist/factories/ory/types.js.map +1 -1
- package/dist/factories/ory/utils/helm-values-mapper.d.ts.map +1 -1
- package/dist/factories/ory/utils/helm-values-mapper.js +6 -3
- package/dist/factories/ory/utils/helm-values-mapper.js.map +1 -1
- package/dist/factories/rook/compositions/rook-ceph-operator-installation.d.ts +2 -2
- package/dist/factories/rook/compositions/rook-ceph-operator-installation.d.ts.map +1 -1
- package/dist/factories/rook/compositions/rook-ceph-operator-installation.js +2 -3
- package/dist/factories/rook/compositions/rook-ceph-operator-installation.js.map +1 -1
- package/dist/factories/rook/compositions/rook-ceph-platform.d.ts +104 -0
- package/dist/factories/rook/compositions/rook-ceph-platform.d.ts.map +1 -1
- package/dist/factories/rook/resources/ceph-object-store-user.d.ts.map +1 -1
- package/dist/factories/rook/resources/ceph-object-store-user.js +2 -0
- package/dist/factories/rook/resources/ceph-object-store-user.js.map +1 -1
- package/dist/factories/rook/resources/ceph-object-store.d.ts.map +1 -1
- package/dist/factories/rook/resources/ceph-object-store.js +2 -0
- package/dist/factories/rook/resources/ceph-object-store.js.map +1 -1
- package/dist/factories/rook/resources/object-bucket-claim.d.ts.map +1 -1
- package/dist/factories/rook/resources/object-bucket-claim.js +2 -0
- package/dist/factories/rook/resources/object-bucket-claim.js.map +1 -1
- package/dist/factories/rook/types.d.ts +105 -1
- package/dist/factories/rook/types.d.ts.map +1 -1
- package/dist/factories/rook/types.js +10 -1
- package/dist/factories/rook/types.js.map +1 -1
- package/dist/factories/rook/utils/helm-values-mapper.d.ts +1 -1
- package/dist/factories/rook/utils/helm-values-mapper.d.ts.map +1 -1
- package/dist/factories/rook/utils/helm-values-mapper.js +19 -7
- package/dist/factories/rook/utils/helm-values-mapper.js.map +1 -1
- package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts.map +1 -1
- package/dist/factories/searxng/compositions/searxng-bootstrap.js +2 -2
- package/dist/factories/searxng/compositions/searxng-bootstrap.js.map +1 -1
- package/dist/factories/searxng/resources/searxng.d.ts.map +1 -1
- package/dist/factories/searxng/resources/searxng.js +2 -0
- package/dist/factories/searxng/resources/searxng.js.map +1 -1
- package/dist/factories/valkey/compositions/valkey-bootstrap.d.ts +2 -2
- package/dist/factories/valkey/compositions/valkey-bootstrap.d.ts.map +1 -1
- package/dist/factories/valkey/compositions/valkey-bootstrap.js +4 -9
- package/dist/factories/valkey/compositions/valkey-bootstrap.js.map +1 -1
- package/dist/factories/valkey/resources/valkey.d.ts.map +1 -1
- package/dist/factories/valkey/resources/valkey.js +2 -1
- package/dist/factories/valkey/resources/valkey.js.map +1 -1
- package/dist/factories/valkey/types.d.ts +3 -7
- package/dist/factories/valkey/types.d.ts.map +1 -1
- package/dist/factories/valkey/types.js +1 -1
- package/dist/factories/valkey/types.js.map +1 -1
- package/dist/factories/webapp/compositions/web-app-with-processing.d.ts +3 -2
- package/dist/factories/webapp/compositions/web-app-with-processing.d.ts.map +1 -1
- package/dist/factories/webapp/compositions/web-app-with-processing.js +7 -6
- package/dist/factories/webapp/compositions/web-app-with-processing.js.map +1 -1
- package/dist/factories/webapp/types.d.ts +1 -0
- package/dist/factories/webapp/types.d.ts.map +1 -1
- package/dist/factories/webapp/types.js +2 -0
- package/dist/factories/webapp/types.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/shared/brands.d.ts +7 -0
- package/dist/shared/brands.d.ts.map +1 -1
- package/dist/shared/brands.js +7 -0
- package/dist/shared/brands.js.map +1 -1
- package/dist/utils/index.d.ts +3 -3
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -3
- package/dist/utils/index.js.map +1 -1
- package/package.json +20 -5
- package/dist/factories/kubernetes/yaml/conflict-handler.d.ts +0 -23
- package/dist/factories/kubernetes/yaml/conflict-handler.d.ts.map +0 -1
- package/dist/factories/kubernetes/yaml/conflict-handler.js +0 -83
- package/dist/factories/kubernetes/yaml/conflict-handler.js.map +0 -1
|
@@ -38,6 +38,8 @@ export interface KroReadinessOptions {
|
|
|
38
38
|
pollInterval?: number;
|
|
39
39
|
/** Optional context for error messages (e.g. factory name). */
|
|
40
40
|
factoryContext?: string;
|
|
41
|
+
/** Signal for cancelling the readiness operation. */
|
|
42
|
+
abortSignal?: AbortSignal;
|
|
41
43
|
}
|
|
42
44
|
/**
|
|
43
45
|
* Wait for a Kro custom resource instance to become ready.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kro-readiness.d.ts","sourceRoot":"","sources":["../../../src/core/deployment/kro-readiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,KAAK,GAAG,MAAM,yBAAyB,CAAC;AAWpD,kDAAkD;AAClD,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IAErB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAEhB,uEAAuE;IACvE,MAAM,EAAE,GAAG,CAAC,mBAAmB,CAAC;IAEhC,+DAA+D;IAC/D,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,CAAC;IAEvC,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAElB,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IAEnB,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"kro-readiness.d.ts","sourceRoot":"","sources":["../../../src/core/deployment/kro-readiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,KAAK,GAAG,MAAM,yBAAyB,CAAC;AAWpD,kDAAkD;AAClD,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IAErB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAEhB,uEAAuE;IACvE,MAAM,EAAE,GAAG,CAAC,mBAAmB,CAAC;IAEhC,+DAA+D;IAC/D,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,CAAC;IAEvC,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAElB,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IAEnB,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,qDAAqD;IACrD,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAkBD;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkQzF"}
|
|
@@ -12,7 +12,23 @@
|
|
|
12
12
|
import { DEFAULT_FAST_POLL_INTERVAL, DEFAULT_HTTP_READ_TIMEOUT, DEFAULT_POLL_INTERVAL, } from '../config/defaults.js';
|
|
13
13
|
import { CRDInstanceError, DeploymentTimeoutError, ensureError } from '../errors.js';
|
|
14
14
|
import { getComponentLogger } from '../logging/index.js';
|
|
15
|
-
import { callWithTimeout,
|
|
15
|
+
import { callWithTimeout, PollTimeoutError, perCallTimeout } from './poll-timeout.js';
|
|
16
|
+
function abortableDelay(ms, abortSignal) {
|
|
17
|
+
abortSignal?.throwIfAborted();
|
|
18
|
+
if (!abortSignal)
|
|
19
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
const onAbort = () => {
|
|
22
|
+
clearTimeout(timeout);
|
|
23
|
+
reject(abortSignal.reason ?? new DOMException('The operation was aborted', 'AbortError'));
|
|
24
|
+
};
|
|
25
|
+
const timeout = setTimeout(() => {
|
|
26
|
+
abortSignal.removeEventListener('abort', onAbort);
|
|
27
|
+
resolve();
|
|
28
|
+
}, ms);
|
|
29
|
+
abortSignal.addEventListener('abort', onAbort, { once: true });
|
|
30
|
+
});
|
|
31
|
+
}
|
|
16
32
|
/**
|
|
17
33
|
* Wait for a Kro custom resource instance to become ready.
|
|
18
34
|
*
|
|
@@ -26,11 +42,12 @@ import { callWithTimeout, perCallTimeout, PollTimeoutError } from './poll-timeou
|
|
|
26
42
|
* @throws {DeploymentTimeoutError} if the timeout is exceeded
|
|
27
43
|
*/
|
|
28
44
|
export async function waitForKroInstanceReady(options) {
|
|
29
|
-
const { instanceName, timeout, k8sApi, customObjectsApi, namespace, apiVersion, kind, rgdName, pollInterval = DEFAULT_FAST_POLL_INTERVAL, factoryContext, } = options;
|
|
45
|
+
const { instanceName, timeout, k8sApi, customObjectsApi, namespace, apiVersion, kind, rgdName, pollInterval = DEFAULT_FAST_POLL_INTERVAL, factoryContext, abortSignal, } = options;
|
|
30
46
|
const logger = getComponentLogger('kro-readiness');
|
|
31
47
|
const readinessLogger = logger.child({ instanceName, rgdName });
|
|
32
48
|
const startTime = Date.now();
|
|
33
49
|
while (Date.now() - startTime < timeout) {
|
|
50
|
+
abortSignal?.throwIfAborted();
|
|
34
51
|
try {
|
|
35
52
|
// Bound the read so a wedged/expired kubeconfig exec credential rejects (and is re-thrown below)
|
|
36
53
|
// instead of hanging the poll forever — see poll-timeout.ts. A ≤0 budget means the deadline is
|
|
@@ -45,14 +62,14 @@ export async function waitForKroInstanceReady(options) {
|
|
|
45
62
|
name: instanceName,
|
|
46
63
|
namespace,
|
|
47
64
|
},
|
|
48
|
-
}), readTimeout, `read ${kind}/${instanceName}
|
|
65
|
+
}), readTimeout, `read ${kind}/${instanceName}`, abortSignal);
|
|
49
66
|
// In the new API, methods return objects directly (no .body wrapper)
|
|
50
67
|
const instance = response;
|
|
51
68
|
// Kro-specific readiness logic
|
|
52
69
|
const status = instance.status;
|
|
53
70
|
if (!status) {
|
|
54
71
|
readinessLogger.debug('No status found yet, continuing to wait', { instanceName });
|
|
55
|
-
await
|
|
72
|
+
await abortableDelay(DEFAULT_POLL_INTERVAL, abortSignal);
|
|
56
73
|
continue;
|
|
57
74
|
}
|
|
58
75
|
const state = status.state;
|
|
@@ -85,7 +102,7 @@ export async function waitForKroInstanceReady(options) {
|
|
|
85
102
|
version: 'v1alpha1',
|
|
86
103
|
plural: 'resourcegraphdefinitions',
|
|
87
104
|
name: rgdName,
|
|
88
|
-
}), rgdReadTimeout, `read ResourceGraphDefinition/${rgdName}
|
|
105
|
+
}), rgdReadTimeout, `read ResourceGraphDefinition/${rgdName}`, abortSignal);
|
|
89
106
|
const rgd = rgdResponse;
|
|
90
107
|
const rgdStatusSchema = rgd.spec?.schema?.status ?? {};
|
|
91
108
|
expectedStatusKeys = Object.keys(rgdStatusSchema).filter((key) => !basicKroFields.includes(key));
|
|
@@ -196,7 +213,7 @@ export async function waitForKroInstanceReady(options) {
|
|
|
196
213
|
readinessLogger.debug('Instance not found yet, continuing to wait', { instanceName });
|
|
197
214
|
}
|
|
198
215
|
// Wait before checking again
|
|
199
|
-
await
|
|
216
|
+
await abortableDelay(pollInterval, abortSignal);
|
|
200
217
|
}
|
|
201
218
|
const elapsed = Date.now() - startTime;
|
|
202
219
|
throw new DeploymentTimeoutError(`Timeout waiting for Kro instance ${instanceName} to be ready after ${elapsed}ms (timeout: ${timeout}ms).${factoryContext ? ` This usually means the Kro controller is not running or the RGD deployment failed. Check Kro controller logs: kubectl logs -n kro-system deployment/kro` : ''}`, kind, instanceName, timeout, 'instance-readiness');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kro-readiness.js","sourceRoot":"","sources":["../../../src/core/deployment/kro-readiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"kro-readiness.js","sourceRoot":"","sources":["../../../src/core/deployment/kro-readiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ export declare class PollTimeoutError extends Error {
|
|
|
33
33
|
* means "an operation that actually started did not return in time" (a wedged call), never "the overall
|
|
34
34
|
* poll deadline had already elapsed" — the two are distinct and must not be conflated.
|
|
35
35
|
*/
|
|
36
|
-
export declare function callWithTimeout<T>(op: () => Promise<T>, timeoutMs: number, label: string): Promise<T>;
|
|
36
|
+
export declare function callWithTimeout<T>(op: () => Promise<T>, timeoutMs: number, label: string, abortSignal?: AbortSignal): Promise<T>;
|
|
37
37
|
/**
|
|
38
38
|
* The per-call budget: the configured cap (HTTP read timeout), capped STRICTLY by the poll's remaining
|
|
39
39
|
* deadline so one call can never overshoot the overall `timeout`. Returns ≤ 0 when the deadline is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poll-timeout.d.ts","sourceRoot":"","sources":["../../../src/core/deployment/poll-timeout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,8HAA8H;AAC9H,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBACf,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAS7C;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"poll-timeout.d.ts","sourceRoot":"","sources":["../../../src/core/deployment/poll-timeout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,8HAA8H;AAC9H,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBACf,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAS7C;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,CAAC,CAAC,CAuBZ;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE"}
|
|
@@ -39,19 +39,30 @@ export class PollTimeoutError extends Error {
|
|
|
39
39
|
* means "an operation that actually started did not return in time" (a wedged call), never "the overall
|
|
40
40
|
* poll deadline had already elapsed" — the two are distinct and must not be conflated.
|
|
41
41
|
*/
|
|
42
|
-
export async function callWithTimeout(op, timeoutMs, label) {
|
|
42
|
+
export async function callWithTimeout(op, timeoutMs, label, abortSignal) {
|
|
43
43
|
let timer;
|
|
44
|
+
let detachAbort = () => undefined;
|
|
44
45
|
try {
|
|
46
|
+
abortSignal?.throwIfAborted();
|
|
47
|
+
const aborted = new Promise((_, reject) => {
|
|
48
|
+
if (!abortSignal)
|
|
49
|
+
return;
|
|
50
|
+
const onAbort = () => reject(abortSignal.reason ?? new DOMException('The operation was aborted', 'AbortError'));
|
|
51
|
+
abortSignal.addEventListener('abort', onAbort, { once: true });
|
|
52
|
+
detachAbort = () => abortSignal.removeEventListener('abort', onAbort);
|
|
53
|
+
});
|
|
45
54
|
return await Promise.race([
|
|
46
55
|
op(),
|
|
47
56
|
new Promise((_, reject) => {
|
|
48
57
|
timer = setTimeout(() => reject(new PollTimeoutError(label, timeoutMs)), timeoutMs);
|
|
49
58
|
}),
|
|
59
|
+
aborted,
|
|
50
60
|
]);
|
|
51
61
|
}
|
|
52
62
|
finally {
|
|
53
63
|
if (timer)
|
|
54
64
|
clearTimeout(timer);
|
|
65
|
+
detachAbort();
|
|
55
66
|
}
|
|
56
67
|
}
|
|
57
68
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poll-timeout.js","sourceRoot":"","sources":["../../../src/core/deployment/poll-timeout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,8HAA8H;AAC9H,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAChC,SAAS,CAAS;IAC3B,YAAY,KAAa,EAAE,SAAiB;QAC1C,KAAK,CACH,GAAG,KAAK,iBAAiB,SAAS,+DAA+D;YAC/F,+FAA+F;YAC/F,0DAA0D,CAC7D,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,
|
|
1
|
+
{"version":3,"file":"poll-timeout.js","sourceRoot":"","sources":["../../../src/core/deployment/poll-timeout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,8HAA8H;AAC9H,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAChC,SAAS,CAAS;IAC3B,YAAY,KAAa,EAAE,SAAiB;QAC1C,KAAK,CACH,GAAG,KAAK,iBAAiB,SAAS,+DAA+D;YAC/F,+FAA+F;YAC/F,0DAA0D,CAC7D,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAoB,EACpB,SAAiB,EACjB,KAAa,EACb,WAAyB;IAEzB,IAAI,KAAgD,CAAC;IACrD,IAAI,WAAW,GAAG,GAAS,EAAE,CAAC,SAAS,CAAC;IACxC,IAAI,CAAC;QACH,WAAW,EAAE,cAAc,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC/C,IAAI,CAAC,WAAW;gBAAE,OAAO;YACzB,MAAM,OAAO,GAAG,GAAG,EAAE,CACnB,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,IAAI,YAAY,CAAC,2BAA2B,EAAE,YAAY,CAAC,CAAC,CAAC;YAC5F,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,WAAW,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;YACxB,EAAE,EAAE;YACJ,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC/B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACtF,CAAC,CAAC;YACF,OAAO;SACR,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,WAAW,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,KAAa;IAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -10,14 +10,22 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import type * as k8s from '@kubernetes/client-node';
|
|
12
12
|
import type { TypeKroLogger } from '../logging/index.js';
|
|
13
|
+
import type { ArtifactApplyPolicy } from '../planning/artifacts.js';
|
|
13
14
|
import type { ReferenceResolver } from '../references/index.js';
|
|
14
15
|
import type { DeploymentOptions, ResolutionContext } from '../types/deployment.js';
|
|
15
16
|
import type { DeployableK8sResource, Enhanced, KubernetesResource } from '../types.js';
|
|
16
|
-
|
|
17
|
+
/** Host-neutral contract for applying one compiled Kubernetes artifact operation. */
|
|
18
|
+
export interface ArtifactResourceApplier {
|
|
19
|
+
applyArtifactResource(resource: KubernetesResource, policy: ArtifactApplyPolicy | undefined, options: DeploymentOptions, resourceLogger: TypeKroLogger): Promise<k8s.KubernetesObject>;
|
|
20
|
+
}
|
|
21
|
+
export declare class ResourceApplier implements ArtifactResourceApplier {
|
|
17
22
|
private k8sApi;
|
|
18
23
|
private referenceResolver;
|
|
19
|
-
constructor(k8sApi: k8s.KubernetesObjectApi, referenceResolver: ReferenceResolver, _logger: TypeKroLogger);
|
|
24
|
+
constructor(k8sApi: k8s.KubernetesObjectApi, referenceResolver: ReferenceResolver | undefined, _logger: TypeKroLogger);
|
|
20
25
|
private buildResourceIdentityMetadata;
|
|
26
|
+
private throwIfAborted;
|
|
27
|
+
private abortableDelay;
|
|
28
|
+
private isImmutableFieldError;
|
|
21
29
|
/**
|
|
22
30
|
* Serialize a resource for sending to the Kubernetes API.
|
|
23
31
|
* Calls toJSON() if available (to preserve arrays via custom implementation),
|
|
@@ -55,12 +63,20 @@ export declare class ResourceApplier {
|
|
|
55
63
|
* Handle a 409 Conflict error based on the configured conflict strategy.
|
|
56
64
|
* Returns the applied resource if the conflict was handled, or undefined if it wasn't.
|
|
57
65
|
*/
|
|
58
|
-
handleConflictStrategy(resolvedResource: KubernetesResource, conflictStrategy: NonNullable<DeploymentOptions['conflictStrategy']>, resourceLogger: TypeKroLogger): Promise<k8s.KubernetesObject | undefined>;
|
|
66
|
+
handleConflictStrategy(resolvedResource: KubernetesResource, conflictStrategy: NonNullable<DeploymentOptions['conflictStrategy']>, resourceLogger: TypeKroLogger, abortSignal?: AbortSignal, timeout?: number): Promise<k8s.KubernetesObject | undefined>;
|
|
67
|
+
private createResource;
|
|
68
|
+
private patchResource;
|
|
69
|
+
private replaceResource;
|
|
70
|
+
private waitForResourceDeletion;
|
|
71
|
+
private serverSideApply;
|
|
72
|
+
private applyWithPolicy;
|
|
59
73
|
/**
|
|
60
74
|
* Apply a resource to the Kubernetes cluster with retry logic, conflict handling,
|
|
61
75
|
* and support for both create and patch operations.
|
|
62
76
|
*/
|
|
63
77
|
applyResourceToCluster(resolvedResource: KubernetesResource, options: DeploymentOptions, resourceLogger: TypeKroLogger): Promise<k8s.KubernetesObject>;
|
|
78
|
+
/** Apply one compiled artifact operation through the canonical policy executor. */
|
|
79
|
+
applyArtifactResource(resolvedResource: KubernetesResource, applyPolicy: ArtifactApplyPolicy | undefined, options: DeploymentOptions, resourceLogger: TypeKroLogger): Promise<k8s.KubernetesObject>;
|
|
64
80
|
/**
|
|
65
81
|
* Check if a resource already exists in the cluster.
|
|
66
82
|
* Returns the existing resource if found, or undefined if it doesn't exist (404).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-applier.d.ts","sourceRoot":"","sources":["../../../src/core/deployment/resource-applier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,KAAK,GAAG,MAAM,yBAAyB,CAAC;AAUpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"resource-applier.d.ts","sourceRoot":"","sources":["../../../src/core/deployment/resource-applier.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
import { DEFAULT_BACKOFF_MULTIPLIER, DEFAULT_CONFLICT_RETRY_DELAY, DEFAULT_FAST_POLL_INTERVAL, DEFAULT_MAX_RETRIES, DEFAULT_MAX_RETRY_DELAY, DEFAULT_READINESS_TIMEOUT, } from '../config/defaults.js';
|
|
12
12
|
import { ensureError } from '../errors.js';
|
|
13
13
|
import { copyResourceMetadata, getMetadataField, getReadinessEvaluator, } from '../metadata/index.js';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
14
|
+
import { compareKubernetesResources, formatCanonicalDrift } from '../resources/live-comparison.js';
|
|
15
|
+
import { ResourceConflictError, ResourceDeploymentError, ResourceReplacementTimeoutError, ServerSideApplyConflictError, UnsupportedMediaTypeError, } from './errors.js';
|
|
16
|
+
import { extractAcceptedMediaTypes, isConflictError, isNotFoundError, isUnsupportedMediaTypeError, patchResourceWithCorrectContentType, } from './k8s-helpers.js';
|
|
16
17
|
import { applyTypekroTags, getEffectiveScopes } from './resource-tagging.js';
|
|
17
18
|
export class ResourceApplier {
|
|
18
19
|
k8sApi;
|
|
@@ -28,6 +29,36 @@ export class ResourceApplier {
|
|
|
28
29
|
}
|
|
29
30
|
return { name, namespace: resource.metadata?.namespace || 'default' };
|
|
30
31
|
}
|
|
32
|
+
throwIfAborted(signal) {
|
|
33
|
+
signal?.throwIfAborted();
|
|
34
|
+
}
|
|
35
|
+
async abortableDelay(delay, signal) {
|
|
36
|
+
this.throwIfAborted(signal);
|
|
37
|
+
if (!signal) {
|
|
38
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
await new Promise((resolve, reject) => {
|
|
42
|
+
const timeout = setTimeout(() => {
|
|
43
|
+
signal.removeEventListener('abort', onAbort);
|
|
44
|
+
resolve();
|
|
45
|
+
}, delay);
|
|
46
|
+
const onAbort = () => {
|
|
47
|
+
clearTimeout(timeout);
|
|
48
|
+
signal.removeEventListener('abort', onAbort);
|
|
49
|
+
reject(signal.reason ?? new DOMException('The operation was aborted', 'AbortError'));
|
|
50
|
+
};
|
|
51
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
isImmutableFieldError(error) {
|
|
55
|
+
const apiError = error;
|
|
56
|
+
const statusCode = apiError.statusCode ?? apiError.response?.statusCode ?? apiError.body?.code ?? apiError.code;
|
|
57
|
+
if (statusCode !== 422)
|
|
58
|
+
return false;
|
|
59
|
+
const message = `${apiError.body?.message ?? ''} ${ensureError(error).message}`;
|
|
60
|
+
return /\bimmutable\b|may not be changed|may not change once set/i.test(message);
|
|
61
|
+
}
|
|
31
62
|
/**
|
|
32
63
|
* Serialize a resource for sending to the Kubernetes API.
|
|
33
64
|
* Calls toJSON() if available (to preserve arrays via custom implementation),
|
|
@@ -50,6 +81,10 @@ export class ResourceApplier {
|
|
|
50
81
|
* Falls back to the original resource if resolution fails.
|
|
51
82
|
*/
|
|
52
83
|
async resolveResourceReferences(resource, context, options, resourceLogger) {
|
|
84
|
+
if (!this.referenceResolver) {
|
|
85
|
+
resourceLogger.debug('Reference resolution is unavailable for this artifact applier');
|
|
86
|
+
return resource;
|
|
87
|
+
}
|
|
53
88
|
try {
|
|
54
89
|
resourceLogger.debug('Resolving resource references', {
|
|
55
90
|
originalMetadata: resource.metadata,
|
|
@@ -205,7 +240,7 @@ export class ResourceApplier {
|
|
|
205
240
|
* Handle a 409 Conflict error based on the configured conflict strategy.
|
|
206
241
|
* Returns the applied resource if the conflict was handled, or undefined if it wasn't.
|
|
207
242
|
*/
|
|
208
|
-
async handleConflictStrategy(resolvedResource, conflictStrategy, resourceLogger) {
|
|
243
|
+
async handleConflictStrategy(resolvedResource, conflictStrategy, resourceLogger, abortSignal, timeout = DEFAULT_READINESS_TIMEOUT) {
|
|
209
244
|
const resourceName = resolvedResource.metadata?.name || 'unknown';
|
|
210
245
|
const resourceKind = resolvedResource.kind || 'Unknown';
|
|
211
246
|
const resourceNamespace = resolvedResource.metadata?.namespace;
|
|
@@ -272,14 +307,16 @@ export class ResourceApplier {
|
|
|
272
307
|
kind: resolvedResource.kind,
|
|
273
308
|
metadata: this.buildResourceIdentityMetadata(resolvedResource),
|
|
274
309
|
});
|
|
275
|
-
|
|
276
|
-
await new Promise((resolve) => setTimeout(resolve, DEFAULT_CONFLICT_RETRY_DELAY));
|
|
310
|
+
await this.waitForResourceDeletion(resolvedResource, resourceLogger, abortSignal, timeout);
|
|
277
311
|
const cleanResource = this.serializeResourceForK8s(resolvedResource);
|
|
278
312
|
const result = await this.k8sApi.create(cleanResource);
|
|
279
313
|
resourceLogger.debug('Resource replaced successfully after 409 conflict');
|
|
280
314
|
return result;
|
|
281
315
|
}
|
|
282
316
|
catch (replaceError) {
|
|
317
|
+
if (replaceError instanceof ResourceReplacementTimeoutError || abortSignal?.aborted) {
|
|
318
|
+
throw replaceError;
|
|
319
|
+
}
|
|
283
320
|
resourceLogger.warn('Failed to replace resource after 409 conflict', {
|
|
284
321
|
error: ensureError(replaceError).message,
|
|
285
322
|
});
|
|
@@ -288,11 +325,209 @@ export class ResourceApplier {
|
|
|
288
325
|
}
|
|
289
326
|
}
|
|
290
327
|
}
|
|
328
|
+
async createResource(resource, resourceLogger, fieldManager) {
|
|
329
|
+
if (resource.kind === 'Secret') {
|
|
330
|
+
resourceLogger.debug('Creating Secret resource', {
|
|
331
|
+
name: resource.metadata?.name,
|
|
332
|
+
namespace: resource.metadata?.namespace,
|
|
333
|
+
hasData: 'data' in resource,
|
|
334
|
+
hasStringData: 'stringData' in resource,
|
|
335
|
+
dataKeyCount: resource.data ? Object.keys(resource.data).length : 0,
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
const manifest = this.serializeResourceForK8s(resource);
|
|
339
|
+
return fieldManager
|
|
340
|
+
? await this.k8sApi.create(manifest, undefined, undefined, fieldManager)
|
|
341
|
+
: await this.k8sApi.create(manifest);
|
|
342
|
+
}
|
|
343
|
+
async patchResource(resource, resourceLogger, patchType = 'merge') {
|
|
344
|
+
const cleanPayload = this.buildPatchPayload(resource);
|
|
345
|
+
if (cleanPayload.kind === 'Secret') {
|
|
346
|
+
const { data: _data, stringData: _stringData, ...safePayload } = cleanPayload;
|
|
347
|
+
resourceLogger.debug('Resource exists, patching', {
|
|
348
|
+
patchPayload: safePayload,
|
|
349
|
+
redacted: ['data', 'stringData'],
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
resourceLogger.debug('Resource exists, patching', { patchPayload: cleanPayload });
|
|
354
|
+
}
|
|
355
|
+
return await patchResourceWithCorrectContentType(this.k8sApi, cleanPayload, patchType);
|
|
356
|
+
}
|
|
357
|
+
async replaceResource(resource, exists, resourceLogger, abortSignal, timeout = DEFAULT_READINESS_TIMEOUT, fieldManager) {
|
|
358
|
+
if (exists) {
|
|
359
|
+
resourceLogger.debug('Deleting existing resource for replace policy');
|
|
360
|
+
await this.k8sApi.delete({
|
|
361
|
+
apiVersion: resource.apiVersion,
|
|
362
|
+
kind: resource.kind,
|
|
363
|
+
metadata: this.buildResourceIdentityMetadata(resource),
|
|
364
|
+
});
|
|
365
|
+
await this.waitForResourceDeletion(resource, resourceLogger, abortSignal, timeout);
|
|
366
|
+
}
|
|
367
|
+
return await this.createResource(resource, resourceLogger, fieldManager);
|
|
368
|
+
}
|
|
369
|
+
async waitForResourceDeletion(resource, resourceLogger, abortSignal, timeout = DEFAULT_READINESS_TIMEOUT) {
|
|
370
|
+
const startedAt = Date.now();
|
|
371
|
+
const identity = {
|
|
372
|
+
apiVersion: resource.apiVersion,
|
|
373
|
+
kind: resource.kind,
|
|
374
|
+
metadata: this.buildResourceIdentityMetadata(resource),
|
|
375
|
+
};
|
|
376
|
+
while (true) {
|
|
377
|
+
this.throwIfAborted(abortSignal);
|
|
378
|
+
try {
|
|
379
|
+
await this.k8sApi.read(identity);
|
|
380
|
+
}
|
|
381
|
+
catch (error) {
|
|
382
|
+
if (isNotFoundError(error))
|
|
383
|
+
return;
|
|
384
|
+
throw error;
|
|
385
|
+
}
|
|
386
|
+
const elapsed = Date.now() - startedAt;
|
|
387
|
+
if (elapsed >= timeout) {
|
|
388
|
+
throw new ResourceReplacementTimeoutError(resource.metadata?.name || 'unknown', resource.kind || 'Unknown', timeout);
|
|
389
|
+
}
|
|
390
|
+
const delay = Math.min(DEFAULT_CONFLICT_RETRY_DELAY, Math.max(1, timeout - elapsed));
|
|
391
|
+
resourceLogger.debug('Waiting for previous resource object to finish deleting', {
|
|
392
|
+
name: resource.metadata?.name,
|
|
393
|
+
kind: resource.kind,
|
|
394
|
+
elapsed,
|
|
395
|
+
timeout,
|
|
396
|
+
});
|
|
397
|
+
await this.abortableDelay(delay, abortSignal);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
async serverSideApply(resource, policy, resourceLogger) {
|
|
401
|
+
const manifest = this.serializeResourceForK8s(resource);
|
|
402
|
+
const apply = () => this.k8sApi.patch(manifest, undefined, undefined, policy.fieldManager, policy.fieldConflictPolicy === 'force-owned-fields', 'application/apply-patch+yaml');
|
|
403
|
+
try {
|
|
404
|
+
return await apply();
|
|
405
|
+
}
|
|
406
|
+
catch (error) {
|
|
407
|
+
if (!isNotFoundError(error))
|
|
408
|
+
throw error;
|
|
409
|
+
resourceLogger.debug('SSA target is absent; creating resource');
|
|
410
|
+
try {
|
|
411
|
+
return await this.createResource(resource, resourceLogger, policy.fieldManager);
|
|
412
|
+
}
|
|
413
|
+
catch (createError) {
|
|
414
|
+
if (!isConflictError(createError))
|
|
415
|
+
throw createError;
|
|
416
|
+
resourceLogger.debug('SSA create raced with another writer; retrying apply');
|
|
417
|
+
return await apply();
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
async applyWithPolicy(resource, policy, resourceLogger, abortSignal, timeout = DEFAULT_READINESS_TIMEOUT) {
|
|
422
|
+
const effectivePolicy = policy ?? {
|
|
423
|
+
strategy: 'create-or-patch',
|
|
424
|
+
existingResource: 'patch',
|
|
425
|
+
immutableFieldPolicy: 'fail',
|
|
426
|
+
};
|
|
427
|
+
if (effectivePolicy.strategy === 'server-side-apply') {
|
|
428
|
+
try {
|
|
429
|
+
return {
|
|
430
|
+
resource: await this.serverSideApply(resource, effectivePolicy, resourceLogger),
|
|
431
|
+
operation: 'server-side-applied',
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
catch (error) {
|
|
435
|
+
if (effectivePolicy.immutableFieldPolicy === 'recreate' &&
|
|
436
|
+
this.isImmutableFieldError(error)) {
|
|
437
|
+
return {
|
|
438
|
+
resource: await this.replaceResource(resource, true, resourceLogger, abortSignal, timeout, effectivePolicy.fieldManager),
|
|
439
|
+
operation: 'recreated',
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
throw error;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
const existing = await this.checkResourceExists(resource, resourceLogger);
|
|
446
|
+
if (effectivePolicy.strategy === 'create-only') {
|
|
447
|
+
if (existing) {
|
|
448
|
+
throw new ResourceConflictError(resource.metadata?.name || 'unknown', resource.kind || 'Unknown', resource.metadata?.namespace);
|
|
449
|
+
}
|
|
450
|
+
return {
|
|
451
|
+
resource: await this.createResource(resource, resourceLogger),
|
|
452
|
+
operation: 'created',
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
if (effectivePolicy.strategy === 'replace') {
|
|
456
|
+
return {
|
|
457
|
+
resource: await this.replaceResource(resource, existing !== undefined, resourceLogger, abortSignal, timeout),
|
|
458
|
+
operation: existing ? 'replaced' : 'created',
|
|
459
|
+
};
|
|
460
|
+
}
|
|
461
|
+
if (!existing) {
|
|
462
|
+
return {
|
|
463
|
+
resource: await this.createResource(resource, resourceLogger),
|
|
464
|
+
operation: 'created',
|
|
465
|
+
};
|
|
466
|
+
}
|
|
467
|
+
switch (effectivePolicy.existingResource) {
|
|
468
|
+
case 'fail':
|
|
469
|
+
throw new ResourceConflictError(resource.metadata?.name || 'unknown', resource.kind || 'Unknown', resource.metadata?.namespace);
|
|
470
|
+
case 'warn':
|
|
471
|
+
resourceLogger.warn('Resource already exists; preserving it by artifact policy', {
|
|
472
|
+
name: resource.metadata?.name,
|
|
473
|
+
kind: resource.kind,
|
|
474
|
+
namespace: resource.metadata?.namespace,
|
|
475
|
+
});
|
|
476
|
+
return { resource: existing, operation: 'preserved' };
|
|
477
|
+
case 'replace':
|
|
478
|
+
return {
|
|
479
|
+
resource: await this.replaceResource(resource, true, resourceLogger, abortSignal, timeout),
|
|
480
|
+
operation: 'replaced',
|
|
481
|
+
};
|
|
482
|
+
case 'patch': {
|
|
483
|
+
if (resource.kind !== 'Secret') {
|
|
484
|
+
const comparison = compareKubernetesResources(resource, existing);
|
|
485
|
+
if (comparison.equal) {
|
|
486
|
+
resourceLogger.debug('Existing resource already matches canonical desired state', {
|
|
487
|
+
name: resource.metadata?.name,
|
|
488
|
+
kind: resource.kind,
|
|
489
|
+
namespace: resource.metadata?.namespace,
|
|
490
|
+
canonicalizers: comparison.canonicalizers,
|
|
491
|
+
});
|
|
492
|
+
return { resource: existing, operation: 'unchanged' };
|
|
493
|
+
}
|
|
494
|
+
resourceLogger.debug('Canonical desired/live drift requires patching', {
|
|
495
|
+
name: resource.metadata?.name,
|
|
496
|
+
kind: resource.kind,
|
|
497
|
+
namespace: resource.metadata?.namespace,
|
|
498
|
+
drift: formatCanonicalDrift(comparison.differences),
|
|
499
|
+
differences: comparison.differences,
|
|
500
|
+
canonicalizers: comparison.canonicalizers,
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
try {
|
|
504
|
+
return {
|
|
505
|
+
resource: await this.patchResource(resource, resourceLogger, effectivePolicy.patchType),
|
|
506
|
+
operation: 'patched',
|
|
507
|
+
};
|
|
508
|
+
}
|
|
509
|
+
catch (error) {
|
|
510
|
+
if (effectivePolicy.immutableFieldPolicy === 'recreate' &&
|
|
511
|
+
this.isImmutableFieldError(error)) {
|
|
512
|
+
return {
|
|
513
|
+
resource: await this.replaceResource(resource, true, resourceLogger, abortSignal, timeout),
|
|
514
|
+
operation: 'recreated',
|
|
515
|
+
};
|
|
516
|
+
}
|
|
517
|
+
throw error;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
}
|
|
291
522
|
/**
|
|
292
523
|
* Apply a resource to the Kubernetes cluster with retry logic, conflict handling,
|
|
293
524
|
* and support for both create and patch operations.
|
|
294
525
|
*/
|
|
295
526
|
async applyResourceToCluster(resolvedResource, options, resourceLogger) {
|
|
527
|
+
return this.applyArtifactResource(resolvedResource, getMetadataField(resolvedResource, 'applyPolicy'), options, resourceLogger);
|
|
528
|
+
}
|
|
529
|
+
/** Apply one compiled artifact operation through the canonical policy executor. */
|
|
530
|
+
async applyArtifactResource(resolvedResource, applyPolicy, options, resourceLogger) {
|
|
296
531
|
if (options.dryRun) {
|
|
297
532
|
resourceLogger.debug('Dry run mode: simulating resource creation');
|
|
298
533
|
return {
|
|
@@ -311,52 +546,27 @@ export class ResourceApplier {
|
|
|
311
546
|
};
|
|
312
547
|
let lastError;
|
|
313
548
|
for (let attempt = 0; attempt <= retryPolicy.maxRetries; attempt++) {
|
|
549
|
+
this.throwIfAborted(options.abortSignal);
|
|
314
550
|
try {
|
|
315
551
|
resourceLogger.debug('Applying resource to cluster', { attempt });
|
|
316
|
-
|
|
317
|
-
const existing = await this.checkResourceExists(resolvedResource, resourceLogger);
|
|
318
|
-
let appliedResource;
|
|
319
|
-
if (existing) {
|
|
320
|
-
// Resource exists, use patch for safer updates
|
|
321
|
-
const cleanPayload = this.buildPatchPayload(resolvedResource);
|
|
322
|
-
// Redact sensitive fields from Secret resources before logging
|
|
323
|
-
if (cleanPayload.kind === 'Secret') {
|
|
324
|
-
const { data: _data, stringData: _stringData, ...safePayload } = cleanPayload;
|
|
325
|
-
resourceLogger.debug('Resource exists, patching', {
|
|
326
|
-
patchPayload: safePayload,
|
|
327
|
-
redacted: ['data', 'stringData'],
|
|
328
|
-
});
|
|
329
|
-
}
|
|
330
|
-
else {
|
|
331
|
-
resourceLogger.debug('Resource exists, patching', { patchPayload: cleanPayload });
|
|
332
|
-
}
|
|
333
|
-
appliedResource = await patchResourceWithCorrectContentType(this.k8sApi, cleanPayload);
|
|
334
|
-
}
|
|
335
|
-
else {
|
|
336
|
-
// Resource does not exist, create it
|
|
337
|
-
resourceLogger.debug('Resource does not exist, creating');
|
|
338
|
-
// Log Secret resource metadata (sensitive fields redacted)
|
|
339
|
-
if (resolvedResource.kind === 'Secret') {
|
|
340
|
-
resourceLogger.debug('Creating Secret resource', {
|
|
341
|
-
name: resolvedResource.metadata?.name,
|
|
342
|
-
namespace: resolvedResource.metadata?.namespace,
|
|
343
|
-
hasData: 'data' in resolvedResource,
|
|
344
|
-
hasStringData: 'stringData' in resolvedResource,
|
|
345
|
-
dataKeyCount: resolvedResource.data ? Object.keys(resolvedResource.data).length : 0,
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
const cleanResource = this.serializeResourceForK8s(resolvedResource);
|
|
349
|
-
appliedResource = await this.k8sApi.create(cleanResource);
|
|
350
|
-
}
|
|
552
|
+
const { resource: appliedResource, operation } = await this.applyWithPolicy(resolvedResource, applyPolicy, resourceLogger, options.abortSignal, options.timeout ?? DEFAULT_READINESS_TIMEOUT);
|
|
351
553
|
resourceLogger.debug('Resource applied successfully', {
|
|
352
554
|
appliedName: appliedResource.metadata?.name,
|
|
353
555
|
appliedNamespace: appliedResource.metadata?.namespace,
|
|
354
|
-
operation
|
|
556
|
+
operation,
|
|
355
557
|
attempt,
|
|
356
558
|
});
|
|
357
559
|
return appliedResource;
|
|
358
560
|
}
|
|
359
561
|
catch (error) {
|
|
562
|
+
if (options.abortSignal?.aborted) {
|
|
563
|
+
throw options.abortSignal.reason ?? error;
|
|
564
|
+
}
|
|
565
|
+
if (error instanceof ResourceConflictError ||
|
|
566
|
+
error instanceof ResourceReplacementTimeoutError ||
|
|
567
|
+
error instanceof ServerSideApplyConflictError) {
|
|
568
|
+
throw error;
|
|
569
|
+
}
|
|
360
570
|
lastError = ensureError(error);
|
|
361
571
|
// Check for 409 Conflict errors - resource already exists
|
|
362
572
|
const apiError = error;
|
|
@@ -365,8 +575,17 @@ export class ResourceApplier {
|
|
|
365
575
|
apiError.body?.code === 409 ||
|
|
366
576
|
(typeof apiError.message === 'string' && apiError.message.includes('HTTP-Code: 409'));
|
|
367
577
|
if (is409) {
|
|
368
|
-
|
|
369
|
-
|
|
578
|
+
if (applyPolicy?.strategy === 'server-side-apply') {
|
|
579
|
+
throw new ServerSideApplyConflictError(resolvedResource.metadata?.name || 'unknown', resolvedResource.kind || 'Unknown', applyPolicy.fieldManager, applyPolicy.fieldConflictPolicy, ensureError(error));
|
|
580
|
+
}
|
|
581
|
+
const conflictStrategy = applyPolicy?.strategy === 'create-or-patch'
|
|
582
|
+
? applyPolicy.existingResource
|
|
583
|
+
: applyPolicy?.strategy === 'replace'
|
|
584
|
+
? 'replace'
|
|
585
|
+
: applyPolicy?.strategy === 'create-only'
|
|
586
|
+
? 'fail'
|
|
587
|
+
: options.conflictStrategy || 'warn';
|
|
588
|
+
const result = await this.handleConflictStrategy(resolvedResource, conflictStrategy, resourceLogger, options.abortSignal, options.timeout ?? DEFAULT_READINESS_TIMEOUT);
|
|
370
589
|
if (result) {
|
|
371
590
|
return result;
|
|
372
591
|
}
|
|
@@ -389,7 +608,7 @@ export class ResourceApplier {
|
|
|
389
608
|
delay,
|
|
390
609
|
});
|
|
391
610
|
// Wait before retrying
|
|
392
|
-
await
|
|
611
|
+
await this.abortableDelay(delay, options.abortSignal);
|
|
393
612
|
}
|
|
394
613
|
}
|
|
395
614
|
// This should be unreachable due to the throw in the last attempt, but TypeScript needs it
|