Source code for saltext.vcf.clients.vcenter_vm_class
"""vCenter VM Classes — sizing templates for Supervisor namespace VMs.
VM classes define CPU/memory/reservation profiles that a Supervisor
namespace can attach. The default catalog has 16 classes (best-effort
+ guaranteed × xsmall/small/medium/large/xlarge + a few extras).
"""
import requests
from saltext.vcf.utils import vcenter
PATH = "/api/vcenter/namespace-management/virtual-machine-classes"
def list_(opts, profile=None):
return vcenter.api_get(opts, PATH, profile=profile)
def get(opts, class_id, profile=None):
return vcenter.api_get(opts, f"{PATH}/{class_id}", profile=profile)
def get_or_none(opts, class_id, profile=None):
try:
return get(opts, class_id, profile=profile)
except requests.HTTPError as exc:
if exc.response is not None and exc.response.status_code == 404:
return None
raise
[docs]
def create(opts, class_spec, profile=None):
"""Create a VM class.
*class_spec* per the vSphere REST API — typically::
{
"id": "my-class",
"cpu_count": 4,
"memory_MB": 8192,
"cpu_reservation": 0,
"memory_reservation": 0,
"description": "...",
"config_spec": {...}, # optional
}
"""
return vcenter.api_post(opts, PATH, body=class_spec, profile=profile)
def update(opts, class_id, class_spec, profile=None):
return vcenter.api_patch(opts, f"{PATH}/{class_id}", body=class_spec, profile=profile)
def delete(opts, class_id, profile=None):
return vcenter.api_delete(opts, f"{PATH}/{class_id}", profile=profile)