Skip to main content

resolve_identity

Function resolve_identity 

Source
pub fn resolve_identity(
    inputs: &IdentityInputs<'_>,
) -> ValidationResult<ResolvedIdentity>
Expand description

Resolve a ResolvedIdentity from defaults, an optional ClusterRepository identity template, and explicit consumer overrides (ADR §4.2).

Precedence per component: explicit override > template > default. Returns a ValidationError::IdentityTemplateRender if a supplied template fails to render (so the webhook rejects it at admission rather than pinning garbage).

use kopiur_api::{IdentityInputs, resolve_identity, identity_string};

// Bare defaults: username <- object name, hostname <- namespace,
// sourcePath <- /pvc/<pvcName> (ADR §4.2).
let inputs = IdentityInputs {
    object_name: "postgres-data",
    namespace: "billing",
    overrides: None,
    template: None,
    pvc_name: Some("postgres-data"),
    source_path_override: None,
};
let id = resolve_identity(&inputs).unwrap();
assert_eq!(id.username, "postgres-data");
assert_eq!(id.hostname, "billing");
assert_eq!(id.source_path.as_deref(), Some("/pvc/postgres-data"));
assert_eq!(identity_string(&id), "postgres-data@billing:/pvc/postgres-data");