Skip to content

Commit

Permalink
Backport fixes from v1.30.5 / v1.31.1 to make HostIP::ip and `PodIP…
Browse files Browse the repository at this point in the history
…::ip` required fields.

Just like with 158e80d , upstream found more
fields that should be required, but only marked them as such in v1.30 and v1.31.
This commit adds a fixup to all older releases to do that.
  • Loading branch information
Arnavion committed Sep 12, 2024
1 parent 0bbbd32 commit ff4ad75
Show file tree
Hide file tree
Showing 10 changed files with 102 additions and 48 deletions.
38 changes: 38 additions & 0 deletions k8s-openapi-codegen/src/fixups/upstream_bugs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,25 @@ pub(crate) mod required_properties {
Err("never applied HostAlias required properties override".into())
}

// `HostIP::ip`
//
// Ref: https://github.com/kubernetes/kubernetes/pull/126057
pub(crate) fn host_ip(spec: &mut crate::swagger20::Spec) -> Result<(), crate::Error> {
let definition_path = crate::swagger20::DefinitionPath("io.k8s.api.core.v1.HostIP".to_owned());
if let Some(definition) = spec.definitions.get_mut(&definition_path) {
if let crate::swagger20::SchemaKind::Properties(properties) = &mut definition.kind {
if let Some(property) = properties.get_mut("ip") {
if !property.1 {
property.1 = true;
return Ok(());
}
}
}
}

Err("never applied HostIP required properties override".into())
}

// `LocalObjectReference::name`
//
// Ref: https://github.com/kubernetes/kubernetes/pull/124694
Expand All @@ -206,6 +225,25 @@ pub(crate) mod required_properties {
Err("never applied LocalObjectReference required properties override".into())
}

// `PodIP::ip`
//
// Ref: https://github.com/kubernetes/kubernetes/pull/126057
pub(crate) fn pod_ip(spec: &mut crate::swagger20::Spec) -> Result<(), crate::Error> {
let definition_path = crate::swagger20::DefinitionPath("io.k8s.api.core.v1.PodIP".to_owned());
if let Some(definition) = spec.definitions.get_mut(&definition_path) {
if let crate::swagger20::SchemaKind::Properties(properties) = &mut definition.kind {
if let Some(property) = properties.get_mut("ip") {
if !property.1 {
property.1 = true;
return Ok(());
}
}
}
}

Err("never applied PodIP required properties override".into())
}

