Create enum for PathType and use FQDN for namespace (RFC 1035 is more strict than RFC 1123, but very similar)
This commit is contained in:
parent
966fd757bc
commit
2817939b18
@ -10,6 +10,23 @@ use crate::{
|
||||
|
||||
use super::resource::{K8sResourceInterpret, K8sResourceScore};
|
||||
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
pub enum PathType {
|
||||
ImplementationSpecific,
|
||||
Exact,
|
||||
Prefix,
|
||||
}
|
||||
|
||||
impl PathType {
|
||||
fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
PathType::ImplementationSpecific => "ImplementationSpecific",
|
||||
PathType::Exact => "Exact",
|
||||
PathType::Prefix => "Prefix",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
pub struct K8sIngressScore {
|
||||
pub name: fqdn::FQDN,
|
||||
@ -17,8 +34,8 @@ pub struct K8sIngressScore {
|
||||
pub backend_service: fqdn::FQDN,
|
||||
pub port: u16,
|
||||
pub path: Option<String>,
|
||||
pub path_type: Option<String>,
|
||||
pub namespace: Option<String>,
|
||||
pub path_type: Option<PathType>,
|
||||
pub namespace: Option<fqdn::FQDN>,
|
||||
}
|
||||
|
||||
impl<T: Topology + K8sclient> Score<T> for K8sIngressScore {
|
||||
@ -29,7 +46,7 @@ impl<T: Topology + K8sclient> Score<T> for K8sIngressScore {
|
||||
};
|
||||
let path_type = match self.path_type.clone() {
|
||||
Some(p) => p,
|
||||
None => "Prefix".to_string(),
|
||||
None => PathType::Prefix,
|
||||
};
|
||||
|
||||
let ingress = json!(
|
||||
@ -44,7 +61,7 @@ impl<T: Topology + K8sclient> Score<T> for K8sIngressScore {
|
||||
"paths": [
|
||||
{
|
||||
"path": path,
|
||||
"pathType": path_type,
|
||||
"pathType": path_type.as_str(),
|
||||
"backend": [
|
||||
{
|
||||
"service": self.backend_service,
|
||||
@ -62,7 +79,12 @@ impl<T: Topology + K8sclient> Score<T> for K8sIngressScore {
|
||||
|
||||
let ingress: Ingress = serde_json::from_value(ingress).unwrap();
|
||||
Box::new(K8sResourceInterpret {
|
||||
score: K8sResourceScore::single(ingress.clone(), self.namespace.clone()),
|
||||
score: K8sResourceScore::single(
|
||||
ingress.clone(),
|
||||
self.namespace
|
||||
.clone()
|
||||
.map(|f| f.as_c_str().to_str().unwrap().to_string()),
|
||||
),
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@ -145,7 +145,9 @@ impl<T: Topology + K8sclient + HelmCommand> Interpret<T> for LAMPInterpret {
|
||||
port: 8080,
|
||||
path: None,
|
||||
path_type: None,
|
||||
namespace: self.get_namespace().map(|nbs| nbs.to_string()),
|
||||
namespace: self
|
||||
.get_namespace()
|
||||
.map(|nbs| fqdn!(nbs.to_string().as_str())),
|
||||
};
|
||||
|
||||
lamp_ingress
|
||||
|
||||
Loading…
Reference in New Issue
Block a user