feat: add ingress score #32
| @ -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