use super::*;
#[derive(Clone, Debug, Args)]
#[command(arg_required_else_help(true), verbatim_doc_comment)]
pub struct CreateTlsSecret {
name: String,
#[arg(long)]
cert: PathBuf,
#[arg(long)]
key: PathBuf,
}
impl CreateTlsSecret {
pub fn secret(&self) -> kube::Result<corev1::Secret> {
let cert = self.load(&self.cert)?;
let key = self.load(&self.key)?;
let data = [
(corev1::Secret::TLS_CERT_KEY, cert),
(corev1::Secret::TLS_PRIVATE_KEY_KEY, key),
];
let secret = corev1::Secret::new(&self.name)
.r#type(corev1::Secret::SECRET_TYPE_TLS)
.string_data(data);
Ok(secret)
}
fn load(&self, path: impl AsRef<Path>) -> kube::Result<String> {
fs::read_to_string(path).map_err(|_err| kube::Error::LinesCodecMaxLineLengthExceeded)
}
}