// `SecretEnvSource::name`
//
// Ref: https://github.com/kubernetes/kubernetes/pull/124694
Expand Down
8 changes: 8 additions & 0 deletions k8s-openapi-codegen/src/supported_version.rs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ impl SupportedVersion {
crate::fixups::upstream_bugs::required_properties::config_map_volume_source,
crate::fixups::upstream_bugs::required_properties::host_alias,
crate::fixups::upstream_bugs::required_properties::local_object_reference,
crate::fixups::upstream_bugs::required_properties::pod_ip,
crate::fixups::upstream_bugs::required_properties::secret_env_source,
crate::fixups::upstream_bugs::required_properties::secret_key_selector,
crate::fixups::upstream_bugs::required_properties::secret_projection,
Expand All @@ -83,6 +84,7 @@ impl SupportedVersion {
crate::fixups::upstream_bugs::connect_options_gvk,
crate::fixups::upstream_bugs::optional_properties::eventsv1_event,
crate::fixups::upstream_bugs::required_properties::local_object_reference,
crate::fixups::upstream_bugs::required_properties::pod_ip,
],

SupportedVersion::V1_26 => &[
Expand All @@ -96,6 +98,7 @@ impl SupportedVersion {
crate::fixups::upstream_bugs::required_properties::config_map_volume_source,
crate::fixups::upstream_bugs::required_properties::host_alias,
crate::fixups::upstream_bugs::required_properties::local_object_reference,
crate::fixups::upstream_bugs::required_properties::pod_ip,
crate::fixups::upstream_bugs::required_properties::secret_env_source,
crate::fixups::upstream_bugs::required_properties::secret_key_selector,
crate::fixups::upstream_bugs::required_properties::secret_projection,
Expand All @@ -114,6 +117,7 @@ impl SupportedVersion {
crate::fixups::upstream_bugs::required_properties::config_map_volume_source,
crate::fixups::upstream_bugs::required_properties::host_alias,
crate::fixups::upstream_bugs::required_properties::local_object_reference,
crate::fixups::upstream_bugs::required_properties::pod_ip,
crate::fixups::upstream_bugs::required_properties::secret_env_source,
crate::fixups::upstream_bugs::required_properties::secret_key_selector,
crate::fixups::upstream_bugs::required_properties::secret_projection,
Expand All @@ -130,7 +134,9 @@ impl SupportedVersion {
crate::fixups::upstream_bugs::required_properties::config_map_projection,
crate::fixups::upstream_bugs::required_properties::config_map_volume_source,
crate::fixups::upstream_bugs::required_properties::host_alias,
crate::fixups::upstream_bugs::required_properties::host_ip,
crate::fixups::upstream_bugs::required_properties::local_object_reference,
crate::fixups::upstream_bugs::required_properties::pod_ip,
crate::fixups::upstream_bugs::required_properties::secret_env_source,
crate::fixups::upstream_bugs::required_properties::secret_key_selector,
crate::fixups::upstream_bugs::required_properties::secret_projection,
Expand All @@ -147,7 +153,9 @@ impl SupportedVersion {
crate::fixups::upstream_bugs::required_properties::config_map_projection,
crate::fixups::upstream_bugs::required_properties::config_map_volume_source,
crate::fixups::upstream_bugs::required_properties::host_alias,
crate::fixups::upstream_bugs::required_properties::host_ip,
crate::fixups::upstream_bugs::required_properties::local_object_reference,
crate::fixups::upstream_bugs::required_properties::pod_ip,
crate::fixups::upstream_bugs::required_properties::secret_env_source,
crate::fixups::upstream_bugs::required_properties::secret_key_selector,
crate::fixups::upstream_bugs::required_properties::secret_projection,
Expand Down
13 changes: 7 additions & 6 deletions src/v1_24/api/core/v1/pod_ip.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#[derive(Clone, Debug, Default, PartialEq)]
pub struct PodIP {
/// ip is an IP address (IPv4 or IPv6) assigned to the pod
pub ip: Option<String>,
pub ip: String,
}

impl crate::DeepMerge for PodIP {
Expand Down Expand Up @@ -66,7 +66,7 @@ impl<'de> crate::serde::Deserialize<'de> for PodIP {
}

Ok(PodIP {
ip: value_ip,
ip: value_ip.unwrap_or_default(),
})
}
}
Expand All @@ -85,11 +85,9 @@ impl crate::serde::Serialize for PodIP {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
let mut state = serializer.serialize_struct(
"PodIP",
self.ip.as_ref().map_or(0, |_| 1),
1,
)?;
if let Some(value) = &self.ip {
crate::serde::ser::SerializeStruct::serialize_field(&mut state, "ip", value)?;
}
crate::serde::ser::SerializeStruct::serialize_field(&mut state, "ip", &self.ip)?;
crate::serde::ser::SerializeStruct::end(state)
}
}
Expand Down Expand Up @@ -121,6 +119,9 @@ impl crate::schemars::JsonSchema for PodIP {
}),
),
].into(),
required: [
"ip".to_owned(),
].into(),
..Default::default()
})),
..Default::default()
Expand Down
13 changes: 7 additions & 6 deletions src/v1_25/api/core/v1/pod_ip.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#[derive(Clone, Debug, Default, PartialEq)]
pub struct PodIP {
/// ip is an IP address (IPv4 or IPv6) assigned to the pod
pub ip: Option<String>,
pub ip: String,
}

