Source code for saltext.vcf.states.vcf_vim_scheduled_task
"""State module for vCenter scheduled tasks."""
from saltext.vcf.clients import vim_scheduled_task as c
__virtualname__ = "vcf_vim_scheduled_task"
def __virtual__():
return __virtualname__
def _ret(name):
return {"name": name, "changes": {}, "result": True, "comment": ""}
[docs]
def present(name, entity, spec, profile=None):
"""Ensure a scheduled task with *name* exists on *entity*.
Match is by ``spec.name`` field; if a task with the same name exists,
no change is made (idempotency check on existence only — full spec
diff is not attempted because the SOAP schema is open-ended).
"""
ret = _ret(name)
spec_name = spec.get("name", name)
existing = c.get_or_none(__opts__, spec_name, profile=profile)
if existing is not None:
ret["comment"] = f"scheduled task {spec_name!r} already present"
return ret
if __opts__["test"]:
ret["result"] = None
ret["comment"] = f"scheduled task {spec_name!r} would be created on {entity}"
return ret
task_id = c.create(__opts__, entity, spec, profile=profile)
ret["changes"] = {"created": task_id}
ret["comment"] = f"scheduled task {spec_name!r} created"
return ret
[docs]
def absent(name, profile=None):
"""Ensure scheduled task *name* is gone."""
ret = _ret(name)
existing = c.get_or_none(__opts__, name, profile=profile)
if existing is None:
ret["comment"] = f"scheduled task {name!r} already absent"
return ret
if __opts__["test"]:
ret["result"] = None
ret["comment"] = f"scheduled task {name!r} would be removed"
return ret
c.delete(__opts__, name, profile=profile)
ret["changes"] = {"removed": existing["id"]}
ret["comment"] = f"scheduled task {name!r} removed"
return ret