ccluster-py 0.0.1__tar.gz
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.
- ccluster_py-0.0.1/PKG-INFO +84 -0
- ccluster_py-0.0.1/README.md +66 -0
- ccluster_py-0.0.1/pyproject.toml +37 -0
- ccluster_py-0.0.1/pyproject.toml.orig +44 -0
- ccluster_py-0.0.1/src/ccluster/__init__.py +19 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/__init__.py +65 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/__init__.py +41 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/argo_rollouts/__init__.py +37 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/argo_rollouts/values.py +79 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/cert_manager/__init__.py +37 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/cert_manager/values.py +85 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/external_dns/__init__.py +39 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/external_dns/values.py +115 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/final_stack/__init__.py +31 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/final_stack/values.py +41 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/fluent_bit/__init__.py +37 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/fluent_bit/values.py +85 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/gpu_operator/__init__.py +39 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/gpu_operator/values.py +118 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/ingress_nginx/__init__.py +41 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/ingress_nginx/values.py +115 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/istio/__init__.py +45 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/istio/values.py +158 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/keda/__init__.py +37 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/keda/values.py +74 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/kube_prometheus_stack/__init__.py +41 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/kube_prometheus_stack/values.py +124 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/longhorn/__init__.py +33 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/longhorn/values.py +46 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/metrics_server/__init__.py +33 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/metrics_server/values.py +50 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/network_operator/__init__.py +33 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/network_operator/values.py +50 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/opentelemetry_collector/__init__.py +35 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/opentelemetry_collector/values.py +78 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/prometheus_adapter/__init__.py +37 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/prometheus_adapter/values.py +75 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/spire/__init__.py +45 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/spire/values.py +155 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/spire_crds/__init__.py +33 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/spire_crds/values.py +50 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/teleport_kube_agent/__init__.py +37 -0
- ccluster_py-0.0.1/src/ccluster/catalogs/cluster_base/teleport_kube_agent/values.py +125 -0
- ccluster_py-0.0.1/src/ccluster/py.typed +0 -0
- ccluster_py-0.0.1/src/ccluster/v1alpha1/__init__.py +47 -0
- ccluster_py-0.0.1/src/ccluster/v1alpha1/cclcomponentset.py +269 -0
- ccluster_py-0.0.1/src/ccluster/v1alpha1/cclinfraplane.py +222 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ccluster-py
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: Pydantic models for the ccluster.nvidia.com API and its Helm chart catalog
|
|
5
|
+
License-Expression: Apache-2.0
|
|
6
|
+
Classifier: Development Status :: 3 - Alpha
|
|
7
|
+
Classifier: Intended Audience :: Developers
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
10
|
+
Classifier: Topic :: System :: Clustering
|
|
11
|
+
Classifier: Typing :: Typed
|
|
12
|
+
Requires-Dist: pydantic>=2.11
|
|
13
|
+
Requires-Python: >=3.10
|
|
14
|
+
Project-URL: Homepage, https://github.com/NVIDIA/ccluster
|
|
15
|
+
Project-URL: Source, https://github.com/NVIDIA/ccluster/tree/main/python
|
|
16
|
+
Project-URL: Changelog, https://github.com/NVIDIA/ccluster/blob/main/CHANGELOG.md
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
|
|
19
|
+
# ccluster (Python)
|
|
20
|
+
|
|
21
|
+
Pydantic v2 models for the `ccluster.nvidia.com/v1alpha1` API and for the typed values of
|
|
22
|
+
every chart in the catalog. The package is **generated**: nothing in `ccluster/v1alpha1/`
|
|
23
|
+
or `ccluster/catalogs/cluster_base/` is written by hand.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
uv add ccluster-py --path ../python # or: pip install ./python; released: pip install ccluster-py
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
from ccluster import catalogs
|
|
31
|
+
from ccluster.catalogs.cluster_base import gpu_operator, keda
|
|
32
|
+
from ccluster.v1alpha1 import CCLComponentSet, CCLComponentSetSpec, ObjectMeta
|
|
33
|
+
|
|
34
|
+
cs = CCLComponentSet(
|
|
35
|
+
metadata=ObjectMeta(name="local-base", namespace="ccluster-quickstart"),
|
|
36
|
+
spec=CCLComponentSetSpec(
|
|
37
|
+
components=[
|
|
38
|
+
catalogs.component("keda", "ccluster-local", keda.CHART, "keda"),
|
|
39
|
+
catalogs.component(
|
|
40
|
+
"gpu-operator", "ccluster-local", gpu_operator.CHART, "gpu-operator",
|
|
41
|
+
gpu_operator.Values(
|
|
42
|
+
gpu_operator=gpu_operator.ChartValues(
|
|
43
|
+
driver=gpu_operator.Toggle(enabled=False),
|
|
44
|
+
),
|
|
45
|
+
),
|
|
46
|
+
),
|
|
47
|
+
]
|
|
48
|
+
),
|
|
49
|
+
)
|
|
50
|
+
print(cs.model_dump(by_alias=True, exclude_none=True)) # kubectl apply -f this
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Field names are snake_case with the wire name as the alias, so always dump with
|
|
54
|
+
`by_alias=True, exclude_none=True`. `exclude_none` is what keeps an unset optional out of
|
|
55
|
+
the values Helm sees while an explicit `False` stays in — the same distinction the Go
|
|
56
|
+
catalog makes with pointer fields.
|
|
57
|
+
|
|
58
|
+
## What is generated from what
|
|
59
|
+
|
|
60
|
+
| Python | Source | Via |
|
|
61
|
+
| --- | --- | --- |
|
|
62
|
+
| `ccluster/v1alpha1/*.py` | `config/crd/bases/*.yaml` (the CRD `openAPIV3Schema`) | `hack/pyschema` → JSON Schema → datamodel-code-generator |
|
|
63
|
+
| `ccluster/catalogs/cluster_base/<chart>/values.py` | `catalogs/cluster_base/<chart>/component.go` (`Values` and friends) | `hack/pyschema` (invopop/jsonschema reflection) → datamodel-code-generator |
|
|
64
|
+
| every `__init__.py` under those two | the same | `hack/pyschema` |
|
|
65
|
+
|
|
66
|
+
Three things are deliberately added on the way from the CRD: `apiVersion` and `kind` get
|
|
67
|
+
defaults, `metadata` becomes a small `ObjectMeta` (name, namespace, labels, annotations)
|
|
68
|
+
instead of an opaque dict, and a component's `values` is typed `dict[str, Any]` rather than
|
|
69
|
+
"anything". Everything else, including every validation constraint and doc comment, is the
|
|
70
|
+
CRD's.
|
|
71
|
+
|
|
72
|
+
`ccluster/__init__.py`, `ccluster/catalogs/__init__.py` (`entry`, `component`) and `tests/`
|
|
73
|
+
are hand-written.
|
|
74
|
+
|
|
75
|
+
## Regenerating
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
make python-generate # from the repository root; needs Go and uv
|
|
79
|
+
make python-test
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
CI regenerates and fails on any diff, so edit the Go types or the CRD markers, regenerate,
|
|
83
|
+
and commit the result. Adding a chart to `catalogs/` means adding it to the table in
|
|
84
|
+
`hack/pyschema/main.go` too.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# ccluster (Python)
|
|
2
|
+
|
|
3
|
+
Pydantic v2 models for the `ccluster.nvidia.com/v1alpha1` API and for the typed values of
|
|
4
|
+
every chart in the catalog. The package is **generated**: nothing in `ccluster/v1alpha1/`
|
|
5
|
+
or `ccluster/catalogs/cluster_base/` is written by hand.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
uv add ccluster-py --path ../python # or: pip install ./python; released: pip install ccluster-py
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```python
|
|
12
|
+
from ccluster import catalogs
|
|
13
|
+
from ccluster.catalogs.cluster_base import gpu_operator, keda
|
|
14
|
+
from ccluster.v1alpha1 import CCLComponentSet, CCLComponentSetSpec, ObjectMeta
|
|
15
|
+
|
|
16
|
+
cs = CCLComponentSet(
|
|
17
|
+
metadata=ObjectMeta(name="local-base", namespace="ccluster-quickstart"),
|
|
18
|
+
spec=CCLComponentSetSpec(
|
|
19
|
+
components=[
|
|
20
|
+
catalogs.component("keda", "ccluster-local", keda.CHART, "keda"),
|
|
21
|
+
catalogs.component(
|
|
22
|
+
"gpu-operator", "ccluster-local", gpu_operator.CHART, "gpu-operator",
|
|
23
|
+
gpu_operator.Values(
|
|
24
|
+
gpu_operator=gpu_operator.ChartValues(
|
|
25
|
+
driver=gpu_operator.Toggle(enabled=False),
|
|
26
|
+
),
|
|
27
|
+
),
|
|
28
|
+
),
|
|
29
|
+
]
|
|
30
|
+
),
|
|
31
|
+
)
|
|
32
|
+
print(cs.model_dump(by_alias=True, exclude_none=True)) # kubectl apply -f this
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Field names are snake_case with the wire name as the alias, so always dump with
|
|
36
|
+
`by_alias=True, exclude_none=True`. `exclude_none` is what keeps an unset optional out of
|
|
37
|
+
the values Helm sees while an explicit `False` stays in — the same distinction the Go
|
|
38
|
+
catalog makes with pointer fields.
|
|
39
|
+
|
|
40
|
+
## What is generated from what
|
|
41
|
+
|
|
42
|
+
| Python | Source | Via |
|
|
43
|
+
| --- | --- | --- |
|
|
44
|
+
| `ccluster/v1alpha1/*.py` | `config/crd/bases/*.yaml` (the CRD `openAPIV3Schema`) | `hack/pyschema` → JSON Schema → datamodel-code-generator |
|
|
45
|
+
| `ccluster/catalogs/cluster_base/<chart>/values.py` | `catalogs/cluster_base/<chart>/component.go` (`Values` and friends) | `hack/pyschema` (invopop/jsonschema reflection) → datamodel-code-generator |
|
|
46
|
+
| every `__init__.py` under those two | the same | `hack/pyschema` |
|
|
47
|
+
|
|
48
|
+
Three things are deliberately added on the way from the CRD: `apiVersion` and `kind` get
|
|
49
|
+
defaults, `metadata` becomes a small `ObjectMeta` (name, namespace, labels, annotations)
|
|
50
|
+
instead of an opaque dict, and a component's `values` is typed `dict[str, Any]` rather than
|
|
51
|
+
"anything". Everything else, including every validation constraint and doc comment, is the
|
|
52
|
+
CRD's.
|
|
53
|
+
|
|
54
|
+
`ccluster/__init__.py`, `ccluster/catalogs/__init__.py` (`entry`, `component`) and `tests/`
|
|
55
|
+
are hand-written.
|
|
56
|
+
|
|
57
|
+
## Regenerating
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
make python-generate # from the repository root; needs Go and uv
|
|
61
|
+
make python-test
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
CI regenerates and fails on any diff, so edit the Go types or the CRD markers, regenerate,
|
|
65
|
+
and commit the result. Adding a chart to `catalogs/` means adding it to the table in
|
|
66
|
+
`hack/pyschema/main.go` too.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["uv_build>=0.11,<0.12"]
|
|
3
|
+
build-backend = "uv_build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "ccluster-py"
|
|
7
|
+
version = "0.0.1"
|
|
8
|
+
description = "Pydantic models for the ccluster.nvidia.com API and its Helm chart catalog"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "Apache-2.0"
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
dependencies = ["pydantic>=2.11"]
|
|
13
|
+
classifiers = [
|
|
14
|
+
"Development Status :: 3 - Alpha",
|
|
15
|
+
"Intended Audience :: Developers",
|
|
16
|
+
"Programming Language :: Python :: 3",
|
|
17
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
18
|
+
"Topic :: System :: Clustering",
|
|
19
|
+
"Typing :: Typed",
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
[project.urls]
|
|
23
|
+
Homepage = "https://github.com/NVIDIA/ccluster"
|
|
24
|
+
Source = "https://github.com/NVIDIA/ccluster/tree/main/python"
|
|
25
|
+
Changelog = "https://github.com/NVIDIA/ccluster/blob/main/CHANGELOG.md"
|
|
26
|
+
|
|
27
|
+
[tool.uv.build-backend]
|
|
28
|
+
module-name = "ccluster"
|
|
29
|
+
|
|
30
|
+
[tool.pytest.ini_options]
|
|
31
|
+
testpaths = ["tests"]
|
|
32
|
+
|
|
33
|
+
[dependency-groups]
|
|
34
|
+
dev = [
|
|
35
|
+
"pytest>=8",
|
|
36
|
+
"pyyaml>=6",
|
|
37
|
+
]
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["uv_build>=0.11,<0.12"]
|
|
3
|
+
build-backend = "uv_build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
# Distribution name only: `ccluster` was already taken on PyPI. The import name is still
|
|
7
|
+
# `ccluster` (src/ccluster).
|
|
8
|
+
name = "ccluster-py"
|
|
9
|
+
# Placeholder: the release version is the git tag, stamped in by `make python-build`.
|
|
10
|
+
version = "0.0.1"
|
|
11
|
+
description = "Pydantic models for the ccluster.nvidia.com API and its Helm chart catalog"
|
|
12
|
+
readme = "README.md"
|
|
13
|
+
license = "Apache-2.0"
|
|
14
|
+
requires-python = ">=3.10"
|
|
15
|
+
dependencies = [
|
|
16
|
+
"pydantic>=2.11",
|
|
17
|
+
]
|
|
18
|
+
classifiers = [
|
|
19
|
+
"Development Status :: 3 - Alpha",
|
|
20
|
+
"Intended Audience :: Developers",
|
|
21
|
+
"Programming Language :: Python :: 3",
|
|
22
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
23
|
+
"Topic :: System :: Clustering",
|
|
24
|
+
"Typing :: Typed",
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
[project.urls]
|
|
28
|
+
Homepage = "https://github.com/NVIDIA/ccluster"
|
|
29
|
+
Source = "https://github.com/NVIDIA/ccluster/tree/main/python"
|
|
30
|
+
Changelog = "https://github.com/NVIDIA/ccluster/blob/main/CHANGELOG.md"
|
|
31
|
+
|
|
32
|
+
# uv_build derives the module name from the distribution name (ccluster_py); point it at the
|
|
33
|
+
# real package instead.
|
|
34
|
+
[tool.uv.build-backend]
|
|
35
|
+
module-name = "ccluster"
|
|
36
|
+
|
|
37
|
+
[dependency-groups]
|
|
38
|
+
dev = [
|
|
39
|
+
"pytest>=8",
|
|
40
|
+
"pyyaml>=6",
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
[tool.pytest.ini_options]
|
|
44
|
+
testpaths = ["tests"]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Copyright 2026 NVIDIA CORPORATION & AFFILIATES.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
"""Pydantic models for the ccluster.nvidia.com API and the catalog's chart values.
|
|
16
|
+
|
|
17
|
+
Everything under ccluster.v1alpha1 and ccluster.catalogs.cluster_base is generated by
|
|
18
|
+
`make python-generate` from the CRDs and the catalog's Go packages; see python/README.md.
|
|
19
|
+
"""
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Copyright 2026 NVIDIA CORPORATION & AFFILIATES.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
"""The Helm chart catalog, as typed values.
|
|
16
|
+
|
|
17
|
+
Each chart under ccluster.catalogs.cluster_base has a Values model and a CHART path,
|
|
18
|
+
generated from the Go package beside the chart. entry() turns one of those into the
|
|
19
|
+
ComponentEntry fields of a CCLComponentSet component, as catalogs.Entry does in Go.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
from typing import Any
|
|
23
|
+
|
|
24
|
+
from pydantic import BaseModel
|
|
25
|
+
|
|
26
|
+
from ccluster.v1alpha1 import ComponentSpec, LocalObjectReference
|
|
27
|
+
|
|
28
|
+
__all__ = ["component", "entry"]
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def entry(chart: str, namespace: str, values: BaseModel | None) -> dict[str, Any]:
|
|
32
|
+
"""Return the chart, namespace and values fields of a component.
|
|
33
|
+
|
|
34
|
+
values is dumped by alias with None fields left out, which is the shape Helm
|
|
35
|
+
expects and the shape the Go catalog produces. An empty result is dropped rather
|
|
36
|
+
than stored: the operator omits the Application's helm block when values is unset,
|
|
37
|
+
and an empty object would defeat that. The required values of a chart (only
|
|
38
|
+
teleport-kube-agent has any) are checked when its Values is constructed.
|
|
39
|
+
"""
|
|
40
|
+
out: dict[str, Any] = {"chart": chart, "namespace": namespace}
|
|
41
|
+
if values is not None:
|
|
42
|
+
dumped = values.model_dump(by_alias=True, exclude_none=True)
|
|
43
|
+
if dumped:
|
|
44
|
+
out["values"] = dumped
|
|
45
|
+
return out
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def component(
|
|
49
|
+
name: str,
|
|
50
|
+
infra_plane: str,
|
|
51
|
+
chart: str,
|
|
52
|
+
namespace: str,
|
|
53
|
+
values: BaseModel | None = None,
|
|
54
|
+
) -> ComponentSpec:
|
|
55
|
+
"""Build one CCLComponentSet component from a chart's typed values.
|
|
56
|
+
|
|
57
|
+
chart is the module's CHART constant. The component's name and the infra plane it
|
|
58
|
+
is deployed to are the caller's, as is the namespace it installs into: none of
|
|
59
|
+
those are facts about the chart.
|
|
60
|
+
"""
|
|
61
|
+
return ComponentSpec(
|
|
62
|
+
name=name,
|
|
63
|
+
infra_plane_ref=LocalObjectReference(name=infra_plane),
|
|
64
|
+
**entry(chart, namespace, values),
|
|
65
|
+
)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Copyright 2026 NVIDIA CORPORATION & AFFILIATES.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
#
|
|
15
|
+
# Code generated by `make python-generate`. DO NOT EDIT.
|
|
16
|
+
|
|
17
|
+
"""The cluster_base catalog: one subpackage per chart, each with a Values
|
|
18
|
+
model and its CHART path."""
|
|
19
|
+
|
|
20
|
+
from . import argo_rollouts, cert_manager, external_dns, final_stack, fluent_bit, gpu_operator, ingress_nginx, istio, keda, kube_prometheus_stack, longhorn, metrics_server, network_operator, opentelemetry_collector, prometheus_adapter, spire, spire_crds, teleport_kube_agent
|
|
21
|
+
|
|
22
|
+
__all__ = [
|
|
23
|
+
"argo_rollouts",
|
|
24
|
+
"cert_manager",
|
|
25
|
+
"external_dns",
|
|
26
|
+
"final_stack",
|
|
27
|
+
"fluent_bit",
|
|
28
|
+
"gpu_operator",
|
|
29
|
+
"ingress_nginx",
|
|
30
|
+
"istio",
|
|
31
|
+
"keda",
|
|
32
|
+
"kube_prometheus_stack",
|
|
33
|
+
"longhorn",
|
|
34
|
+
"metrics_server",
|
|
35
|
+
"network_operator",
|
|
36
|
+
"opentelemetry_collector",
|
|
37
|
+
"prometheus_adapter",
|
|
38
|
+
"spire",
|
|
39
|
+
"spire_crds",
|
|
40
|
+
"teleport_kube_agent",
|
|
41
|
+
]
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Copyright 2026 NVIDIA CORPORATION & AFFILIATES.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
#
|
|
15
|
+
# Code generated by `make python-generate`. DO NOT EDIT.
|
|
16
|
+
|
|
17
|
+
"""Values of the catalogs/cluster_base/argo_rollouts chart, generated from its Go package."""
|
|
18
|
+
|
|
19
|
+
from typing import Final
|
|
20
|
+
|
|
21
|
+
from .values import (
|
|
22
|
+
ChartValues,
|
|
23
|
+
Controller,
|
|
24
|
+
Dashboard,
|
|
25
|
+
Values,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
__all__ = [
|
|
29
|
+
"CHART",
|
|
30
|
+
"ChartValues",
|
|
31
|
+
"Controller",
|
|
32
|
+
"Dashboard",
|
|
33
|
+
"Values",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
# CHART is the chart's directory, relative to the root of the catalog repository.
|
|
37
|
+
CHART: Final = "catalogs/cluster_base/argo_rollouts"
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Copyright 2026 NVIDIA CORPORATION & AFFILIATES.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
#
|
|
15
|
+
# Code generated by `make python-generate`. DO NOT EDIT.
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
from typing import Annotated
|
|
20
|
+
|
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class Controller(BaseModel):
|
|
25
|
+
"""
|
|
26
|
+
Controller configures the rollouts controller.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
model_config = ConfigDict(
|
|
30
|
+
extra="forbid",
|
|
31
|
+
populate_by_name=True,
|
|
32
|
+
)
|
|
33
|
+
replicas: int | None = None
|
|
34
|
+
"""
|
|
35
|
+
Replicas is the controller replica count. The chart ships 2.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class Dashboard(BaseModel):
|
|
40
|
+
"""
|
|
41
|
+
Dashboard configures the rollouts dashboard.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
model_config = ConfigDict(
|
|
45
|
+
extra="forbid",
|
|
46
|
+
populate_by_name=True,
|
|
47
|
+
)
|
|
48
|
+
enabled: bool | None = None
|
|
49
|
+
"""
|
|
50
|
+
Enabled turns the dashboard on. The chart ships it off.
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class ChartValues(BaseModel):
|
|
55
|
+
"""
|
|
56
|
+
ChartValues are the upstream argo-rollouts values worth setting per cluster.
|
|
57
|
+
Anything not set here comes from catalogs/cluster_base/argo_rollouts/values.yaml.
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
model_config = ConfigDict(
|
|
61
|
+
extra="forbid",
|
|
62
|
+
populate_by_name=True,
|
|
63
|
+
)
|
|
64
|
+
controller: Controller | None = None
|
|
65
|
+
dashboard: Dashboard | None = None
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class Values(BaseModel):
|
|
69
|
+
"""
|
|
70
|
+
Values is the top-level values document for catalogs/cluster_base/argo_rollouts.
|
|
71
|
+
Its single key is the upstream chart's alias, because this chart wraps it as a
|
|
72
|
+
dependency — which is the only reason the nesting exists.
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
model_config = ConfigDict(
|
|
76
|
+
extra="forbid",
|
|
77
|
+
populate_by_name=True,
|
|
78
|
+
)
|
|
79
|
+
argo_rollouts: Annotated[ChartValues | None, Field(alias="argo-rollouts")] = None
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Copyright 2026 NVIDIA CORPORATION & AFFILIATES.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
#
|
|
15
|
+
# Code generated by `make python-generate`. DO NOT EDIT.
|
|
16
|
+
|
|
17
|
+
"""Values of the catalogs/cluster_base/cert_manager chart, generated from its Go package."""
|
|
18
|
+
|
|
19
|
+
from typing import Final
|
|
20
|
+
|
|
21
|
+
from .values import (
|
|
22
|
+
ChartValues,
|
|
23
|
+
PrometheusValues,
|
|
24
|
+
Toggle,
|
|
25
|
+
Values,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
__all__ = [
|
|
29
|
+
"CHART",
|
|
30
|
+
"ChartValues",
|
|
31
|
+
"PrometheusValues",
|
|
32
|
+
"Toggle",
|
|
33
|
+
"Values",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
# CHART is the chart's directory, relative to the root of the catalog repository.
|
|
37
|
+
CHART: Final = "catalogs/cluster_base/cert_manager"
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Copyright 2026 NVIDIA CORPORATION & AFFILIATES.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
#
|
|
15
|
+
# Code generated by `make python-generate`. DO NOT EDIT.
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
from typing import Annotated
|
|
20
|
+
|
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class Toggle(BaseModel):
|
|
25
|
+
"""
|
|
26
|
+
Toggle is a subchart's enable flag.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
model_config = ConfigDict(
|
|
30
|
+
extra="forbid",
|
|
31
|
+
populate_by_name=True,
|
|
32
|
+
)
|
|
33
|
+
enabled: bool | None = None
|
|
34
|
+
"""
|
|
35
|
+
Enabled turns the feature on.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class PrometheusValues(BaseModel):
|
|
40
|
+
"""
|
|
41
|
+
PrometheusValues configures cert-manager's metrics scraping.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
model_config = ConfigDict(
|
|
45
|
+
extra="forbid",
|
|
46
|
+
populate_by_name=True,
|
|
47
|
+
)
|
|
48
|
+
enabled: bool | None = None
|
|
49
|
+
servicemonitor: Toggle | None = None
|
|
50
|
+
"""
|
|
51
|
+
ServiceMonitor is spelled lower-case in this chart, unlike every other
|
|
52
|
+
chart in the catalog.
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class ChartValues(BaseModel):
|
|
57
|
+
"""
|
|
58
|
+
ChartValues are the upstream cert-manager values worth setting per cluster.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
model_config = ConfigDict(
|
|
62
|
+
extra="forbid",
|
|
63
|
+
populate_by_name=True,
|
|
64
|
+
)
|
|
65
|
+
replica_count: Annotated[int | None, Field(alias="replicaCount")] = None
|
|
66
|
+
"""
|
|
67
|
+
ReplicaCount is the controller replica count. The chart ships 2.
|
|
68
|
+
"""
|
|
69
|
+
prometheus: PrometheusValues | None = None
|
|
70
|
+
"""
|
|
71
|
+
Prometheus scraping is shipped off, because the ServiceMonitor CRD only
|
|
72
|
+
exists once kube-prometheus-stack is deployed. Enable it after that.
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
class Values(BaseModel):
|
|
77
|
+
"""
|
|
78
|
+
Values is the top-level values document for catalogs/cluster_base/cert_manager.
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
model_config = ConfigDict(
|
|
82
|
+
extra="forbid",
|
|
83
|
+
populate_by_name=True,
|
|
84
|
+
)
|
|
85
|
+
cert_manager: Annotated[ChartValues | None, Field(alias="cert-manager")] = None
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Copyright 2026 NVIDIA CORPORATION & AFFILIATES.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
#
|
|
15
|
+
# Code generated by `make python-generate`. DO NOT EDIT.
|
|
16
|
+
|
|
17
|
+
"""Values of the catalogs/cluster_base/external_dns chart, generated from its Go package."""
|
|
18
|
+
|
|
19
|
+
from typing import Final
|
|
20
|
+
|
|
21
|
+
from .values import (
|
|
22
|
+
ChartValues,
|
|
23
|
+
Provider,
|
|
24
|
+
ServiceAccount,
|
|
25
|
+
Toggle,
|
|
26
|
+
Values,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
__all__ = [
|
|
30
|
+
"CHART",
|
|
31
|
+
"ChartValues",
|
|
32
|
+
"Provider",
|
|
33
|
+
"ServiceAccount",
|
|
34
|
+
"Toggle",
|
|
35
|
+
"Values",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
# CHART is the chart's directory, relative to the root of the catalog repository.
|
|
39
|
+
CHART: Final = "catalogs/cluster_base/external_dns"
|