From 7e77855824882321f9c7034efa978a890d0af5d1 Mon Sep 17 00:00:00 2001 From: Guilherme Oenning Date: Mon, 20 Feb 2023 04:23:05 +0000 Subject: [PATCH] kubeconfig: deserialize null vectors as default (#1142) deserialize null vectors as default Signed-off-by: goenning Co-authored-by: Eirik A --- kube-client/src/config/file_config.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/kube-client/src/config/file_config.rs b/kube-client/src/config/file_config.rs index ff01857be..071173c17 100644 --- a/kube-client/src/config/file_config.rs +++ b/kube-client/src/config/file_config.rs @@ -25,14 +25,14 @@ pub struct Kubeconfig { #[serde(skip_serializing_if = "Option::is_none")] pub preferences: Option, /// Referencable names to cluster configs - #[serde(default, skip_serializing_if = "Vec::is_empty")] + #[serde(default, deserialize_with = "deserialize_null_as_default")] pub clusters: Vec, /// Referencable names to user configs #[serde(rename = "users")] - #[serde(default, skip_serializing_if = "Vec::is_empty")] + #[serde(default, deserialize_with = "deserialize_null_as_default")] pub auth_infos: Vec, /// Referencable names to context configs - #[serde(default, skip_serializing_if = "Vec::is_empty")] + #[serde(default, deserialize_with = "deserialize_null_as_default")] pub contexts: Vec, /// The name of the context that you would like to use by default #[serde(rename = "current-context")] @@ -152,6 +152,15 @@ where } } +fn deserialize_null_as_default<'de, D, T>(deserializer: D) -> Result +where + T: Default + Deserialize<'de>, + D: Deserializer<'de>, +{ + let opt = Option::deserialize(deserializer)?; + Ok(opt.unwrap_or_default()) +} + /// AuthInfo stores information to tell cluster who you are. #[derive(Clone, Debug, Serialize, Deserialize, Default)] pub struct AuthInfo {