impl crate::DeepMerge for PodIP {
Expand Down Expand Up @@ -66,7 +66,7 @@ impl<'de> crate::serde::Deserialize<'de> for PodIP {
}

Ok(PodIP {
ip: value_ip,
ip: value_ip.unwrap_or_default(),
})
}
}
Expand All @@ -85,11 +85,9 @@ impl crate::serde::Serialize for PodIP {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
let mut state = serializer.serialize_struct(
"PodIP",
self.ip.as_ref().map_or(0, |_| 1),
1,
)?;
if let Some(value) = &self.ip {
crate::serde::ser::SerializeStruct::serialize_field(&mut state, "ip", value)?;
}
crate::serde::ser::SerializeStruct::serialize_field(&mut state, "ip", &self.ip)?;
crate::serde::ser::SerializeStruct::end(state)
}
}
Expand Down Expand Up @@ -121,6 +119,9 @@ impl crate::schemars::JsonSchema for PodIP {
}),
),
].into(),
required: [
"ip".to_owned(),
].into(),
..Default::default()
})),
..Default::default()
Expand Down
13 changes: 7 additions & 6 deletions src/v1_26/api/core/v1/pod_ip.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#[derive(Clone, Debug, Default, PartialEq)]
pub struct PodIP {
/// ip is an IP address (IPv4 or IPv6) assigned to the pod
pub ip: Option<String>,
pub ip: String,
}

impl crate::DeepMerge for PodIP {
Expand Down Expand Up @@ -66,7 +66,7 @@ impl<'de> crate::serde::Deserialize<'de> for PodIP {
}

Ok(PodIP {
ip: value_ip,
ip: value_ip.unwrap_or_default(),
})
}
}
Expand All @@ -85,11 +85,9 @@ impl crate::serde::Serialize for PodIP {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
let mut state = serializer.serialize_struct(
"PodIP",
self.ip.as_ref().map_or(0, |_| 1),
1,
)?;
if let Some(value) = &self.ip {
crate::serde::ser::SerializeStruct::serialize_field(&mut state, "ip", value)?;
}
crate::serde::ser::SerializeStruct::serialize_field(&mut state, "ip", &self.ip)?;
crate::serde::ser::SerializeStruct::end(state)
}
}
Expand Down Expand Up @@ -121,6 +119,9 @@ impl crate::schemars::JsonSchema for PodIP {
}),
),
].into(),
required: [
"ip".to_owned(),
].into(),
..Default::default()
})),
..Default::default()
Expand Down
13 changes: 7 additions & 6 deletions src/v1_27/api/core/v1/pod_ip.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#[derive(Clone, Debug, Default, PartialEq)]
pub struct PodIP {
/// ip is an IP address (IPv4 or IPv6) assigned to the pod
pub ip: Option<String>,
pub ip: String,
}

impl crate::DeepMerge for PodIP {
Expand Down Expand Up @@ -66,7 +66,7 @@ impl<'de> crate::serde::Deserialize<'de> for PodIP {
}

Ok(PodIP {
ip: value_ip,
ip: value_ip.unwrap_or_default(),
})
}
}
Expand All @@ -85,11 +85,9 @@ impl crate::serde::Serialize for PodIP {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
let mut state = serializer.serialize_struct(
"PodIP",
self.ip.as_ref().map_or(0, |_| 1),
1,
)?;
if let Some(value) = &self.ip {
crate::serde::ser::SerializeStruct::serialize_field(&mut state, "ip", value)?;
}
crate::serde::ser::SerializeStruct::serialize_field(&mut state, "ip", &self.ip)?;
crate::serde::ser::SerializeStruct::end(state)
}
}
Expand Down Expand Up @@ -121,6 +119,9 @@ impl crate::schemars::JsonSchema for PodIP {
}),
),
].into(),
required: [
"ip".to_owned(),
].into(),
..Default::default()
})),
..Default::default()
Expand Down
13 changes: 7 additions & 6 deletions src/v1_28/api/core/v1/host_ip.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#[derive(Clone, Debug, Default, PartialEq)]
pub struct HostIP {
/// IP is the IP address assigned to the host
pub ip: Option<String>,
pub ip: String,
}

