Implement base operator (#1)
Some checks reported errors
continuous-integration/drone/push Build was killed
Some checks reported errors
continuous-integration/drone/push Build was killed
Add base operator logic Reviewed-on: #1
This commit is contained in:
64
src/secrets.rs
Normal file
64
src/secrets.rs
Normal file
@@ -0,0 +1,64 @@
|
||||
use k8s_openapi::api::core::v1::Secret;
|
||||
use k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
|
||||
use kube::api::PostParams;
|
||||
use kube::Api;
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
#[derive(thiserror::Error, Debug)]
|
||||
enum SecretError {
|
||||
#[error("Secret has no data!")]
|
||||
MissingData,
|
||||
#[error("The key '{0}' is not present in the secret!")]
|
||||
MissingKey(String),
|
||||
}
|
||||
|
||||
/// Attempt to read a value contained in a secret. Returns an error in case
|
||||
/// of failure
|
||||
pub fn read_secret_str(s: &Secret, key: &str) -> anyhow::Result<String> {
|
||||
let data = s.data.as_ref().ok_or(SecretError::MissingData)?;
|
||||
|
||||
let value = data
|
||||
.get(key)
|
||||
.ok_or(SecretError::MissingKey(key.to_string()))?;
|
||||
|
||||
Ok(String::from_utf8(value.0.clone())?)
|
||||
}
|
||||
|
||||
/// Create a secret consisting only of string key / value pairs
|
||||
pub async fn create_secret(
|
||||
secrets: &Api<Secret>,
|
||||
name: &str,
|
||||
values: BTreeMap<String, String>,
|
||||
) -> anyhow::Result<Secret> {
|
||||
Ok(secrets
|
||||
.create(
|
||||
&PostParams::default(),
|
||||
&Secret {
|
||||
data: None,
|
||||
immutable: None,
|
||||
metadata: ObjectMeta {
|
||||
annotations: None,
|
||||
creation_timestamp: None,
|
||||
deletion_grace_period_seconds: None,
|
||||
deletion_timestamp: None,
|
||||
finalizers: None,
|
||||
generate_name: None,
|
||||
generation: None,
|
||||
labels: Some(BTreeMap::from([(
|
||||
"created-by".to_string(),
|
||||
"miniok8sbuckets".to_string(),
|
||||
)])),
|
||||
managed_fields: None,
|
||||
name: Some(name.to_string()),
|
||||
namespace: None,
|
||||
owner_references: None,
|
||||
resource_version: None,
|
||||
self_link: None,
|
||||
uid: None,
|
||||
},
|
||||
string_data: Some(values),
|
||||
type_: None,
|
||||
},
|
||||
)
|
||||
.await?)
|
||||
}
|
Reference in New Issue
Block a user