Source code for saltext.vcf.states.vcf_esxi_syslog
"""State module for ESXi syslog configuration."""
from saltext.vcf.clients import esxi_syslog as c
__virtualname__ = "vcf_esxi_syslog"
def __virtual__():
return __virtualname__
def _ret(name):
return {"name": name, "changes": {}, "result": True, "comment": ""}
[docs]
def servers(name, servers, log_level=None, profile=None): # pylint: disable=redefined-outer-name
"""Ensure remote syslog destinations and optional log level match."""
ret = _ret(name)
current = c.get(__opts__, profile=profile) or {}
current_servers = sorted(current.get("servers") or [])
desired_servers = sorted(servers)
actions = []
changes = {}
if current_servers != desired_servers:
actions.append("servers")
changes["servers"] = {"old": current_servers, "new": desired_servers}
if log_level is not None and current.get("log_level") != log_level:
actions.append(f"log_level={log_level}")
changes["log_level"] = {"old": current.get("log_level"), "new": log_level}
if not actions:
ret["comment"] = "Syslog already configured"
return ret
if __opts__["test"]:
ret["result"] = None
ret["comment"] = f"Syslog would change: {', '.join(actions)}"
return ret
if "servers" in actions:
c.set_servers(__opts__, servers, profile=profile)
if log_level is not None and current.get("log_level") != log_level:
c.set_log_level(__opts__, log_level, profile=profile)
ret["changes"] = changes
ret["comment"] = f"Syslog updated: {', '.join(actions)}"
return ret