Compare commits
2 Commits
doc/cert-m
...
feat/cert_
| Author | SHA1 | Date | |
|---|---|---|---|
| c6642db6fb | |||
| 8f111bcb8b |
@@ -453,6 +453,64 @@ impl CertificateManagement for K8sAnywhereTopology {
|
||||
details: format!("Created cert into ns: {:#?}", config.namespace.clone()),
|
||||
})
|
||||
}
|
||||
|
||||
async fn get_ca_certificate(
|
||||
&self,
|
||||
cert_name: String,
|
||||
config: &CertificateManagementConfig,
|
||||
) -> Result<String, PreparationError> {
|
||||
let namespace = config.namespace.clone().unwrap();
|
||||
let certificate_gvk = GroupVersionKind {
|
||||
group: "cert-manager.io".to_string(),
|
||||
version: "v1".to_string(),
|
||||
kind: "Certificate".to_string(),
|
||||
};
|
||||
let client = self.k8s_client().await.unwrap();
|
||||
let certificate_data = client
|
||||
.get_resource_json_value(&cert_name, Some(&namespace), &certificate_gvk)
|
||||
.await?
|
||||
.data;
|
||||
|
||||
trace!("Certificate Data {:#?}", certificate_data);
|
||||
|
||||
let secret_name = certificate_data
|
||||
.get("spec")
|
||||
.ok_or_else(|| PreparationError {
|
||||
msg: format!("failed to get spec from Certificate {}", cert_name),
|
||||
})?
|
||||
.get("secretName")
|
||||
.ok_or_else(|| PreparationError {
|
||||
msg: format!("failed to get secretName from Certificate {}", cert_name),
|
||||
})?;
|
||||
|
||||
trace!("Secret Name {:#?}", secret_name);
|
||||
|
||||
let secret_name: String = serde_json::from_value(secret_name.clone())
|
||||
.map_err(|e| PreparationError { msg: e.to_string() })?;
|
||||
|
||||
let secret = client
|
||||
.get_secret_json_value(&secret_name, Some(&namespace))
|
||||
.await?
|
||||
.data;
|
||||
|
||||
let ca_cert = secret
|
||||
.get("data")
|
||||
.ok_or_else(|| PreparationError {
|
||||
msg: format!("failed to get data from secret {}", secret_name),
|
||||
})?
|
||||
.get("ca.crt")
|
||||
.ok_or_else(|| PreparationError {
|
||||
msg: format!("failed to get ca.crt from secret {}", secret_name),
|
||||
})?;
|
||||
|
||||
trace!("ca.crt {:#?}", ca_cert.clone());
|
||||
|
||||
let ca_cert: String = serde_json::from_value(ca_cert.clone())
|
||||
.map_err(|e| PreparationError { msg: e.to_string() })?;
|
||||
|
||||
trace!("ca.crt string {:#?}", ca_cert.clone());
|
||||
Ok(ca_cert)
|
||||
}
|
||||
}
|
||||
|
||||
impl K8sAnywhereTopology {
|
||||
|
||||
@@ -28,6 +28,12 @@ pub trait CertificateManagement: Send + Sync {
|
||||
issuer_name: String,
|
||||
config: &CertificateManagementConfig,
|
||||
) -> Result<PreparationOutcome, PreparationError>;
|
||||
|
||||
async fn get_ca_certificate(
|
||||
&self,
|
||||
cert_name: String,
|
||||
config: &CertificateManagementConfig,
|
||||
) -> Result<String, PreparationError>;
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
|
||||
Reference in New Issue
Block a user