Source code for saltext.vcf.states.vcf_vcenter_dvs_nioc_vccluster

"""State module for cluster-wide DVS Network I/O Control (NIOC)."""

from saltext.vcf.clients import vcenter_dvs_nioc_vccluster as c

__virtualname__ = "vcf_vcenter_dvs_nioc_vccluster"


def __virtual__():
    return __virtualname__


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


[docs] def nioc_enabled(name, enabled, profile=None): """Ensure Network I/O Control is enabled/disabled on every DVS backing cluster *name*.""" ret = _ret(name) desired = bool(enabled) current = c.nioc_get(__opts__, name, profile=profile) drift = {dvs: state for dvs, state in current.items() if state != desired} if not drift: ret["comment"] = f"NIOC on all DVS in cluster {name} already {desired}" return ret if __opts__["test"]: ret["result"] = None ret["comment"] = f"NIOC on {sorted(drift)} in cluster {name} would change to {desired}" return ret c.nioc_set(__opts__, name, desired, profile=profile) ret["changes"] = {dvs: {"old": state, "new": desired} for dvs, state in drift.items()} ret["comment"] = f"NIOC updated to {desired} on {sorted(drift)} in cluster {name}" return ret