pub trait Resource {
type DynamicType: Send + Sync + 'static;
type Scope;
fn kind(dt: &Self::DynamicType) -> Cow<'_, str>;
fn group(dt: &Self::DynamicType) -> Cow<'_, str>;
fn version(dt: &Self::DynamicType) -> Cow<'_, str>;
fn plural(dt: &Self::DynamicType) -> Cow<'_, str>;
fn meta(&self) -> &ObjectMeta;
fn meta_mut(&mut self) -> &mut ObjectMeta;
fn api_version(dt: &Self::DynamicType) -> Cow<'_, str> { ... }
fn url_path(dt: &Self::DynamicType, namespace: Option<&str>) -> String { ... }
fn object_ref(&self, dt: &Self::DynamicType) -> ObjectReference { ... }
fn controller_owner_ref(
&self,
dt: &Self::DynamicType
) -> Option<OwnerReference> { ... }
}
Expand description
An accessor trait for a kubernetes Resource.
This is for a subset of Kubernetes type that do not end in List
.
These types, using ObjectMeta
, SHOULD all have required properties:
.metadata
.metadata.name
And these optional properties:
.metadata.namespace
.metadata.resource_version
This avoids a bunch of the unnecessary unwrap mechanics for apps.
Required Associated Types
sourcetype DynamicType: Send + Sync + 'static
type DynamicType: Send + Sync + 'static
Type information for types that do not know their resource information at compile time.
Types that know their metadata at compile time should select DynamicType = ()
.
Types that require some information at runtime should select DynamicType
as type of this information.
See DynamicObject
for a valid implementation of non-k8s-openapi resources.
Required Methods
sourcefn kind(dt: &Self::DynamicType) -> Cow<'_, str>
fn kind(dt: &Self::DynamicType) -> Cow<'_, str>
Returns kind of this object
sourcefn group(dt: &Self::DynamicType) -> Cow<'_, str>
fn group(dt: &Self::DynamicType) -> Cow<'_, str>
Returns group of this object
sourcefn version(dt: &Self::DynamicType) -> Cow<'_, str>
fn version(dt: &Self::DynamicType) -> Cow<'_, str>
Returns version of this object
sourcefn plural(dt: &Self::DynamicType) -> Cow<'_, str>
fn plural(dt: &Self::DynamicType) -> Cow<'_, str>
Returns the plural name of the kind
This is known as the resource in apimachinery, we rename it for disambiguation.
sourcefn meta(&self) -> &ObjectMeta
fn meta(&self) -> &ObjectMeta
Metadata that all persisted resources must have
sourcefn meta_mut(&mut self) -> &mut ObjectMeta
fn meta_mut(&mut self) -> &mut ObjectMeta
Metadata that all persisted resources must have
Provided Methods
sourcefn api_version(dt: &Self::DynamicType) -> Cow<'_, str>
fn api_version(dt: &Self::DynamicType) -> Cow<'_, str>
Returns apiVersion of this object
Creates a url path for http requests for this resource
sourcefn object_ref(&self, dt: &Self::DynamicType) -> ObjectReference
fn object_ref(&self, dt: &Self::DynamicType) -> ObjectReference
Generates an object reference for the resource
sourcefn controller_owner_ref(&self, dt: &Self::DynamicType) -> Option<OwnerReference>
fn controller_owner_ref(&self, dt: &Self::DynamicType) -> Option<OwnerReference>
Generates a controller owner reference pointing to this resource
Note: this returns an Option
, but for objects populated from the apiserver,
this Option can be safely unwrapped.
Implementors
sourceimpl Resource for DynamicObject
impl Resource for DynamicObject
type DynamicType = ApiResource
type Scope = DynamicResourceScope
sourceimpl<K, S> Resource for Kwhere
K: Metadata<Ty = ObjectMeta>,
K: Resource<Scope = S>,
impl<K, S> Resource for Kwhere
K: Metadata<Ty = ObjectMeta>,
K: Resource<Scope = S>,
Implement accessor trait for any ObjectMeta-using Kubernetes Resource