typekro 0.11.0 → 0.12.1
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/core/deployment/kro-factory.d.ts.map +1 -1
- package/dist/core/deployment/kro-factory.js +17 -2
- package/dist/core/deployment/kro-factory.js.map +1 -1
- package/dist/core/deployment/singleton-gitops.d.ts +10 -0
- package/dist/core/deployment/singleton-gitops.d.ts.map +1 -0
- package/dist/core/deployment/singleton-gitops.js +62 -0
- package/dist/core/deployment/singleton-gitops.js.map +1 -0
- package/dist/core/serialization/cel-references.d.ts.map +1 -1
- package/dist/core/serialization/cel-references.js +26 -0
- 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 +12 -1
- package/dist/core/serialization/core.js.map +1 -1
- package/dist/core/serialization/schema.d.ts +2 -0
- package/dist/core/serialization/schema.d.ts.map +1 -1
- package/dist/core/serialization/schema.js +219 -9
- package/dist/core/serialization/schema.js.map +1 -1
- package/dist/core/singleton/singleton.d.ts +10 -0
- package/dist/core/singleton/singleton.d.ts.map +1 -1
- package/dist/core/singleton/singleton.js +13 -0
- package/dist/core/singleton/singleton.js.map +1 -1
- package/dist/factories/dagster/compositions/dagster-bootstrap.d.ts +892 -0
- package/dist/factories/dagster/compositions/dagster-bootstrap.d.ts.map +1 -0
- package/dist/factories/dagster/compositions/dagster-bootstrap.js +82 -0
- package/dist/factories/dagster/compositions/dagster-bootstrap.js.map +1 -0
- package/dist/factories/dagster/compositions/dagster-helm-repository.d.ts +21 -0
- package/dist/factories/dagster/compositions/dagster-helm-repository.d.ts.map +1 -0
- package/dist/factories/dagster/compositions/dagster-helm-repository.js +34 -0
- package/dist/factories/dagster/compositions/dagster-helm-repository.js.map +1 -0
- package/dist/factories/dagster/compositions/index.d.ts +3 -0
- package/dist/factories/dagster/compositions/index.d.ts.map +1 -0
- package/dist/factories/dagster/compositions/index.js +3 -0
- package/dist/factories/dagster/compositions/index.js.map +1 -0
- package/dist/factories/dagster/index.d.ts +31 -0
- package/dist/factories/dagster/index.d.ts.map +1 -0
- package/dist/factories/dagster/index.js +31 -0
- package/dist/factories/dagster/index.js.map +1 -0
- package/dist/factories/dagster/resources/helm.d.ts +32 -0
- package/dist/factories/dagster/resources/helm.d.ts.map +1 -0
- package/dist/factories/dagster/resources/helm.js +60 -0
- package/dist/factories/dagster/resources/helm.js.map +1 -0
- package/dist/factories/dagster/resources/index.d.ts +2 -0
- package/dist/factories/dagster/resources/index.d.ts.map +1 -0
- package/dist/factories/dagster/resources/index.js +2 -0
- package/dist/factories/dagster/resources/index.js.map +1 -0
- package/dist/factories/dagster/types.d.ts +2061 -0
- package/dist/factories/dagster/types.d.ts.map +1 -0
- package/dist/factories/dagster/types.js +367 -0
- package/dist/factories/dagster/types.js.map +1 -0
- package/dist/factories/dagster/utils/helm-values-mapper.d.ts +21 -0
- package/dist/factories/dagster/utils/helm-values-mapper.d.ts.map +1 -0
- package/dist/factories/dagster/utils/helm-values-mapper.js +470 -0
- package/dist/factories/dagster/utils/helm-values-mapper.js.map +1 -0
- package/dist/factories/dagster/utils/index.d.ts +2 -0
- package/dist/factories/dagster/utils/index.d.ts.map +1 -0
- package/dist/factories/dagster/utils/index.js +2 -0
- package/dist/factories/dagster/utils/index.js.map +1 -0
- package/package.json +6 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dagster-bootstrap.d.ts","sourceRoot":"","sources":["../../../../src/factories/dagster/compositions/dagster-bootstrap.ts"],"names":[],"mappings":"AAqBA;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2E5B,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { kubernetesComposition } from '../../../core/composition/imperative.js';
|
|
2
|
+
import { DEFAULT_FLUX_NAMESPACE } from '../../../core/config/defaults.js';
|
|
3
|
+
import { Cel } from '../../../core/references/cel.js';
|
|
4
|
+
import { singleton } from '../../../core/singleton/singleton.js';
|
|
5
|
+
import { namespace } from '../../kubernetes/core/namespace.js';
|
|
6
|
+
import { DEFAULT_DAGSTER_REPO_NAME, DEFAULT_DAGSTER_REPO_URL, DEFAULT_DAGSTER_VERSION, dagsterHelmRelease, } from '../resources/helm.js';
|
|
7
|
+
import { DagsterBootstrapConfigSchema, DagsterBootstrapStatusSchema, } from '../types.js';
|
|
8
|
+
import { mapDagsterConfigToHelmValues } from '../utils/helm-values-mapper.js';
|
|
9
|
+
import { dagsterHelmRepositoryBootstrap } from './dagster-helm-repository.js';
|
|
10
|
+
/**
|
|
11
|
+
* High-level Dagster bootstrap composition.
|
|
12
|
+
*
|
|
13
|
+
* Creates the target Namespace, official Dagster HelmRepository, and Dagster
|
|
14
|
+
* HelmRelease. Status is derived only from owned Flux Helm resources.
|
|
15
|
+
*/
|
|
16
|
+
export const dagsterBootstrap = kubernetesComposition({
|
|
17
|
+
name: 'dagster-bootstrap',
|
|
18
|
+
kind: 'DagsterBootstrap',
|
|
19
|
+
spec: DagsterBootstrapConfigSchema,
|
|
20
|
+
status: DagsterBootstrapStatusSchema,
|
|
21
|
+
}, (spec) => {
|
|
22
|
+
const resolvedNamespace = spec.namespace || 'dagster';
|
|
23
|
+
const resolvedVersion = spec.version || DEFAULT_DAGSTER_VERSION;
|
|
24
|
+
const helmValues = buildHelmValues(spec);
|
|
25
|
+
const _dagsterNamespace = namespace({
|
|
26
|
+
metadata: {
|
|
27
|
+
name: resolvedNamespace,
|
|
28
|
+
labels: {
|
|
29
|
+
'app.kubernetes.io/name': 'dagster',
|
|
30
|
+
'app.kubernetes.io/instance': spec.name,
|
|
31
|
+
'app.kubernetes.io/version': resolvedVersion,
|
|
32
|
+
'app.kubernetes.io/managed-by': 'typekro',
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
id: 'dagsterNamespace',
|
|
36
|
+
});
|
|
37
|
+
// The official Dagster chart repository is one cluster-level Flux source shared
|
|
38
|
+
// by every Dagster instance, so deploy it once via singleton(...) with a fixed
|
|
39
|
+
// identity. Inlining it would make each instance's KRO ApplySet try to own the
|
|
40
|
+
// HelmRepository exclusively, breaking a second instance (dev + prod) with an
|
|
41
|
+
// ApplySet reassignment error. Every instance's HelmRelease references the same
|
|
42
|
+
// shared repository by the official `sourceRef` defaults.
|
|
43
|
+
const _dagsterHelmRepository = singleton(dagsterHelmRepositoryBootstrap, {
|
|
44
|
+
id: 'dagster-helm-repository',
|
|
45
|
+
spec: {
|
|
46
|
+
name: DEFAULT_DAGSTER_REPO_NAME,
|
|
47
|
+
namespace: DEFAULT_FLUX_NAMESPACE,
|
|
48
|
+
url: DEFAULT_DAGSTER_REPO_URL,
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
const _dagsterHelmRelease = dagsterHelmRelease({
|
|
52
|
+
name: spec.name,
|
|
53
|
+
namespace: resolvedNamespace,
|
|
54
|
+
version: resolvedVersion,
|
|
55
|
+
values: helmValues,
|
|
56
|
+
id: 'dagsterHelmRelease',
|
|
57
|
+
});
|
|
58
|
+
const helmRepositoryReady = _dagsterHelmRepository.status.ready;
|
|
59
|
+
const helmReleaseReady = Cel.expr(_dagsterHelmRelease.status.conditions, '.exists(c, c.type == "Ready" && c.status == "True")');
|
|
60
|
+
return {
|
|
61
|
+
ready: helmReleaseReady,
|
|
62
|
+
phase: Cel.expr('dagsterHelmRelease.status.conditions.exists(c, c.type == "Ready" && c.status == "False") ' +
|
|
63
|
+
'? "Failed" : dagsterHelmRelease.status.conditions.exists(c, c.type == "Ready" && ' +
|
|
64
|
+
'c.status == "True") ? "Ready" : "Installing"'),
|
|
65
|
+
failed: Cel.expr(_dagsterHelmRelease.status.conditions, '.exists(c, c.type == "Ready" && c.status == "False")'),
|
|
66
|
+
version: resolvedVersion,
|
|
67
|
+
components: {
|
|
68
|
+
helmRepository: helmRepositoryReady,
|
|
69
|
+
helmRelease: helmReleaseReady,
|
|
70
|
+
webserver: helmReleaseReady,
|
|
71
|
+
daemon: helmReleaseReady,
|
|
72
|
+
userDeployments: helmReleaseReady,
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
function buildHelmValues(spec) {
|
|
77
|
+
return mapDagsterConfigToHelmValues(buildMapperConfig(spec));
|
|
78
|
+
}
|
|
79
|
+
function buildMapperConfig(spec) {
|
|
80
|
+
return Object.assign({ name: spec.name }, spec.namespace !== undefined && { namespace: spec.namespace }, spec.version !== undefined && { version: spec.version }, spec.serviceAccountName !== undefined && { serviceAccountName: spec.serviceAccountName }, spec.nameOverride !== undefined && { nameOverride: spec.nameOverride }, spec.fullnameOverride !== undefined && { fullnameOverride: spec.fullnameOverride }, spec.rbacEnabled !== undefined && { rbacEnabled: spec.rbacEnabled }, spec.imagePullSecrets !== undefined && { imagePullSecrets: spec.imagePullSecrets }, spec.webserver !== undefined && { webserver: spec.webserver }, spec.daemon !== undefined && { daemon: spec.daemon }, spec.userDeployments !== undefined && { userDeployments: spec.userDeployments }, spec.postgresql !== undefined && { postgresql: spec.postgresql }, spec.runLauncher !== undefined && { runLauncher: spec.runLauncher }, spec.scheduler !== undefined && { scheduler: spec.scheduler }, spec.computeLogManager !== undefined && { computeLogManager: spec.computeLogManager }, spec.ingress !== undefined && { ingress: spec.ingress }, spec.flower !== undefined && { flower: spec.flower }, spec.rabbitmq !== undefined && { rabbitmq: spec.rabbitmq }, spec.redis !== undefined && { redis: spec.redis }, spec.global !== undefined && { global: spec.global }, spec.values !== undefined && { values: spec.values });
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=dagster-bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dagster-bootstrap.js","sourceRoot":"","sources":["../../../../src/factories/dagster/compositions/dagster-bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Dagster HelmRepository singleton.
|
|
3
|
+
*
|
|
4
|
+
* The official Dagster chart repository is a single cluster-level Flux source —
|
|
5
|
+
* the same URL serves every Dagster instance. Deploying it inline in the
|
|
6
|
+
* `dagsterBootstrap` RGD makes each instance's KRO ApplySet try to *own* the
|
|
7
|
+
* `flux-system/dagster` HelmRepository exclusively, so a second instance of the
|
|
8
|
+
* RGD (e.g. a dev + prod pair) fails to reconcile: "resource belongs to a
|
|
9
|
+
* different ApplySet ... cannot reassign". Modelling the repository as its own
|
|
10
|
+
* composition lets `dagsterBootstrap` consume it via `singleton(...)`, so one
|
|
11
|
+
* shared HelmRepository is owned outside any single instance's ApplySet and
|
|
12
|
+
* every instance's HelmRelease references it by the same `sourceRef`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const dagsterHelmRepositoryBootstrap: import("../../../index.js").CallableComposition<{
|
|
15
|
+
name: string;
|
|
16
|
+
namespace: string;
|
|
17
|
+
url: string;
|
|
18
|
+
}, {
|
|
19
|
+
ready: boolean;
|
|
20
|
+
}>;
|
|
21
|
+
//# sourceMappingURL=dagster-helm-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dagster-helm-repository.d.ts","sourceRoot":"","sources":["../../../../src/factories/dagster/compositions/dagster-helm-repository.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,8BAA8B;;;;;;EAsB1C,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { kubernetesComposition } from '../../../core/composition/imperative.js';
|
|
2
|
+
import { Cel } from '../../../core/references/cel.js';
|
|
3
|
+
import { dagsterHelmRepository } from '../resources/helm.js';
|
|
4
|
+
import { DagsterHelmRepositorySingletonSpecSchema, DagsterHelmRepositorySingletonStatusSchema, } from '../types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Shared Dagster HelmRepository singleton.
|
|
7
|
+
*
|
|
8
|
+
* The official Dagster chart repository is a single cluster-level Flux source —
|
|
9
|
+
* the same URL serves every Dagster instance. Deploying it inline in the
|
|
10
|
+
* `dagsterBootstrap` RGD makes each instance's KRO ApplySet try to *own* the
|
|
11
|
+
* `flux-system/dagster` HelmRepository exclusively, so a second instance of the
|
|
12
|
+
* RGD (e.g. a dev + prod pair) fails to reconcile: "resource belongs to a
|
|
13
|
+
* different ApplySet ... cannot reassign". Modelling the repository as its own
|
|
14
|
+
* composition lets `dagsterBootstrap` consume it via `singleton(...)`, so one
|
|
15
|
+
* shared HelmRepository is owned outside any single instance's ApplySet and
|
|
16
|
+
* every instance's HelmRelease references it by the same `sourceRef`.
|
|
17
|
+
*/
|
|
18
|
+
export const dagsterHelmRepositoryBootstrap = kubernetesComposition({
|
|
19
|
+
name: 'dagster-helm-repository',
|
|
20
|
+
kind: 'DagsterHelmRepository',
|
|
21
|
+
spec: DagsterHelmRepositorySingletonSpecSchema,
|
|
22
|
+
status: DagsterHelmRepositorySingletonStatusSchema,
|
|
23
|
+
}, (spec) => {
|
|
24
|
+
const repository = dagsterHelmRepository({
|
|
25
|
+
name: spec.name,
|
|
26
|
+
namespace: spec.namespace,
|
|
27
|
+
url: spec.url,
|
|
28
|
+
id: 'repository',
|
|
29
|
+
});
|
|
30
|
+
return {
|
|
31
|
+
ready: Cel.expr(repository.status.conditions, '.exists(c, c.type == "Ready" && c.status == "True")'),
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=dagster-helm-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dagster-helm-repository.js","sourceRoot":"","sources":["../../../../src/factories/dagster/compositions/dagster-helm-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACL,wCAAwC,EACxC,0CAA0C,GAC3C,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,qBAAqB,CACjE;IACE,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,wCAAwC;IAC9C,MAAM,EAAE,0CAA0C;CACnD,EACD,CAAC,IAAI,EAAE,EAAE;IACP,MAAM,UAAU,GAAG,qBAAqB,CAAC;QACvC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,EAAE,EAAE,YAAY;KACjB,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,IAAI,CACb,UAAU,CAAC,MAAM,CAAC,UAAU,EAC5B,qDAAqD,CACtD;KACF,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/factories/dagster/compositions/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/factories/dagster/compositions/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dagster Integration for TypeKro.
|
|
3
|
+
*
|
|
4
|
+
* Provides type-safe deployment primitives for Dagster OSS on Kubernetes via
|
|
5
|
+
* the official Dagster Helm chart.
|
|
6
|
+
*
|
|
7
|
+
* ## Resources
|
|
8
|
+
* - `dagsterHelmRepository()` - official Dagster Helm chart repository
|
|
9
|
+
* - `dagsterHelmRelease()` - Dagster deployment via Flux HelmRelease
|
|
10
|
+
*
|
|
11
|
+
* ## Compositions
|
|
12
|
+
* - `dagsterBootstrap` - complete Dagster deployment using Namespace, HelmRepository, and HelmRelease
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { dagsterBootstrap } from 'typekro/dagster';
|
|
17
|
+
*
|
|
18
|
+
* const factory = dagsterBootstrap.factory('kro', {
|
|
19
|
+
* namespace: 'dagster',
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @see https://dagster.io/
|
|
24
|
+
* @see https://github.com/dagster-io/dagster/tree/master/helm/dagster
|
|
25
|
+
* @module
|
|
26
|
+
*/
|
|
27
|
+
export * from './compositions/index.js';
|
|
28
|
+
export * from './resources/index.js';
|
|
29
|
+
export * from './types.js';
|
|
30
|
+
export * from './utils/index.js';
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/factories/dagster/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dagster Integration for TypeKro.
|
|
3
|
+
*
|
|
4
|
+
* Provides type-safe deployment primitives for Dagster OSS on Kubernetes via
|
|
5
|
+
* the official Dagster Helm chart.
|
|
6
|
+
*
|
|
7
|
+
* ## Resources
|
|
8
|
+
* - `dagsterHelmRepository()` - official Dagster Helm chart repository
|
|
9
|
+
* - `dagsterHelmRelease()` - Dagster deployment via Flux HelmRelease
|
|
10
|
+
*
|
|
11
|
+
* ## Compositions
|
|
12
|
+
* - `dagsterBootstrap` - complete Dagster deployment using Namespace, HelmRepository, and HelmRelease
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { dagsterBootstrap } from 'typekro/dagster';
|
|
17
|
+
*
|
|
18
|
+
* const factory = dagsterBootstrap.factory('kro', {
|
|
19
|
+
* namespace: 'dagster',
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @see https://dagster.io/
|
|
24
|
+
* @see https://github.com/dagster-io/dagster/tree/master/helm/dagster
|
|
25
|
+
* @module
|
|
26
|
+
*/
|
|
27
|
+
export * from './compositions/index.js';
|
|
28
|
+
export * from './resources/index.js';
|
|
29
|
+
export * from './types.js';
|
|
30
|
+
export * from './utils/index.js';
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factories/dagster/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dagster Helm resource factories.
|
|
3
|
+
*
|
|
4
|
+
* These wrappers apply official Dagster chart defaults while delegating resource
|
|
5
|
+
* construction and graph-aware Helm values serialization to TypeKro's generic
|
|
6
|
+
* Flux Helm factories.
|
|
7
|
+
*/
|
|
8
|
+
import type { Composable, Enhanced } from '../../../core/types/index.js';
|
|
9
|
+
import { type HelmRepositorySpec, type HelmRepositoryStatus } from '../../helm/helm-repository.js';
|
|
10
|
+
import type { HelmReleaseSpec, HelmReleaseStatus } from '../../helm/types.js';
|
|
11
|
+
import type { DagsterHelmReleaseConfig, DagsterHelmRepositoryConfig, DagsterHelmValues } from '../types.js';
|
|
12
|
+
/** Default official Dagster Helm repository URL. */
|
|
13
|
+
export declare const DEFAULT_DAGSTER_REPO_URL = "https://dagster-io.github.io/helm";
|
|
14
|
+
/** Default Flux HelmRepository name for the official Dagster chart. */
|
|
15
|
+
export declare const DEFAULT_DAGSTER_REPO_NAME = "dagster";
|
|
16
|
+
/** Default official Dagster Helm chart version selected by the approved plan. */
|
|
17
|
+
export declare const DEFAULT_DAGSTER_VERSION = "1.13.8";
|
|
18
|
+
/**
|
|
19
|
+
* Create a Flux HelmRepository for the official Dagster Helm chart repository.
|
|
20
|
+
*
|
|
21
|
+
* @param config - Repository configuration with Dagster defaults
|
|
22
|
+
* @returns Enhanced HelmRepository resource
|
|
23
|
+
*/
|
|
24
|
+
export declare function dagsterHelmRepository(config: Composable<DagsterHelmRepositoryConfig>): Enhanced<HelmRepositorySpec, HelmRepositoryStatus>;
|
|
25
|
+
/**
|
|
26
|
+
* Create a Flux HelmRelease for Dagster using the official chart defaults.
|
|
27
|
+
*
|
|
28
|
+
* @param config - Release configuration with Dagster defaults
|
|
29
|
+
* @returns Enhanced HelmRelease resource
|
|
30
|
+
*/
|
|
31
|
+
export declare function dagsterHelmRelease(config: Composable<DagsterHelmReleaseConfig>): Enhanced<HelmReleaseSpec<DagsterHelmValues>, HelmReleaseStatus>;
|
|
32
|
+
//# sourceMappingURL=helm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helm.d.ts","sourceRoot":"","sources":["../../../../src/factories/dagster/resources/helm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,KAAK,EACV,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,oDAAoD;AACpD,eAAO,MAAM,wBAAwB,sCAAsC,CAAC;AAE5E,uEAAuE;AACvE,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAEnD,iFAAiF;AACjF,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,CAAC,2BAA2B,CAAC,GAC9C,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAcpD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,CAAC,wBAAwB,CAAC,GAC3C,QAAQ,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,CAoBjE"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dagster Helm resource factories.
|
|
3
|
+
*
|
|
4
|
+
* These wrappers apply official Dagster chart defaults while delegating resource
|
|
5
|
+
* construction and graph-aware Helm values serialization to TypeKro's generic
|
|
6
|
+
* Flux Helm factories.
|
|
7
|
+
*/
|
|
8
|
+
import { DEFAULT_FLUX_NAMESPACE } from '../../../core/config/defaults.js';
|
|
9
|
+
import { setMetadataField } from '../../../core/metadata/resource-metadata.js';
|
|
10
|
+
import { createHelmRepositoryReadinessEvaluator, helmRepository, } from '../../helm/helm-repository.js';
|
|
11
|
+
import { helmRelease } from '../../helm/helm-release.js';
|
|
12
|
+
import { createLabeledHelmReleaseEvaluator } from '../../helm/readiness-evaluators.js';
|
|
13
|
+
/** Default official Dagster Helm repository URL. */
|
|
14
|
+
export const DEFAULT_DAGSTER_REPO_URL = 'https://dagster-io.github.io/helm';
|
|
15
|
+
/** Default Flux HelmRepository name for the official Dagster chart. */
|
|
16
|
+
export const DEFAULT_DAGSTER_REPO_NAME = 'dagster';
|
|
17
|
+
/** Default official Dagster Helm chart version selected by the approved plan. */
|
|
18
|
+
export const DEFAULT_DAGSTER_VERSION = '1.13.8';
|
|
19
|
+
/**
|
|
20
|
+
* Create a Flux HelmRepository for the official Dagster Helm chart repository.
|
|
21
|
+
*
|
|
22
|
+
* @param config - Repository configuration with Dagster defaults
|
|
23
|
+
* @returns Enhanced HelmRepository resource
|
|
24
|
+
*/
|
|
25
|
+
export function dagsterHelmRepository(config) {
|
|
26
|
+
const repo = helmRepository({
|
|
27
|
+
name: config.name || DEFAULT_DAGSTER_REPO_NAME,
|
|
28
|
+
namespace: config.namespace || DEFAULT_FLUX_NAMESPACE,
|
|
29
|
+
url: config.url || DEFAULT_DAGSTER_REPO_URL,
|
|
30
|
+
interval: config.interval || '5m',
|
|
31
|
+
...(config.id && { id: config.id }),
|
|
32
|
+
}).withReadinessEvaluator(createHelmRepositoryReadinessEvaluator('Dagster'));
|
|
33
|
+
setMetadataField(repo, 'scopes', ['cluster']);
|
|
34
|
+
return repo;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Create a Flux HelmRelease for Dagster using the official chart defaults.
|
|
38
|
+
*
|
|
39
|
+
* @param config - Release configuration with Dagster defaults
|
|
40
|
+
* @returns Enhanced HelmRelease resource
|
|
41
|
+
*/
|
|
42
|
+
export function dagsterHelmRelease(config) {
|
|
43
|
+
return helmRelease({
|
|
44
|
+
name: config.name,
|
|
45
|
+
namespace: config.namespace || config.name,
|
|
46
|
+
chart: {
|
|
47
|
+
repository: DEFAULT_DAGSTER_REPO_URL,
|
|
48
|
+
name: 'dagster',
|
|
49
|
+
version: config.version || DEFAULT_DAGSTER_VERSION,
|
|
50
|
+
},
|
|
51
|
+
sourceRef: {
|
|
52
|
+
name: config.repositoryName || DEFAULT_DAGSTER_REPO_NAME,
|
|
53
|
+
namespace: config.repositoryNamespace || DEFAULT_FLUX_NAMESPACE,
|
|
54
|
+
kind: 'HelmRepository',
|
|
55
|
+
},
|
|
56
|
+
...(config.values !== undefined && { values: config.values }),
|
|
57
|
+
...(config.id && { id: config.id }),
|
|
58
|
+
}).withReadinessEvaluator(createLabeledHelmReleaseEvaluator('Dagster'));
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=helm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helm.js","sourceRoot":"","sources":["../../../../src/factories/dagster/resources/helm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAE/E,OAAO,EACL,sCAAsC,EACtC,cAAc,GAGf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AAQvF,oDAAoD;AACpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,mCAAmC,CAAC;AAE5E,uEAAuE;AACvE,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAS,CAAC;AAEnD,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAA+C;IAE/C,MAAM,IAAI,GAAG,cAAc,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,yBAAyB;QAC9C,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,sBAAsB;QACrD,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,wBAAwB;QAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QACjC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;KACpC,CAAC,CAAC,sBAAsB,CACvB,sCAAsC,CAAC,SAAS,CAAC,CACI,CAAC;IAExD,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAE9C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAA4C;IAE5C,OAAO,WAAW,CAAoB;QACpC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI;QAC1C,KAAK,EAAE;YACL,UAAU,EAAE,wBAAwB;YACpC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,uBAAuB;SACnD;QACD,SAAS,EAAE;YACT,IAAI,EAAE,MAAM,CAAC,cAAc,IAAI,yBAAyB;YACxD,SAAS,EAAE,MAAM,CAAC,mBAAmB,IAAI,sBAAsB;YAC/D,IAAI,EAAE,gBAAgB;SACvB;QACD,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7D,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;KACpC,CAAC,CAAC,sBAAsB,CAAC,iCAAiC,CAAC,SAAS,CAAC,CAGrE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/factories/dagster/resources/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/factories/dagster/resources/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|