fix: K8s ingress module was completely broken, fixed resource definition structure and types

This commit is contained in:
Jean-Gabriel Gill-Couture 2025-06-09 14:00:46 -04:00
parent 6cf61ae67c
commit 8d8120bbfd
2 changed files with 21 additions and 11 deletions

View File

@ -26,7 +26,11 @@ impl K8sClient {
<K as Resource>::Scope: ApplyStrategy<K>, <K as Resource>::Scope: ApplyStrategy<K>,
<K as kube::Resource>::DynamicType: Default, <K as kube::Resource>::DynamicType: Default,
{ {
debug!("Applying resource {:?} with ns {:?}", resource.meta().name, ns); debug!(
"Applying resource {:?} with ns {:?}",
resource.meta().name,
ns
);
trace!("{:#?}", serde_json::to_string(resource)); trace!("{:#?}", serde_json::to_string(resource));
let api: Api<K> = <<K as Resource>::Scope as ApplyStrategy<K>>::get_api(&self.client, ns); let api: Api<K> = <<K as Resource>::Scope as ApplyStrategy<K>>::get_api(&self.client, ns);

View File

@ -1,5 +1,6 @@
use harmony_macros::ingress_path; use harmony_macros::ingress_path;
use k8s_openapi::api::networking::v1::Ingress; use k8s_openapi::api::networking::v1::Ingress;
use log::{debug, trace};
use serde::Serialize; use serde::Serialize;
use serde_json::json; use serde_json::json;
@ -56,22 +57,24 @@ impl<T: Topology + K8sclient> Score<T> for K8sIngressScore {
let ingress = json!( let ingress = json!(
{ {
"metadata": { "metadata": {
"name": self.name "name": self.name.to_string(),
}, },
"spec": { "spec": {
"rules": [ "rules": [
{ "host": self.host, { "host": self.host.to_string(),
"http": { "http": {
"paths": [ "paths": [
{ {
"path": path, "path": path,
"pathType": path_type.as_str(), "pathType": path_type.as_str(),
"backend": [ "backend": {
{ "service": {
"service": self.backend_service, "name": self.backend_service.to_string(),
"port": self.port "port": {
"number": self.port,
}
} }
] }
} }
] ]
} }
@ -81,13 +84,16 @@ impl<T: Topology + K8sclient> Score<T> for K8sIngressScore {
} }
); );
trace!("Building ingresss object from Value {ingress:#}");
let ingress: Ingress = serde_json::from_value(ingress).unwrap(); let ingress: Ingress = serde_json::from_value(ingress).unwrap();
debug!(
"Successfully built Ingress for host {:?}",
ingress.metadata.name
);
Box::new(K8sResourceInterpret { Box::new(K8sResourceInterpret {
score: K8sResourceScore::single( score: K8sResourceScore::single(
ingress.clone(), ingress.clone(),
self.namespace self.namespace.clone().map(|f| f.to_string()),
.clone()
.map(|f| f.as_c_str().to_str().unwrap().to_string()),
), ),
}) })
} }