Skip to content

Commit 854d8ab

Browse files
committed
Flatten AddressType into PreferredAddressType due to structuralism issues
1 parent 956ec8b commit 854d8ab

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

crates/stackable-operator/src/commons/listener.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ pub struct ListenerIngress {
210210
pub enum AddressType {
211211
/// A resolvable DNS hostname.
212212
Hostname,
213+
213214
/// A resolved IP address.
214215
#[serde(rename = "IP")]
215216
Ip,
@@ -219,22 +220,27 @@ pub enum AddressType {
219220
///
220221
/// These can vary depending on the rest of the [`ListenerClass`].
221222
#[derive(Serialize, Deserialize, Clone, Copy, Debug, JsonSchema, PartialEq, Eq)]
222-
#[serde(rename_all = "PascalCase")]
223223
pub enum PreferredAddressType {
224224
/// Like [`AddressType::Hostname`], but prefers [`AddressType::Ip`] for [`ServiceType::NodePort`], since their hostnames are less likely to be resolvable.
225225
HostnameConservative,
226-
#[serde(untagged)]
227-
AddressType(AddressType),
226+
227+
// Like the respective variants of AddressType. Ideally we would refer to them instead of copy/pasting, but that breaks due to upstream issues:
228+
// - https://github.com/GREsau/schemars/issues/222
229+
// - https://github.com/kube-rs/kube/issues/1622
230+
Hostname,
231+
#[serde(rename = "IP")]
232+
Ip,
228233
}
229234

230235
impl PreferredAddressType {
231236
pub fn resolve(self, listener_class: &ListenerClassSpec) -> AddressType {
232237
match self {
233-
PreferredAddressType::AddressType(tpe) => tpe,
234238
PreferredAddressType::HostnameConservative => match listener_class.service_type {
235239
ServiceType::NodePort => AddressType::Ip,
236240
_ => AddressType::Hostname,
237241
},
242+
PreferredAddressType::Hostname => AddressType::Hostname,
243+
PreferredAddressType::Ip => AddressType::Ip,
238244
}
239245
}
240246
}

0 commit comments

Comments
 (0)