Skip to content

Commit 904abff

Browse files
fix: use apply patch strategy for kube api resource update
1 parent b2f23e1 commit 904abff

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

magnum_cluster_api/driver.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ def resize_cluster(
257257
machine.obj["metadata"]["annotations"][
258258
"cluster.x-k8s.io/delete-machine"
259259
] = "yes"
260-
machine.update()
260+
utils.kube_apply_patch(machine)
261261

262262
self._update_nodegroup(context, cluster, nodegroup)
263263

@@ -347,7 +347,8 @@ def create_nodegroup(
347347
current_generation = resources.Cluster(
348348
context, self.k8s_api, cluster
349349
).get_observed_generation()
350-
cluster_resource.update()
350+
utils.kube_apply_patch(cluster_resource)
351+
351352
self.wait_capi_cluster_reconciliation_start(
352353
context, cluster, current_generation
353354
)
@@ -454,7 +455,7 @@ def _update_nodegroup(
454455
current_generation = resources.Cluster(
455456
context, self.k8s_api, cluster
456457
).get_observed_generation()
457-
cluster_resource.update()
458+
utils.kube_apply_patch(cluster_resource)
458459
self.wait_capi_cluster_reconciliation_start(
459460
context, cluster, current_generation
460461
)
@@ -492,7 +493,7 @@ def delete_nodegroup(
492493
current_generation = resources.Cluster(
493494
context, self.k8s_api, cluster
494495
).get_observed_generation()
495-
cluster_resource.update()
496+
utils.kube_apply_patch(cluster_resource)
496497
self.wait_capi_cluster_reconciliation_start(
497498
context, cluster, current_generation
498499
)

magnum_cluster_api/utils.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,3 +467,20 @@ def get_keystone_auth_default_policy(cluster: magnum_objects.Cluster):
467467
return json.loads(f.read())
468468
except Exception:
469469
return default_policy
470+
471+
def kube_apply_patch(resource):
472+
resp = resource.api.patch(
473+
**resource.api_kwargs(
474+
headers={
475+
"Content-Type": "application/apply-patch+yaml",
476+
},
477+
params={
478+
"fieldManager": "atmosphere-operator",
479+
"force": True,
480+
},
481+
data=json.dumps(resource.obj),
482+
)
483+
)
484+
485+
resource.api.raise_for_status(resp)
486+
resource.set_obj(resp.json())

0 commit comments

Comments
 (0)