feat: add value overrides
diff --git a/atmosphere/config/memcached.py b/atmosphere/config/memcached.py
index 44a466c..11acbfb 100644
--- a/atmosphere/config/memcached.py
+++ b/atmosphere/config/memcached.py
@@ -20,3 +20,10 @@
test_default=uuid.uuid4().hex,
),
)
+config_group.register_child_config(
+ fields.DictConfig(
+ "overrides",
+ help_text="Override Helm chart values",
+ default={},
+ )
+)
diff --git a/atmosphere/models/openstack_helm/values.py b/atmosphere/models/openstack_helm/values.py
index ded2cfd..f42a65a 100644
--- a/atmosphere/models/openstack_helm/values.py
+++ b/atmosphere/models/openstack_helm/values.py
@@ -1,10 +1,12 @@
import base64
+import mergedeep
import pykube
import yaml
from schematics import types
from schematics.transforms import blacklist
+from atmosphere.config import CONF
from atmosphere.models import base
from atmosphere.models.openstack_helm import endpoints, images, monitoring
@@ -31,7 +33,11 @@
)
def secret(self):
- values = yaml.dump(self.to_native(), default_flow_style=False)
+ data = self.to_native()
+ overrides = getattr(CONF, self.chart).overrides
+
+ merged_values = mergedeep.merge({}, data, overrides)
+ values = yaml.dump(merged_values, default_flow_style=False)
return {
"apiVersion": "v1",
diff --git a/poetry.lock b/poetry.lock
index cb355f3..8de973b 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -203,6 +203,14 @@
python-versions = ">=3.6"
[[package]]
+name = "mergedeep"
+version = "1.3.4"
+description = "A deep merge function for 🐍."
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[[package]]
name = "netaddr"
version = "0.8.0"
description = "A network address manipulation library for Python"
@@ -582,7 +590,7 @@
[metadata]
lock-version = "1.1"
python-versions = "^3.10"
-content-hash = "ae045171e759b6046d62b6ff9d02a37859631a6becb9ea8f91e72fb0325c98d7"
+content-hash = "822a433b9c8ae2baccc02981396874159df433186bf31e5f8ee7b32ec1691242"
[metadata.files]
attrs = [
@@ -743,6 +751,10 @@
{file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
{file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
]
+mergedeep = [
+ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"},
+ {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"},
+]
netaddr = [
{file = "netaddr-0.8.0-py2.py3-none-any.whl", hash = "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac"},
{file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"},
diff --git a/pyproject.toml b/pyproject.toml
index 6d4ba46..ae6e9e0 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -19,6 +19,7 @@
structlog = "^22.1.0"
rich = "^12.5.1"
better-exceptions = "^0.3.3"
+mergedeep = "^1.3.4"
[tool.poetry.group.dev.dependencies]
pytest = "^7.1.3"