cluster_config_software

vLCM single-image software lifecycle for a cluster.

Where saltext.vcf.clients.cluster_config wraps the Configuration Profile half of /api/esx/settings/clusters/{id}/..., this module wraps the software image half — the surface that remediates ESXi version + add-on + components + firmware. The two sides share the same vCenter session (saltext.vcf.utils.vcenter).

Workflow at a glance:

  1. Read the cluster’s desired image with get().

  2. Make changes through a draft: draft_create()draft_update_base_image() / add_component / …

  3. Commit the draft to make it the new desired image (draft_commit()).

  4. Pre-check: check().

  5. Optionally stage payloads to hosts ahead of time: stage().

  6. Apply: apply(). Both check and apply return a vCenter task id; poll via saltext.vcf.utils.vim.wait_for_task() or the corresponding last_*_result reader below.

All endpoints live under /api/esx/settings/clusters/{cluster}/software.

saltext.vcf.clients.cluster_config_software.get(opts, cluster, profile=None)[source]

Return the current desired software image for the cluster.

Returns None if the cluster isn’t using single-image (e.g. still on baselines) — vCenter responds 400 INVALID_ARGUMENT in that case.

saltext.vcf.clients.cluster_config_software.effective_components(opts, cluster, profile=None)[source]

Return the components currently in effect across the cluster.

saltext.vcf.clients.cluster_config_software.solutions(opts, cluster, profile=None)[source]

Return the registered solutions (e.g. vSAN) layered into the image.

saltext.vcf.clients.cluster_config_software.draft_create(opts, cluster, profile=None)[source]

Open a fresh draft seeded from the current desired image. Returns the draft id.

saltext.vcf.clients.cluster_config_software.draft_update_base_image(opts, cluster, draft_id, version, profile=None)[source]

Set the ESXi base-image version (e.g. 8.0.3-23299997).

saltext.vcf.clients.cluster_config_software.draft_set_add_on(opts, cluster, draft_id, name, version, profile=None)[source]

Set the vendor add-on (e.g. Dell-Addon, HPE-Addon).

saltext.vcf.clients.cluster_config_software.draft_set_component(opts, cluster, draft_id, component_name, version, profile=None)[source]

Pin a component version into the draft.

saltext.vcf.clients.cluster_config_software.draft_set_hardware_support(opts, cluster, draft_id, packages, profile=None)[source]

Set the firmware/hardware-support package spec.

packages is the dict shape vCenter expects: {"packages": {"<vendor>": {"pkg": "...", "version": "..."}}}.

saltext.vcf.clients.cluster_config_software.draft_commit(opts, cluster, draft_id, profile=None)[source]

Commit a draft, making it the cluster’s desired image.

Returns the new commit id.

saltext.vcf.clients.cluster_config_software.check(opts, cluster, profile=None)[source]

Run a pre-check. Returns a vCenter task id; poll with utils.vim.wait_for_task.

saltext.vcf.clients.cluster_config_software.stage(opts, cluster, hosts=None, profile=None)[source]

Pre-stage payloads on hosts. hosts optional list of host ids.

Returns a vCenter task id.

saltext.vcf.clients.cluster_config_software.apply(opts, cluster, *, accept_eula=True, profile=None)[source]

Apply the desired image to the cluster.

Returns a vCenter task id. accept_eula maps to commit_spec’s EULA flag — set to False if your workflow gates EULAs elsewhere.

saltext.vcf.clients.cluster_config_software.scan(opts, cluster, profile=None)[source]

Run a compliance scan. Returns a vCenter task id.