Skip to content

Commit 929be38

Browse files
authored
Add one more to-object-ref impl to boxer-core (#36)
* Add one more to-object-ref impl to boxer-core * Fix formatting issues * Fix unused import * Fix unused import
1 parent a2a8a49 commit 929be38

File tree

2 files changed

+46
-28
lines changed

2 files changed

+46
-28
lines changed

src/services/backends/kubernetes/repositories.rs

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ use crate::services::backends::kubernetes::kubernetes_resource_manager::{
55
KubernetesResourceManagerConfig, UpdateLabels,
66
};
77
use crate::services::backends::kubernetes::logging_update_handler::LoggingUpdateHandler;
8+
use crate::services::backends::kubernetes::repositories::try_into_object_ref::TryIntoObjectRef;
89
use crate::services::base::upsert_repository::{CanDelete, ReadOnlyRepository, UpsertRepository};
910
use async_trait::async_trait;
1011
use k8s_openapi::NamespaceResourceScope;
1112
use k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
1213
use kube::runtime::reflector::ObjectRef;
1314
use log::debug;
14-
use regex::Regex;
1515
use serde::Serialize;
1616
use serde::de::DeserializeOwned;
1717
use std::fmt::Debug;
@@ -22,6 +22,7 @@ use tokio::time::Instant;
2222

2323
pub mod schema_repository;
2424
mod tests;
25+
mod try_into_object_ref;
2526

2627
pub trait SoftDeleteResource:
2728
kube::Resource<Scope = NamespaceResourceScope> + Clone + Debug + Serialize + DeserializeOwned + Send + Sync
@@ -46,33 +47,6 @@ where
4647
}
4748
}
4849

49-
pub trait TryIntoObjectRef<R>
50-
where
51-
R: kube::Resource + Send + Sync + 'static,
52-
{
53-
type Error;
54-
55-
fn try_into_object_ref(self, namespace: String) -> Result<ObjectRef<R>, Self::Error>;
56-
}
57-
58-
impl<R> TryIntoObjectRef<R> for String
59-
where
60-
R: kube::Resource + Send + Sync + 'static,
61-
R::DynamicType: Default,
62-
{
63-
type Error = anyhow::Error;
64-
65-
fn try_into_object_ref(self, namespace: String) -> Result<ObjectRef<R>, Self::Error> {
66-
let only_dns_subdomain = Regex::new(r"[^-a-z0-9]")?;
67-
let lowercase_name = self.to_lowercase();
68-
let safe_name = only_dns_subdomain.replace_all(&lowercase_name, "-").to_string();
69-
let trimmed_name = safe_name.trim_matches('-');
70-
let mut or = ObjectRef::new(&trimmed_name);
71-
or.namespace = Some(namespace);
72-
Ok(or)
73-
}
74-
}
75-
7650
pub trait TryFromResource<R>
7751
where
7852
R: kube::Resource + Send + Sync + 'static,
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
use kube::runtime::reflector::{Lookup, ObjectRef};
2+
use regex::Regex;
3+
4+
pub trait TryIntoObjectRef<R>
5+
where
6+
R: Lookup,
7+
R::DynamicType: Default,
8+
{
9+
type Error;
10+
11+
fn try_into_object_ref(self, namespace: String) -> Result<ObjectRef<R>, Self::Error>;
12+
}
13+
14+
impl<R> TryIntoObjectRef<R> for String
15+
where
16+
R: Lookup,
17+
R::DynamicType: Default,
18+
{
19+
type Error = anyhow::Error;
20+
21+
fn try_into_object_ref(self, namespace: String) -> Result<ObjectRef<R>, Self::Error> {
22+
let only_dns_subdomain = Regex::new(r"[^-a-z0-9]")?;
23+
let lowercase_name = self.to_lowercase();
24+
let safe_name = only_dns_subdomain.replace_all(&lowercase_name, "-").to_string();
25+
let trimmed_name = safe_name.trim_matches('-');
26+
let mut or = ObjectRef::new(&trimmed_name);
27+
or.namespace = Some(namespace);
28+
Ok(or)
29+
}
30+
}
31+
32+
impl<R> TryIntoObjectRef<R> for (String, String)
33+
where
34+
R: Lookup,
35+
R::DynamicType: Default,
36+
{
37+
type Error = anyhow::Error;
38+
39+
fn try_into_object_ref(self, namespace: String) -> Result<ObjectRef<R>, Self::Error> {
40+
format!("{}-{}", self.0, self.1)
41+
.to_string()
42+
.try_into_object_ref(namespace)
43+
}
44+
}

0 commit comments

Comments
 (0)