"""Execution module for vCenter's ESX Lifecycle Manager (vLCM) REST API.
Patches ESXi hosts in a vSphere cluster: configure/sync depots, define a
desired image, set the cluster's apply policy, then scan/precheck/stage/
remediate against it. See :mod:`saltext.vcf.clients.esxi_vlcm` for the
underlying REST calls, and :mod:`saltext.vcf.states.vcf_esxi_vlcm` for the
declarative/idempotent workflow.
Quick reference::
# Depots
salt-call vcf_esxi_vlcm.online_depot_list
salt-call vcf_esxi_vlcm.offline_depot_create '{"location": "http://repo/depot.zip"}'
salt-call vcf_esxi_vlcm.depot_sync
# Desired image
salt-call vcf_esxi_vlcm.desired_image_get domain-c9
salt-call vcf_esxi_vlcm.draft_import_software_spec domain-c9 '{"base_image": {"version": "9"}}'
salt-call vcf_esxi_vlcm.draft_commit domain-c9 draft-1
# Lifecycle
salt-call vcf_esxi_vlcm.compliance_scan domain-c9
salt-call vcf_esxi_vlcm.remediate domain-c9
"""
from saltext.vcf.clients import esxi_vlcm as c
__virtualname__ = "vcf_esxi_vlcm"
def __virtual__():
return __virtualname__
[docs]
def online_depot_list(profile=None):
"""Online depot list.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.online_depot_list
"""
return c.online_depot_list(__opts__, profile=profile)
[docs]
def online_depot_create(body, profile=None):
"""Online depot create.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.online_depot_create <body>
"""
return c.online_depot_create(__opts__, body, profile=profile)
[docs]
def online_depot_update(depot_id, body, profile=None):
"""Online depot update.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.online_depot_update <depot_id> <body>
"""
return c.online_depot_update(__opts__, depot_id, body, profile=profile)
[docs]
def offline_depot_list(profile=None):
"""Offline depot list.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.offline_depot_list
"""
return c.offline_depot_list(__opts__, profile=profile)
[docs]
def offline_depot_get(depot_id, profile=None):
"""Offline depot get.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.offline_depot_get <depot_id>
"""
return c.offline_depot_get(__opts__, depot_id, profile=profile)
[docs]
def offline_depot_create(body, profile=None):
"""Offline depot create (task).
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.offline_depot_create <body>
"""
return c.offline_depot_create(__opts__, body, profile=profile)
[docs]
def offline_depot_delete(depot_id, profile=None):
"""Offline depot delete (task).
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.offline_depot_delete <depot_id>
"""
return c.offline_depot_delete(__opts__, depot_id, profile=profile)
[docs]
def depot_sync(profile=None):
"""Depot sync (task).
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.depot_sync
"""
return c.depot_sync(__opts__, profile=profile)
[docs]
def desired_image_get(cluster, profile=None):
"""Desired image get.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.desired_image_get <cluster>
"""
return c.desired_image_get(__opts__, cluster, profile=profile)
[docs]
def base_image_get(cluster, profile=None):
"""Base image get.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.base_image_get <cluster>
"""
return c.base_image_get(__opts__, cluster, profile=profile)
[docs]
def drafts_list(cluster, profile=None):
"""Drafts list.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.drafts_list <cluster>
"""
return c.drafts_list(__opts__, cluster, profile=profile)
[docs]
def draft_get(cluster, draft_id, profile=None):
"""Draft get.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.draft_get <cluster> <draft_id>
"""
return c.draft_get(__opts__, cluster, draft_id, profile=profile)
[docs]
def draft_delete(cluster, draft_id, profile=None):
"""Draft delete.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.draft_delete <cluster> <draft_id>
"""
return c.draft_delete(__opts__, cluster, draft_id, profile=profile)
[docs]
def draft_import_software_spec(cluster, image_spec, profile=None):
"""Draft import software spec (task).
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.draft_import_software_spec <cluster> <image_spec>
"""
return c.draft_import_software_spec(__opts__, cluster, image_spec, profile=profile)
[docs]
def draft_validate(cluster, draft_id, profile=None):
"""Draft validate (task).
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.draft_validate <cluster> <draft_id>
"""
return c.draft_validate(__opts__, cluster, draft_id, profile=profile)
[docs]
def draft_commit(cluster, draft_id, message=None, profile=None):
"""Draft commit (task).
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.draft_commit <cluster> <draft_id>
"""
return c.draft_commit(__opts__, cluster, draft_id, message=message, profile=profile)
[docs]
def apply_policy_get(cluster, profile=None):
"""Apply policy get.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.apply_policy_get <cluster>
"""
return c.apply_policy_get(__opts__, cluster, profile=profile)
[docs]
def apply_policy_set(cluster, policy_spec, profile=None):
"""Apply policy set.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.apply_policy_set <cluster> <policy_spec>
"""
return c.apply_policy_set(__opts__, cluster, policy_spec, profile=profile)
[docs]
def compliance_scan(cluster, commit="1", hosts=None, profile=None):
"""Compliance scan (task).
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.compliance_scan <cluster>
"""
return c.compliance_scan(__opts__, cluster, commit=commit, hosts=hosts, profile=profile)
[docs]
def precheck(cluster, commit="1", profile=None):
"""Precheck (task).
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.precheck <cluster>
"""
return c.precheck(__opts__, cluster, commit=commit, profile=profile)
[docs]
def stage(cluster, commit="1", hosts=None, profile=None):
"""Stage (task).
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.stage <cluster>
"""
return c.stage(__opts__, cluster, commit=commit, hosts=hosts, profile=profile)
[docs]
def last_check_result(cluster, profile=None):
"""Last check result.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.last_check_result <cluster>
"""
return c.last_check_result(__opts__, cluster, profile=profile)
[docs]
def apply_impact_report(cluster, profile=None):
"""Apply impact report.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.apply_impact_report <cluster>
"""
return c.apply_impact_report(__opts__, cluster, profile=profile)
[docs]
def last_apply_result(cluster, profile=None):
"""Last apply result.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.last_apply_result <cluster>
"""
return c.last_apply_result(__opts__, cluster, profile=profile)
[docs]
def wait_for_task(resp, timeout=1800, poll_interval=10, profile=None):
"""Wait for task.
CLI Example:
.. code-block:: bash
salt '*' vcf_esxi_vlcm.wait_for_task <resp>
"""
return c.wait_for_task(
__opts__, resp, timeout=timeout, poll_interval=poll_interval, profile=profile
)