Source code for saltext.vcf.states.vcf_vsan_cluster

"""State module for vSAN cluster configuration."""

from saltext.vcf.clients import vsan_cluster as c

__virtualname__ = "vcf_vsan_cluster"


def __virtual__():
    return __virtualname__


def _ret(name):
    return {"name": name, "changes": {}, "result": True, "comment": ""}


[docs] def configured( name, *, enabled=None, dedup_compression_enabled=None, encryption_enabled=None, auto_claim_storage=None, profile=None, ): """Ensure cluster *name* (MoId or display name) has the specified vSAN config. Each field is optional; only those provided are reconciled. Unset fields are left as-is. """ ret = _ret(name) current = c.get(__opts__, name, profile=profile) or {} changes = {} drift = {} for field, desired in ( ("enabled", enabled), ("dedup_compression_enabled", dedup_compression_enabled), ("encryption_enabled", encryption_enabled), ("auto_claim_storage", auto_claim_storage), ): if desired is None: continue actual = current.get(field) if bool(actual) != bool(desired): drift[field] = {"old": actual, "new": bool(desired)} if not drift: ret["comment"] = f"vSAN cluster {name} already configured" return ret if __opts__["test"]: ret["result"] = None ret["comment"] = f"vSAN cluster {name} would change: {', '.join(drift)}" return ret task_id = c.reconfigure( __opts__, name, enabled=enabled, dedup_compression_enabled=dedup_compression_enabled, encryption_enabled=encryption_enabled, auto_claim_storage=auto_claim_storage, profile=profile, ) changes.update(drift) changes["task_id"] = task_id ret["changes"] = changes ret["comment"] = f"vSAN cluster {name} reconfigure submitted (task={task_id})" return ret