typekro 0.1.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/LICENSE +185 -0
- package/README.md +1137 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/alchemy/deployers.d.ts +39 -0
- package/dist/alchemy/deployers.d.ts.map +1 -0
- package/dist/alchemy/deployers.js +194 -0
- package/dist/alchemy/deployers.js.map +1 -0
- package/dist/alchemy/deployment.d.ts +12 -0
- package/dist/alchemy/deployment.d.ts.map +1 -0
- package/dist/alchemy/deployment.js +12 -0
- package/dist/alchemy/deployment.js.map +1 -0
- package/dist/alchemy/index.d.ts +17 -0
- package/dist/alchemy/index.d.ts.map +1 -0
- package/dist/alchemy/index.js +20 -0
- package/dist/alchemy/index.js.map +1 -0
- package/dist/alchemy/resolver.d.ts +127 -0
- package/dist/alchemy/resolver.d.ts.map +1 -0
- package/dist/alchemy/resolver.js +341 -0
- package/dist/alchemy/resolver.js.map +1 -0
- package/dist/alchemy/resource-registration.d.ts +22 -0
- package/dist/alchemy/resource-registration.d.ts.map +1 -0
- package/dist/alchemy/resource-registration.js +218 -0
- package/dist/alchemy/resource-registration.js.map +1 -0
- package/dist/alchemy/type-inference.d.ts +13 -0
- package/dist/alchemy/type-inference.d.ts.map +1 -0
- package/dist/alchemy/type-inference.js +67 -0
- package/dist/alchemy/type-inference.js.map +1 -0
- package/dist/alchemy/types.d.ts +92 -0
- package/dist/alchemy/types.d.ts.map +1 -0
- package/dist/alchemy/types.js +8 -0
- package/dist/alchemy/types.js.map +1 -0
- package/dist/alchemy/utilities.d.ts +12 -0
- package/dist/alchemy/utilities.d.ts.map +1 -0
- package/dist/alchemy/utilities.js +16 -0
- package/dist/alchemy/utilities.js.map +1 -0
- package/dist/alchemy/wrapper.d.ts +16 -0
- package/dist/alchemy/wrapper.d.ts.map +1 -0
- package/dist/alchemy/wrapper.js +23 -0
- package/dist/alchemy/wrapper.js.map +1 -0
- package/dist/core/composition/composition.d.ts +94 -0
- package/dist/core/composition/composition.d.ts.map +1 -0
- package/dist/core/composition/composition.js +230 -0
- package/dist/core/composition/composition.js.map +1 -0
- package/dist/core/composition/index.d.ts +12 -0
- package/dist/core/composition/index.d.ts.map +1 -0
- package/dist/core/composition/index.js +12 -0
- package/dist/core/composition/index.js.map +1 -0
- package/dist/core/composition/typekro-runtime/index.d.ts +3 -0
- package/dist/core/composition/typekro-runtime/index.d.ts.map +1 -0
- package/dist/core/composition/typekro-runtime/index.js +2 -0
- package/dist/core/composition/typekro-runtime/index.js.map +1 -0
- package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts +39 -0
- package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts.map +1 -0
- package/dist/core/composition/typekro-runtime/typekro-runtime.js +100 -0
- package/dist/core/composition/typekro-runtime/typekro-runtime.js.map +1 -0
- package/dist/core/composition/typekro-runtime/types.d.ts +16 -0
- package/dist/core/composition/typekro-runtime/types.d.ts.map +1 -0
- package/dist/core/composition/typekro-runtime/types.js +12 -0
- package/dist/core/composition/typekro-runtime/types.js.map +1 -0
- package/dist/core/composition/types.d.ts +264 -0
- package/dist/core/composition/types.d.ts.map +1 -0
- package/dist/core/composition/types.js +2 -0
- package/dist/core/composition/types.js.map +1 -0
- package/dist/core/constants/brands.d.ts +42 -0
- package/dist/core/constants/brands.d.ts.map +1 -0
- package/dist/core/constants/brands.js +51 -0
- package/dist/core/constants/brands.js.map +1 -0
- package/dist/core/dependencies/graph.d.ts +67 -0
- package/dist/core/dependencies/graph.d.ts.map +1 -0
- package/dist/core/dependencies/graph.js +220 -0
- package/dist/core/dependencies/graph.js.map +1 -0
- package/dist/core/dependencies/index.d.ts +7 -0
- package/dist/core/dependencies/index.d.ts.map +1 -0
- package/dist/core/dependencies/index.js +8 -0
- package/dist/core/dependencies/index.js.map +1 -0
- package/dist/core/dependencies/resolver.d.ts +53 -0
- package/dist/core/dependencies/resolver.d.ts.map +1 -0
- package/dist/core/dependencies/resolver.js +167 -0
- package/dist/core/dependencies/resolver.js.map +1 -0
- package/dist/core/dependencies/type-guards.d.ts +17 -0
- package/dist/core/dependencies/type-guards.d.ts.map +1 -0
- package/dist/core/dependencies/type-guards.js +35 -0
- package/dist/core/dependencies/type-guards.js.map +1 -0
- package/dist/core/deployment/deployment-strategies.d.ts +12 -0
- package/dist/core/deployment/deployment-strategies.d.ts.map +1 -0
- package/dist/core/deployment/deployment-strategies.js +11 -0
- package/dist/core/deployment/deployment-strategies.js.map +1 -0
- package/dist/core/deployment/direct-factory.d.ts +111 -0
- package/dist/core/deployment/direct-factory.d.ts.map +1 -0
- package/dist/core/deployment/direct-factory.js +627 -0
- package/dist/core/deployment/direct-factory.js.map +1 -0
- package/dist/core/deployment/engine.d.ts +128 -0
- package/dist/core/deployment/engine.d.ts.map +1 -0
- package/dist/core/deployment/engine.js +1408 -0
- package/dist/core/deployment/engine.js.map +1 -0
- package/dist/core/deployment/index.d.ts +14 -0
- package/dist/core/deployment/index.d.ts.map +1 -0
- package/dist/core/deployment/index.js +14 -0
- package/dist/core/deployment/index.js.map +1 -0
- package/dist/core/deployment/kro-factory.d.ts +143 -0
- package/dist/core/deployment/kro-factory.d.ts.map +1 -0
- package/dist/core/deployment/kro-factory.js +837 -0
- package/dist/core/deployment/kro-factory.js.map +1 -0
- package/dist/core/deployment/readiness.d.ts +54 -0
- package/dist/core/deployment/readiness.d.ts.map +1 -0
- package/dist/core/deployment/readiness.js +175 -0
- package/dist/core/deployment/readiness.js.map +1 -0
- package/dist/core/deployment/rollback-manager.d.ts +63 -0
- package/dist/core/deployment/rollback-manager.d.ts.map +1 -0
- package/dist/core/deployment/rollback-manager.js +225 -0
- package/dist/core/deployment/rollback-manager.js.map +1 -0
- package/dist/core/deployment/shared-utilities.d.ts +41 -0
- package/dist/core/deployment/shared-utilities.d.ts.map +1 -0
- package/dist/core/deployment/shared-utilities.js +100 -0
- package/dist/core/deployment/shared-utilities.js.map +1 -0
- package/dist/core/deployment/status-hydrator.d.ts +86 -0
- package/dist/core/deployment/status-hydrator.d.ts.map +1 -0
- package/dist/core/deployment/status-hydrator.js +262 -0
- package/dist/core/deployment/status-hydrator.js.map +1 -0
- package/dist/core/deployment/strategies/alchemy-strategy.d.ts +107 -0
- package/dist/core/deployment/strategies/alchemy-strategy.d.ts.map +1 -0
- package/dist/core/deployment/strategies/alchemy-strategy.js +446 -0
- package/dist/core/deployment/strategies/alchemy-strategy.js.map +1 -0
- package/dist/core/deployment/strategies/base-strategy.d.ts +50 -0
- package/dist/core/deployment/strategies/base-strategy.d.ts.map +1 -0
- package/dist/core/deployment/strategies/base-strategy.js +82 -0
- package/dist/core/deployment/strategies/base-strategy.js.map +1 -0
- package/dist/core/deployment/strategies/direct-strategy.d.ts +29 -0
- package/dist/core/deployment/strategies/direct-strategy.d.ts.map +1 -0
- package/dist/core/deployment/strategies/direct-strategy.js +80 -0
- package/dist/core/deployment/strategies/direct-strategy.js.map +1 -0
- package/dist/core/deployment/strategies/index.d.ts +12 -0
- package/dist/core/deployment/strategies/index.d.ts.map +1 -0
- package/dist/core/deployment/strategies/index.js +12 -0
- package/dist/core/deployment/strategies/index.js.map +1 -0
- package/dist/core/deployment/strategies/kro-strategy.d.ts +41 -0
- package/dist/core/deployment/strategies/kro-strategy.d.ts.map +1 -0
- package/dist/core/deployment/strategies/kro-strategy.js +270 -0
- package/dist/core/deployment/strategies/kro-strategy.js.map +1 -0
- package/dist/core/direct-deployment.d.ts +8 -0
- package/dist/core/direct-deployment.d.ts.map +1 -0
- package/dist/core/direct-deployment.js +9 -0
- package/dist/core/direct-deployment.js.map +1 -0
- package/dist/core/errors.d.ts +73 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +250 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/evaluation/cel-optimizer.d.ts +48 -0
- package/dist/core/evaluation/cel-optimizer.d.ts.map +1 -0
- package/dist/core/evaluation/cel-optimizer.js +176 -0
- package/dist/core/evaluation/cel-optimizer.js.map +1 -0
- package/dist/core/factory.d.ts +12 -0
- package/dist/core/factory.d.ts.map +1 -0
- package/dist/core/factory.js +13 -0
- package/dist/core/factory.js.map +1 -0
- package/dist/core/kubernetes/api.d.ts +43 -0
- package/dist/core/kubernetes/api.d.ts.map +1 -0
- package/dist/core/kubernetes/api.js +209 -0
- package/dist/core/kubernetes/api.js.map +1 -0
- package/dist/core/kubernetes/client-provider.d.ts +204 -0
- package/dist/core/kubernetes/client-provider.d.ts.map +1 -0
- package/dist/core/kubernetes/client-provider.js +421 -0
- package/dist/core/kubernetes/client-provider.js.map +1 -0
- package/dist/core/logging/config.d.ts +14 -0
- package/dist/core/logging/config.d.ts.map +1 -0
- package/dist/core/logging/config.js +57 -0
- package/dist/core/logging/config.js.map +1 -0
- package/dist/core/logging/index.d.ts +4 -0
- package/dist/core/logging/index.d.ts.map +1 -0
- package/dist/core/logging/index.js +4 -0
- package/dist/core/logging/index.js.map +1 -0
- package/dist/core/logging/logger.d.ts +26 -0
- package/dist/core/logging/logger.d.ts.map +1 -0
- package/dist/core/logging/logger.js +114 -0
- package/dist/core/logging/logger.js.map +1 -0
- package/dist/core/logging/types.d.ts +93 -0
- package/dist/core/logging/types.d.ts.map +1 -0
- package/dist/core/logging/types.js +2 -0
- package/dist/core/logging/types.js.map +1 -0
- package/dist/core/readiness/cluster-state.d.ts +229 -0
- package/dist/core/readiness/cluster-state.d.ts.map +1 -0
- package/dist/core/readiness/cluster-state.js +360 -0
- package/dist/core/readiness/cluster-state.js.map +1 -0
- package/dist/core/readiness/index.d.ts +5 -0
- package/dist/core/readiness/index.d.ts.map +1 -0
- package/dist/core/readiness/index.js +5 -0
- package/dist/core/readiness/index.js.map +1 -0
- package/dist/core/readiness/registry.d.ts +45 -0
- package/dist/core/readiness/registry.d.ts.map +1 -0
- package/dist/core/readiness/registry.js +62 -0
- package/dist/core/readiness/registry.js.map +1 -0
- package/dist/core/references/cel-evaluator.d.ts +102 -0
- package/dist/core/references/cel-evaluator.d.ts.map +1 -0
- package/dist/core/references/cel-evaluator.js +288 -0
- package/dist/core/references/cel-evaluator.js.map +1 -0
- package/dist/core/references/cel.d.ts +75 -0
- package/dist/core/references/cel.d.ts.map +1 -0
- package/dist/core/references/cel.js +213 -0
- package/dist/core/references/cel.js.map +1 -0
- package/dist/core/references/external-refs.d.ts +37 -0
- package/dist/core/references/external-refs.d.ts.map +1 -0
- package/dist/core/references/external-refs.js +53 -0
- package/dist/core/references/external-refs.js.map +1 -0
- package/dist/core/references/index.d.ts +15 -0
- package/dist/core/references/index.d.ts.map +1 -0
- package/dist/core/references/index.js +19 -0
- package/dist/core/references/index.js.map +1 -0
- package/dist/core/references/resolver.d.ts +117 -0
- package/dist/core/references/resolver.d.ts.map +1 -0
- package/dist/core/references/resolver.js +554 -0
- package/dist/core/references/resolver.js.map +1 -0
- package/dist/core/references/schema-proxy.d.ts +38 -0
- package/dist/core/references/schema-proxy.d.ts.map +1 -0
- package/dist/core/references/schema-proxy.js +163 -0
- package/dist/core/references/schema-proxy.js.map +1 -0
- package/dist/core/serialization/core.d.ts +15 -0
- package/dist/core/serialization/core.d.ts.map +1 -0
- package/dist/core/serialization/core.js +169 -0
- package/dist/core/serialization/core.js.map +1 -0
- package/dist/core/serialization/index.d.ts +9 -0
- package/dist/core/serialization/index.d.ts.map +1 -0
- package/dist/core/serialization/index.js +12 -0
- package/dist/core/serialization/index.js.map +1 -0
- package/dist/core/serialization/schema.d.ts +14 -0
- package/dist/core/serialization/schema.d.ts.map +1 -0
- package/dist/core/serialization/schema.js +33 -0
- package/dist/core/serialization/schema.js.map +1 -0
- package/dist/core/serialization/validation.d.ts +18 -0
- package/dist/core/serialization/validation.d.ts.map +1 -0
- package/dist/core/serialization/validation.js +165 -0
- package/dist/core/serialization/validation.js.map +1 -0
- package/dist/core/serialization/yaml.d.ts +10 -0
- package/dist/core/serialization/yaml.d.ts.map +1 -0
- package/dist/core/serialization/yaml.js +63 -0
- package/dist/core/serialization/yaml.js.map +1 -0
- package/dist/core/types/common.d.ts +41 -0
- package/dist/core/types/common.d.ts.map +1 -0
- package/dist/core/types/common.js +9 -0
- package/dist/core/types/common.js.map +1 -0
- package/dist/core/types/dependencies.d.ts +14 -0
- package/dist/core/types/dependencies.d.ts.map +1 -0
- package/dist/core/types/dependencies.js +5 -0
- package/dist/core/types/dependencies.js.map +1 -0
- package/dist/core/types/deployment.d.ts +265 -0
- package/dist/core/types/deployment.d.ts.map +1 -0
- package/dist/core/types/deployment.js +20 -0
- package/dist/core/types/deployment.js.map +1 -0
- package/dist/core/types/index.d.ts +19 -0
- package/dist/core/types/index.d.ts.map +1 -0
- package/dist/core/types/index.js +15 -0
- package/dist/core/types/index.js.map +1 -0
- package/dist/core/types/kubernetes.d.ts +352 -0
- package/dist/core/types/kubernetes.d.ts.map +1 -0
- package/dist/core/types/kubernetes.js +5 -0
- package/dist/core/types/kubernetes.js.map +1 -0
- package/dist/core/types/references.d.ts +54 -0
- package/dist/core/types/references.d.ts.map +1 -0
- package/dist/core/types/references.js +14 -0
- package/dist/core/types/references.js.map +1 -0
- package/dist/core/types/resource-graph.d.ts +93 -0
- package/dist/core/types/resource-graph.d.ts.map +1 -0
- package/dist/core/types/resource-graph.js +8 -0
- package/dist/core/types/resource-graph.js.map +1 -0
- package/dist/core/types/serialization.d.ts +210 -0
- package/dist/core/types/serialization.d.ts.map +1 -0
- package/dist/core/types/serialization.js +5 -0
- package/dist/core/types/serialization.js.map +1 -0
- package/dist/core/types/yaml.d.ts +92 -0
- package/dist/core/types/yaml.d.ts.map +1 -0
- package/dist/core/types/yaml.js +2 -0
- package/dist/core/types/yaml.js.map +1 -0
- package/dist/core/types.d.ts +8 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +9 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/validation/cel-validator.d.ts +47 -0
- package/dist/core/validation/cel-validator.d.ts.map +1 -0
- package/dist/core/validation/cel-validator.js +200 -0
- package/dist/core/validation/cel-validator.js.map +1 -0
- package/dist/core/yaml/index.d.ts +5 -0
- package/dist/core/yaml/index.d.ts.map +1 -0
- package/dist/core/yaml/index.js +5 -0
- package/dist/core/yaml/index.js.map +1 -0
- package/dist/core/yaml/path-resolver.d.ts +122 -0
- package/dist/core/yaml/path-resolver.d.ts.map +1 -0
- package/dist/core/yaml/path-resolver.js +556 -0
- package/dist/core/yaml/path-resolver.js.map +1 -0
- package/dist/core.d.ts +30 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +59 -0
- package/dist/core.js.map +1 -0
- package/dist/factories/flux/git-repository.d.ts +62 -0
- package/dist/factories/flux/git-repository.d.ts.map +1 -0
- package/dist/factories/flux/git-repository.js +34 -0
- package/dist/factories/flux/git-repository.js.map +1 -0
- package/dist/factories/flux/index.d.ts +10 -0
- package/dist/factories/flux/index.d.ts.map +1 -0
- package/dist/factories/flux/index.js +11 -0
- package/dist/factories/flux/index.js.map +1 -0
- package/dist/factories/flux/kustomize/index.d.ts +4 -0
- package/dist/factories/flux/kustomize/index.d.ts.map +1 -0
- package/dist/factories/flux/kustomize/index.js +3 -0
- package/dist/factories/flux/kustomize/index.js.map +1 -0
- package/dist/factories/flux/kustomize/kustomization.d.ts +178 -0
- package/dist/factories/flux/kustomize/kustomization.d.ts.map +1 -0
- package/dist/factories/flux/kustomize/kustomization.js +108 -0
- package/dist/factories/flux/kustomize/kustomization.js.map +1 -0
- package/dist/factories/flux/kustomize/readiness-evaluators.d.ts +9 -0
- package/dist/factories/flux/kustomize/readiness-evaluators.d.ts.map +1 -0
- package/dist/factories/flux/kustomize/readiness-evaluators.js +71 -0
- package/dist/factories/flux/kustomize/readiness-evaluators.js.map +1 -0
- package/dist/factories/flux/kustomize/types.d.ts +2 -0
- package/dist/factories/flux/kustomize/types.d.ts.map +1 -0
- package/dist/factories/flux/kustomize/types.js +2 -0
- package/dist/factories/flux/kustomize/types.js.map +1 -0
- package/dist/factories/helm/helm-release.d.ts +139 -0
- package/dist/factories/helm/helm-release.d.ts.map +1 -0
- package/dist/factories/helm/helm-release.js +180 -0
- package/dist/factories/helm/helm-release.js.map +1 -0
- package/dist/factories/helm/helm-repository.d.ts +24 -0
- package/dist/factories/helm/helm-repository.d.ts.map +1 -0
- package/dist/factories/helm/helm-repository.js +57 -0
- package/dist/factories/helm/helm-repository.js.map +1 -0
- package/dist/factories/helm/index.d.ts +8 -0
- package/dist/factories/helm/index.d.ts.map +1 -0
- package/dist/factories/helm/index.js +8 -0
- package/dist/factories/helm/index.js.map +1 -0
- package/dist/factories/helm/readiness-evaluators.d.ts +55 -0
- package/dist/factories/helm/readiness-evaluators.d.ts.map +1 -0
- package/dist/factories/helm/readiness-evaluators.js +295 -0
- package/dist/factories/helm/readiness-evaluators.js.map +1 -0
- package/dist/factories/helm/types.d.ts +21 -0
- package/dist/factories/helm/types.d.ts.map +1 -0
- package/dist/factories/helm/types.js +2 -0
- package/dist/factories/helm/types.js.map +1 -0
- package/dist/factories/index.d.ts +12 -0
- package/dist/factories/index.d.ts.map +1 -0
- package/dist/factories/index.js +31 -0
- package/dist/factories/index.js.map +1 -0
- package/dist/factories/kro/index.d.ts +11 -0
- package/dist/factories/kro/index.d.ts.map +1 -0
- package/dist/factories/kro/index.js +10 -0
- package/dist/factories/kro/index.js.map +1 -0
- package/dist/factories/kro/kro-crd.d.ts +14 -0
- package/dist/factories/kro/kro-crd.d.ts.map +1 -0
- package/dist/factories/kro/kro-crd.js +51 -0
- package/dist/factories/kro/kro-crd.js.map +1 -0
- package/dist/factories/kro/kro-custom-resource.d.ts +23 -0
- package/dist/factories/kro/kro-custom-resource.d.ts.map +1 -0
- package/dist/factories/kro/kro-custom-resource.js +153 -0
- package/dist/factories/kro/kro-custom-resource.js.map +1 -0
- package/dist/factories/kro/resource-graph-definition.d.ts +12 -0
- package/dist/factories/kro/resource-graph-definition.d.ts.map +1 -0
- package/dist/factories/kro/resource-graph-definition.js +94 -0
- package/dist/factories/kro/resource-graph-definition.js.map +1 -0
- package/dist/factories/kubernetes/admission/index.d.ts +9 -0
- package/dist/factories/kubernetes/admission/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/admission/index.js +9 -0
- package/dist/factories/kubernetes/admission/index.js.map +1 -0
- package/dist/factories/kubernetes/admission/mutating-webhook-configuration.d.ts +5 -0
- package/dist/factories/kubernetes/admission/mutating-webhook-configuration.d.ts.map +1 -0
- package/dist/factories/kubernetes/admission/mutating-webhook-configuration.js +10 -0
- package/dist/factories/kubernetes/admission/mutating-webhook-configuration.js.map +1 -0
- package/dist/factories/kubernetes/admission/validating-webhook-configuration.d.ts +5 -0
- package/dist/factories/kubernetes/admission/validating-webhook-configuration.d.ts.map +1 -0
- package/dist/factories/kubernetes/admission/validating-webhook-configuration.js +10 -0
- package/dist/factories/kubernetes/admission/validating-webhook-configuration.js.map +1 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.d.ts +6 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.d.ts.map +1 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.js +35 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.js.map +1 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.d.ts +6 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.d.ts.map +1 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.js +31 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.js.map +1 -0
- package/dist/factories/kubernetes/autoscaling/index.d.ts +9 -0
- package/dist/factories/kubernetes/autoscaling/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/autoscaling/index.js +9 -0
- package/dist/factories/kubernetes/autoscaling/index.js.map +1 -0
- package/dist/factories/kubernetes/certificates/certificate-signing-request.d.ts +6 -0
- package/dist/factories/kubernetes/certificates/certificate-signing-request.d.ts.map +1 -0
- package/dist/factories/kubernetes/certificates/certificate-signing-request.js +48 -0
- package/dist/factories/kubernetes/certificates/certificate-signing-request.js.map +1 -0
- package/dist/factories/kubernetes/certificates/index.d.ts +8 -0
- package/dist/factories/kubernetes/certificates/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/certificates/index.js +8 -0
- package/dist/factories/kubernetes/certificates/index.js.map +1 -0
- package/dist/factories/kubernetes/config/config-map.d.ts +5 -0
- package/dist/factories/kubernetes/config/config-map.d.ts.map +1 -0
- package/dist/factories/kubernetes/config/config-map.js +16 -0
- package/dist/factories/kubernetes/config/config-map.js.map +1 -0
- package/dist/factories/kubernetes/config/index.d.ts +9 -0
- package/dist/factories/kubernetes/config/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/config/index.js +9 -0
- package/dist/factories/kubernetes/config/index.js.map +1 -0
- package/dist/factories/kubernetes/config/secret.d.ts +5 -0
- package/dist/factories/kubernetes/config/secret.d.ts.map +1 -0
- package/dist/factories/kubernetes/config/secret.js +16 -0
- package/dist/factories/kubernetes/config/secret.js.map +1 -0
- package/dist/factories/kubernetes/coordination/index.d.ts +8 -0
- package/dist/factories/kubernetes/coordination/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/coordination/index.js +8 -0
- package/dist/factories/kubernetes/coordination/index.js.map +1 -0
- package/dist/factories/kubernetes/coordination/lease.d.ts +5 -0
- package/dist/factories/kubernetes/coordination/lease.d.ts.map +1 -0
- package/dist/factories/kubernetes/coordination/lease.js +10 -0
- package/dist/factories/kubernetes/coordination/lease.js.map +1 -0
- package/dist/factories/kubernetes/core/component-status.d.ts +4 -0
- package/dist/factories/kubernetes/core/component-status.d.ts.map +1 -0
- package/dist/factories/kubernetes/core/component-status.js +25 -0
- package/dist/factories/kubernetes/core/component-status.js.map +1 -0
- package/dist/factories/kubernetes/core/index.d.ts +11 -0
- package/dist/factories/kubernetes/core/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/core/index.js +11 -0
- package/dist/factories/kubernetes/core/index.js.map +1 -0
- package/dist/factories/kubernetes/core/namespace.d.ts +9 -0
- package/dist/factories/kubernetes/core/namespace.d.ts.map +1 -0
- package/dist/factories/kubernetes/core/namespace.js +48 -0
- package/dist/factories/kubernetes/core/namespace.js.map +1 -0
- package/dist/factories/kubernetes/core/node.d.ts +6 -0
- package/dist/factories/kubernetes/core/node.d.ts.map +1 -0
- package/dist/factories/kubernetes/core/node.js +34 -0
- package/dist/factories/kubernetes/core/node.js.map +1 -0
- package/dist/factories/kubernetes/core/pod.d.ts +6 -0
- package/dist/factories/kubernetes/core/pod.d.ts.map +1 -0
- package/dist/factories/kubernetes/core/pod.js +44 -0
- package/dist/factories/kubernetes/core/pod.js.map +1 -0
- package/dist/factories/kubernetes/extensions/custom-resource-definition.d.ts +6 -0
- package/dist/factories/kubernetes/extensions/custom-resource-definition.d.ts.map +1 -0
- package/dist/factories/kubernetes/extensions/custom-resource-definition.js +45 -0
- package/dist/factories/kubernetes/extensions/custom-resource-definition.js.map +1 -0
- package/dist/factories/kubernetes/extensions/custom-resource.d.ts +12 -0
- package/dist/factories/kubernetes/extensions/custom-resource.d.ts.map +1 -0
- package/dist/factories/kubernetes/extensions/custom-resource.js +17 -0
- package/dist/factories/kubernetes/extensions/custom-resource.js.map +1 -0
- package/dist/factories/kubernetes/extensions/index.d.ts +9 -0
- package/dist/factories/kubernetes/extensions/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/extensions/index.js +9 -0
- package/dist/factories/kubernetes/extensions/index.js.map +1 -0
- package/dist/factories/kubernetes/index.d.ts +24 -0
- package/dist/factories/kubernetes/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/index.js +75 -0
- package/dist/factories/kubernetes/index.js.map +1 -0
- package/dist/factories/kubernetes/networking/endpoint-slice.d.ts +4 -0
- package/dist/factories/kubernetes/networking/endpoint-slice.d.ts.map +1 -0
- package/dist/factories/kubernetes/networking/endpoint-slice.js +10 -0
- package/dist/factories/kubernetes/networking/endpoint-slice.js.map +1 -0
- package/dist/factories/kubernetes/networking/endpoints.d.ts +4 -0
- package/dist/factories/kubernetes/networking/endpoints.d.ts.map +1 -0
- package/dist/factories/kubernetes/networking/endpoints.js +39 -0
- package/dist/factories/kubernetes/networking/endpoints.js.map +1 -0
- package/dist/factories/kubernetes/networking/index.d.ts +13 -0
- package/dist/factories/kubernetes/networking/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/networking/index.js +13 -0
- package/dist/factories/kubernetes/networking/index.js.map +1 -0
- package/dist/factories/kubernetes/networking/ingress-class.d.ts +5 -0
- package/dist/factories/kubernetes/networking/ingress-class.d.ts.map +1 -0
- package/dist/factories/kubernetes/networking/ingress-class.js +16 -0
- package/dist/factories/kubernetes/networking/ingress-class.js.map +1 -0
- package/dist/factories/kubernetes/networking/ingress.d.ts +5 -0
- package/dist/factories/kubernetes/networking/ingress.d.ts.map +1 -0
- package/dist/factories/kubernetes/networking/ingress.js +33 -0
- package/dist/factories/kubernetes/networking/ingress.js.map +1 -0
- package/dist/factories/kubernetes/networking/network-policy.d.ts +5 -0
- package/dist/factories/kubernetes/networking/network-policy.d.ts.map +1 -0
- package/dist/factories/kubernetes/networking/network-policy.js +17 -0
- package/dist/factories/kubernetes/networking/network-policy.js.map +1 -0
- package/dist/factories/kubernetes/networking/service.d.ts +5 -0
- package/dist/factories/kubernetes/networking/service.d.ts.map +1 -0
- package/dist/factories/kubernetes/networking/service.js +64 -0
- package/dist/factories/kubernetes/networking/service.js.map +1 -0
- package/dist/factories/kubernetes/policy/index.d.ts +10 -0
- package/dist/factories/kubernetes/policy/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/policy/index.js +10 -0
- package/dist/factories/kubernetes/policy/index.js.map +1 -0
- package/dist/factories/kubernetes/policy/limit-range.d.ts +5 -0
- package/dist/factories/kubernetes/policy/limit-range.d.ts.map +1 -0
- package/dist/factories/kubernetes/policy/limit-range.js +17 -0
- package/dist/factories/kubernetes/policy/limit-range.js.map +1 -0
- package/dist/factories/kubernetes/policy/pod-disruption-budget.d.ts +6 -0
- package/dist/factories/kubernetes/policy/pod-disruption-budget.d.ts.map +1 -0
- package/dist/factories/kubernetes/policy/pod-disruption-budget.js +55 -0
- package/dist/factories/kubernetes/policy/pod-disruption-budget.js.map +1 -0
- package/dist/factories/kubernetes/policy/resource-quota.d.ts +6 -0
- package/dist/factories/kubernetes/policy/resource-quota.d.ts.map +1 -0
- package/dist/factories/kubernetes/policy/resource-quota.js +43 -0
- package/dist/factories/kubernetes/policy/resource-quota.js.map +1 -0
- package/dist/factories/kubernetes/rbac/cluster-role-binding.d.ts +4 -0
- package/dist/factories/kubernetes/rbac/cluster-role-binding.d.ts.map +1 -0
- package/dist/factories/kubernetes/rbac/cluster-role-binding.js +17 -0
- package/dist/factories/kubernetes/rbac/cluster-role-binding.js.map +1 -0
- package/dist/factories/kubernetes/rbac/cluster-role.d.ts +4 -0
- package/dist/factories/kubernetes/rbac/cluster-role.d.ts.map +1 -0
- package/dist/factories/kubernetes/rbac/cluster-role.js +17 -0
- package/dist/factories/kubernetes/rbac/cluster-role.js.map +1 -0
- package/dist/factories/kubernetes/rbac/index.d.ts +12 -0
- package/dist/factories/kubernetes/rbac/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/rbac/index.js +12 -0
- package/dist/factories/kubernetes/rbac/index.js.map +1 -0
- package/dist/factories/kubernetes/rbac/role-binding.d.ts +4 -0
- package/dist/factories/kubernetes/rbac/role-binding.d.ts.map +1 -0
- package/dist/factories/kubernetes/rbac/role-binding.js +17 -0
- package/dist/factories/kubernetes/rbac/role-binding.js.map +1 -0
- package/dist/factories/kubernetes/rbac/role.d.ts +4 -0
- package/dist/factories/kubernetes/rbac/role.d.ts.map +1 -0
- package/dist/factories/kubernetes/rbac/role.js +17 -0
- package/dist/factories/kubernetes/rbac/role.js.map +1 -0
- package/dist/factories/kubernetes/rbac/service-account.d.ts +4 -0
- package/dist/factories/kubernetes/rbac/service-account.d.ts.map +1 -0
- package/dist/factories/kubernetes/rbac/service-account.js +17 -0
- package/dist/factories/kubernetes/rbac/service-account.js.map +1 -0
- package/dist/factories/kubernetes/scheduling/index.d.ts +9 -0
- package/dist/factories/kubernetes/scheduling/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/scheduling/index.js +9 -0
- package/dist/factories/kubernetes/scheduling/index.js.map +1 -0
- package/dist/factories/kubernetes/scheduling/priority-class.d.ts +4 -0
- package/dist/factories/kubernetes/scheduling/priority-class.d.ts.map +1 -0
- package/dist/factories/kubernetes/scheduling/priority-class.js +16 -0
- package/dist/factories/kubernetes/scheduling/priority-class.js.map +1 -0
- package/dist/factories/kubernetes/scheduling/runtime-class.d.ts +5 -0
- package/dist/factories/kubernetes/scheduling/runtime-class.d.ts.map +1 -0
- package/dist/factories/kubernetes/scheduling/runtime-class.js +10 -0
- package/dist/factories/kubernetes/scheduling/runtime-class.js.map +1 -0
- package/dist/factories/kubernetes/storage/csi-driver.d.ts +5 -0
- package/dist/factories/kubernetes/storage/csi-driver.d.ts.map +1 -0
- package/dist/factories/kubernetes/storage/csi-driver.js +16 -0
- package/dist/factories/kubernetes/storage/csi-driver.js.map +1 -0
- package/dist/factories/kubernetes/storage/csi-node.d.ts +5 -0
- package/dist/factories/kubernetes/storage/csi-node.d.ts.map +1 -0
- package/dist/factories/kubernetes/storage/csi-node.js +10 -0
- package/dist/factories/kubernetes/storage/csi-node.js.map +1 -0
- package/dist/factories/kubernetes/storage/index.d.ts +13 -0
- package/dist/factories/kubernetes/storage/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/storage/index.js +13 -0
- package/dist/factories/kubernetes/storage/index.js.map +1 -0
- package/dist/factories/kubernetes/storage/persistent-volume-claim.d.ts +6 -0
- package/dist/factories/kubernetes/storage/persistent-volume-claim.d.ts.map +1 -0
- package/dist/factories/kubernetes/storage/persistent-volume-claim.js +30 -0
- package/dist/factories/kubernetes/storage/persistent-volume-claim.js.map +1 -0
- package/dist/factories/kubernetes/storage/persistent-volume.d.ts +6 -0
- package/dist/factories/kubernetes/storage/persistent-volume.d.ts.map +1 -0
- package/dist/factories/kubernetes/storage/persistent-volume.js +47 -0
- package/dist/factories/kubernetes/storage/persistent-volume.js.map +1 -0
- package/dist/factories/kubernetes/storage/storage-class.d.ts +4 -0
- package/dist/factories/kubernetes/storage/storage-class.d.ts.map +1 -0
- package/dist/factories/kubernetes/storage/storage-class.js +17 -0
- package/dist/factories/kubernetes/storage/storage-class.js.map +1 -0
- package/dist/factories/kubernetes/storage/volume-attachment.d.ts +6 -0
- package/dist/factories/kubernetes/storage/volume-attachment.d.ts.map +1 -0
- package/dist/factories/kubernetes/storage/volume-attachment.js +10 -0
- package/dist/factories/kubernetes/storage/volume-attachment.js.map +1 -0
- package/dist/factories/kubernetes/types.d.ts +8 -0
- package/dist/factories/kubernetes/types.d.ts.map +1 -0
- package/dist/factories/kubernetes/types.js +8 -0
- package/dist/factories/kubernetes/types.js.map +1 -0
- package/dist/factories/kubernetes/workloads/cron-job.d.ts +6 -0
- package/dist/factories/kubernetes/workloads/cron-job.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/cron-job.js +53 -0
- package/dist/factories/kubernetes/workloads/cron-job.js.map +1 -0
- package/dist/factories/kubernetes/workloads/daemon-set.d.ts +6 -0
- package/dist/factories/kubernetes/workloads/daemon-set.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/daemon-set.js +32 -0
- package/dist/factories/kubernetes/workloads/daemon-set.js.map +1 -0
- package/dist/factories/kubernetes/workloads/deployment.d.ts +5 -0
- package/dist/factories/kubernetes/workloads/deployment.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/deployment.js +59 -0
- package/dist/factories/kubernetes/workloads/deployment.js.map +1 -0
- package/dist/factories/kubernetes/workloads/index.d.ts +14 -0
- package/dist/factories/kubernetes/workloads/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/index.js +14 -0
- package/dist/factories/kubernetes/workloads/index.js.map +1 -0
- package/dist/factories/kubernetes/workloads/job.d.ts +6 -0
- package/dist/factories/kubernetes/workloads/job.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/job.js +105 -0
- package/dist/factories/kubernetes/workloads/job.js.map +1 -0
- package/dist/factories/kubernetes/workloads/replica-set.d.ts +6 -0
- package/dist/factories/kubernetes/workloads/replica-set.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/replica-set.js +33 -0
- package/dist/factories/kubernetes/workloads/replica-set.js.map +1 -0
- package/dist/factories/kubernetes/workloads/replication-controller.d.ts +6 -0
- package/dist/factories/kubernetes/workloads/replication-controller.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/replication-controller.js +56 -0
- package/dist/factories/kubernetes/workloads/replication-controller.js.map +1 -0
- package/dist/factories/kubernetes/workloads/stateful-set.d.ts +6 -0
- package/dist/factories/kubernetes/workloads/stateful-set.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/stateful-set.js +81 -0
- package/dist/factories/kubernetes/workloads/stateful-set.js.map +1 -0
- package/dist/factories/kubernetes/yaml/index.d.ts +6 -0
- package/dist/factories/kubernetes/yaml/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/yaml/index.js +6 -0
- package/dist/factories/kubernetes/yaml/index.js.map +1 -0
- package/dist/factories/kubernetes/yaml/yaml-directory.d.ts +54 -0
- package/dist/factories/kubernetes/yaml/yaml-directory.d.ts.map +1 -0
- package/dist/factories/kubernetes/yaml/yaml-directory.js +178 -0
- package/dist/factories/kubernetes/yaml/yaml-directory.js.map +1 -0
- package/dist/factories/kubernetes/yaml/yaml-file.d.ts +54 -0
- package/dist/factories/kubernetes/yaml/yaml-file.d.ts.map +1 -0
- package/dist/factories/kubernetes/yaml/yaml-file.js +181 -0
- package/dist/factories/kubernetes/yaml/yaml-file.js.map +1 -0
- package/dist/factories/shared.d.ts +11 -0
- package/dist/factories/shared.d.ts.map +1 -0
- package/dist/factories/shared.js +364 -0
- package/dist/factories/shared.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/helpers.d.ts +69 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +405 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +11 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/type-guards.d.ts +34 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +66 -0
- package/dist/utils/type-guards.js.map +1 -0
- package/package.json +109 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Deployment Utilities
|
|
3
|
+
*
|
|
4
|
+
* This module provides common utilities used across all deployment modes
|
|
5
|
+
* to eliminate code duplication and ensure consistent behavior.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Common spec validation logic used by all factories
|
|
9
|
+
*/
|
|
10
|
+
export function validateSpec(spec, schemaDefinition) {
|
|
11
|
+
const validationResult = schemaDefinition.spec(spec);
|
|
12
|
+
if (validationResult instanceof Error) {
|
|
13
|
+
throw new Error(`Invalid spec: ${validationResult.message}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Generate deployment options from factory options
|
|
18
|
+
*/
|
|
19
|
+
export function createDeploymentOptions(factoryOptions, namespace, mode = 'direct') {
|
|
20
|
+
return {
|
|
21
|
+
mode,
|
|
22
|
+
namespace,
|
|
23
|
+
...(factoryOptions.timeout && { timeout: factoryOptions.timeout }),
|
|
24
|
+
waitForReady: factoryOptions.waitForReady ?? true,
|
|
25
|
+
hydrateStatus: factoryOptions.hydrateStatus ?? true,
|
|
26
|
+
...(factoryOptions.retryPolicy && { retryPolicy: factoryOptions.retryPolicy }),
|
|
27
|
+
...(factoryOptions.progressCallback && { progressCallback: factoryOptions.progressCallback }),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Generate instance name from spec
|
|
32
|
+
*/
|
|
33
|
+
export function generateInstanceName(spec) {
|
|
34
|
+
// Try to extract name from spec - check common name fields
|
|
35
|
+
if (typeof spec === 'object' && spec !== null) {
|
|
36
|
+
const specObj = spec;
|
|
37
|
+
// Check for common name fields in order of preference
|
|
38
|
+
for (const nameField of ['name', 'appName', 'serviceName', 'resourceName']) {
|
|
39
|
+
if (nameField in specObj && specObj[nameField]) {
|
|
40
|
+
return String(specObj[nameField]);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Generate a unique name
|
|
45
|
+
return `instance-${Date.now()}`;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create Enhanced proxy metadata
|
|
49
|
+
*/
|
|
50
|
+
export function createEnhancedMetadata(instanceName, namespace, factoryName, mode) {
|
|
51
|
+
return {
|
|
52
|
+
name: instanceName,
|
|
53
|
+
namespace,
|
|
54
|
+
labels: {
|
|
55
|
+
'typekro.io/factory': factoryName,
|
|
56
|
+
'typekro.io/mode': mode,
|
|
57
|
+
},
|
|
58
|
+
annotations: {
|
|
59
|
+
'typekro.io/deployed-at': new Date().toISOString(),
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Common error handling for deployment failures
|
|
65
|
+
*/
|
|
66
|
+
export function handleDeploymentError(error, context) {
|
|
67
|
+
if (error instanceof Error) {
|
|
68
|
+
// Use proper error chaining with cause property
|
|
69
|
+
const enhancedError = new Error(`${context}: ${error.message}`);
|
|
70
|
+
enhancedError.cause = error;
|
|
71
|
+
if (error.stack) {
|
|
72
|
+
enhancedError.stack = error.stack;
|
|
73
|
+
}
|
|
74
|
+
throw enhancedError;
|
|
75
|
+
}
|
|
76
|
+
throw new Error(`${context}: ${String(error)}`);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Common alchemy scope validation
|
|
80
|
+
*/
|
|
81
|
+
export function validateAlchemyScope(alchemyScope, context) {
|
|
82
|
+
if (!alchemyScope) {
|
|
83
|
+
throw new Error(`${context}: Alchemy scope is required for alchemy deployment`);
|
|
84
|
+
}
|
|
85
|
+
// Ensure the provided scope looks like a valid Alchemy scope (has a run function)
|
|
86
|
+
const hasRunFunction = typeof alchemyScope?.run === 'function';
|
|
87
|
+
if (!hasRunFunction) {
|
|
88
|
+
throw new Error(`${context}: Alchemy scope is invalid (missing run function)`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Create alchemy deployment options
|
|
93
|
+
*/
|
|
94
|
+
export function createAlchemyDeploymentOptions(factoryOptions, _namespace) {
|
|
95
|
+
return {
|
|
96
|
+
waitForReady: factoryOptions.waitForReady ?? true,
|
|
97
|
+
timeout: factoryOptions.timeout ?? 300000,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=shared-utilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-utilities.js","sourceRoot":"","sources":["../../../src/core/deployment/shared-utilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type * as k8s from '@kubernetes/client-node';
|
|
2
|
+
import type { DeployedResource, Enhanced, KubernetesResource } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Options for status hydration
|
|
5
|
+
*/
|
|
6
|
+
export interface StatusHydrationOptions {
|
|
7
|
+
/** Enable caching of status queries to reduce API calls */
|
|
8
|
+
enableCaching?: boolean;
|
|
9
|
+
/** Cache TTL in milliseconds */
|
|
10
|
+
cacheTtl?: number;
|
|
11
|
+
/** Maximum number of retries for failed status queries */
|
|
12
|
+
maxRetries?: number;
|
|
13
|
+
/** Timeout for individual status queries in milliseconds */
|
|
14
|
+
queryTimeout?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* StatusHydrator populates Enhanced proxy status fields with live cluster data
|
|
18
|
+
* after resources are confirmed ready by ResourceReadinessChecker
|
|
19
|
+
*/
|
|
20
|
+
export declare class StatusHydrator {
|
|
21
|
+
private k8sApi;
|
|
22
|
+
private statusCache;
|
|
23
|
+
private readonly defaultOptions;
|
|
24
|
+
private mergedOptions;
|
|
25
|
+
private logger;
|
|
26
|
+
constructor(k8sApi: k8s.KubernetesObjectApi, options?: StatusHydrationOptions);
|
|
27
|
+
/**
|
|
28
|
+
* Hydrate status fields for a single resource
|
|
29
|
+
*/
|
|
30
|
+
hydrateStatus<TSpec, TStatus extends Record<string, unknown>>(enhanced: Enhanced<TSpec, TStatus>, deployedResource?: DeployedResource): Promise<{
|
|
31
|
+
success: boolean;
|
|
32
|
+
resourceId: string;
|
|
33
|
+
hydratedFields: string[];
|
|
34
|
+
error?: Error;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Hydrate status using already-fetched live resource data
|
|
38
|
+
* This method is used by DirectDeploymentEngine to avoid duplicate API calls
|
|
39
|
+
*/
|
|
40
|
+
hydrateStatusFromLiveData<TSpec, TStatus>(enhanced: Enhanced<TSpec, TStatus>, liveResourceData: KubernetesResource<TSpec, TStatus>, deployedResource: DeployedResource): Promise<{
|
|
41
|
+
success: boolean;
|
|
42
|
+
resourceId: string;
|
|
43
|
+
hydratedFields: string[];
|
|
44
|
+
error?: Error;
|
|
45
|
+
}>;
|
|
46
|
+
/**
|
|
47
|
+
* Populate Enhanced proxy status fields with live data
|
|
48
|
+
*/
|
|
49
|
+
private populateEnhancedStatus;
|
|
50
|
+
/**
|
|
51
|
+
* Hydrate all status fields in an Enhanced proxy
|
|
52
|
+
*/
|
|
53
|
+
hydrateEnhancedProxy<TSpec, TStatus>(enhancedProxy: Enhanced<TSpec, TStatus>, deployedResources: DeployedResource[]): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Query live resource status from the cluster
|
|
56
|
+
*/
|
|
57
|
+
private queryResourceStatus;
|
|
58
|
+
/**
|
|
59
|
+
* Generate cache key for a deployed resource
|
|
60
|
+
*/
|
|
61
|
+
private getCacheKey;
|
|
62
|
+
/**
|
|
63
|
+
* Get data from cache if valid
|
|
64
|
+
*/
|
|
65
|
+
private getFromCache;
|
|
66
|
+
/**
|
|
67
|
+
* Set data in cache
|
|
68
|
+
*/
|
|
69
|
+
private setCache;
|
|
70
|
+
/**
|
|
71
|
+
* Clear the status cache
|
|
72
|
+
*/
|
|
73
|
+
clearCache(): void;
|
|
74
|
+
/**
|
|
75
|
+
* Get cache statistics
|
|
76
|
+
*/
|
|
77
|
+
getCacheStats(): {
|
|
78
|
+
size: number;
|
|
79
|
+
keys: string[];
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Hydrates status fields by combining Kro-resolved dynamic fields with static fields
|
|
84
|
+
*/
|
|
85
|
+
export declare function hydrateStatus<T extends Record<string, unknown>>(kroStatus: Record<string, unknown>, staticFields: Record<string, unknown>): Promise<T>;
|
|
86
|
+
//# sourceMappingURL=status-hydrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-hydrator.d.ts","sourceRoot":"","sources":["../../../src/core/deployment/status-hydrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,yBAAyB,CAAC;AAEpD,OAAO,KAAK,EACV,gBAAgB,EAChB,QAAQ,EACR,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAWD;;;GAGG;AACH,qBAAa,cAAc;IAavB,OAAO,CAAC,MAAM;IAZhB,OAAO,CAAC,WAAW,CAAgD;IACnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAK7B;IAEF,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,MAAM,CAAyC;gBAG7C,MAAM,EAAE,GAAG,CAAC,mBAAmB,EACvC,OAAO,GAAE,sBAA2B;IAKtC;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,EAClC,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC;IA+D7F;;;OAGG;IACG,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAC5C,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,EAClC,gBAAgB,EAAE,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,EACpD,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC;IAiC7F;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoC9B;;OAEG;IACG,oBAAoB,CAAC,KAAK,EAAE,OAAO,EACvC,aAAa,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,EACvC,iBAAiB,EAAE,gBAAgB,EAAE,GACpC,OAAO,CAAC,IAAI,CAAC;IA2BhB;;OAEG;YACW,mBAAmB;IAmCjC;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAQhB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE;CAMlD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,OAAO,CAAC,CAAC,CAAC,CAiBZ"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { getComponentLogger } from '../logging/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* StatusHydrator populates Enhanced proxy status fields with live cluster data
|
|
4
|
+
* after resources are confirmed ready by ResourceReadinessChecker
|
|
5
|
+
*/
|
|
6
|
+
export class StatusHydrator {
|
|
7
|
+
k8sApi;
|
|
8
|
+
statusCache = new Map();
|
|
9
|
+
defaultOptions = {
|
|
10
|
+
enableCaching: true,
|
|
11
|
+
cacheTtl: 30000, // 30 seconds
|
|
12
|
+
maxRetries: 3,
|
|
13
|
+
queryTimeout: 10000, // 10 seconds
|
|
14
|
+
};
|
|
15
|
+
mergedOptions;
|
|
16
|
+
logger = getComponentLogger('status-hydrator');
|
|
17
|
+
constructor(k8sApi, options = {}) {
|
|
18
|
+
this.k8sApi = k8sApi;
|
|
19
|
+
this.mergedOptions = { ...this.defaultOptions, ...options };
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Hydrate status fields for a single resource
|
|
23
|
+
*/
|
|
24
|
+
async hydrateStatus(enhanced, deployedResource) {
|
|
25
|
+
try {
|
|
26
|
+
const resourceId = enhanced.metadata?.name || 'unknown';
|
|
27
|
+
const hydratedFields = [];
|
|
28
|
+
// Create a DeployedResource from Enhanced if not provided
|
|
29
|
+
const resource = deployedResource || {
|
|
30
|
+
id: resourceId,
|
|
31
|
+
kind: enhanced.kind || 'Unknown',
|
|
32
|
+
name: resourceId,
|
|
33
|
+
namespace: enhanced.metadata?.namespace || 'default',
|
|
34
|
+
manifest: enhanced,
|
|
35
|
+
status: 'deployed',
|
|
36
|
+
deployedAt: new Date(),
|
|
37
|
+
};
|
|
38
|
+
const cacheKey = this.getCacheKey(resource);
|
|
39
|
+
// Check cache first if enabled
|
|
40
|
+
if (this.mergedOptions.enableCaching) {
|
|
41
|
+
const cached = this.getFromCache(cacheKey);
|
|
42
|
+
if (cached) {
|
|
43
|
+
// Populate Enhanced proxy with cached data
|
|
44
|
+
this.populateEnhancedStatus(enhanced, cached, hydratedFields);
|
|
45
|
+
return { success: true, resourceId, hydratedFields };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Query live status from cluster
|
|
49
|
+
const liveStatus = await this.queryResourceStatus(resource);
|
|
50
|
+
if (!liveStatus) {
|
|
51
|
+
return { success: false, resourceId, hydratedFields: [], error: new Error('Resource not found') };
|
|
52
|
+
}
|
|
53
|
+
// Extract status data
|
|
54
|
+
const status = liveStatus.status;
|
|
55
|
+
if (!status) {
|
|
56
|
+
return { success: false, resourceId, hydratedFields: [], error: new Error('No status found') };
|
|
57
|
+
}
|
|
58
|
+
// Populate Enhanced proxy with live status data
|
|
59
|
+
this.populateEnhancedStatus(enhanced, status, hydratedFields);
|
|
60
|
+
// Cache the result
|
|
61
|
+
if (this.mergedOptions.enableCaching) {
|
|
62
|
+
this.setCache(cacheKey, status);
|
|
63
|
+
}
|
|
64
|
+
return { success: true, resourceId, hydratedFields };
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
const resourceId = enhanced.metadata?.name || 'unknown';
|
|
68
|
+
this.logger.error('Failed to hydrate status', error, { resourceId });
|
|
69
|
+
return {
|
|
70
|
+
success: false,
|
|
71
|
+
resourceId,
|
|
72
|
+
hydratedFields: [],
|
|
73
|
+
error: error instanceof Error ? error : new Error(String(error))
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Hydrate status using already-fetched live resource data
|
|
79
|
+
* This method is used by DirectDeploymentEngine to avoid duplicate API calls
|
|
80
|
+
*/
|
|
81
|
+
async hydrateStatusFromLiveData(enhanced, liveResourceData, deployedResource) {
|
|
82
|
+
try {
|
|
83
|
+
const resourceId = enhanced.metadata?.name || 'unknown';
|
|
84
|
+
const hydratedFields = [];
|
|
85
|
+
// Extract status data from pre-fetched live resource
|
|
86
|
+
const status = liveResourceData.status;
|
|
87
|
+
if (!status) {
|
|
88
|
+
return { success: false, resourceId, hydratedFields: [], error: new Error('No status found') };
|
|
89
|
+
}
|
|
90
|
+
// Populate Enhanced proxy with live status data
|
|
91
|
+
this.populateEnhancedStatus(enhanced, status, hydratedFields);
|
|
92
|
+
// Cache the result if caching is enabled
|
|
93
|
+
if (this.mergedOptions.enableCaching) {
|
|
94
|
+
const cacheKey = this.getCacheKey(deployedResource);
|
|
95
|
+
this.setCache(cacheKey, status);
|
|
96
|
+
}
|
|
97
|
+
return { success: true, resourceId, hydratedFields };
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
const resourceId = enhanced.metadata?.name || 'unknown';
|
|
101
|
+
return {
|
|
102
|
+
success: false,
|
|
103
|
+
resourceId,
|
|
104
|
+
hydratedFields: [],
|
|
105
|
+
error: error instanceof Error ? error : new Error(String(error))
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Populate Enhanced proxy status fields with live data
|
|
111
|
+
*/
|
|
112
|
+
populateEnhancedStatus(enhanced, status, hydratedFields) {
|
|
113
|
+
const resourceId = enhanced.__resourceId || enhanced.metadata?.name || 'unknown';
|
|
114
|
+
const statusLogger = this.logger.child({ resourceId });
|
|
115
|
+
statusLogger.debug('Populating enhanced status', {
|
|
116
|
+
hasStatus: !!enhanced.status,
|
|
117
|
+
statusFields: Object.keys(status || {})
|
|
118
|
+
});
|
|
119
|
+
// Use type assertion to access the internal status object
|
|
120
|
+
const statusProxy = enhanced.status;
|
|
121
|
+
// Get all keys from the live status object
|
|
122
|
+
const allLiveStatusKeys = Object.keys(status || {});
|
|
123
|
+
for (const field of allLiveStatusKeys) {
|
|
124
|
+
// Check if the field exists on the live status
|
|
125
|
+
if (status[field] !== undefined) {
|
|
126
|
+
try {
|
|
127
|
+
// Assign the value directly to the proxy.
|
|
128
|
+
// The proxy's setter will handle it.
|
|
129
|
+
statusProxy[field] = status[field];
|
|
130
|
+
hydratedFields.push(field);
|
|
131
|
+
statusLogger.debug('Status field hydrated', { field, value: status[field] });
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
statusLogger.debug('Failed to set status field', { field, error: error.message });
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Hydrate all status fields in an Enhanced proxy
|
|
141
|
+
*/
|
|
142
|
+
async hydrateEnhancedProxy(enhancedProxy, deployedResources) {
|
|
143
|
+
const proxyName = enhancedProxy.metadata?.name || 'unknown';
|
|
144
|
+
const proxyLogger = this.logger.child({ proxyName });
|
|
145
|
+
try {
|
|
146
|
+
// Find the primary resource for this Enhanced proxy
|
|
147
|
+
const primaryResource = deployedResources.find(r => r.id === enhancedProxy.metadata?.name ||
|
|
148
|
+
r.name === enhancedProxy.metadata?.name);
|
|
149
|
+
if (!primaryResource) {
|
|
150
|
+
proxyLogger.warn('No deployed resource found for Enhanced proxy');
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Hydrate the primary resource status
|
|
154
|
+
const result = await this.hydrateStatus(enhancedProxy, primaryResource);
|
|
155
|
+
if (!result.success) {
|
|
156
|
+
proxyLogger.warn('Status hydration failed', { error: result.error?.message });
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
proxyLogger.error('Failed to hydrate Enhanced proxy status', error);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Query live resource status from the cluster
|
|
165
|
+
*/
|
|
166
|
+
async queryResourceStatus(deployedResource) {
|
|
167
|
+
const { manifest, kind, name, namespace } = deployedResource;
|
|
168
|
+
const { apiVersion } = manifest;
|
|
169
|
+
const queryLogger = this.logger.child({ kind, name, namespace });
|
|
170
|
+
if (!name || !namespace) {
|
|
171
|
+
queryLogger.warn('Invalid resource metadata for status query', { resourceId: deployedResource.id });
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
try {
|
|
175
|
+
// Use the Kubernetes API to get the current resource state
|
|
176
|
+
const response = await this.k8sApi.read({
|
|
177
|
+
apiVersion,
|
|
178
|
+
kind,
|
|
179
|
+
metadata: {
|
|
180
|
+
name,
|
|
181
|
+
namespace,
|
|
182
|
+
},
|
|
183
|
+
});
|
|
184
|
+
return response.body;
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
const apiError = error;
|
|
188
|
+
if (apiError.statusCode === 404) {
|
|
189
|
+
queryLogger.warn('Resource not found');
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
queryLogger.error('Failed to query resource status', error);
|
|
193
|
+
}
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Generate cache key for a deployed resource
|
|
199
|
+
*/
|
|
200
|
+
getCacheKey(deployedResource) {
|
|
201
|
+
return `${deployedResource.manifest.apiVersion}:${deployedResource.kind}:${deployedResource.namespace}:${deployedResource.name}`;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get data from cache if valid
|
|
205
|
+
*/
|
|
206
|
+
getFromCache(key) {
|
|
207
|
+
const entry = this.statusCache.get(key);
|
|
208
|
+
if (!entry) {
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
const now = Date.now();
|
|
212
|
+
if (now - entry.timestamp > entry.ttl) {
|
|
213
|
+
this.statusCache.delete(key);
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
return entry.data;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Set data in cache
|
|
220
|
+
*/
|
|
221
|
+
setCache(key, data) {
|
|
222
|
+
this.statusCache.set(key, {
|
|
223
|
+
data,
|
|
224
|
+
timestamp: Date.now(),
|
|
225
|
+
ttl: this.mergedOptions.cacheTtl
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Clear the status cache
|
|
230
|
+
*/
|
|
231
|
+
clearCache() {
|
|
232
|
+
this.statusCache.clear();
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Get cache statistics
|
|
236
|
+
*/
|
|
237
|
+
getCacheStats() {
|
|
238
|
+
return {
|
|
239
|
+
size: this.statusCache.size,
|
|
240
|
+
keys: Array.from(this.statusCache.keys())
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Hydrates status fields by combining Kro-resolved dynamic fields with static fields
|
|
246
|
+
*/
|
|
247
|
+
export async function hydrateStatus(kroStatus, staticFields) {
|
|
248
|
+
// Evaluate static fields (resolve any CEL expressions that don't require Kubernetes resources)
|
|
249
|
+
const evaluatedStaticFields = {};
|
|
250
|
+
for (const [fieldName, fieldValue] of Object.entries(staticFields)) {
|
|
251
|
+
// For now, just use direct values since static fields shouldn't have CEL expressions
|
|
252
|
+
evaluatedStaticFields[fieldName] = fieldValue;
|
|
253
|
+
}
|
|
254
|
+
// Merge Kro-resolved status with evaluated static fields
|
|
255
|
+
// Dynamic fields (from Kro) take precedence over static fields
|
|
256
|
+
const hydratedStatus = {
|
|
257
|
+
...evaluatedStaticFields,
|
|
258
|
+
...kroStatus,
|
|
259
|
+
};
|
|
260
|
+
return hydratedStatus;
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=status-hydrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-hydrator.js","sourceRoot":"","sources":["../../../src/core/deployment/status-hydrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alchemy Deployment Strategy
|
|
3
|
+
*
|
|
4
|
+
* This module provides the alchemy deployment strategy that wraps deployments
|
|
5
|
+
* in alchemy resources with individual resource registration.
|
|
6
|
+
*/
|
|
7
|
+
import type { DeploymentResult, FactoryOptions } from '../../types/deployment.js';
|
|
8
|
+
import type { KroCompatibleType, SchemaDefinition } from '../../types/serialization.js';
|
|
9
|
+
import type { Scope } from '../../types/serialization.js';
|
|
10
|
+
import { BaseDeploymentStrategy, type DeploymentStrategy } from './base-strategy.js';
|
|
11
|
+
/**
|
|
12
|
+
* Alchemy deployment strategy - wraps deployments in alchemy resources with individual resource registration
|
|
13
|
+
*
|
|
14
|
+
* This strategy implements individual resource registration for Direct mode Alchemy integration.
|
|
15
|
+
* Unlike Kro mode which registers RGDs and instances, Direct mode registers each individual
|
|
16
|
+
* Kubernetes resource (Deployment, Service, ConfigMap, etc.) as separate Alchemy resource types.
|
|
17
|
+
*
|
|
18
|
+
* ## Resource Registration Pattern
|
|
19
|
+
*
|
|
20
|
+
* **Direct Mode (this strategy):**
|
|
21
|
+
* - Each individual Kubernetes resource gets its own Alchemy resource type registration
|
|
22
|
+
* - Resource types are named using the pattern `kubernetes::{Kind}` (e.g., `kubernetes::Deployment`)
|
|
23
|
+
* - Each instance of each resource gets a separate Alchemy resource registered
|
|
24
|
+
* - Example: A webapp with Deployment + Service creates 2 Alchemy resource types and 2 resource instances
|
|
25
|
+
*
|
|
26
|
+
* **Kro Mode (for comparison):**
|
|
27
|
+
* - Each RGD gets one Alchemy resource type registered (`kro::ResourceGraphDefinition`)
|
|
28
|
+
* - Each instance of each RGD gets a separate Alchemy resource registered (`kro::{Kind}`)
|
|
29
|
+
* - Example: A webapp RGD creates 1 RGD type + 1 instance type = 2 Alchemy resources total
|
|
30
|
+
*
|
|
31
|
+
* ## Error Handling
|
|
32
|
+
*
|
|
33
|
+
* The strategy implements robust error handling for individual resource failures:
|
|
34
|
+
* - Continues processing remaining resources when individual resources fail
|
|
35
|
+
* - Collects all errors and includes them in the final DeploymentResult
|
|
36
|
+
* - Sets deployment status to 'partial' when some resources succeed and others fail
|
|
37
|
+
* - Provides resource-specific error context including kind, name, namespace, and Alchemy resource type
|
|
38
|
+
*
|
|
39
|
+
* ## Integration with DirectTypeKroDeployer
|
|
40
|
+
*
|
|
41
|
+
* This strategy integrates with DirectTypeKroDeployer for actual resource deployment:
|
|
42
|
+
* - Extracts DirectDeploymentEngine from the base DirectDeploymentStrategy
|
|
43
|
+
* - Creates DirectTypeKroDeployer instance for individual resource deployments
|
|
44
|
+
* - Passes deployer to each Alchemy resource provider for deployment execution
|
|
45
|
+
*
|
|
46
|
+
* @template TSpec - The specification type for the resource
|
|
47
|
+
* @template TStatus - The status type for the resource
|
|
48
|
+
*/
|
|
49
|
+
export declare class AlchemyDeploymentStrategy<TSpec extends KroCompatibleType, TStatus extends KroCompatibleType> extends BaseDeploymentStrategy<TSpec, TStatus> {
|
|
50
|
+
private alchemyScope;
|
|
51
|
+
private baseStrategy;
|
|
52
|
+
private logger;
|
|
53
|
+
constructor(factoryName: string, namespace: string, schemaDefinition: SchemaDefinition<TSpec, TStatus>, factoryOptions: FactoryOptions, alchemyScope: Scope, baseStrategy: DeploymentStrategy<TSpec, TStatus>);
|
|
54
|
+
/**
|
|
55
|
+
* Execute deployment with individual resource registration for Alchemy integration
|
|
56
|
+
*
|
|
57
|
+
* This method implements the core logic for Direct mode Alchemy integration:
|
|
58
|
+
*
|
|
59
|
+
* ## Process Overview
|
|
60
|
+
* 1. **Validation**: Validates the Alchemy scope is available and properly configured
|
|
61
|
+
* 2. **Resource Graph Creation**: Gets the resource graph from the base strategy using createResourceGraphForInstance
|
|
62
|
+
* 3. **Deployer Setup**: Creates DirectTypeKroDeployer instance using DirectDeploymentEngine from base strategy
|
|
63
|
+
* 4. **Individual Registration**: Processes each resource in the resource graph individually for Alchemy registration
|
|
64
|
+
* 5. **Error Collection**: Continues processing remaining resources when individual resources fail
|
|
65
|
+
* 6. **Result Creation**: Creates comprehensive DeploymentResult with individual resource tracking
|
|
66
|
+
*
|
|
67
|
+
* ## Individual Resource Processing
|
|
68
|
+
*
|
|
69
|
+
* For each resource in the resource graph:
|
|
70
|
+
* - **Type Inference**: Infers Alchemy resource type from Kubernetes kind (e.g., `kubernetes::Deployment`)
|
|
71
|
+
* - **Type Registration**: Calls ensureResourceTypeRegistered to register the resource type (shared across instances)
|
|
72
|
+
* - **ID Generation**: Creates unique resource ID using createAlchemyResourceId with namespace and resource info
|
|
73
|
+
* - **Deployment**: Deploys the resource through Alchemy using the resource provider and DirectTypeKroDeployer
|
|
74
|
+
* - **Tracking**: Tracks deployed resource with Alchemy metadata (resource ID, type, etc.)
|
|
75
|
+
*
|
|
76
|
+
* ## Error Handling Strategy
|
|
77
|
+
*
|
|
78
|
+
* The method implements robust error handling:
|
|
79
|
+
* - **Continue on Failure**: Individual resource failures don't stop processing of remaining resources
|
|
80
|
+
* - **Error Collection**: All errors are collected with detailed context about which resource failed
|
|
81
|
+
* - **Resource Context**: Error messages include resource kind, name, namespace, and Alchemy resource type
|
|
82
|
+
* - **Partial Status**: Deployment status is set to 'partial' when some resources succeed and others fail
|
|
83
|
+
*
|
|
84
|
+
* ## Resource Type Naming
|
|
85
|
+
*
|
|
86
|
+
* Resource types follow consistent naming patterns:
|
|
87
|
+
* - **Kubernetes Resources**: `kubernetes::{Kind}` (e.g., `kubernetes::Deployment`, `kubernetes::Service`)
|
|
88
|
+
* - **Shared Types**: Multiple instances of the same resource type share the same Alchemy resource type registration
|
|
89
|
+
* - **Unique IDs**: Each resource instance gets a unique Alchemy resource ID for individual tracking
|
|
90
|
+
*
|
|
91
|
+
* @param spec - The resource specification to deploy
|
|
92
|
+
* @param instanceName - The name of this specific instance
|
|
93
|
+
* @returns Promise<DeploymentResult> - Comprehensive deployment result with individual resource tracking
|
|
94
|
+
* @throws Error - If Alchemy scope validation fails or critical deployment errors occur
|
|
95
|
+
*/
|
|
96
|
+
protected executeDeployment(spec: TSpec, instanceName: string): Promise<DeploymentResult>;
|
|
97
|
+
protected getStrategyMode(): 'direct' | 'kro';
|
|
98
|
+
/**
|
|
99
|
+
* Create resource graph for instance using base strategy logic
|
|
100
|
+
*/
|
|
101
|
+
private createResourceGraphForInstance;
|
|
102
|
+
/**
|
|
103
|
+
* Extract serializable kubeConfig options from factory options
|
|
104
|
+
*/
|
|
105
|
+
private extractKubeConfigOptions;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=alchemy-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alchemy-strategy.d.ts","sourceRoot":"","sources":["../../../../src/core/deployment/strategies/alchemy-strategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAiB,MAAM,2BAA2B,CAAC;AACjG,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAExF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAKrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,yBAAyB,CACpC,KAAK,SAAS,iBAAiB,EAC/B,OAAO,SAAS,iBAAiB,CACjC,SAAQ,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;IAQ5C,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IARtB,OAAO,CAAC,MAAM,CAAqD;gBAGjE,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,EAClD,cAAc,EAAE,cAAc,EACtB,YAAY,EAAE,KAAK,EACnB,YAAY,EAAE,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC;IAK1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyCG;cACa,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsM/F,SAAS,CAAC,eAAe,IAAI,QAAQ,GAAG,KAAK;IAI7C;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAiDtC;;OAEG;IACH,OAAO,CAAC,wBAAwB;CA4JjC"}
|