impl crate::DeepMerge for HostIP {
Expand Down Expand Up @@ -64,7 +64,7 @@ impl<'de> crate::serde::Deserialize<'de> for HostIP {
}

Ok(HostIP {
ip: value_ip,
ip: value_ip.unwrap_or_default(),
})
}
}
Expand All @@ -83,11 +83,9 @@ impl crate::serde::Serialize for HostIP {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
let mut state = serializer.serialize_struct(
"HostIP",
self.ip.as_ref().map_or(0, |_| 1),
1,
)?;
if let Some(value) = &self.ip {
crate::serde::ser::SerializeStruct::serialize_field(&mut state, "ip", value)?;
}
crate::serde::ser::SerializeStruct::serialize_field(&mut state, "ip", &self.ip)?;
crate::serde::ser::SerializeStruct::end(state)
}
}
Expand Down Expand Up @@ -119,6 +117,9 @@ impl crate::schemars::JsonSchema for HostIP {
}),
),
].into(),
required: [
"ip".to_owned(),
].into(),
..Default::default()
})),
..Default::default()
Expand Down
13 changes: 7 additions & 6 deletions src/v1_28/api/core/v1/pod_ip.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#[derive(Clone, Debug, Default, PartialEq)]
pub struct PodIP {
/// IP is the IP address assigned to the pod
pub ip: Option<String>,
pub ip: String,
}

impl crate::DeepMerge for PodIP {
Expand Down Expand Up @@ -64,7 +64,7 @@ impl<'de> crate::serde::Deserialize<'de> for PodIP {
}

Ok(PodIP {
ip: value_ip,
ip: value_ip.unwrap_or_default(),
})
}
}
Expand All @@ -83,11 +83,9 @@ impl crate::serde::Serialize for PodIP {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
let mut state = serializer.serialize_struct(
"PodIP",
self.ip.as_ref().map_or(0, |_| 1),
1,
)?;
if let Some(value) = &self.ip {
crate::serde::ser::SerializeStruct::serialize_field(&mut state, "ip", value)?;
}
crate::serde::ser::SerializeStruct::serialize_field(&mut state, "ip", &self.ip)?;
crate::serde::ser::SerializeStruct::end(state)
}
}
Expand Down Expand Up @@ -119,6 +117,9 @@ impl crate::schemars::JsonSchema for PodIP {
}),
),
].into(),
required: [
"ip".to_owned(),
].into(),
..Default::default()
})),
..Default::default()
Expand Down
13 changes: 7 additions & 6 deletions src/v1_29/api/core/v1/host_ip.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#[derive(Clone, Debug, Default, PartialEq)]
pub struct HostIP {
/// IP is the IP address assigned to the host
pub ip: Option<String>,
pub ip: String,
}

impl crate::DeepMerge for HostIP {
Expand Down Expand Up @@ -64,7 +64,7 @@ impl<'de> crate::serde::Deserialize<'de> for HostIP {
}

Ok(HostIP {
ip: value_ip,
ip: value_ip.unwrap_or_default(),
})
}
}
Expand All @@ -83,11 +83,9 @@ impl crate::serde::Serialize for HostIP {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
let mut state = serializer.serialize_struct(
"HostIP",
self.ip.as_ref().map_or(0, |_| 1),
1,
)?;
if let Some(value) = &self.ip {
crate::serde::ser::SerializeStruct::serialize_field(&mut state, "ip", value)?;
}
crate::serde::ser::SerializeStruct::serialize_field(&mut state, "ip", &self.ip)?;
crate::serde::ser::SerializeStruct::end(state)
}
}
Expand Down Expand Up @@ -119,6 +117,9 @@ impl crate::schemars::JsonSchema for HostIP {
}),
),
].into(),
required: [
"ip".to_owned(),
].into(),
..Default::default()
})),
..Default::default()
Expand Down
Loading

0 comments on commit ff4ad75

Please sign in to comment.