changeset 35:80e275ab2f88

rewrite replaceCmap, though idk if it was broken or not
author drewp@bigasterisk.com
date Mon, 09 Oct 2023 18:51:04 -0700
parents 3b91d52b007d
children 2bc188c4117a
files k8s_ops.py
diffstat 1 files changed, 18 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/k8s_ops.py	Mon Oct 09 18:50:36 2023 -0700
+++ b/k8s_ops.py	Mon Oct 09 18:51:04 2023 -0700
@@ -20,9 +20,7 @@
 
 def firstPodName(selector):
     api_instance = client.CoreV1Api()
-    pod_list = api_instance.list_namespaced_pod(
-        namespace="default", label_selector=selector
-    )
+    pod_list = api_instance.list_namespaced_pod(namespace="default", label_selector=selector)
     return pod_list.items[0].metadata.name
 
 
@@ -32,14 +30,21 @@
 
 def replaceCmap(name, dataObj):
     api_instance = client.CoreV1Api()
-    api_response = api_instance.replace_namespaced_config_map(  #
-        name=name,
-        namespace="default",
-        body={
-            "apiVersion": "v1",
-            "kind": "ConfigMap",
-            "metadata": {"name": name},
-            "data": dict((fn, json.dumps(obj)) for fn, obj in dataObj.items()),
-        },
-    )
+
+    data = dict((fn, json.dumps(obj)) for fn, obj in dataObj.items())
+
+    try:
+
+        existing_config_map = api_instance.read_namespaced_config_map(name, 'default')
+        existing_config_map.data.update(data)
+        api_response = api_instance.replace_namespaced_config_map(name, "default", existing_config_map)
+    except client.rest.ApiException as e:
+        if e.status == 404:
+            config_map = client.V1ConfigMap()
+            config_map.metadata = client.V1ObjectMeta(name=name)
+            config_map.data = data
+            api_response = api_instance.create_namespaced_config_map('default', config_map)
+        else:
+            raise
+
     print(f"{name} resource_version is now {api_response.metadata.resource_version}")