Source code for saltext.vcf.states.vcf_vim_cluster_config

"""State module for cluster DRS/HA/EVC/DPM settings."""

from saltext.vcf.clients import vim_cluster_config as c

__virtualname__ = "vcf_vim_cluster_config"


def __virtual__():
    return __virtualname__


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


[docs] def drs( name, cluster=None, enabled=None, default_vm_behavior=None, migration_threshold=None, vm_monitoring_enabled=None, profile=None, ): """Ensure DRS settings on *cluster* match the provided values. Only non-None fields participate in drift detection. *name* is informational; *cluster* defaults to *name* when omitted. """ cluster = cluster or name ret = _ret(name) current = c.drs_get(__opts__, cluster, profile=profile) desired = { "enabled": enabled, "default_vm_behavior": default_vm_behavior, "migration_threshold": migration_threshold, "vm_monitoring_enabled": vm_monitoring_enabled, } drift = { k: (current.get(k), v) for k, v in desired.items() if v is not None and current.get(k) != v } if not drift: ret["comment"] = f"DRS on {cluster} already matches" return ret if __opts__["test"]: ret["result"] = None ret["comment"] = f"DRS on {cluster} would be updated: {sorted(drift)}" return ret c.drs_set( __opts__, cluster, profile=profile, **{k: v for k, v in desired.items() if v is not None} ) ret["changes"] = drift ret["comment"] = f"DRS on {cluster} updated" return ret
[docs] def ha( name, cluster=None, enabled=None, host_monitoring=None, vm_monitoring=None, restart_priority=None, isolation_response=None, admission_control_enabled=None, profile=None, ): """Ensure HA settings on *cluster* match the provided values.""" cluster = cluster or name ret = _ret(name) current = c.ha_get(__opts__, cluster, profile=profile) desired = { "enabled": enabled, "host_monitoring": host_monitoring, "vm_monitoring": vm_monitoring, "restart_priority": restart_priority, "isolation_response": isolation_response, "admission_control_enabled": admission_control_enabled, } drift = { k: (current.get(k), v) for k, v in desired.items() if v is not None and current.get(k) != v } if not drift: ret["comment"] = f"HA on {cluster} already matches" return ret if __opts__["test"]: ret["result"] = None ret["comment"] = f"HA on {cluster} would be updated: {sorted(drift)}" return ret c.ha_set( __opts__, cluster, profile=profile, **{k: v for k, v in desired.items() if v is not None} ) ret["changes"] = drift ret["comment"] = f"HA on {cluster} updated" return ret
[docs] def evc(name, cluster=None, mode=None, profile=None): """Ensure EVC on *cluster* matches *mode* (or is disabled when ``None``).""" cluster = cluster or name ret = _ret(name) current = c.evc_get(__opts__, cluster, profile=profile) current_mode = current.get("current_mode") if current_mode == mode: ret["comment"] = f"EVC on {cluster} already at {mode!r}" return ret if __opts__["test"]: ret["result"] = None ret["comment"] = f"EVC on {cluster} would change from {current_mode!r} to {mode!r}" return ret if mode is None: c.evc_disable(__opts__, cluster, profile=profile) else: c.evc_set(__opts__, cluster, mode, profile=profile) ret["changes"] = {"mode": (current_mode, mode)} ret["comment"] = f"EVC on {cluster} set to {mode!r}" return ret