Skip to content

Commit

Permalink
when kube api returns with deserialize it to default
Browse files Browse the repository at this point in the history
Signed-off-by: suryapandian <[email protected]>
  • Loading branch information
suryapandian committed Apr 12, 2023
1 parent d294847 commit 7b04a84
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions kube-core/src/object.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use crate::{
metadata::{ListMeta, ObjectMeta, TypeMeta},
resource::{DynamicResourceScope, Resource},
};
use serde::{Deserialize, Serialize};
use serde::{Deserialize, Deserializer, Serialize};
use std::borrow::Cow;

/// A generic Kubernetes object list
Expand All @@ -28,10 +28,22 @@ where
pub metadata: ListMeta,

/// The items we are actually interested in. In practice; `T := Resource<T,U>`.
#[serde(bound(deserialize = "Vec<T>: Deserialize<'de>"))]
#[serde(
deserialize_with = "deserialize_null_as_default",
bound(deserialize = "Vec<T>: Deserialize<'de>")
)]
pub items: Vec<T>,
}

fn deserialize_null_as_default<'de, D, T>(deserializer: D) -> Result<T, D::Error>
where
T: Default + Deserialize<'de>,
D: Deserializer<'de>,
{
let opt = Option::deserialize(deserializer)?;
Ok(opt.unwrap_or_default())
}

impl<T: Clone> ObjectList<T> {
/// `iter` returns an Iterator over the elements of this ObjectList
///
Expand Down

0 comments on commit 7b04a84

Please sign in to comment.