k8s_openapi_ext/ext/
owner_reference.rs1use super::*;
2
3pub trait OwnerReferenceExt {
4 fn is_owned_by<T>(&self, owner: &T) -> bool
7 where
8 T: openapi::Metadata<Ty = metav1::ObjectMeta>;
9
10 fn is_controlled_by<T>(&self, owner: &T) -> bool
13 where
14 T: openapi::Metadata<Ty = metav1::ObjectMeta>;
15}
16
17impl<K> OwnerReferenceExt for K
18where
19 K: openapi::Metadata<Ty = metav1::ObjectMeta>,
20{
21 fn is_owned_by<T>(&self, owner: &T) -> bool
22 where
23 T: openapi::Metadata<Ty = metav1::ObjectMeta>,
24 {
25 let name = owner.metadata().name.as_deref().unwrap_or_default();
26 let uid = owner.metadata().uid.as_deref().unwrap_or_default();
27 self.metadata()
28 .owner_references
29 .as_deref()
30 .unwrap_or_default()
31 .iter()
32 .any(|owner_ref| {
33 owner_ref.api_version == T::API_VERSION
34 && owner_ref.kind == T::KIND
35 && owner_ref.name == name
36 && owner_ref.uid == uid
37 })
38 }
39
40 fn is_controlled_by<T>(&self, owner: &T) -> bool
41 where
42 T: openapi::Metadata<Ty = metav1::ObjectMeta>,
43 {
44 let name = owner.metadata().name.as_deref().unwrap_or_default();
45 let uid = owner.metadata().uid.as_deref().unwrap_or_default();
46 self.metadata()
47 .owner_references
48 .as_deref()
49 .unwrap_or_default()
50 .iter()
51 .any(|owner_ref| {
52 owner_ref.controller.unwrap_or_default()
53 && owner_ref.api_version == T::API_VERSION
54 && owner_ref.kind == T::KIND
55 && owner_ref.name == name
56 && owner_ref.uid == uid
57 })
58 }
59}