vim_vm

VM clone + create + reconfigure via SOAP.

REST (/api/vcenter/vm) covers basic VM lifecycle but lacks the hardware-customization depth Terraform users expect (clone from template with full vCPU/memory/disk/network override, guest OS customization specs, etc.). This module exposes the SOAP path:

  • vim.VirtualMachine.CloneVM_Task for template/source clones

  • vim.Folder.CreateVM_Task for from-scratch VMs

  • vim.VirtualMachine.ReconfigVM_Task for hardware-level edits

Disk/NIC management has its own dedicated modules (vim_vm_disk and vim_vm_nic) since each has a richer surface.

saltext.vcf.clients.vim_vm.clone(opts, source, name, *, folder=None, datastore=None, host=None, resource_pool=None, cluster=None, template=False, power_on=False, customization=None, cpu_count=None, memory_mb=None, annotation=None, profile=None)[source]

Clone source (VM or template) into a new VM named name.

All target placement fields accept either an MoID or a name. folder and datastore are required; resource_pool defaults to the root pool on cluster (or host) when omitted.

saltext.vcf.clients.vim_vm.create(opts, name, folder, datastore, *, cpu_count=1, memory_mb=1024, guest_id='otherGuest64', cluster=None, host=None, resource_pool=None, annotation='', profile=None)[source]

Create a bare VM (no disks, no NICs).

saltext.vcf.clients.vim_vm.reconfigure(opts, vm_id_or_name, *, cpu_count=None, cores_per_socket=None, memory_mb=None, annotation=None, advanced_settings=None, profile=None)[source]

Adjust VM hardware/metadata. Only non-None fields are touched.

saltext.vcf.clients.vim_vm.get_advanced_settings(opts, vm_id_or_name, profile=None)[source]

Return the VM’s extraConfig as a flat {key: value} dict.

saltext.vcf.clients.vim_vm.destroy(opts, vm_id_or_name, profile=None)[source]

Power off (if needed) and destroy the VM. Returns task moId.

saltext.vcf.clients.vim_vm.instant_clone(opts, source, name, *, folder=None, datastore=None, host=None, resource_pool=None, extra_config=None, profile=None)[source]

Instant-clone source (must be powered on) into a new VM name.

Returns task moId. Source must be running; the new VM inherits memory state. Far cheaper than a regular clone but defaults to same-host placement.

extra_config — optional {key: value} dict applied as VM extraConfig options (e.g. {"guestinfo.role": "worker"}).

saltext.vcf.clients.vim_vm.move_to_folder(opts, vm_id_or_name, folder, profile=None)[source]

Reparent vm_id_or_name under folder. Returns task moId.

saltext.vcf.clients.vim_vm.register(opts, vmx_path, name, folder, *, resource_pool=None, cluster=None, host=None, as_template=False, profile=None)[source]

Register an existing .vmx as a new VM. Returns task moId.

vmx_path is the datastore path (e.g. [ds1] vm/vm.vmx). One of resource_pool, cluster, or host is required.

saltext.vcf.clients.vim_vm.unregister(opts, vm_id_or_name, profile=None)[source]

Remove the VM from inventory but leave its files on disk.