mirror of
https://github.com/kata-containers/kata-containers.git
synced 2026-02-21 22:34:29 +00:00
kata-deploy: fix node label removal
When removing a node label, JSON merge patch semantics require setting the key to null; omitting the key leaves it unchanged. Fix label_node to send a patch with the label key set to null so the API server actually removes katacontainers.io/kata-runtime. Signed-off-by: Fabiano Fidêncio <ffidencio@nvidia.com>
This commit is contained in:
@@ -59,7 +59,7 @@ impl K8sClient {
|
||||
|
||||
let labels = node.metadata.labels.get_or_insert_with(Default::default);
|
||||
|
||||
if let Some(value) = label_value {
|
||||
let patch = if let Some(value) = label_value {
|
||||
if overwrite || !labels.contains_key(label_key) {
|
||||
labels.insert(label_key.to_string(), value.to_string());
|
||||
info!(
|
||||
@@ -67,16 +67,23 @@ impl K8sClient {
|
||||
label_key, value, self.node_name
|
||||
);
|
||||
}
|
||||
Patch::Merge(json!({
|
||||
"metadata": {
|
||||
"labels": labels
|
||||
}
|
||||
}))
|
||||
} else {
|
||||
labels.remove(label_key);
|
||||
info!("Removing label {} from node {}", label_key, self.node_name);
|
||||
}
|
||||
|
||||
let patch = Patch::Merge(json!({
|
||||
"metadata": {
|
||||
"labels": labels
|
||||
}
|
||||
}));
|
||||
// JSON merge patch: omit key = leave unchanged. To remove, set key to null.
|
||||
let mut patch_labels = serde_json::Map::new();
|
||||
patch_labels.insert(label_key.to_string(), serde_json::Value::Null);
|
||||
Patch::Merge(json!({
|
||||
"metadata": {
|
||||
"labels": patch_labels
|
||||
}
|
||||
}))
|
||||
};
|
||||
|
||||
let pp = PatchParams::default();
|
||||
self.node_api
|
||||
|
||||
Reference in New Issue
Block a user