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");