use crate::error::{Error, DiscoveryError};
use k8s_openapi::api::core::v1::ObjectReference;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Deserialize, Serialize, Clone, Debug, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct KReference {
pub kind: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub api_version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub group: Option<String>,
}
impl From<KReference> for ObjectReference {
fn from(reference: KReference) -> ObjectReference {
ObjectReference {
name: Some(reference.name),
namespace: reference.namespace,
api_version: reference.api_version,
kind: Some(reference.kind),
..Default::default()
}
}
}
impl KReference {
pub fn resolve_uri(&self, _client: kube::Client) -> Result<url::Url, Error> {
let _object_reference: ObjectReference = self.clone().into();
Err(Error::Discovery(DiscoveryError::ResolveKReferenceNotImplemented))
}
}