API Reference

API Reference

API Reference

vmoperator.vmware.com/v1alpha1

Package v1alpha1 contains the VM Operator v1alpha1 APIs.

ClassReference

ClassReference contains info to locate a Kind VirtualMachineClass object.

Field Description Default Validation

apiVersion string

API version of the referent.

kind string

Kind is the type of resource being referenced.

name string

Name is the name of resource being referenced.

ClusterModuleSpec

ClusterModuleSpec defines a grouping of VirtualMachines that are to be grouped together as a logical unit by the infrastructure provider. Within vSphere, the ClusterModuleSpec maps directly to a vSphere ClusterModule.

Field Description Default Validation

groupname string

GroupName describes the name of the ClusterModule Group.

ClusterModuleStatus

Field Description Default Validation

groupname string

moduleUUID string

clusterMoID string

ClusterVirtualMachineImage

ClusterVirtualMachineImage is the schema for the clustervirtualmachineimage API A ClusterVirtualMachineImage represents the desired specification and the observed status of a ClusterVirtualMachineImage instance.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha1

kind string

ClusterVirtualMachineImage

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

Condition

Condition defines an observation of a VM Operator API resource operational state.

Field Description Default Validation

Type of condition in CamelCase or in foo.example.com/CamelCase.
Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
can be useful (see .node.status.conditions), the ability to disambiguate is important.

Status of the condition, one of True, False, Unknown.

Severity provides an explicit classification of Reason code, so the users or machines can immediately
understand the current situation and act accordingly.
The Severity field MUST be set only when Status=False.

lastTransitionTime Time

Last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when
the API field changed is acceptable.

reason string

The reason for the condition’s last transition in CamelCase.
The specific API may choose whether or not this field is considered a guaranteed API.
This field may not be empty.

message string

A human readable message indicating details about the transition.
This field may be empty.

ConditionSeverity

Underlying type: string

ConditionSeverity expresses the severity of a Condition Type failing.

Appears In:

ConditionType

Underlying type: string

ConditionType is a valid value for Condition.Type.

Appears In:

ContentLibraryProvider

ContentLibraryProvider is the Schema for the contentlibraryproviders API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha1

kind string

ContentLibraryProvider

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

ContentLibraryProviderSpec

ContentLibraryProviderSpec defines the desired state of ContentLibraryProvider.

Field Description Default Validation

uuid string

UUID describes the UUID of a vSphere content library. It is the unique identifier for a
vSphere content library.

ContentLibraryProviderStatus

ContentLibraryProviderStatus defines the observed state of ContentLibraryProvider Can include fields indicating when was the last time VM images were updated from a library.

ContentProviderReference

ContentProviderReference contains the info to locate a content provider resource.

Field Description Default Validation

apiVersion string

API version of the referent.

kind string

Kind is the type of resource being referenced.

name string

Name is the name of resource being referenced.

namespace string

Namespace of the resource being referenced. If empty, cluster scoped resource is assumed.

ContentSource

ContentSource is the Schema for the contentsources API. A ContentSource represents the desired specification and the observed status of a ContentSource instance.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha1

kind string

ContentSource

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

ContentSourceBinding

ContentSourceBinding is an object that represents a ContentSource to Namespace mapping.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha1

kind string

ContentSourceBinding

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

contentSourceRef ContentSourceReference

ContentSourceRef is a reference to a ContentSource object.

ContentSourceReference

ContentSourceReference contains info to locate a Kind ContentSource object.

Appears In:
Field Description Default Validation

apiVersion string

API version of the referent.

kind string

Kind is the type of resource being referenced.

name string

Name is the name of resource being referenced.

ContentSourceSpec

ContentSourceSpec defines the desired state of ContentSource.

Appears In:
Field Description Default Validation

ProviderRef is a reference to a content provider object that describes a provider.

ContentSourceStatus

ContentSourceStatus defines the observed state of ContentSource.

Appears In:

DynamicDirectPathIODevice

DynamicDirectPathIODevice contains the configuration corresponding to a Dynamic DirectPath I/O device.

Appears In:
Field Description Default Validation

vendorID integer

deviceID integer

customLabel string

FolderSpec

FolderSpec defines a Folder.

Field Description Default Validation

name string

Name describes the name of the Folder

GuestHeartbeatAction

GuestHeartbeatAction describes an action based on the guest heartbeat.

Appears In:
Field Description Default Validation

thresholdStatus GuestHeartbeatStatus

ThresholdStatus is the value that the guest heartbeat status must be at or above to be
considered successful.

green

Enum: [yellow green]
Optional: \{}

GuestHeartbeatStatus

Underlying type: string

GuestHeartbeatStatus is the status type for a GuestHeartbeat.

Appears In:

InstanceStorage

InstanceStorage provides information used to configure instance storage volumes for a VirtualMachine.

Field Description Default Validation

storageClass string

StorageClass refers to the name of a StorageClass resource used to
provide the storage for the configured instance storage volumes.
The value of this field has no relationship to or bearing on the field
virtualMachine.spec.storageClass. Please note the referred StorageClass
must be available in the same namespace as the VirtualMachineClass that
uses it for configuring instance storage.

volumes InstanceStorageVolume array

Volumes describes instance storage volumes created for a VirtualMachine
instance that use this VirtualMachineClass.

InstanceStorageVolume

InstanceStorageVolume contains information required to create an instance storage volume on a VirtualMachine.

Appears In:
Field Description Default Validation

size Quantity

InstanceVolumeClaimVolumeSource

InstanceVolumeClaimVolumeSource contains information about the instance storage volume claimed as a PVC.

Field Description Default Validation

storageClass string

StorageClass is the name of the Kubernetes StorageClass that provides
the backing storage for this instance storage volume.

size Quantity

Size is the size of the requested instance storage volume.

LoadBalancerIngress

LoadBalancerIngress represents the status of a load balancer ingress point: traffic intended for the service should be sent to an ingress point. IP or Hostname may both be set in this structure. It is up to the consumer to determine which field should be used when accessing this LoadBalancer.

Appears In:
Field Description Default Validation

ip string

IP is set for load balancer ingress points that are specified by an IP address.

hostname string

Hostname is set for load balancer ingress points that are specified by a DNS address.

LoadBalancerStatus

LoadBalancerStatus represents the status of a load balancer.

Field Description Default Validation

ingress LoadBalancerIngress array

Ingress is a list containing ingress addresses for the load balancer.
Traffic intended for the service should be sent to any of these ingress points.

NetworkDeviceStatus

NetworkDeviceStatus defines the network interface IP configuration including gateway, subnetmask and IP address as seen by OVF properties.

Appears In:
Field Description Default Validation

Gateway4 string

Gateway4 is the gateway for the IPv4 address family for this device.

MacAddress string

MacAddress is the MAC address of the network device.

IPAddresses string array

IpAddresses represents one or more IP addresses assigned to the network
device in CIDR notation, ex. "192.0.2.1/16".

NetworkInterfaceProviderReference

NetworkInterfaceProviderReference contains info to locate a network interface provider object.

Field Description Default Validation

apiGroup string

APIGroup is the group for the resource being referenced.

kind string

Kind is the type of resource being referenced

name string

Name is the name of resource being referenced

apiVersion string

API version of the referent.

NetworkInterfaceStatus

NetworkInterfaceStatus defines the observed state of network interfaces attached to the VirtualMachine as seen by the Guest OS and VMware tools.

Appears In:
Field Description Default Validation

connected boolean

Connected represents whether the network interface is connected or not.

macAddress string

MAC address of the network adapter

ipAddresses string array

IpAddresses represents zero, one or more IP addresses assigned to the network interface in CIDR notation.
For eg, "192.0.2.1/16".

NetworkStatus

NetworkStatus describes the observed state of the VM’s network configuration.

Field Description Default Validation

Devices NetworkDeviceStatus array

Devices describe a list of current status information for each
network interface that is desired to be attached to the
VirtualMachineTemplate.

Nameservers string array

Nameservers describe a list of the DNS servers accessible by one of the
VM’s configured network devices.

OvfProperty

OvfProperty describes information related to a user configurable property element that is supported by VirtualMachineImage and can be customized during VirtualMachine creation.

Field Description Default Validation

key string

Key describes the key of the ovf property.

type string

Type describes the type of the ovf property.

default string

Default describes the default value of the ovf key.

description string

Description contains the value of the OVF property’s optional
"Description" element.

label string

Label contains the value of the OVF property’s optional
"Label" element.

PersistentVolumeClaimVolumeSource

PersistentVolumeClaimVolumeSource is a composite for the Kubernetes corev1.PersistentVolumeClaimVolumeSource and instance storage options.

Appears In:
Field Description Default Validation

claimName string

claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

readOnly boolean

readOnly Will force the ReadOnly setting in VolumeMounts.
Default false.

instanceVolumeClaim InstanceVolumeClaimVolumeSource

InstanceVolumeClaim is set if the PVC is backed by instance storage.

Probe

Probe describes a health check to be performed against a VirtualMachine to determine whether it is alive or ready to receive traffic. Only one probe action can be specified.

Appears In:
Field Description Default Validation

tcpSocket TCPSocketAction

TCPSocket specifies an action involving a TCP port.

Deprecated: The TCPSocket action requires network connectivity that is not supported in all environments.
This field will be removed in a later API version.

guestHeartbeat GuestHeartbeatAction

GuestHeartbeat specifies an action involving the guest heartbeat status.

timeoutSeconds integer

TimeoutSeconds specifies a number of seconds after which the probe times out.
Defaults to 10 seconds. Minimum value is 1.

Maximum: 60
Minimum: 1

periodSeconds integer

PeriodSeconds specifics how often (in seconds) to perform the probe.
Defaults to 10 seconds. Minimum value is 1.

Minimum: 1

ResourcePoolSpec

ResourcePoolSpec defines a Logical Grouping of workloads that share resource policies.

Field Description Default Validation

name string

Name describes the name of the ResourcePool grouping.

Reservations describes the guaranteed resources reserved for the ResourcePool.

Limits describes the limit to resources available to the ResourcePool.

ResourcePoolStatus

Field Description Default Validation

clusterMoID string

childResourcePoolMoID string

TCPSocketAction

TCPSocketAction describes an action based on opening a socket.

Appears In:
Field Description Default Validation

Port specifies a number or name of the port to access on the VirtualMachine.
If the format of port is a number, it must be in the range 1 to 65535.
If the format of name is a string, it must be an IANA_SVC_NAME.

host string

Host is an optional host name to connect to. Host defaults to the VirtualMachine IP.

VGPUDevice

VGPUDevice contains the configuration corresponding to a vGPU device.

Appears In:
Field Description Default Validation

profileName string

VMStatusPhase

Underlying type: string

VMStatusPhase is used to indicate the phase of a VirtualMachine’s lifecycle.

Appears In:

VirtualDevices

VirtualDevices contains information about the virtual devices associated with a VirtualMachineClass.

Field Description Default Validation

vgpuDevices VGPUDevice array

dynamicDirectPathIODevices DynamicDirectPathIODevice array

VirtualMachine

VirtualMachine is the Schema for the virtualmachines API. A VirtualMachine represents the desired specification and the observed status of a VirtualMachine instance. A VirtualMachine is realized by the VirtualMachine controller on a backing Virtual Infrastructure provider such as vSphere.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha1

kind string

VirtualMachine

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineAdvancedOptions

VirtualMachineAdvancedOptions describes a set of optional, advanced options for configuring a VirtualMachine.

Appears In:
Field Description Default Validation

defaultVolumeProvisioningOptions VirtualMachineVolumeProvisioningOptions

DefaultProvisioningOptions specifies the provisioning type to be used by default for VirtualMachine volumes exclusively
owned by this VirtualMachine. This does not apply to PersistentVolumeClaim volumes that are created and managed externally.

changeBlockTracking boolean

ChangeBlockTracking specifies the enablement of incremental backup support for this VirtualMachine, which can be utilized
by external backup systems such as VMware Data Recovery.

VirtualMachineClass

VirtualMachineClass is the Schema for the virtualmachineclasses API. A VirtualMachineClass represents the desired specification and the observed status of a VirtualMachineClass instance. A VirtualMachineClass represents a policy and configuration resource which defines a set of attributes to be used in the configuration of a VirtualMachine instance. A VirtualMachine resource references a VirtualMachineClass as a required input.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha1

kind string

VirtualMachineClass

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineClassBinding

VirtualMachineClassBinding is a binding object responsible for defining a VirtualMachineClass and a Namespace associated with it.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha1

kind string

VirtualMachineClassBinding

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

classRef ClassReference

ClassReference is a reference to a VirtualMachineClass object

VirtualMachineClassHardware

VirtualMachineClassHardware describes a virtual hardware resource specification.

Field Description Default Validation

cpus integer

memory Quantity

devices VirtualDevices

instanceStorage InstanceStorage

VirtualMachineClassPolicies

VirtualMachineClassPolicies describes the policy configuration to be used by a VirtualMachineClass.

Field Description Default Validation

VirtualMachineClassResources

VirtualMachineClassResources describes the virtual hardware resource reservations and limits configuration to be used by a VirtualMachineClass.

Field Description Default Validation

VirtualMachineClassSpec

VirtualMachineClassSpec defines the desired state of VirtualMachineClass.

Appears In:
Field Description Default Validation

controllerName string

ControllerName describes the name of the controller responsible for
reconciling VirtualMachine resources that are realized from this
VirtualMachineClass.

When omitted, controllers reconciling VirtualMachine resources determine
the default controller name from the environment variable
DEFAULT_VM_CLASS_CONTROLLER_NAME. If this environment variable is not
defined or empty, it defaults to vmoperator.vmware.com/vsphere.

Once a non-empty value is assigned to this field, attempts to set this
field to an empty value will be silently ignored.

Hardware describes the configuration of the VirtualMachineClass attributes related to virtual hardware. The
configuration specified in this field is used to customize the virtual hardware characteristics of any VirtualMachine
associated with this VirtualMachineClass.

Policies describes the configuration of the VirtualMachineClass attributes related to virtual infrastructure
policy. The configuration specified in this field is used to customize various policies related to
infrastructure resource consumption.

description string

Description describes the configuration of the VirtualMachineClass which is not related to virtual hardware
or infrastructure policy. This field is used to address remaining specs about this VirtualMachineClass.

configSpec RawMessage

ConfigSpec describes additional configuration information for a
VirtualMachine.
The contents of this field are the VirtualMachineConfigSpec data object
(https://bit.ly/3HDtiRu) marshaled to JSON using the discriminator
field "_typeName" to preserve type information.

Schemaless: \{}
Type: object

reservedProfileID string

ReservedProfileID describes the reservation profile associated with
the namespace-scoped VirtualMachineClass object.

reservedSlots integer

ReservedSlots describes the number of slots reserved for VMs that use
this VirtualMachineClass.
This field is only valid in conjunction with reservedProfileID.

Minimum: 0

VirtualMachineClassStatus

VirtualMachineClassStatus defines the observed state of VirtualMachineClass. VirtualMachineClasses are immutable, non-dynamic resources, so this status is currently unused.

Appears In:

VirtualMachineImage

VirtualMachineImage is the Schema for the virtualmachineimages API A VirtualMachineImage represents a VirtualMachine image (e.g. VM template) that can be used as the base image for creating a VirtualMachine instance. The VirtualMachineImage is a required field of the VirtualMachine spec. Currently, VirtualMachineImages are immutable to end users.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha1

kind string

VirtualMachineImage

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineImageOSInfo

VirtualMachineImageOSInfo describes optional information related to the image operating system that can be added to an image template. This information can be used by the image author to communicate details of the operating system associated with the image.

Field Description Default Validation

version string

Version typically describes the version of the guest operating system.

type string

Type typically describes the type of the guest operating system.

VirtualMachineImageProductInfo

VirtualMachineImageProductInfo describes optional product-related information that can be added to an image template. This information can be used by the image author to communicate details of the product contained in the image.

Field Description Default Validation

product string

Product typically describes the type of product contained in the image.

vendor string

Vendor typically describes the name of the vendor that is producing the image.

version string

Version typically describes a short-form version of the image.

fullVersion string

FullVersion typically describes a long-form version of the image.

VirtualMachineImageSpec

VirtualMachineImageSpec defines the desired state of VirtualMachineImage.

Field Description Default Validation

type string

Type describes the type of the VirtualMachineImage. Currently, the only supported image is "OVF"

imageSourceType string

ImageSourceType describes the type of content source of the VirtualMachineImage. The only Content Source
supported currently is the vSphere Content Library.

imageID string

ImageID is a unique identifier exposed by the provider of this VirtualMachineImage.

ProviderRef is a reference to a content provider object that describes a provider.

ProductInfo describes the attributes of the VirtualMachineImage relating to the product contained in the
image.

OSInfo describes the attributes of the VirtualMachineImage relating to the Operating System contained in the
image.

ovfEnv object (keys:string, values:OvfProperty)

OVFEnv describes the user configurable customization parameters of the VirtualMachineImage.

hwVersion integer

HardwareVersion describes the virtual hardware version of the image

VirtualMachineImageStatus

VirtualMachineImageStatus defines the observed state of VirtualMachineImage.

Field Description Default Validation

uuid string

Deprecated

internalId string

Deprecated

powerState string

Deprecated

imageName string

ImageName describes the display name of this image.

imageSupported boolean

ImageSupported indicates whether the VirtualMachineImage is supported by VMService.
A VirtualMachineImage is supported by VMService if the following conditions are true:
- VirtualMachineImageV1Alpha1CompatibleCondition

conditions Condition array

Conditions describes the current condition information of the VirtualMachineImage object. e.g. if the OS type
is supported or image is supported by VMService

contentLibraryRef TypedLocalObjectReference

ContentLibraryRef is a reference to the source ContentLibrary/ClusterContentLibrary resource.

Deprecated: This field is provider specific but the VirtualMachineImage types are intended to be provider generic.
This field does not exist in later API versions. Instead, the Spec.ProviderRef field should be used to look up the
provider. For images provided by a Content Library, the ProviderRef will point to either a ContentLibraryItem or
ClusterContentLibraryItem that contains a reference to the Content Library.

contentVersion string

ContentVersion describes the observed content version of this VirtualMachineImage that was last successfully
synced with the vSphere content library item.

firmware string

Firmware describe the firmware type used by this VirtualMachineImage.
eg: bios, efi.

VirtualMachineMetadata

VirtualMachineMetadata defines any metadata that should be passed to the VirtualMachine instance. A typical use case is for this metadata to be used for Guest Customization, however the intended use of the metadata is agnostic to the VirtualMachine controller. VirtualMachineMetadata is read from a configured ConfigMap or a Secret and then propagated to the VirtualMachine instance using a desired "Transport" mechanism.

Appears In:
Field Description Default Validation

configMapName string

ConfigMapName describes the name of the ConfigMap, in the same Namespace as the VirtualMachine, that should be
used for VirtualMachine metadata. The contents of the Data field of the ConfigMap is used as the VM Metadata.
The format of the contents of the VM Metadata are not parsed or interpreted by the VirtualMachine controller.
Please note, this field and SecretName are mutually exclusive.

secretName string

SecretName describes the name of the Secret, in the same Namespace as the VirtualMachine, that should be used
for VirtualMachine metadata. The contents of the Data field of the Secret is used as the VM Metadata.
The format of the contents of the VM Metadata are not parsed or interpreted by the VirtualMachine controller.
Please note, this field and ConfigMapName are mutually exclusive.

Transport describes the name of a supported VirtualMachineMetadata transport protocol. Currently, the only supported
transport protocols are "ExtraConfig", "OvfEnv" and "CloudInit".

Enum: [ExtraConfig OvfEnv vAppConfig CloudInit Sysprep]

VirtualMachineMetadataTransport

Underlying type: string

VirtualMachineMetadataTransport is used to indicate the transport used by VirtualMachineMetadata Valid values are "ExtraConfig", "OvfEnv", "vAppConfig", "CloudInit", and "Sysprep".

Validation:
  • Enum: [ExtraConfig OvfEnv vAppConfig CloudInit Sysprep]

VirtualMachineNetworkInterface

VirtualMachineNetworkInterface defines the properties of a network interface to attach to a VirtualMachine instance. A VirtualMachineNetworkInterface describes network interface configuration that is used by the VirtualMachine controller when integrating the VirtualMachine into a VirtualNetwork. Currently, only NSX-T and vSphere Distributed Switch (VDS) type network integrations are supported using this VirtualMachineNetworkInterface structure.

Appears In:
Field Description Default Validation

networkType string

NetworkType describes the type of VirtualNetwork that is referenced by the NetworkName. Currently, the supported
NetworkTypes are "nsx-t", "nsx-t-subnet", "nsx-t-subnetset" and "vsphere-distributed".

networkName string

NetworkName describes the name of an existing virtual network that this interface should be added to.
For "nsx-t" NetworkType, this is the name of a pre-existing NSX-T VirtualNetwork. If unspecified,
the default network for the namespace will be used. For "vsphere-distributed" NetworkType, the
NetworkName must be specified.

ProviderRef is reference to a network interface provider object that specifies the network interface configuration.
If unset, default configuration is assumed.

ethernetCardType string

EthernetCardType describes an optional ethernet card that should be used by the VirtualNetworkInterface (vNIC)
associated with this network integration. The default is "vmxnet3".

VirtualMachinePort

VirtualMachinePort is unused and can be considered deprecated.

Appears In:
Field Description Default Validation

port integer

ip string

name string

protocol Protocol

VirtualMachinePowerOpMode

Underlying type: string

VirtualMachinePowerOpMode represents the various power operation modes when powering off or suspending a VM.

Validation:
  • Enum: [hard soft trySoft]

Appears In:

VirtualMachinePowerState

Underlying type: string

VirtualMachinePowerState represents the power state of a VirtualMachine.

Validation:
  • Enum: [poweredOn poweredOff suspended]

VirtualMachinePublishRequest

VirtualMachinePublishRequest defines the information necessary to publish a VirtualMachine as a VirtualMachineImage to an image registry.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha1

kind string

VirtualMachinePublishRequest

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachinePublishRequestSource

VirtualMachinePublishRequestSource is the source of a publication request, typically a VirtualMachine resource.

Field Description Default Validation

name string

Name is the name of the referenced object.

If omitted this value defaults to the name of the
VirtualMachinePublishRequest resource.

apiVersion string

APIVersion is the API version of the referenced object.

vmoperator.vmware.com/v1alpha1

kind string

Kind is the kind of referenced object.

VirtualMachine

VirtualMachinePublishRequestSpec

VirtualMachinePublishRequestSpec defines the desired state of a VirtualMachinePublishRequest.

All the fields in this spec are optional. This is especially useful when a DevOps persona wants to publish a VM without doing anything more than applying a VirtualMachinePublishRequest resource that has the same name as said VM in the same namespace as said VM.

Field Description Default Validation

Source is the source of the publication request, ex. a VirtualMachine
resource.

If this value is omitted then the publication controller checks to
see if there is a resource with the same name as this
VirtualMachinePublishRequest resource, an API version equal to
spec.source.apiVersion, and a kind equal to spec.source.kind. If such
a resource exists, then it is the source of the publication.

Target is the target of the publication request, ex. item
information and a ContentLibrary resource.

If this value is omitted, the controller uses spec.source.name + "-image"
as the name of the published item. Additionally, when omitted the
controller attempts to identify the target location by matching a
resource with an API version equal to spec.target.location.apiVersion, a
kind equal to spec.target.location.kind, w/ the label
"imageregistry.vmware.com/default".

Please note that while optional, if a VirtualMachinePublishRequest sans
target information is applied to a namespace without a default
publication target, then the VirtualMachinePublishRequest resource
will be marked in error.

ttlSecondsAfterFinished integer

TTLSecondsAfterFinished is the time-to-live duration for how long this
resource will be allowed to exist once the publication operation
completes. After the TTL expires, the resource will be automatically
deleted without the user having to take any direct action.

If this field is unset then the request resource will not be
automatically deleted. If this field is set to zero then the request
resource is eligible for deletion immediately after it finishes.

Minimum: 0

VirtualMachinePublishRequestStatus

VirtualMachinePublishRequestStatus defines the observed state of a VirtualMachinePublishRequest.

Field Description Default Validation

SourceRef is the reference to the source of the publication request,
ex. a VirtualMachine resource.

TargetRef is the reference to the target of the publication request,
ex. item information and a ContentLibrary resource.

completionTime Time

CompletionTime represents time when the request was completed. It is not
guaranteed to be set in happens-before order across separate operations.
It is represented in RFC3339 form and is in UTC.

The value of this field should be equal to the value of the
LastTransitionTime for the status condition Type=Complete.

startTime Time

StartTime represents time when the request was acknowledged by the
controller. It is not guaranteed to be set in happens-before order
across separate operations. It is represented in RFC3339 form and is
in UTC.

attempts integer

Attempts represents the number of times the request to publish the VM
has been attempted.

lastAttemptTime Time

LastAttemptTime represents the time when the latest request was sent.

imageName string

ImageName is the name of the VirtualMachineImage resource that is
eventually realized in the same namespace as the VM and publication
request after the publication operation completes.

This field will not be set until the VirtualMachineImage resource
is realized.

ready boolean

Ready is set to true only when the VM has been published successfully
and the new VirtualMachineImage resource is ready.

Readiness is determined by waiting until there is status condition
Type=Complete and ensuring it and all other status conditions present
have a Status=True. The conditions present will be:

  • SourceValid

  • TargetValid

  • Uploaded

  • ImageAvailable

  • Complete

conditions Condition array

Conditions is a list of the latest, available observations of the
request’s current state.

VirtualMachinePublishRequestTarget

VirtualMachinePublishRequestTarget is the target of a publication request, typically a ContentLibrary resource.

Field Description Default Validation

Item contains information about the name of the object to which
the VM is published.

Please note this value is optional and if omitted, the controller
will use spec.source.name + "-image" as the name of the published
item.

Location contains information about the location to which to publish
the VM.

VirtualMachinePublishRequestTargetItem

VirtualMachinePublishRequestTargetItem is the item part of a publication request’s target.

Field Description Default Validation

name string

Name is the display name of the published object.

If the spec.target.location.apiVersion equals
imageregistry.vmware.com/v1alpha1 and the spec.target.location.kind
equals ContentLibrary, then this should be the name that will
show up in vCenter Content Library, not the custom resource name
in the namespace.

If omitted then the controller will use spec.source.name + "-image".

description string

Description is the description to assign to the published object.

VirtualMachinePublishRequestTargetLocation

VirtualMachinePublishRequestTargetLocation is the location part of a publication request’s target.

Field Description Default Validation

name string

Name is the name of the referenced object.

Please note an error will be returned if this field is not
set in a namespace that lacks a default publication target.

A default publication target is a resource with an API version
equal to spec.target.location.apiVersion, a kind equal to
spec.target.location.kind, and has the label
"imageregistry.vmware.com/default".

apiVersion string

APIVersion is the API version of the referenced object.

imageregistry.vmware.com/v1alpha1

kind string

Kind is the kind of referenced object.

ContentLibrary

VirtualMachineResourceSpec

VirtualMachineResourceSpec describes a virtual hardware policy specification.

Field Description Default Validation

cpu Quantity

memory Quantity

VirtualMachineService

VirtualMachineService is the Schema for the virtualmachineservices API. A VirtualMachineService represents the desired specification and the observed status of a VirtualMachineService instance. A VirtualMachineService represents a network service, provided by one or more VirtualMachines, that is desired to be exposed to other workloads both internal and external to the cluster.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha1

kind string

VirtualMachineService

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineServicePort

VirtualMachineServicePort describes the specification of a service port to be exposed by a VirtualMachineService. This VirtualMachineServicePort specification includes attributes that define the external and internal representation of the service port.

Field Description Default Validation

name string

Name describes the name to be used to identify this VirtualMachineServicePort

protocol string

Protocol describes the Layer 4 transport protocol for this port. Supports "TCP", "UDP", and "SCTP".

port integer

Port describes the external port that will be exposed by the service.

targetPort integer

TargetPort describes the internal port open on a VirtualMachine that should be mapped to the external Port.

VirtualMachineServiceSpec

VirtualMachineServiceSpec defines the desired state of VirtualMachineService. Each VirtualMachineService exposes a set of TargetPorts on a set of VirtualMachine instances as a network endpoint within or outside of the Kubernetes cluster. The VirtualMachineService is loosely coupled to the VirtualMachines that are backing it through the use of a Label Selector. In Kubernetes, a Label Selector enables matching of a resource using a set of key-value pairs, aka Labels. By using a Label Selector, the VirtualMachineService can be generically defined to apply to any VirtualMachine in the same namespace that has the appropriate set of labels.

Appears In:
Field Description Default Validation

Type specifies a desired VirtualMachineServiceType for this VirtualMachineService. Supported types
are ClusterIP, LoadBalancer, ExternalName.

Ports specifies a list of VirtualMachineServicePort to expose with this VirtualMachineService. Each of these ports
will be an accessible network entry point to access this service by.

selector object (keys:string, values:string)

Selector specifies a map of key-value pairs, also known as a Label Selector, that is used to match this
VirtualMachineService with the set of VirtualMachines that should back this VirtualMachineService.

loadBalancerIP string

Only applies to VirtualMachineService Type: LoadBalancer
LoadBalancer will get created with the IP specified in this field.
This feature depends on whether the underlying load balancer provider supports specifying
the loadBalancerIP when a load balancer is created.
This field will be ignored if the provider does not support the feature.
Deprecated: This field was under-specified and its meaning varies across implementations.
Using it is non-portable and it may not support dual-stack.
Users are encouraged to use implementation-specific annotations when available.

loadBalancerSourceRanges string array

LoadBalancerSourceRanges is an array of IP addresses in the format of
CIDRs, for example: 103.21.244.0/22 and 10.0.0.0/24.
If specified and supported by the load balancer provider, this will restrict
ingress traffic to the specified client IPs. This field will be ignored if the
provider does not support the feature.

clusterIp string

clusterIP is the IP address of the service and is usually assigned
randomly by the master. If an address is specified manually and is not in
use by others, it will be allocated to the service; otherwise, creation
of the service will fail. This field can not be changed through updates.
Valid values are "None", empty string (""), or a valid IP address. "None"
can be specified for headless services when proxying is not required.
Only applies to types ClusterIP and LoadBalancer.
Ignored if type is ExternalName.
More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

externalName string

externalName is the external reference that kubedns or equivalent will
return as a CNAME record for this service. No proxying will be involved.
Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123)
and requires Type to be ExternalName.

VirtualMachineServiceStatus

VirtualMachineServiceStatus defines the observed state of VirtualMachineService.

Appears In:
Field Description Default Validation

loadBalancer LoadBalancerStatus

LoadBalancer contains the current status of the load balancer,
if one is present.

VirtualMachineServiceType

Underlying type: string

VirtualMachineServiceType string describes ingress methods for a service.

VirtualMachineSetResourcePolicy

VirtualMachineSetResourcePolicy is the Schema for the virtualmachinesetresourcepolicies API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha1

kind string

VirtualMachineSetResourcePolicy

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineSetResourcePolicySpec

VirtualMachineSetResourcePolicySpec defines the desired state of VirtualMachineSetResourcePolicy.

Field Description Default Validation

resourcepool ResourcePoolSpec

folder FolderSpec

clustermodules ClusterModuleSpec array

VirtualMachineSetResourcePolicyStatus

VirtualMachineSetResourcePolicyStatus defines the observed state of VirtualMachineSetResourcePolicy.

Field Description Default Validation

resourcePools ResourcePoolStatus array

clustermodules ClusterModuleStatus array

VirtualMachineSpec

VirtualMachineSpec defines the desired state of a VirtualMachine.

Appears In:
Field Description Default Validation

imageName string

ImageName describes the name of the image resource used to deploy this
VM.

This field may be used to specify the name of a VirtualMachineImage
or ClusterVirtualMachineImage resource. The resolver first checks to see
if there is a VirtualMachineImage with the specified name in the
same namespace as the VM being deployed. If no such resource exists, the
resolver then checks to see if there is a ClusterVirtualMachineImage
resource with the specified name.

This field may also be used to specify the display name (vSphere name) of
a VirtualMachineImage or ClusterVirtualMachineImage resource. If the
display name unambiguously resolves to a distinct VM image (among all
existing VirtualMachineImages in the VM’s namespace and all existing
ClusterVirtualMachineImages), then a mutation webhook updates this field
with the VM image resource name. If the display name resolves to multiple
or no VM images, then the mutation webhook denies the request and outputs
an error message accordingly.

className string

ClassName describes the name of a VirtualMachineClass that is to be used as the overlaid resource configuration
of VirtualMachine. A VirtualMachineClass is used to further customize the attributes of the VirtualMachine
instance. See VirtualMachineClass for more description.

PowerState describes the desired power state of a VirtualMachine.

Please note this field may be omitted when creating a new VM and will
default to "poweredOn." However, once the field is set to a non-empty
value, it may no longer be set to an empty value.

Additionally, setting this value to "suspended" is not supported when
creating a new VM. The valid values when creating a new VM are
"poweredOn" and "poweredOff." An empty value is also allowed on create
since this value defaults to "poweredOn" for new VMs.

Enum: [poweredOn poweredOff suspended]

PowerOffMode describes the desired behavior when powering off a VM.

There are three, supported power off modes: hard, soft, and
trySoft. The first mode, hard, is the equivalent of a physical
system’s power cord being ripped from the wall. The soft mode
requires the VM’s guest to have VM Tools installed and attempts to
gracefully shutdown the VM. Its variant, trySoft, first attempts
a graceful shutdown, and if that fails or the VM is not in a powered off
state after five minutes, the VM is halted.

If omitted, the mode defaults to hard.

hard

Enum: [hard soft trySoft]

SuspendMode describes the desired behavior when suspending a VM.

There are three, supported suspend modes: hard, soft, and
trySoft. The first mode, hard, is where vSphere suspends the VM to
disk without any interaction inside of the guest. The soft mode
requires the VM’s guest to have VM Tools installed and attempts to
gracefully suspend the VM. Its variant, trySoft, first attempts
a graceful suspend, and if that fails or the VM is not in a put into
standby by the guest after five minutes, the VM is suspended.

If omitted, the mode defaults to hard.

hard

Enum: [hard soft trySoft]

nextRestartTime string

NextRestartTime may be used to restart the VM, in accordance with
RestartMode, by setting the value of this field to "now"
(case-insensitive).

A mutating webhook changes this value to the current time (UTC), which
the VM controller then uses to determine the VM should be restarted by
comparing the value to the timestamp of the last time the VM was
restarted.

Please note it is not possible to schedule future restarts using this
field. The only value that users may set is the string "now"
(case-insensitive).

RestartMode describes the desired behavior for restarting a VM when
spec.nextRestartTime is set to "now" (case-insensitive).

There are three, supported suspend modes: hard, soft, and
trySoft. The first mode, hard, is where vSphere resets the VM without any
interaction inside of the guest. The soft mode requires the VM’s guest to
have VM Tools installed and asks the guest to restart the VM. Its
variant, trySoft, first attempts a soft restart, and if that fails or
does not complete within five minutes, the VM is hard reset.

If omitted, the mode defaults to hard.

hard

Enum: [hard soft trySoft]

ports VirtualMachinePort array

Ports is currently unused and can be considered deprecated.

VmMetadata describes any optional metadata that should be passed to the Guest OS.

storageClass string

StorageClass describes the name of a StorageClass that should be used to configure storage-related attributes of the VirtualMachine
instance.

networkInterfaces VirtualMachineNetworkInterface array

NetworkInterfaces describes a list of VirtualMachineNetworkInterfaces to be configured on the VirtualMachine instance.
Each of these VirtualMachineNetworkInterfaces describes external network integration configurations that are to be
used by the VirtualMachine controller when integrating the VirtualMachine into one or more external networks.

The maximum number of network interface allowed is 10 because of the limit built into vSphere.

MaxItems: 10

resourcePolicyName string

ResourcePolicyName describes the name of a VirtualMachineSetResourcePolicy to be used when creating the
VirtualMachine instance.

volumes VirtualMachineVolume array

Volumes describes the list of VirtualMachineVolumes that are desired to be attached to the VirtualMachine. Each of
these volumes specifies a volume identity that the VirtualMachine controller will attempt to satisfy, potentially
with an external Volume Management service.

readinessProbe Probe

ReadinessProbe describes a network probe that can be used to determine if the VirtualMachine is available and
responding to the probe.

AdvancedOptions describes a set of optional, advanced options for configuring a VirtualMachine

minHardwareVersion integer

MinHardwareVersion specifies the desired minimum hardware version
for this VM.

Usually the VM’s hardware version is derived from:
1. the VirtualMachineClass used to deploy the VM provided by the ClassName field
2. the datacenter/cluster/host default hardware version
Setting this field will ensure that the hardware version of the VM
is at least set to the specified value. To enforce this, it will override
the value from the VirtualMachineClass.

This field is never updated to reflect the derived hardware version.
Instead, VirtualMachineStatus.HardwareVersion surfaces
the observed hardware version.

Please note, setting this field’s value to N ensures a VM’s hardware
version is equal to or greater than N. For example, if a VM’s observed
hardware version is 10 and this field’s value is 13, then the VM will be
upgraded to hardware version 13. However, if the observed hardware
version is 17 and this field’s value is 13, no change will occur.

Several features are hardware version dependent, for example:

  • NVMe Controllers >= 14

  • Dynamic Direct Path I/O devices >= 17

Please refer to https://kb.vmware.com/s/article/1003746 for a list of VM
hardware versions.

It is important to remember that a VM’s hardware version may not be
downgraded and upgrading a VM deployed from an image based on an older
hardware version to a more recent one may result in unpredictable
behavior. In other words, please be careful when choosing to upgrade a
VM to a newer hardware version.

Minimum: 13

VirtualMachineStatus

VirtualMachineStatus defines the observed state of a VirtualMachine instance.

Appears In:
Field Description Default Validation

host string

Host describes the hostname or IP address of the infrastructure host that the VirtualMachine is executing on.

hostName string

HostName describes the observed hostname reported by the VirtualMachine’s
guest operating system.

Please note, this value is only reported if VMware Tools is installed in
the guest, and the value may or may not be a fully qualified domain name
(FQDN), it simply depends on what is reported by the guest.

PowerState describes the current power state of the VirtualMachine.

Enum: [poweredOn poweredOff suspended]

Phase describes the current phase information of the VirtualMachine.

conditions Condition array

Conditions describes the current condition information of the VirtualMachine.

vmIp string

VmIp describes the Primary IP address assigned to the guest operating system, if known.
Multiple IPs can be available for the VirtualMachine. Refer to networkInterfaces in the VirtualMachine
status for additional IPs

uniqueID string

UniqueID describes a unique identifier that is provided by the underlying infrastructure provider, such as
vSphere.

biosUUID string

BiosUUID describes a unique identifier provided by the underlying infrastructure provider that is exposed to the
Guest OS BIOS as a unique hardware identifier.

instanceUUID string

InstanceUUID describes the unique instance UUID provided by the underlying infrastructure provider, such as vSphere.

Volumes describes a list of current status information for each Volume that is desired to be attached to the
VirtualMachine.

changeBlockTracking boolean

ChangeBlockTracking describes the CBT enablement status on the VirtualMachine.

networkInterfaces NetworkInterfaceStatus array

NetworkInterfaces describes a list of current status information for each network interface that is desired to
be attached to the VirtualMachine.

zone string

Zone describes the availability zone where the VirtualMachine has been scheduled.
Please note this field may be empty when the cluster is not zone-aware.

lastRestartTime Time

LastRestartTime describes the last time the VM was restarted.

hardwareVersion integer

HardwareVersion describes the VirtualMachine resource’s observed
hardware version.

Please refer to VirtualMachineSpec.MinHardwareVersion for more
information on the topic of a VM’s hardware version.

VirtualMachineVolume

VirtualMachineVolume describes a Volume that should be attached to a specific VirtualMachine. Only one of PersistentVolumeClaim, VsphereVolume should be specified.

Appears In:
Field Description Default Validation

name string

Name specifies the name of the VirtualMachineVolume. Each volume within the scope of a VirtualMachine must
have a unique name.

persistentVolumeClaim PersistentVolumeClaimVolumeSource

PersistentVolumeClaim represents a reference to a PersistentVolumeClaim
in the same namespace. The PersistentVolumeClaim must match one of the
following:

  • A volume provisioned (either statically or dynamically) by the
    cluster’s CSI provider.

  • An instance volume with a lifecycle coupled to the VM.

vSphereVolume VsphereVolumeSource

VsphereVolume represents a reference to a VsphereVolumeSource in the same namespace. Only one of PersistentVolumeClaim or
VsphereVolume can be specified. This is enforced via a webhook

VirtualMachineVolumeProvisioningOptions

VirtualMachineVolumeProvisioningOptions specifies the provisioning options for a VirtualMachineVolume.

Field Description Default Validation

thinProvisioned boolean

ThinProvisioned specifies whether to use thin provisioning for the VirtualMachineVolume.
This means a sparse (allocate on demand) format with additional space optimizations.

eagerZeroed boolean

EagerZeroed specifies whether to use eager zero provisioning for the VirtualMachineVolume.
An eager zeroed thick disk has all space allocated and wiped clean of any previous contents
on the physical media at creation time. Such disks may take longer time during creation
compared to other disk formats.
EagerZeroed is only applicable if ThinProvisioned is false. This is validated by the webhook.

VirtualMachineVolumeStatus

VirtualMachineVolumeStatus defines the observed state of a VirtualMachineVolume instance.

Appears In:
Field Description Default Validation

name string

Name is the name of the volume in a VirtualMachine.

attached boolean

Attached represents whether a volume has been successfully attached to the VirtualMachine or not.

diskUUID string

DiskUuid represents the underlying virtual disk UUID and is present when attachment succeeds.

error string

Error represents the last error seen when attaching or detaching a volume. Error will be empty if attachment succeeds.

VsphereVolumeSource

VsphereVolumeSource describes a volume source that represent static disks that belong to a VirtualMachine.

Appears In:
Field Description Default Validation

deviceKey integer

Device key of vSphere disk.

WebConsoleRequest

WebConsoleRequest allows the creation of a one-time web console ticket that can be used to interact with the VM.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha1

kind string

WebConsoleRequest

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

WebConsoleRequestSpec

WebConsoleRequestSpec describes the specification for used to request a web console request.

Appears In:
Field Description Default Validation

virtualMachineName string

VirtualMachineName is the VM in the same namespace, for which the web console is requested.

publicKey string

PublicKey is used to encrypt the status.response. This is expected to be a RSA OAEP public key in X.509 PEM format.

WebConsoleRequestStatus

WebConsoleRequestStatus defines the observed state, which includes the web console request itself.

Appears In:
Field Description Default Validation

response string

Response will be the authenticated ticket corresponding to this web console request.

expiryTime Time

ExpiryTime is when the ticket referenced in Response will expire.

proxyAddr string

ProxyAddr describes the host address and optional port used to access
the VM’s web console.
The value could be a DNS entry, IPv4, or IPv6 address, followed by an
optional port. For example, valid values include:

DNS
* host.com
* host.com:6443

IPv4
* 1.2.3.4
* 1.2.3.4:6443

IPv6
* 1234:1234:1234:1234:1234:1234:1234:1234
* [1234:1234:1234:1234:1234:1234:1234:1234]:6443
* 1234:1234:1234:0000:0000:0000:1234:1234
* 1234:1234:1234::::1234:1234
* [1234:1234:1234::::1234:1234]:6443

In other words, the field may be set to any value that is parsable
by Go’s https://pkg.go.dev/net#ResolveIPAddr and
https://pkg.go.dev/net#ParseIP functions.

vmoperator.vmware.com/v1alpha2

AffinitySpec

AffinitySpec defines the group of affinity scheduling rules.

Appears In:
Field Description Default Validation

vmAffinity VMAffinitySpec

VMAffinity describes affinity scheduling rules related to other VMs.

vmAntiAffinity VMAntiAffinitySpec

VMAntiAffinity describes anti-affinity scheduling rules related to other
VMs.

ClusterVirtualMachineImage

ClusterVirtualMachineImage is the schema for the clustervirtualmachineimages API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha2

kind string

ClusterVirtualMachineImage

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

DynamicDirectPathIODevice

DynamicDirectPathIODevice contains the configuration corresponding to a Dynamic DirectPath I/O device.

Appears In:
Field Description Default Validation

vendorID integer

deviceID integer

customLabel string

GroupMember

GroupMember describes a member of a VirtualMachineGroup.

Field Description Default Validation

name string

Name is the name of member of this group.

kind string

Kind is the kind of member of this group, which can be either
VirtualMachine or VirtualMachineGroup.

If omitted, it defaults to VirtualMachine.

VirtualMachine

Enum: [VirtualMachine VirtualMachineGroup]

GuestHeartbeatAction

GuestHeartbeatAction describes an action based on the guest heartbeat.

Field Description Default Validation

thresholdStatus GuestHeartbeatStatus

ThresholdStatus is the value that the guest heartbeat status must be at or above to be
considered successful.

green

Enum: [yellow green]
Optional: \{}

GuestHeartbeatStatus

Underlying type: string

GuestHeartbeatStatus is the guest heartbeat status.

Appears In:

GuestInfoAction

GuestInfoAction describes a key from GuestInfo that must match the associated value expression.

Field Description Default Validation

key string

Key is the name of the GuestInfo key.

The key is automatically prefixed with "guestinfo." before being
evaluated. Thus if the key "guestinfo.mykey" is provided, it will be
evaluated as "guestinfo.guestinfo.mykey".

value string

Value is a regular expression that is matched against the value of the
specified key.

An empty value is the equivalent of "match any" or ".*".

All values must adhere to the RE2 regular expression syntax as documented
at https://golang.org/s/re2syntax. Invalid values may be rejected or
ignored depending on the implementation of this API. Either way, invalid
values will not be considered when evaluating the ready state of a VM.

InstanceStorage

InstanceStorage provides information used to configure instance storage volumes for a VirtualMachine.

Field Description Default Validation

storageClass string

StorageClass refers to the name of a StorageClass resource used to
provide the storage for the configured instance storage volumes.
The value of this field has no relationship to or bearing on the field
virtualMachine.spec.storageClass. Please note the referred StorageClass
must be available in the same namespace as the VirtualMachineClass that
uses it for configuring instance storage.

volumes InstanceStorageVolume array

Volumes describes instance storage volumes created for a VirtualMachine
instance that use this VirtualMachineClass.

InstanceStorageVolume

InstanceStorageVolume contains information required to create an instance storage volume on a VirtualMachine.

Appears In:
Field Description Default Validation

size Quantity

InstanceVolumeClaimVolumeSource

InstanceVolumeClaimVolumeSource contains information about the instance storage volume claimed as a PVC.

Field Description Default Validation

storageClass string

StorageClass is the name of the Kubernetes StorageClass that provides
the backing storage for this instance storage volume.

size Quantity

Size is the size of the requested instance storage volume.

LoadBalancerIngress

LoadBalancerIngress represents the status of a load balancer ingress point: traffic intended for the service should be sent to an ingress point. IP or Hostname may both be set in this structure. It is up to the consumer to determine which field should be used when accessing this LoadBalancer.

Appears In:
Field Description Default Validation

ip string

IP is set for load balancer ingress points that are specified by an IP
address.

hostname string

Hostname is set for load balancer ingress points that are specified by a
DNS address.

LoadBalancerStatus

LoadBalancerStatus represents the status of a load balancer.

Field Description Default Validation

ingress LoadBalancerIngress array

Ingress is a list containing ingress addresses for the load balancer.
Traffic intended for the service should be sent to any of these ingress
points.

NetworkDeviceStatus

NetworkDeviceStatus defines the network interface IP configuration including gateway, subnet mask and IP address as seen by OVF properties.

Appears In:
Field Description Default Validation

Gateway4 string

Gateway4 is the gateway for the IPv4 address family for this device.

MacAddress string

MacAddress is the MAC address of the network device.

IPAddresses string array

IpAddresses represents one or more IP addresses assigned to the network
device in CIDR notation, ex. "192.0.2.1/16".

NetworkStatus

NetworkStatus describes the observed state of the VM’s network configuration.

Field Description Default Validation

Devices NetworkDeviceStatus array

Devices describe a list of current status information for each
network interface that is desired to be attached to the
VirtualMachineTemplate.

Nameservers string array

Nameservers describe a list of the DNS servers accessible by one of the
VM’s configured network devices.

OVFProperty

OVFProperty describes an OVF property associated with an image. OVF properties may be used in conjunction with the vAppConfig bootstrap provider to customize a VM during its creation.

Field Description Default Validation

key string

Key describes the OVF property’s key.

type string

Type describes the OVF property’s type.

default string

Default describes the OVF property’s default value.

PersistentVolumeClaimVolumeSource

PersistentVolumeClaimVolumeSource is a composite for the Kubernetes corev1.PersistentVolumeClaimVolumeSource and instance storage options.

Field Description Default Validation

claimName string

claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

readOnly boolean

readOnly Will force the ReadOnly setting in VolumeMounts.
Default false.

instanceVolumeClaim InstanceVolumeClaimVolumeSource

InstanceVolumeClaim is set if the PVC is backed by instance storage.

ResourcePoolSpec

ResourcePoolSpec defines a Logical Grouping of workloads that share resource policies.

Field Description Default Validation

name string

Name describes the name of the ResourcePool grouping.

Reservations describes the guaranteed resources reserved for the
ResourcePool.

Limits describes the limit to resources available to the ResourcePool.

ResourcePoolStatus

ResourcePoolStatus describes the observed state of a vSphere child resource pool created for the Spec.ResourcePool.Name.

Field Description Default Validation

clusterMoID string

childResourcePoolMoID string

TCPSocketAction

TCPSocketAction describes an action based on opening a socket.

Field Description Default Validation

Port specifies a number or name of the port to access on the VM.
If the format of port is a number, it must be in the range 1 to 65535.
If the format of name is a string, it must be an IANA_SVC_NAME.

host string

Host is an optional host name to connect to. Host defaults to the VM IP.

VGPUDevice

VGPUDevice contains the configuration corresponding to a vGPU device.

Appears In:
Field Description Default Validation

profileName string

VMAffinitySpec

VMAffinitySpec defines the affinity requirements for scheduling rules related to other VMs.

Appears In:
Field Description Default Validation

requiredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

RequiredDuringSchedulingPreferredDuringExecution describes affinity
requirements that must be met or the VM will not be scheduled.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

preferredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

PreferredDuringSchedulingPreferredDuringExecution describes affinity
requirements that should be met, but the VM can still be scheduled if
the requirement cannot be satisfied. The scheduler will prefer to
schedule VMs that satisfy the affinity expressions specified by this
field, but it may choose to violate one or more of the expressions.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

VMAffinityTerm

VMAffinityTerm defines the VM affinity/anti-affinity term.

Field Description Default Validation

labelSelector LabelSelector

LabelSelector is a label query over a set of VMs.
When omitted, this term matches with no VMs.

topologyKey string

TopologyKey describes where this VM should be co-located (affinity) or not
co-located (anti-affinity).
Commonly used values include:
kubernetes.io/hostname — The rule is executed in the context of a node/host.
topology.kubernetes.io/zone — This rule is executed in the context of a zone.

Please note, The following rules apply when specifying the topology key in the context of a zone/host.

  • When topology key is in the context of a zone, the only supported verbs are
    PreferredDuringSchedulingPreferredDuringExecution and RequiredDuringSchedulingPreferredDuringExecution.

  • When topology key is in the context of a host, the only supported verbs are
    PreferredDuringSchedulingPreferredDuringExecution and RequiredDuringSchedulingPreferredDuringExecution
    for VM-VM node-level anti-affinity scheduling.

VMAntiAffinitySpec

VMAntiAffinitySpec defines the anti-affinity requirements for scheduling rules related to other VMs.

Appears In:
Field Description Default Validation

requiredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

RequiredDuringSchedulingPreferredDuringExecution describes anti-affinity
requirements that must be met or the VM will not be scheduled.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

preferredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

PreferredDuringSchedulingPreferredDuringExecution describes anti-affinity
requirements that should be met, but the VM can still be scheduled if
the requirement cannot be satisfied. The scheduler will prefer to
schedule VMs that satisfy the anti-affinity expressions specified by
this field, but it may choose to violate one or more of the expressions.
Additionally, it also describes the anti-affinity requirements that
should be met during run-time, but the VM can still be run if the
requirements cannot be satisfied.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

VSphereClusterModuleStatus

VSphereClusterModuleStatus describes the observed state of a vSphere cluster module.

Field Description Default Validation

groupName string

moduleUUID string

clusterMoID string

VirtualDevices

VirtualDevices contains information about the virtual devices associated with a VirtualMachineClass.

Field Description Default Validation

vgpuDevices VGPUDevice array

dynamicDirectPathIODevices DynamicDirectPathIODevice array

VirtualMachine

VirtualMachine is the schema for the virtualmachines API and represents the desired state and observed status of a virtualmachines resource.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha2

kind string

VirtualMachine

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineAdvancedSpec

VirtualMachineAdvancedSpec describes a set of optional, advanced VM configuration options.

Appears In:
Field Description Default Validation

bootDiskCapacity Quantity

BootDiskCapacity is the capacity of the VM’s boot disk — the first disk
from the VirtualMachineImage from which the VM was deployed.

Please note it is not advised to change this value while the VM is
running. Also, resizing the VM’s boot disk may require actions inside of
the guest to take advantage of the additional capacity. Finally, changing
the size of the VM’s boot disk, even increasing it, could adversely
affect the VM.

defaultVolumeProvisioningMode VirtualMachineVolumeProvisioningMode

DefaultVolumeProvisioningMode specifies the default provisioning mode for
persistent volumes managed by this VM.

Enum: [Thin Thick ThickEagerZero]

changeBlockTracking boolean

ChangeBlockTracking is a flag that enables incremental backup support
for this VM, a feature utilized by external backup systems such as
VMware Data Recovery.

VirtualMachineBootstrapCloudInitSpec

VirtualMachineBootstrapCloudInitSpec describes the CloudInit configuration used to bootstrap the VM.

Field Description Default Validation

cloudConfig CloudConfig

CloudConfig describes a subset of a Cloud-Init CloudConfig, used to
bootstrap the VM.

Please note this field and RawCloudConfig are mutually exclusive.

rawCloudConfig SecretKeySelector

RawCloudConfig describes a key in a Secret resource that contains the
CloudConfig data used to bootstrap the VM.

The CloudConfig data specified by the key may be plain-text,
base64-encoded, or gzipped and base64-encoded.

Please note this field and CloudConfig are mutually exclusive.

sshAuthorizedKeys string array

SSHAuthorizedKeys is a list of public keys that CloudInit will apply to
the guest’s default user.

useGlobalNameserversAsDefault boolean

UseGlobalNameserversAsDefault will use the global nameservers specified in
the NetworkSpec as the per-interface nameservers when the per-interface
nameservers is not provided.

Defaults to true if omitted.

useGlobalSearchDomainsAsDefault boolean

UseGlobalSearchDomainsAsDefault will use the global search domains specified
in the NetworkSpec as the per-interface search domains when the per-interface
search domains is not provided.

Defaults to true if omitted.

VirtualMachineBootstrapLinuxPrepSpec

VirtualMachineBootstrapLinuxPrepSpec describes the LinuxPrep configuration used to bootstrap the VM.

Field Description Default Validation

hardwareClockIsUTC boolean

HardwareClockIsUTC specifies whether the hardware clock is in UTC or
local time.

timeZone string

TimeZone is a case-sensitive timezone, such as Europe/Sofia.

Valid values are based on the tz (timezone) database used by Linux and
other Unix systems. The values are strings in the form of
"Area/Location," in which Area is a continent or ocean name, and
Location is the city, island, or other regional designation.

Please see https://kb.vmware.com/s/article/2145518 for a list of valid
time zones for Linux systems.

VirtualMachineBootstrapSpec

VirtualMachineBootstrapSpec defines the desired state of a VM’s bootstrap configuration.

Appears In:
Field Description Default Validation

CloudInit may be used to bootstrap Linux guests with Cloud-Init or
Windows guests that support Cloudbase-Init.

The guest’s networking stack is configured by Cloud-Init on Linux guests
and Cloudbase-Init on Windows guests.

Please note this bootstrap provider may not be used in conjunction with
the other bootstrap providers.

LinuxPrep may be used to bootstrap Linux guests.

The guest’s networking stack is configured by Guest OS Customization
(GOSC).

Please note this bootstrap provider may be used in conjunction with the
VAppConfig bootstrap provider when wanting to configure the guest’s
network with GOSC but also send vApp/OVF properties into the guest.

This bootstrap provider may not be used in conjunction with the CloudInit
or Sysprep bootstrap providers.

Sysprep may be used to bootstrap Windows guests.

The guest’s networking stack is configured by Guest OS Customization
(GOSC).

Please note this bootstrap provider may be used in conjunction with the
VAppConfig bootstrap provider when wanting to configure the guest’s
network with GOSC but also send vApp/OVF properties into the guest.

This bootstrap provider may not be used in conjunction with the CloudInit
or LinuxPrep bootstrap providers.

VAppConfig may be used to bootstrap guests that rely on vApp properties
(how VMware surfaces OVF properties on guests) to transport data into the
guest.

The guest’s networking stack may be configured using either vApp
properties or GOSC.

Many OVFs define one or more properties that are used by the guest to
bootstrap its networking stack. If the VirtualMachineImage defines one or
more properties like this, then they can be configured to use the network
data provided for this VM at runtime by setting these properties to Go
template strings.

It is also possible to use GOSC to bootstrap this VM’s network stack by
configuring either the LinuxPrep or Sysprep bootstrap providers.

Please note the VAppConfig bootstrap provider in conjunction with the
LinuxPrep bootstrap provider is the equivalent of setting the v1alpha1
VM metadata transport to "OvfEnv".

This bootstrap provider may not be used in conjunction with the CloudInit
bootstrap provider.

VirtualMachineBootstrapSysprepSpec

VirtualMachineBootstrapSysprepSpec describes the Sysprep configuration used to bootstrap the VM.

Field Description Default Validation

sysprep Sysprep

Sysprep is an object representation of a Windows sysprep.xml answer file.

This field encloses all the individual keys listed in a sysprep.xml file.

For more detailed information please see
https://technet.microsoft.com/en-us/library/cc771830(v=ws.10).aspx.

Please note this field and RawSysprep are mutually exclusive.

rawSysprep SecretKeySelector

RawSysprep describes a key in a Secret resource that contains an XML
string of the Sysprep text used to bootstrap the VM.

The data specified by the Secret key may be plain-text, base64-encoded,
or gzipped and base64-encoded.

Please note this field and Sysprep are mutually exclusive.

VirtualMachineBootstrapVAppConfigSpec

VirtualMachineBootstrapVAppConfigSpec describes the vApp configuration used to bootstrap the VM.

Field Description Default Validation

properties KeyValueOrSecretKeySelectorPair array

Properties is a list of vApp/OVF property key/value pairs.

Please note this field and RawProperties are mutually exclusive.

rawProperties string

RawProperties is the name of a Secret resource in the same Namespace as
this VM where each key/value pair from the Secret is used as a vApp
key/value pair.

Please note this field and Properties are mutually exclusive.

VirtualMachineClass

VirtualMachineClass is the schema for the virtualmachineclasses API and represents the desired state and observed status of a virtualmachineclasses resource.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha2

kind string

VirtualMachineClass

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineClassHardware

VirtualMachineClassHardware describes a virtual hardware resource specification.

Field Description Default Validation

cpus integer

memory Quantity

devices VirtualDevices

instanceStorage InstanceStorage

VirtualMachineClassPolicies

VirtualMachineClassPolicies describes the policy configuration to be used by a VirtualMachineClass.

Field Description Default Validation

VirtualMachineClassResources

VirtualMachineClassResources describes the virtual hardware resource reservations and limits configuration to be used by a VirtualMachineClass.

Field Description Default Validation

VirtualMachineClassSpec

VirtualMachineClassSpec defines the desired state of VirtualMachineClass.

Appears In:
Field Description Default Validation

controllerName string

ControllerName describes the name of the controller responsible for
reconciling VirtualMachine resources that are realized from this
VirtualMachineClass.

When omitted, controllers reconciling VirtualMachine resources determine
the default controller name from the environment variable
DEFAULT_VM_CLASS_CONTROLLER_NAME. If this environment variable is not
defined or empty, it defaults to vmoperator.vmware.com/vsphere.

Once a non-empty value is assigned to this field, attempts to set this
field to an empty value will be silently ignored.

Hardware describes the configuration of the VirtualMachineClass
attributes related to virtual hardware. The configuration specified in
this field is used to customize the virtual hardware characteristics of
any VirtualMachine associated with this VirtualMachineClass.

Policies describes the configuration of the VirtualMachineClass
attributes related to virtual infrastructure policy. The configuration
specified in this field is used to customize various policies related to
infrastructure resource consumption.

description string

Description describes the configuration of the VirtualMachineClass which
is not related to virtual hardware or infrastructure policy. This field
is used to address remaining specs about this VirtualMachineClass.

configSpec RawMessage

ConfigSpec describes additional configuration information for a
VirtualMachine.
The contents of this field are the VirtualMachineConfigSpec data object
(https://bit.ly/3HDtiRu) marshaled to JSON using the discriminator
field "_typeName" to preserve type information.

Schemaless: \{}
Type: object

reservedProfileID string

ReservedProfileID describes the reservation profile associated with
the namespace-scoped VirtualMachineClass object.

reservedSlots integer

ReservedSlots describes the number of slots reserved for VMs that use
this VirtualMachineClass.
This field is only valid in conjunction with reservedProfileID.

Minimum: 0

VirtualMachineClassStatus

VirtualMachineClassStatus defines the observed state of VirtualMachineClass.

Appears In:

VirtualMachineCryptoSpec

VirtualMachineCryptoSpec defines the desired state of a VirtualMachine’s encryption state.

Appears In:
Field Description Default Validation

encryptionClassName string

EncryptionClassName describes the name of the EncryptionClass resource
used to encrypt this VM.

Please note, this field is not required to encrypt the VM. If the
underlying platform has a default key provider, the VM may still be fully
or partially encrypted depending on the specified storage and VM classes.

If there is a default key provider and an encryption storage class is
selected, the files in the VM’s home directory and non-PVC virtual disks
will be encrypted

If there is a default key provider and a VM Class with a virtual, trusted
platform module (vTPM) is selected, the files in the VM’s home directory,
minus any virtual disks, will be encrypted.

If the underlying vSphere platform does not have a default key provider,
then this field is required when specifying an encryption storage class
and/or a VM Class with a vTPM.

If this field is set, spec.storageClass must use an encryption-enabled
storage class.

useDefaultKeyProvider boolean

UseDefaultKeyProvider describes the desired behavior for when an explicit
EncryptionClass is not provided.

When an explicit EncryptionClass is not provided and this value is true:

  • Deploying a VirtualMachine with an encryption storage policy or vTPM
    will be encrypted using the default key provider.

  • If a VirtualMachine is not encrypted, uses an encryption storage
    policy or has a virtual, trusted platform module (vTPM), there is a
    default key provider, the VM will be encrypted using the default key
    provider.

  • If a VirtualMachine is encrypted with a provider other than the default
    key provider, the VM will be rekeyed using the default key provider.

When an explicit EncryptionClass is not provided and this value is false:

  • Deploying a VirtualMachine with an encryption storage policy or vTPM
    will fail.

  • If a VirtualMachine is encrypted with a provider other than the default
    key provider, the VM will be not be rekeyed.

Please note, this could result in a VirtualMachine that cannot be
powered on since it is encrypted using a provider or key that may have
been removed. Without the key, the VM cannot be decrypted and thus
cannot be powered on.

Defaults to true if omitted.

true

VirtualMachineGroup

VirtualMachineGroup is the schema for the VirtualMachineGroup API and represents the desired state and observed status of a VirtualMachineGroup resource.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha2

kind string

VirtualMachineGroup

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineGroupBootOrderGroup

VirtualMachineGroupBootOrderGroup describes a boot order group within a VirtualMachineGroup.

Field Description Default Validation

members GroupMember array

Members describes the names of VirtualMachine or VirtualMachineGroup
objects that are members of this boot order group. The VM or VM Group
objects must be in the same namespace as this group.

powerOnDelay Duration

PowerOnDelay is the amount of time to wait before powering on all the
members of this boot order group.

If omitted, the members will be powered on immediately when the group’s
power state changes to PoweredOn.

VirtualMachineGroupMemberStatus

VirtualMachineGroupMemberStatus describes the observed status of a group member.

Field Description Default Validation

name string

Name is the name of this member.

kind string

Kind is the kind of this member, which can be either VirtualMachine or
VirtualMachineGroup.

Enum: [VirtualMachine VirtualMachineGroup]

uid UID

UID is the K8s metadata UID of this current member object.

Placement describes the placement results for this member.

Please note this field is only set for VirtualMachine members.

PowerState describes the observed power state of this member.

Please note this field is only set for VirtualMachine members.

Enum: [PoweredOff PoweredOn Suspended]

conditions Condition array

Conditions describes any conditions associated with this member.

  • The GroupLinked condition is True when the member exists and has its
    "Spec.GroupName" field set to the group’s name.

  • The PowerStateSynced condition is True for the VirtualMachine member
    when the member’s power state matches the group’s power state.

  • The PlacementReady condition is True for the VirtualMachine member
    when the member has a placement decision ready.

  • The ReadyType condition is True for the VirtualMachineGroup member
    when all of its members' conditions are True.

VirtualMachineGroupPlacementDatastoreStatus

Field Description Default Validation

name string

Name describes the name of a datastore.

id string

ID describes the datastore ID.

url string

URL describes the datastore URL.

supportedDiskFormats string array

SupportedDiskFormat describes the list of disk formats supported by this
datastore.

diskKey integer

DiskKey describes the device key to which this recommendation applies.
When omitted, this recommendation is for the VM’s home directory.

topLevelDirectoryCreateSupported boolean

TopLevelDirectoryCreateSupported indicates whether or not the datastore
supports creating a top-level directory or requires the use of the
namespace manager (i.e. vSAN).

VirtualMachineGroupSpec

VirtualMachineGroupSpec defines the desired state of VirtualMachineGroup.

Appears In:
Field Description Default Validation

groupName string

GroupName describes the name of the group that this group belongs to.

When this field is set to a valid group that contains this VM Group as a
member, an owner reference to that group is added to this VM Group.

When this field is deleted or changed, any existing owner reference to
the previous group will be removed from this VM Group.

BootOrder describes the boot sequence for this group members. Each boot
order contains a set of members that will be powered on simultaneously,
with an optional delay before powering on. The orders are processed
sequentially in the order they appear in this list, with delays being
cumulative across orders.

When powering off, all members are stopped immediately without delays.

PowerState describes the desired power state of a VirtualMachineGroup.

Please note this field may be omitted when creating a new VM group. This
ensures that the power states of any existing VMs that are added to the
group do not have their power states changed until the group’s power
state is explicitly altered.

However, once the field is set to a non-empty value, it may no longer be
set to an empty value. This means that if the group’s power state is
PoweredOn, and a VM whose power state is PoweredOff is added to the
group, that VM will be powered on.

Enum: [PoweredOff PoweredOn Suspended]

nextForcePowerStateSyncTime string

NextForcePowerStateSyncTime may be used to force sync the power state of
the group to all of its members, by setting the value of this field to
"now" (case-insensitive).

A mutating webhook changes this value to the current time (UTC), which
the VM Group controller then uses to trigger a sync of the group’s power
state to its members.

Please note it is not possible to schedule future syncs using this field.
The only value that users may set is the string "now" (case-insensitive).

PowerOffMode describes the desired behavior when powering off a VM Group.
Refer to the VirtualMachine.PowerOffMode field for more details.

Please note this field is only propagated to the group’s members when
the group’s power state is changed or the nextForcePowerStateSyncTime
field is set to "now".

Enum: [Hard Soft TrySoft]

SuspendMode describes the desired behavior when suspending a VM Group.
Refer to the VirtualMachine.SuspendMode field for more details.

Please note this field is only propagated to the group’s members when
the group’s power state is changed or the nextForcePowerStateSyncTime
field is set to "now".

Enum: [Hard Soft TrySoft]

VirtualMachineGroupStatus

VirtualMachineGroupStatus defines the observed state of VirtualMachineGroup.

Appears In:
Field Description Default Validation

Members describes the observed status of group members.

lastUpdatedPowerStateTime Time

LastUpdatedPowerStateTime describes the observed time when the power
state of the group was last updated.

conditions Condition array

Conditions describes any conditions associated with this VM Group.

  • The ReadyType condition is True when all of the group members have
    all of their expected conditions set to True.

VirtualMachineImage

VirtualMachineImage is the schema for the virtualmachineimages API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha2

kind string

VirtualMachineImage

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineImageOSInfo

VirtualMachineImageOSInfo describes the image’s guest operating system.

Field Description Default Validation

id string

ID describes the operating system ID.

This value is also added to the image resource’s labels as
VirtualMachineImageOSIDLabel.

type string

Type describes the operating system type.

This value is also added to the image resource’s labels as
VirtualMachineImageOSTypeLabel.

version string

Version describes the operating system version.

This value is also added to the image resource’s labels as
VirtualMachineImageOSVersionLabel.

VirtualMachineImageProductInfo

VirtualMachineImageProductInfo describes product information for an image.

Field Description Default Validation

product string

Product is a general descriptor for the image.

vendor string

Vendor describes the organization/user that produced the image.

version string

Version describes the short-form version of the image.

fullVersion string

FullVersion describes the long-form version of the image.

VirtualMachineImageSpec

VirtualMachineImageSpec defines the desired state of VirtualMachineImage.

Field Description Default Validation

providerRef LocalObjectRef

ProviderRef is a reference to the resource that contains the source of
this image’s information.

VirtualMachineImageStatus

VirtualMachineImageStatus defines the observed state of VirtualMachineImage.

Field Description Default Validation

name string

Name describes the display name of this image.

capabilities string array

Capabilities describes the image’s observed capabilities.

The capabilities are discerned when VM Operator reconciles an image.
If the source of an image is an OVF in Content Library, then the
capabilities are parsed from the OVF property
capabilities.image.vmoperator.vmware.com as a comma-separated list of
values. Well-known capabilities include:

  • cloud-init

  • nvidia-gpu

  • sriov-net

Every capability is also added to the resource’s labels as
VirtualMachineImageCapabilityLabel + Value. For example, if the
capability is "cloud-init" then the following label will be added to the
resource: capability.image.vmoperator.vmware.com/cloud-init.

firmware string

Firmware describe the firmware type used by this image, ex. BIOS, EFI.

hardwareVersion integer

HardwareVersion describes the observed hardware version of this image.

OSInfo describes the observed operating system information for this
image.

The OS information is also added to the image resource’s labels. Please
refer to VirtualMachineImageOSInfo for more information.

ovfProperties OVFProperty array

OVFProperties describes the observed user configurable OVF properties defined for this
image.

vmwareSystemProperties KeyValuePair array

VMwareSystemProperties describes the observed VMware system properties defined for
this image.

ProductInfo describes the observed product information for this image.

providerContentVersion string

ProviderContentVersion describes the content version from the provider item
that this image corresponds to. If the provider of this image is a Content
Library, this will be the version of the corresponding Content Library item.

providerItemID string

ProviderItemID describes the ID of the provider item that this image corresponds to.
If the provider of this image is a Content Library, this ID will be that of the
corresponding Content Library item.

conditions Condition array

Conditions describes the observed conditions for this image.

VirtualMachineNetworkConfigDHCPOptionsStatus

VirtualMachineNetworkConfigDHCPOptionsStatus describes the configured DHCP options.

Field Description Default Validation

enabled boolean

Enabled describes whether DHCP is enabled.

VirtualMachineNetworkConfigDHCPStatus

VirtualMachineNetworkConfigDHCPStatus describes the configured state of the system-wide DHCP settings for IP4 and IP6.

Field Description Default Validation

IP4 describes the configured state of the IP4 DHCP settings.

IP6 describes the configured state of the IP6 DHCP settings.

VirtualMachineNetworkConfigDNSStatus

VirtualMachineNetworkConfigDNSStatus describes the configured state of the RFC 1034 client-side DNS settings.

Field Description Default Validation

hostName string

HostName is the host name portion of the DNS name. For example,
the "my-vm" part of "my-vm.domain.local".

nameservers string array

Nameservers is a list of the IP addresses for the DNS servers to use.

IP4 addresses are specified using dotted decimal notation. For example,
"192.0.2.1".

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
symbol '::' to represent multiple 16-bit groups of contiguous 0’s only
once in an address as described in RFC 2373.

searchDomains string array

SearchDomains is a list of domains in which to search for hosts, in the
order of preference.

VirtualMachineNetworkConfigInterfaceIPStatus

VirtualMachineNetworkConfigInterfaceIPStatus describes the configured state of a VM’s network interface’s IP configuration.

Field Description Default Validation

DHCP describes the interface’s configured DHCP options.

addresses string array

Addresses describes configured IP addresses for this interface.
Addresses include the network’s prefix length, ex. 192.168.0.0/24 or
2001:DB8:101::230:6eff:fe04:d9ff::/64.

gateway4 string

Gateway4 describes the interface’s configured, default, IP4 gateway.

Please note the IP address include the network prefix length, ex.
192.168.0.1/24.

gateway6 string

Gateway6 describes the interface’s configured, default, IP6 gateway.

Please note the IP address includes the network prefix length, ex.
2001:db8:101::1/64.

VirtualMachineNetworkConfigInterfaceStatus

VirtualMachineNetworkConfigInterfaceStatus describes the configured state of network interface.

Field Description Default Validation

name string

Name describes the corresponding network interface with the same name
in the VM’s desired network interface list.

Please note this name is not necessarily related to the name of the
device as it is surfaced inside of the guest.

IP describes the interface’s configured IP information.

DNS describes the interface’s configured DNS information.

VirtualMachineNetworkConfigStatus

Field Description Default Validation

Interfaces describes the configured state of the network interfaces.

DNS describes the configured state of client-side DNS.

VirtualMachineNetworkDHCPOptionsStatus

VirtualMachineNetworkDHCPOptionsStatus describes the observed state of DHCP options.

Field Description Default Validation

config KeyValuePair array

Config describes platform-dependent settings for the DHCP client.

The key part is a unique number while the value part is the platform
specific configuration command. For example on Linux and BSD systems
using the file dhclient.conf output would be reported at system scope:
key='1', value='timeout 60;' key='2', value='reboot 10;'. The output
reported per interface would be:
key='1', value='prepend domain-name-servers 192.0.2.1;'
key='2', value='require subnet-mask, domain-name-servers;'.

enabled boolean

Enabled reports the status of the DHCP client services.

VirtualMachineNetworkDHCPStatus

VirtualMachineNetworkDHCPStatus describes the observed state of the client-side, system-wide DHCP settings for IP4 and IP6.

Field Description Default Validation

IP4 describes the observed state of the IP4 DHCP client settings.

IP6 describes the observed state of the IP6 DHCP client settings.

VirtualMachineNetworkDNSStatus

VirtualMachineNetworkDNSStatus describes the observed state of the guest’s RFC 1034 client-side DNS settings.

Field Description Default Validation

dhcp boolean

DHCP indicates whether or not dynamic host control protocol (DHCP) was
used to configure DNS configuration.

domainName string

DomainName is the domain name portion of the DNS name. For example,
the "domain.local" part of "my-vm.domain.local".

hostName string

HostName is the host name portion of the DNS name. For example,
the "my-vm" part of "my-vm.domain.local".

nameservers string array

Nameservers is a list of the IP addresses for the DNS servers to use.

IP4 addresses are specified using dotted decimal notation. For example,
"192.0.2.1".

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
symbol '::' to represent multiple 16-bit groups of contiguous 0’s only
once in an address as described in RFC 2373.

searchDomains string array

SearchDomains is a list of domains in which to search for hosts, in the
order of preference.

VirtualMachineNetworkIPRouteGatewayStatus

VirtualMachineNetworkIPRouteGatewayStatus describes the observed state of a guest network’s IP route’s next hop gateway.

Field Description Default Validation

device string

Device is the name of the device in the guest for which this gateway
applies.

address string

Address is the IP4 or IP6 address of the gateway.

VirtualMachineNetworkIPRouteStatus

VirtualMachineNetworkIPRouteStatus describes the observed state of a guest network’s IP routes.

Field Description Default Validation

Gateway describes where to send the packets to next.

networkAddress string

NetworkAddress is the IP4 or IP6 address of the destination network.

Addresses include the network’s prefix length, ex. 192.168.0.0/24 or
2001:DB8:101::230:6eff:fe04:d9ff::/64.

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of symbol
'::' to represent multiple 16-bit groups of contiguous 0’s only once in
an address as described in RFC 2373.

VirtualMachineNetworkIPStackStatus

VirtualMachineNetworkIPStackStatus describes the observed state of a VM’s IP stack.

Field Description Default Validation

DHCP describes the VM’s observed, client-side, system-wide DHCP options.

DNS describes the VM’s observed, client-side DNS configuration.

IPRoutes contain the VM’s routing tables for all address families.

kernelConfig KeyValuePair array

KernelConfig describes the observed state of the VM’s kernel IP
configuration settings.

The key part contains a unique number while the value part contains the
'key=value' as provided by the underlying provider. For example, on
Linux and/or BSD, the systcl -a output would be reported as:
key='5', value='net.ipv4.tcp_keepalive_time = 7200'.

VirtualMachineNetworkInterfaceIPAddrStatus

VirtualMachineNetworkInterfaceIPAddrStatus describes information about a specific IP address.

Field Description Default Validation

address string

Address is an IP4 or IP6 address and their network prefix length.

An IP4 address is specified using dotted decimal notation. For example,
"192.0.2.1".

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
symbol '::' to represent multiple 16-bit groups of contiguous 0’s only
once in an address as described in RFC 2373.

lifetime Time

Lifetime describes when this address will expire.

origin string

Origin describes how this address was configured.

Enum: [dhcp linklayer manual other random]

state string

State describes the state of this IP address.

Enum: [deprecated duplicate inaccessible invalid preferred tentative unknown]

VirtualMachineNetworkInterfaceIPStatus

VirtualMachineNetworkInterfaceIPStatus describes the observed state of a VM’s network interface’s IP configuration.

Field Description Default Validation

autoConfigurationEnabled boolean

AutoConfigurationEnabled describes whether or not ICMPv6 router
solicitation requests are enabled or disabled from a given interface.

These requests acquire an IP6 address and default gateway route from
zero-to-many routers on the connected network.

If not set then ICMPv6 is not available on this VM.

DHCP describes the VM’s observed, client-side, interface-specific DHCP
options.

Addresses describes observed IP addresses for this interface.

macAddr string

MACAddr describes the observed MAC address for this interface.

VirtualMachineNetworkInterfaceSpec

VirtualMachineNetworkInterfaceSpec describes the desired state of a VM’s network interface.

Field Description Default Validation

name string

Name describes the unique name of this network interface, used to
distinguish it from other network interfaces attached to this VM.

When the bootstrap provider is Cloud-Init and GuestDeviceName is not
specified, the device inside the guest will be renamed to this value.
Please note it is up to the user to ensure the provided name does not
conflict with any other devices inside the guest, ex. dvd, cdrom, sda, etc.

Pattern: ^[a-z0-9]\{2,}$

Network is the name of the network resource to which this interface is
connected.

If no network is provided, then this interface will be connected to the
Namespace’s default network.

guestDeviceName string

GuestDeviceName is used to rename the device inside the guest when the
bootstrap provider is Cloud-Init. Please note it is up to the user to
ensure the provided device name does not conflict with any other devices
inside the guest, ex. dvd, cdrom, sda, etc.

Pattern: ^\w\w+$

macAddr string

MACAddr is the optional MAC address of this interface.

If no MAC address is provided, one will be generated by either the network
provider or vCenter.

Please note this field is only supported when the Network API Group is
crd.nsx.vmware.com.

Pattern: ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$

addresses string array

Addresses is an optional list of IP4 or IP6 addresses to assign to this
interface.

Please note this field is only supported if the connected network
supports manual IP allocation.

Please note IP4 and IP6 addresses must include the network prefix length,
ex. 192.168.0.10/24 or 2001:db8:101::a/64.

Please note this field may not contain IP4 addresses if DHCP4 is set
to true or IP6 addresses if DHCP6 is set to true.

dhcp4 boolean

DHCP4 indicates whether or not this interface uses DHCP for IP4
networking.

Please note this field is only supported if the network connection
supports DHCP.

Please note this field is mutually exclusive with IP4 addresses in the
Addresses field and the Gateway4 field.

dhcp6 boolean

DHCP6 indicates whether or not this interface uses DHCP for IP6
networking.

Please note this field is only supported if the network connection
supports DHCP.

Please note this field is mutually exclusive with IP6 addresses in the
Addresses field and the Gateway6 field.

gateway4 string

Gateway4 is the default, IP4 gateway for this interface.

If unset, the gateway from the network provider will be used. However,
if set to "None", the network provider gateway will be ignored.

Please note this field is only supported if the network connection
supports manual IP allocation.

Please note this field is mutually exclusive with DHCP4.

gateway6 string

Gateway6 is the primary IP6 gateway for this interface.

If unset, the gateway from the network provider will be used. However,
if set to "None", the network provider gateway will be ignored.

Please note this field is only supported if the network connection
supports manual IP allocation.

Please note this field is mutually exclusive with DHCP6.

mtu integer

MTU is the Maximum Transmission Unit size in bytes.

Please note this feature is available only with the following bootstrap
providers: CloudInit.

nameservers string array

Nameservers is a list of IP4 and/or IP6 addresses used as DNS
nameservers.

Please note this feature is available only with the following bootstrap
providers: CloudInit and Sysprep.

When using CloudInit and UseGlobalNameserversAsDefault is either unset or
true, if nameservers is not provided, the global nameservers will be used
instead.

Please note that Linux allows only three nameservers
(https://linux.die.net/man/5/resolv.conf).

Routes is a list of optional, static routes.

Please note this feature is available only with the following bootstrap
providers: CloudInit.

searchDomains string array

SearchDomains is a list of search domains used when resolving IP
addresses with DNS.

Please note this feature is available only with the following bootstrap
providers: CloudInit.

When using CloudInit and UseGlobalSearchDomainsAsDefault is either unset
or true, if search domains is not provided, the global search domains
will be used instead.

VirtualMachineNetworkInterfaceStatus

VirtualMachineNetworkInterfaceStatus describes the observed state of a VM’s network interface.

Field Description Default Validation

name string

Name describes the corresponding network interface with the same name
in the VM’s desired network interface list. If unset, then there is no
corresponding entry for this interface.

Please note this name is not necessarily related to the name of the
device as it is surfaced inside of the guest.

deviceKey integer

DeviceKey describes the unique hardware device key of this network
interface.

IP describes the observed state of the interface’s IP configuration.

DNS describes the observed state of the interface’s DNS configuration.

VirtualMachineNetworkRouteSpec

VirtualMachineNetworkRouteSpec defines a static route for a guest.

Field Description Default Validation

to string

To is either "default", or an IP4 or IP6 address.

via string

Via is an IP4 or IP6 address.

metric integer

Metric is the weight/priority of the route.

Minimum: 1

VirtualMachineNetworkSpec

VirtualMachineNetworkSpec defines a VM’s desired network configuration.

Appears In:
Field Description Default Validation

hostName string

HostName is the value the guest uses as its host name.
If omitted then the name of the VM will be used.

Please note this feature is available only with the following bootstrap
providers: CloudInit, LinuxPrep, and Sysprep (except for RawSysprep).

When the bootstrap provider is Sysprep (except for RawSysprep) this is
used as the Computer Name.

disabled boolean

Disabled is a flag that indicates whether or not to disable networking
for this VM.

When set to true, the VM is not configured with a default interface nor
any specified from the Interfaces field.

nameservers string array

Nameservers is a list of IP4 and/or IP6 addresses used as DNS
nameservers. These are applied globally.

Please note global nameservers are only available with the following
bootstrap providers: LinuxPrep and Sysprep. The Cloud-Init bootstrap
provider supports per-interface nameservers. However, when Cloud-Init
is used and UseGlobalNameserversAsDefault is true, the global
nameservers will be used when the per-interface nameservers is not
provided.

Please note that Linux allows only three nameservers
(https://linux.die.net/man/5/resolv.conf).

searchDomains string array

SearchDomains is a list of search domains used when resolving IP
addresses with DNS. These are applied globally.

Please note global search domains are only available with the following
bootstrap providers: LinuxPrep and Sysprep. The Cloud-Init bootstrap
provider supports per-interface search domains. However, when Cloud-Init
is used and UseGlobalSearchDomainsAsDefault is true, the global search
domains will be used when the per-interface search domains is not provided.

Interfaces is the list of network interfaces used by this VM.

If the Interfaces field is empty and the Disabled field is false, then
a default interface with the name eth0 will be created.

The maximum number of network interface allowed is 10 because of the limit
built into vSphere.

MaxItems: 10

VirtualMachineNetworkStatus

VirtualMachineNetworkStatus defines the observed state of a VM’s network configuration.

Appears In:
Field Description Default Validation

Config describes the resolved, configured network settings for the VM,
such as an interface’s IP address obtained from IPAM, or global DNS
settings.

Please note this information does not represent the observed network
state of the VM, but is intended for situations where someone boots a VM
with no appropriate bootstrap engine and needs to know the network config
valid for the deployed VM.

hostName string

HostName describes the observed hostname reported by the VirtualMachine’s
guest operating system.

Please note, this value is only reported if VMware Tools is installed in
the guest, and the value may or may not be a fully qualified domain name
(FQDN), it simply depends on what is reported by the guest.

Interfaces describes the status of the VM’s network interfaces.

IPStacks describes information about the guest’s configured IP networking
stacks.

primaryIP4 string

PrimaryIP4 describes the VM’s primary IP4 address.

If the bootstrap provider is CloudInit then this value is set to the
value of the VM’s "guestinfo.local-ipv4" property. Please see
https://bit.ly/3NJB534 for more information on how this value is
calculated.

If the bootstrap provider is anything else then this field is set to the
value of the infrastructure VM’s "guest.ipAddress" field. Please see
https://bit.ly/3Au0jM4 for more information.

primaryIP6 string

PrimaryIP6 describes the VM’s primary IP6 address.

If the bootstrap provider is CloudInit then this value is set to the
value of the VM’s "guestinfo.local-ipv6" property. Please see
https://bit.ly/3NJB534 for more information on how this value is
calculated.

If the bootstrap provider is anything else then this field is set to the
value of the infrastructure VM’s "guest.ipAddress" field. Please see
https://bit.ly/3Au0jM4 for more information.

VirtualMachinePlacementStatus

Field Description Default Validation

zoneID string

Zone describes the recommended zone for this VM.

node string

Node describes the recommended node for this VM.

pool string

Pool describes the recommended resource pool for this VM.

Datastores describe the recommended datastores for this VM.
This includes the recommendations for each of the VM’s disks
and files.

VirtualMachinePowerOpMode

Underlying type: string

VirtualMachinePowerOpMode represents the various power operation modes when powering off or suspending a VM.

Validation:
  • Enum: [Hard Soft TrySoft]

VirtualMachinePowerState

Underlying type: string

VirtualMachinePowerState defines a VM’s desired and observed power states.

Validation:
  • Enum: [PoweredOff PoweredOn Suspended]

VirtualMachinePublishRequest

VirtualMachinePublishRequest defines the information necessary to publish a VirtualMachine as a VirtualMachineImage to an image registry.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha2

kind string

VirtualMachinePublishRequest

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachinePublishRequestSource

VirtualMachinePublishRequestSource is the source of a publication request, typically a VirtualMachine resource.

Field Description Default Validation

name string

Name is the name of the referenced object.

If omitted this value defaults to the name of the
VirtualMachinePublishRequest resource.

apiVersion string

APIVersion is the API version of the referenced object.

vmoperator.vmware.com/v1alpha1

kind string

Kind is the kind of referenced object.

VirtualMachine

VirtualMachinePublishRequestSpec

VirtualMachinePublishRequestSpec defines the desired state of a VirtualMachinePublishRequest.

All the fields in this spec are optional. This is especially useful when a DevOps persona wants to publish a VM without doing anything more than applying a VirtualMachinePublishRequest resource that has the same name as said VM in the same namespace as said VM.

Field Description Default Validation

Source is the source of the publication request, ex. a VirtualMachine
resource.

If this value is omitted then the publication controller checks to
see if there is a resource with the same name as this
VirtualMachinePublishRequest resource, an API version equal to
spec.source.apiVersion, and a kind equal to spec.source.kind. If such
a resource exists, then it is the source of the publication.

Target is the target of the publication request, ex. item
information and a ContentLibrary resource.

If this value is omitted, the controller uses spec.source.name + "-image"
as the name of the published item. Additionally, when omitted the
controller attempts to identify the target location by matching a
resource with an API version equal to spec.target.location.apiVersion, a
kind equal to spec.target.location.kind, w/ the label
"imageregistry.vmware.com/default".

Please note that while optional, if a VirtualMachinePublishRequest sans
target information is applied to a namespace without a default
publication target, then the VirtualMachinePublishRequest resource
will be marked in error.

ttlSecondsAfterFinished integer

TTLSecondsAfterFinished is the time-to-live duration for how long this
resource will be allowed to exist once the publication operation
completes. After the TTL expires, the resource will be automatically
deleted without the user having to take any direct action.

If this field is unset then the request resource will not be
automatically deleted. If this field is set to zero then the request
resource is eligible for deletion immediately after it finishes.

Minimum: 0

VirtualMachinePublishRequestStatus

VirtualMachinePublishRequestStatus defines the observed state of a VirtualMachinePublishRequest.

Field Description Default Validation

SourceRef is the reference to the source of the publication request,
ex. a VirtualMachine resource.

TargetRef is the reference to the target of the publication request,
ex. item information and a ContentLibrary resource.

completionTime Time

CompletionTime represents time when the request was completed. It is not
guaranteed to be set in happens-before order across separate operations.
It is represented in RFC3339 form and is in UTC.

The value of this field should be equal to the value of the
LastTransitionTime for the status condition Type=Complete.

startTime Time

StartTime represents time when the request was acknowledged by the
controller. It is not guaranteed to be set in happens-before order
across separate operations. It is represented in RFC3339 form and is
in UTC.

attempts integer

Attempts represents the number of times the request to publish the VM
has been attempted.

lastAttemptTime Time

LastAttemptTime represents the time when the latest request was sent.

imageName string

ImageName is the name of the VirtualMachineImage resource that is
eventually realized in the same namespace as the VM and publication
request after the publication operation completes.

This field will not be set until the VirtualMachineImage resource
is realized.

ready boolean

Ready is set to true only when the VM has been published successfully
and the new VirtualMachineImage resource is ready.

Readiness is determined by waiting until there is status condition
Type=Complete and ensuring it and all other status conditions present
have a Status=True. The conditions present will be:

  • SourceValid

  • TargetValid

  • Uploaded

  • ImageAvailable

  • Complete

conditions Condition array

Conditions is a list of the latest, available observations of the
request’s current state.

VirtualMachinePublishRequestTarget

VirtualMachinePublishRequestTarget is the target of a publication request, typically a ContentLibrary resource.

Field Description Default Validation

Item contains information about the name of the object to which
the VM is published.

Please note this value is optional and if omitted, the controller
will use spec.source.name + "-image" as the name of the published
item.

Location contains information about the location to which to publish
the VM.

VirtualMachinePublishRequestTargetItem

VirtualMachinePublishRequestTargetItem is the item part of a publication request’s target.

Field Description Default Validation

name string

Name is the name of the published object.

If the spec.target.location.apiVersion equals
imageregistry.vmware.com/v1alpha1 and the spec.target.location.kind
equals ContentLibrary, then this should be the name that will
show up in vCenter Content Library, not the custom resource name
in the namespace.

If omitted then the controller will use spec.source.name + "-image".

description string

Description is the description to assign to the published object.

VirtualMachinePublishRequestTargetLocation

VirtualMachinePublishRequestTargetLocation is the location part of a publication request’s target.

Field Description Default Validation

name string

Name is the name of the referenced object.

Please note an error will be returned if this field is not
set in a namespace that lacks a default publication target.

A default publication target is a resource with an API version
equal to spec.target.location.apiVersion, a kind equal to
spec.target.location.kind, and has the label
"imageregistry.vmware.com/default".

apiVersion string

APIVersion is the API version of the referenced object.

imageregistry.vmware.com/v1alpha1

kind string

Kind is the kind of referenced object.

ContentLibrary

VirtualMachineReadinessProbeSpec

VirtualMachineReadinessProbeSpec describes a probe used to determine if a VM is in a ready state. All probe actions are mutually exclusive.

Appears In:
Field Description Default Validation

tcpSocket TCPSocketAction

TCPSocket specifies an action involving a TCP port.

Deprecated: The TCPSocket action requires network connectivity that is not supported in all environments.
This field will be removed in a later API version.

guestHeartbeat GuestHeartbeatAction

GuestHeartbeat specifies an action involving the guest heartbeat status.

guestInfo GuestInfoAction array

GuestInfo specifies an action involving key/value pairs from GuestInfo.

The elements are evaluated with the logical AND operator, meaning
all expressions must evaluate as true for the probe to succeed.

For example, a VM resource’s probe definition could be specified as the
following:

guestInfo:
- key: ready
value: true

With the above configuration in place, the VM would not be considered
ready until the GuestInfo key "ready" was set to the value "true".

From within the guest operating system it is possible to set GuestInfo
key/value pairs using the program "vmware-rpctool," which is included
with VM Tools. For example, the following command will set the key
"guestinfo.ready" to the value "true":

vmware-rpctool "info-set guestinfo.ready true"

Once executed, the VM’s readiness probe will be signaled and the
VM resource will be marked as ready.

timeoutSeconds integer

TimeoutSeconds specifies a number of seconds after which the probe times out.
Defaults to 10 seconds. Minimum value is 1.

Maximum: 60
Minimum: 1

periodSeconds integer

PeriodSeconds specifics how often (in seconds) to perform the probe.
Defaults to 10 seconds. Minimum value is 1.

Minimum: 1

VirtualMachineReservedSpec

VirtualMachineReservedSpec describes a set of VM configuration options reserved for system use. Modification attempts by DevOps users will result in a validation error.

Appears In:
Field Description Default Validation

resourcePolicyName string

ResourcePolicyName describes the name of a
VirtualMachineSetResourcePolicy resource used to configure the VM’s
resource policy.

VirtualMachineResourceSpec

VirtualMachineResourceSpec describes a virtual hardware policy specification.

Field Description Default Validation

cpu Quantity

memory Quantity

VirtualMachineService

VirtualMachineService is the Schema for the virtualmachineservices API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha2

kind string

VirtualMachineService

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineServicePort

VirtualMachineServicePort describes the specification of a service port to be exposed by a VirtualMachineService. This VirtualMachineServicePort specification includes attributes that define the external and internal representation of the service port.

Field Description Default Validation

name string

Name describes the name to be used to identify this
VirtualMachineServicePort.

protocol string

Protocol describes the Layer 4 transport protocol for this port.
Supports "TCP", "UDP", and "SCTP".

port integer

Port describes the external port that will be exposed by the service.

targetPort integer

TargetPort describes the internal port open on a VirtualMachine that
should be mapped to the external Port.

VirtualMachineServiceSpec

VirtualMachineServiceSpec defines the desired state of VirtualMachineService.

Appears In:
Field Description Default Validation

Type specifies a desired VirtualMachineServiceType for this
VirtualMachineService. Supported types are ClusterIP, LoadBalancer,
ExternalName.

Ports specifies a list of VirtualMachineServicePort to expose with this
VirtualMachineService. Each of these ports will be an accessible network
entry point to access this service by.

selector object (keys:string, values:string)

Selector specifies a map of key-value pairs, also known as a Label
Selector, that is used to match this VirtualMachineService with the set
of VirtualMachines that should back this VirtualMachineService.

loadBalancerIP string

Only applies to VirtualMachineService Type: LoadBalancer
LoadBalancer will get created with the IP specified in this field.
This feature depends on whether the underlying load balancer provider
supports specifying the loadBalancerIP when a load balancer is created.
This field will be ignored if the provider does not support the feature.
Deprecated: This field was under-specified and its meaning varies across implementations.
Using it is non-portable and it may not support dual-stack.
Users are encouraged to use implementation-specific annotations when available.

loadBalancerSourceRanges string array

LoadBalancerSourceRanges is an array of IP addresses in the format of
CIDRs, for example: 103.21.244.0/22 and 10.0.0.0/24.
If specified and supported by the load balancer provider, this will
restrict ingress traffic to the specified client IPs. This field will be
ignored if the provider does not support the feature.

clusterIp string

clusterIP is the IP address of the service and is usually assigned
randomly by the master. If an address is specified manually and is not in
use by others, it will be allocated to the service; otherwise, creation
of the service will fail. This field can not be changed through updates.
Valid values are "None", empty string (""), or a valid IP address. "None"
can be specified for headless services when proxying is not required.
Only applies to types ClusterIP and LoadBalancer.
Ignored if type is ExternalName.
More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

externalName string

externalName is the external reference that kubedns or equivalent will
return as a CNAME record for this service. No proxying will be involved.
Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123)
and requires Type to be ExternalName.

VirtualMachineServiceStatus

VirtualMachineServiceStatus defines the observed state of VirtualMachineService.

Appears In:
Field Description Default Validation

loadBalancer LoadBalancerStatus

LoadBalancer contains the current status of the load balancer,
if one is present.

VirtualMachineServiceType

Underlying type: string

VirtualMachineServiceType string describes ingress methods for a service.

VirtualMachineSetResourcePolicy

VirtualMachineSetResourcePolicy is the Schema for the virtualmachinesetresourcepolicies API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha2

kind string

VirtualMachineSetResourcePolicy

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineSetResourcePolicySpec

VirtualMachineSetResourcePolicySpec defines the desired state of VirtualMachineSetResourcePolicy.

Field Description Default Validation

resourcePool ResourcePoolSpec

folder string

clusterModuleGroups string array

VirtualMachineSetResourcePolicyStatus

VirtualMachineSetResourcePolicyStatus defines the observed state of VirtualMachineSetResourcePolicy.

Field Description Default Validation

resourcePools ResourcePoolStatus array

clustermodules VSphereClusterModuleStatus array

VirtualMachineSpec

VirtualMachineSpec defines the desired state of a VirtualMachine.

Appears In:
Field Description Default Validation

imageName string

ImageName describes the name of the image resource used to deploy this
VM.

This field may be used to specify the name of a VirtualMachineImage
or ClusterVirtualMachineImage resource. The resolver first checks to see
if there is a VirtualMachineImage with the specified name in the
same namespace as the VM being deployed. If no such resource exists, the
resolver then checks to see if there is a ClusterVirtualMachineImage
resource with the specified name.

This field may also be used to specify the display name (vSphere name) of
a VirtualMachineImage or ClusterVirtualMachineImage resource. If the
display name unambiguously resolves to a distinct VM image (among all
existing VirtualMachineImages in the VM’s namespace and all existing
ClusterVirtualMachineImages), then a mutation webhook updates this field
with the VM image resource name. If the display name resolves to multiple
or no VM images, then the mutation webhook denies the request and outputs
an error message accordingly.

className string

ClassName describes the name of the VirtualMachineClass resource used to
deploy this VM.

affinity AffinitySpec

Affinity describes the VM’s scheduling constraints.

Crypto describes the desired encryption state of the VirtualMachine.

storageClass string

StorageClass describes the name of a Kubernetes StorageClass resource
used to configure this VM’s storage-related attributes.

Please see https://kubernetes.io/docs/concepts/storage/storage-classes/
for more information on Kubernetes storage classes.

Bootstrap describes the desired state of the guest’s bootstrap
configuration.

If omitted, a default bootstrap method may be selected based on the
guest OS identifier. If Linux, then the LinuxPrep method is used.

Network describes the desired network configuration for the VM.

Please note this value may be omitted entirely and the VM will be
assigned a single, virtual network interface that is connected to the
Namespace’s default network.

PowerState describes the desired power state of a VirtualMachine.

Please note this field may be omitted when creating a new VM and will
default to "PoweredOn." However, once the field is set to a non-empty
value, it may no longer be set to an empty value.

Additionally, setting this value to "Suspended" is not supported when
creating a new VM. The valid values when creating a new VM are
"PoweredOn" and "PoweredOff." An empty value is also allowed on create
since this value defaults to "PoweredOn" for new VMs.

Enum: [PoweredOff PoweredOn Suspended]

PowerOffMode describes the desired behavior when powering off a VM.

There are three, supported power off modes: Hard, Soft, and
TrySoft. The first mode, Hard, is the equivalent of a physical
system’s power cord being ripped from the wall. The Soft mode
requires the VM’s guest to have VM Tools installed and attempts to
gracefully shutdown the VM. Its variant, TrySoft, first attempts
a graceful shutdown, and if that fails or the VM is not in a powered off
state after five minutes, the VM is halted.

If omitted, the mode defaults to TrySoft.

TrySoft

Enum: [Hard Soft TrySoft]

SuspendMode describes the desired behavior when suspending a VM.

There are three, supported suspend modes: Hard, Soft, and
TrySoft. The first mode, Hard, is where vSphere suspends the VM to
disk without any interaction inside of the guest. The Soft mode
requires the VM’s guest to have VM Tools installed and attempts to
gracefully suspend the VM. Its variant, TrySoft, first attempts
a graceful suspend, and if that fails or the VM is not in a put into
standby by the guest after five minutes, the VM is suspended.

If omitted, the mode defaults to TrySoft.

TrySoft

Enum: [Hard Soft TrySoft]

nextRestartTime string

NextRestartTime may be used to restart the VM, in accordance with
RestartMode, by setting the value of this field to "now"
(case-insensitive).

A mutating webhook changes this value to the current time (UTC), which
the VM controller then uses to determine the VM should be restarted by
comparing the value to the timestamp of the last time the VM was
restarted.

Please note it is not possible to schedule future restarts using this
field. The only value that users may set is the string "now"
(case-insensitive).

RestartMode describes the desired behavior for restarting a VM when
spec.nextRestartTime is set to "now" (case-insensitive).

There are three, supported suspend modes: Hard, Soft, and
TrySoft. The first mode, Hard, is where vSphere resets the VM without any
interaction inside of the guest. The Soft mode requires the VM’s guest to
have VM Tools installed and asks the guest to restart the VM. Its
variant, TrySoft, first attempts a soft restart, and if that fails or
does not complete within five minutes, the VM is hard reset.

If omitted, the mode defaults to TrySoft.

TrySoft

Enum: [Hard Soft TrySoft]

volumes VirtualMachineVolume array

Volumes describes a list of volumes that can be mounted to the VM.

ReadinessProbe describes a probe used to determine the VM’s ready state.

Advanced describes a set of optional, advanced VM configuration options.

Reserved describes a set of VM configuration options reserved for system
use.

Please note attempts to modify the value of this field by a DevOps user
will result in a validation error.

minHardwareVersion integer

MinHardwareVersion describes the desired, minimum hardware version.

The logic that determines the hardware version is as follows:

  1. If this field is set, then its value is used.

  2. Otherwise, if the VirtualMachineClass used to deploy the VM contains a
    non-empty hardware version, then it is used.

  3. Finally, if the hardware version is still undetermined, the value is
    set to the default hardware version for the Datacenter/Cluster/Host
    where the VM is provisioned.

This field is never updated to reflect the derived hardware version.
Instead, VirtualMachineStatus.HardwareVersion surfaces
the observed hardware version.

Please note, setting this field’s value to N ensures a VM’s hardware
version is equal to or greater than N. For example, if a VM’s observed
hardware version is 10 and this field’s value is 13, then the VM will be
upgraded to hardware version 13. However, if the observed hardware
version is 17 and this field’s value is 13, no change will occur.

Several features are hardware version dependent, for example:

  • NVMe Controllers >= 14

  • Dynamic Direct Path I/O devices >= 17

Please refer to https://kb.vmware.com/s/article/1003746 for a list of VM
hardware versions.

It is important to remember that a VM’s hardware version may not be
downgraded and upgrading a VM deployed from an image based on an older
hardware version to a more recent one may result in unpredictable
behavior. In other words, please be careful when choosing to upgrade a
VM to a newer hardware version.

Minimum: 13

groupName string

GroupName indicates the name of the VirtualMachineGroup to which this
VM belongs.

VMs that belong to a group do not drive their own placement, rather that
is handled by the group.

When this field is set to a valid group that contains this VM as a
member, an owner reference to that group is added to this VM.

When this field is deleted or changed, any existing owner reference to
the previous group will be removed from this VM.

VirtualMachineStatus

VirtualMachineStatus defines the observed state of a VirtualMachine instance.

Appears In:
Field Description Default Validation

Image is a reference to the VirtualMachineImage resource used to deploy
this VM.

Class is a reference to the VirtualMachineClass resource used to deploy
this VM.

host string

Host describes the hostname or IP address of the infrastructure host
where the VM is executed.

PowerState describes the observed power state of the VirtualMachine.

Enum: [PoweredOff PoweredOn Suspended]

conditions Condition array

Conditions describes the observed conditions of the VirtualMachine.

Network describes the observed state of the VM’s network configuration.
Please note much of the network status information is only available if
the guest has VM Tools installed.

uniqueID string

UniqueID describes a unique identifier that is provided by the underlying
infrastructure provider, such as vSphere.

biosUUID string

BiosUUID describes a unique identifier provided by the underlying
infrastructure provider that is exposed to the Guest OS BIOS as a unique
hardware identifier.

instanceUUID string

InstanceUUID describes the unique instance UUID provided by the
underlying infrastructure provider, such as vSphere.

Volumes describes a list of current status information for each Volume
that is desired to be attached to the VM.

changeBlockTracking boolean

ChangeBlockTracking describes the CBT enablement status on the VM.

zone string

Zone describes the availability zone where the VirtualMachine has been
scheduled.

Please note this field may be empty when the cluster is not zone-aware.

lastRestartTime Time

LastRestartTime describes the last time the VM was restarted.

hardwareVersion integer

HardwareVersion describes the VirtualMachine resource’s observed
hardware version.

Please refer to VirtualMachineSpec.MinHardwareVersion for more
information on the topic of a VM’s hardware version.

VirtualMachineVolume

VirtualMachineVolume represents a named volume in a VM.

Appears In:
Field Description Default Validation

name string

Name represents the volume’s name. Must be a DNS_LABEL and unique within
the VM.

persistentVolumeClaim PersistentVolumeClaimVolumeSource

PersistentVolumeClaim represents a reference to a PersistentVolumeClaim
in the same namespace.

VirtualMachineVolumeProvisioningMode

Underlying type: string

VirtualMachineVolumeProvisioningMode is the type used to express the desired or observed provisioning mode for a virtual machine disk.

Validation:
  • Enum: [Thin Thick ThickEagerZero]

VirtualMachineVolumeSource

VirtualMachineVolumeSource represents the source location of a volume to mount. Only one of its members may be specified.

Appears In:
Field Description Default Validation

persistentVolumeClaim PersistentVolumeClaimVolumeSource

PersistentVolumeClaim represents a reference to a PersistentVolumeClaim
in the same namespace.

VirtualMachineVolumeStatus

VirtualMachineVolumeStatus defines the observed state of a VirtualMachineVolume instance.

Appears In:
Field Description Default Validation

name string

Name is the name of the attached volume.

attached boolean

Attached represents whether a volume has been successfully attached to
the VirtualMachine or not.

diskUUID string

DiskUUID represents the underlying virtual disk UUID and is present when
attachment succeeds.

error string

Error represents the last error seen when attaching or detaching a
volume. Error will be empty if attachment succeeds.

VirtualMachineWebConsoleRequest

VirtualMachineWebConsoleRequest allows the creation of a one-time, web console connection to a VM.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha2

kind string

VirtualMachineWebConsoleRequest

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineWebConsoleRequestSpec

VirtualMachineWebConsoleRequestSpec describes the desired state for a web console request to a VM.

Field Description Default Validation

name string

Name is the name of a VM in the same Namespace as this web console
request.

publicKey string

PublicKey is used to encrypt the status.response. This is expected to be a RSA OAEP public key in X.509 PEM format.

VirtualMachineWebConsoleRequestStatus

VirtualMachineWebConsoleRequestStatus describes the observed state of the request.

Field Description Default Validation

response string

Response will be the authenticated ticket corresponding to this web console request.

expiryTime Time

ExpiryTime is the time at which access via this request will expire.

proxyAddr string

ProxyAddr describes the host address and optional port used to access
the VM’s web console.

The value could be a DNS entry, IPv4, or IPv6 address, followed by an
optional port. For example, valid values include:

DNS
* host.com
* host.com:6443

IPv4
* 1.2.3.4
* 1.2.3.4:6443

IPv6
* 1234:1234:1234:1234:1234:1234:1234:1234
* [1234:1234:1234:1234:1234:1234:1234:1234]:6443
* 1234:1234:1234:0000:0000:0000:1234:1234
* 1234:1234:1234::::1234:1234
* [1234:1234:1234::::1234:1234]:6443

In other words, the field may be set to any value that is parsable
by Go’s https://pkg.go.dev/net#ResolveIPAddr and
https://pkg.go.dev/net#ParseIP functions.

vmoperator.vmware.com/v1alpha3

Package v1alpha3 is one of the schemas for VM Operator.

AffinitySpec

AffinitySpec defines the group of affinity scheduling rules.

Appears In:
Field Description Default Validation

vmAffinity VMAffinitySpec

VMAffinity describes affinity scheduling rules related to other VMs.

vmAntiAffinity VMAntiAffinitySpec

VMAntiAffinity describes anti-affinity scheduling rules related to other
VMs.

ClusterVirtualMachineImage

ClusterVirtualMachineImage is the schema for the clustervirtualmachineimages API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha3

kind string

ClusterVirtualMachineImage

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

DynamicDirectPathIODevice

DynamicDirectPathIODevice contains the configuration corresponding to a Dynamic DirectPath I/O device.

Appears In:
Field Description Default Validation

vendorID integer

deviceID integer

customLabel string

GroupMember

GroupMember describes a member of a VirtualMachineGroup.

Field Description Default Validation

name string

Name is the name of member of this group.

kind string

Kind is the kind of member of this group, which can be either
VirtualMachine or VirtualMachineGroup.

If omitted, it defaults to VirtualMachine.

VirtualMachine

Enum: [VirtualMachine VirtualMachineGroup]

GuestHeartbeatAction

GuestHeartbeatAction describes an action based on the guest heartbeat.

Field Description Default Validation

thresholdStatus GuestHeartbeatStatus

ThresholdStatus is the value that the guest heartbeat status must be at or above to be
considered successful.

green

Enum: [yellow green]

GuestHeartbeatStatus

Underlying type: string

GuestHeartbeatStatus is the guest heartbeat status.

Appears In:

GuestInfoAction

GuestInfoAction describes a key from GuestInfo that must match the associated value expression.

Field Description Default Validation

key string

Key is the name of the GuestInfo key.

The key is automatically prefixed with "guestinfo." before being
evaluated. Thus if the key "guestinfo.mykey" is provided, it will be
evaluated as "guestinfo.guestinfo.mykey".

value string

Value is a regular expression that is matched against the value of the
specified key.

An empty value is the equivalent of "match any" or ".*".

All values must adhere to the RE2 regular expression syntax as documented
at https://golang.org/s/re2syntax. Invalid values may be rejected or
ignored depending on the implementation of this API. Either way, invalid
values will not be considered when evaluating the ready state of a VM.

InstanceStorage

InstanceStorage provides information used to configure instance storage volumes for a VirtualMachine.

Field Description Default Validation

storageClass string

StorageClass refers to the name of a StorageClass resource used to
provide the storage for the configured instance storage volumes.
The value of this field has no relationship to or bearing on the field
virtualMachine.spec.storageClass. Please note the referred StorageClass
must be available in the same namespace as the VirtualMachineClass that
uses it for configuring instance storage.

volumes InstanceStorageVolume array

Volumes describes instance storage volumes created for a VirtualMachine
instance that use this VirtualMachineClass.

InstanceStorageVolume

InstanceStorageVolume contains information required to create an instance storage volume on a VirtualMachine.

Appears In:
Field Description Default Validation

size Quantity

InstanceVolumeClaimVolumeSource

InstanceVolumeClaimVolumeSource contains information about the instance storage volume claimed as a PVC.

Field Description Default Validation

storageClass string

StorageClass is the name of the Kubernetes StorageClass that provides
the backing storage for this instance storage volume.

size Quantity

Size is the size of the requested instance storage volume.

LoadBalancerIngress

LoadBalancerIngress represents the status of a load balancer ingress point: traffic intended for the service should be sent to an ingress point. IP or Hostname may both be set in this structure. It is up to the consumer to determine which field should be used when accessing this LoadBalancer.

Appears In:
Field Description Default Validation

ip string

IP is set for load balancer ingress points that are specified by an IP
address.

hostname string

Hostname is set for load balancer ingress points that are specified by a
DNS address.

LoadBalancerStatus

LoadBalancerStatus represents the status of a load balancer.

Field Description Default Validation

ingress LoadBalancerIngress array

Ingress is a list containing ingress addresses for the load balancer.
Traffic intended for the service should be sent to any of these ingress
points.

NetworkDeviceStatus

NetworkDeviceStatus defines the network interface IP configuration including gateway, subnet mask and IP address as seen by OVF properties.

Appears In:
Field Description Default Validation

Gateway4 string

Gateway4 is the gateway for the IPv4 address family for this device.

MacAddress string

MacAddress is the MAC address of the network device.

IPAddresses string array

IpAddresses represents one or more IP addresses assigned to the network
device in CIDR notation, ex. "192.0.2.1/16".

NetworkStatus

NetworkStatus describes the observed state of the VM’s network configuration.

Field Description Default Validation

Devices NetworkDeviceStatus array

Devices describe a list of current status information for each
network interface that is desired to be attached to the
VirtualMachineTemplate.

Nameservers string array

Nameservers describe a list of the DNS servers accessible by one of the
VM’s configured network devices.

OVFProperty

OVFProperty describes an OVF property associated with an image. OVF properties may be used in conjunction with the vAppConfig bootstrap provider to customize a VM during its creation.

Field Description Default Validation

key string

Key describes the OVF property’s key.

type string

Type describes the OVF property’s type.

default string

Default describes the OVF property’s default value.

PersistentVolumeClaimVolumeSource

PersistentVolumeClaimVolumeSource is a composite for the Kubernetes corev1.PersistentVolumeClaimVolumeSource and instance storage options.

Field Description Default Validation

claimName string

claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

readOnly boolean

readOnly Will force the ReadOnly setting in VolumeMounts.
Default false.

instanceVolumeClaim InstanceVolumeClaimVolumeSource

InstanceVolumeClaim is set if the PVC is backed by instance storage.

ResourcePoolSpec

ResourcePoolSpec defines a Logical Grouping of workloads that share resource policies.

Field Description Default Validation

name string

Name describes the name of the ResourcePool grouping.

Reservations describes the guaranteed resources reserved for the
ResourcePool.

Limits describes the limit to resources available to the ResourcePool.

ResourcePoolStatus

ResourcePoolStatus describes the observed state of a vSphere child resource pool created for the Spec.ResourcePool.Name.

Field Description Default Validation

clusterMoID string

childResourcePoolMoID string

TCPSocketAction

TCPSocketAction describes an action based on opening a socket.

Field Description Default Validation

Port specifies a number or name of the port to access on the VM.
If the format of port is a number, it must be in the range 1 to 65535.
If the format of name is a string, it must be an IANA_SVC_NAME.

host string

Host is an optional host name to connect to. Host defaults to the VM IP.

VGPUDevice

VGPUDevice contains the configuration corresponding to a vGPU device.

Appears In:
Field Description Default Validation

profileName string

VMAffinitySpec

VMAffinitySpec defines the affinity requirements for scheduling rules related to other VMs.

Appears In:
Field Description Default Validation

requiredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

RequiredDuringSchedulingPreferredDuringExecution describes affinity
requirements that must be met or the VM will not be scheduled.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

preferredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

PreferredDuringSchedulingPreferredDuringExecution describes affinity
requirements that should be met, but the VM can still be scheduled if
the requirement cannot be satisfied. The scheduler will prefer to
schedule VMs that satisfy the affinity expressions specified by this
field, but it may choose to violate one or more of the expressions.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

VMAffinityTerm

VMAffinityTerm defines the VM affinity/anti-affinity term.

Field Description Default Validation

labelSelector LabelSelector

LabelSelector is a label query over a set of VMs.
When omitted, this term matches with no VMs.

topologyKey string

TopologyKey describes where this VM should be co-located (affinity) or not
co-located (anti-affinity).
Commonly used values include:
kubernetes.io/hostname — The rule is executed in the context of a node/host.
topology.kubernetes.io/zone — This rule is executed in the context of a zone.

Please note, The following rules apply when specifying the topology key in the context of a zone/host.

  • When topology key is in the context of a zone, the only supported verbs are
    PreferredDuringSchedulingPreferredDuringExecution and RequiredDuringSchedulingPreferredDuringExecution.

  • When topology key is in the context of a host, the only supported verbs are
    PreferredDuringSchedulingPreferredDuringExecution and RequiredDuringSchedulingPreferredDuringExecution
    for VM-VM node-level anti-affinity scheduling.

VMAntiAffinitySpec

VMAntiAffinitySpec defines the anti-affinity requirements for scheduling rules related to other VMs.

Appears In:
Field Description Default Validation

requiredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

RequiredDuringSchedulingPreferredDuringExecution describes anti-affinity
requirements that must be met or the VM will not be scheduled.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

preferredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

PreferredDuringSchedulingPreferredDuringExecution describes anti-affinity
requirements that should be met, but the VM can still be scheduled if
the requirement cannot be satisfied. The scheduler will prefer to
schedule VMs that satisfy the anti-affinity expressions specified by
this field, but it may choose to violate one or more of the expressions.
Additionally, it also describes the anti-affinity requirements that
should be met during run-time, but the VM can still be run if the
requirements cannot be satisfied.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

VSphereClusterModuleStatus

VSphereClusterModuleStatus describes the observed state of a vSphere cluster module.

Field Description Default Validation

groupName string

moduleUUID string

clusterMoID string

VirtualDevices

VirtualDevices contains information about the virtual devices associated with a VirtualMachineClass.

Field Description Default Validation

vgpuDevices VGPUDevice array

dynamicDirectPathIODevices DynamicDirectPathIODevice array

VirtualMachine

VirtualMachine is the schema for the virtualmachines API and represents the desired state and observed status of a virtualmachines resource.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha3

kind string

VirtualMachine

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineAdvancedSpec

VirtualMachineAdvancedSpec describes a set of optional, advanced VM configuration options.

Appears In:
Field Description Default Validation

bootDiskCapacity Quantity

BootDiskCapacity is the capacity of the VM’s boot disk — the first disk
from the VirtualMachineImage from which the VM was deployed.

Please note it is not advised to change this value while the VM is
running. Also, resizing the VM’s boot disk may require actions inside of
the guest to take advantage of the additional capacity. Finally, changing
the size of the VM’s boot disk, even increasing it, could adversely
affect the VM.

Please note this field is ignored if the VM is deployed from an ISO with
CD-ROM devices attached.

defaultVolumeProvisioningMode VirtualMachineVolumeProvisioningMode

DefaultVolumeProvisioningMode specifies the default provisioning mode for
persistent volumes managed by this VM.

Enum: [Thin Thick ThickEagerZero]

changeBlockTracking boolean

ChangeBlockTracking is a flag that enables incremental backup support
for this VM, a feature utilized by external backup systems such as
VMware Data Recovery.

VirtualMachineBootstrapCloudInitSpec

VirtualMachineBootstrapCloudInitSpec describes the CloudInit configuration used to bootstrap the VM.

Field Description Default Validation

instanceID string

InstanceID is the cloud-init metadata instance ID.
If omitted, this field defaults to the VM’s BiosUUID.

cloudConfig CloudConfig

CloudConfig describes a subset of a Cloud-Init CloudConfig, used to
bootstrap the VM.

Please note this field and RawCloudConfig are mutually exclusive.

rawCloudConfig SecretKeySelector

RawCloudConfig describes a key in a Secret resource that contains the
CloudConfig data used to bootstrap the VM.

The CloudConfig data specified by the key may be plain-text,
base64-encoded, or gzipped and base64-encoded.

Please note this field and CloudConfig are mutually exclusive.

sshAuthorizedKeys string array

SSHAuthorizedKeys is a list of public keys that CloudInit will apply to
the guest’s default user.

useGlobalNameserversAsDefault boolean

UseGlobalNameserversAsDefault will use the global nameservers specified in
the NetworkSpec as the per-interface nameservers when the per-interface
nameservers is not provided.

Defaults to true if omitted.

useGlobalSearchDomainsAsDefault boolean

UseGlobalSearchDomainsAsDefault will use the global search domains specified
in the NetworkSpec as the per-interface search domains when the per-interface
search domains is not provided.

Defaults to true if omitted.

VirtualMachineBootstrapLinuxPrepSpec

VirtualMachineBootstrapLinuxPrepSpec describes the LinuxPrep configuration used to bootstrap the VM.

Field Description Default Validation

hardwareClockIsUTC boolean

HardwareClockIsUTC specifies whether the hardware clock is in UTC or
local time.

timeZone string

TimeZone is a case-sensitive timezone, such as Europe/Sofia.

Valid values are based on the tz (timezone) database used by Linux and
other Unix systems. The values are strings in the form of
"Area/Location," in which Area is a continent or ocean name, and
Location is the city, island, or other regional designation.

Please see https://kb.vmware.com/s/article/2145518 for a list of valid
time zones for Linux systems.

VirtualMachineBootstrapSpec

VirtualMachineBootstrapSpec defines the desired state of a VM’s bootstrap configuration.

Appears In:
Field Description Default Validation

CloudInit may be used to bootstrap Linux guests with Cloud-Init or
Windows guests that support Cloudbase-Init.

The guest’s networking stack is configured by Cloud-Init on Linux guests
and Cloudbase-Init on Windows guests.

Please note this bootstrap provider may not be used in conjunction with
the other bootstrap providers.

LinuxPrep may be used to bootstrap Linux guests.

The guest’s networking stack is configured by Guest OS Customization
(GOSC).

Please note this bootstrap provider may be used in conjunction with the
VAppConfig bootstrap provider when wanting to configure the guest’s
network with GOSC but also send vApp/OVF properties into the guest.

This bootstrap provider may not be used in conjunction with the CloudInit
or Sysprep bootstrap providers.

Sysprep may be used to bootstrap Windows guests.

The guest’s networking stack is configured by Guest OS Customization
(GOSC).

Please note this bootstrap provider may be used in conjunction with the
VAppConfig bootstrap provider when wanting to configure the guest’s
network with GOSC but also send vApp/OVF properties into the guest.

This bootstrap provider may not be used in conjunction with the CloudInit
or LinuxPrep bootstrap providers.

VAppConfig may be used to bootstrap guests that rely on vApp properties
(how VMware surfaces OVF properties on guests) to transport data into the
guest.

The guest’s networking stack may be configured using either vApp
properties or GOSC.

Many OVFs define one or more properties that are used by the guest to
bootstrap its networking stack. If the VirtualMachineImage defines one or
more properties like this, then they can be configured to use the network
data provided for this VM at runtime by setting these properties to Go
template strings.

It is also possible to use GOSC to bootstrap this VM’s network stack by
configuring either the LinuxPrep or Sysprep bootstrap providers.

Please note the VAppConfig bootstrap provider in conjunction with the
LinuxPrep bootstrap provider is the equivalent of setting the v1alpha1
VM metadata transport to "OvfEnv".

This bootstrap provider may not be used in conjunction with the CloudInit
bootstrap provider.

VirtualMachineBootstrapSysprepSpec

VirtualMachineBootstrapSysprepSpec describes the Sysprep configuration used to bootstrap the VM.

Field Description Default Validation

sysprep Sysprep

Sysprep is an object representation of a Windows sysprep.xml answer file.

This field encloses all the individual keys listed in a sysprep.xml file.

For more detailed information please see
https://technet.microsoft.com/en-us/library/cc771830(v=ws.10).aspx.

Please note this field and RawSysprep are mutually exclusive.

rawSysprep SecretKeySelector

RawSysprep describes a key in a Secret resource that contains an XML
string of the Sysprep text used to bootstrap the VM.

The data specified by the Secret key may be plain-text, base64-encoded,
or gzipped and base64-encoded.

Please note this field and Sysprep are mutually exclusive.

VirtualMachineBootstrapVAppConfigSpec

VirtualMachineBootstrapVAppConfigSpec describes the vApp configuration used to bootstrap the VM.

Field Description Default Validation

properties KeyValueOrSecretKeySelectorPair array

Properties is a list of vApp/OVF property key/value pairs.

Please note this field and RawProperties are mutually exclusive.

rawProperties string

RawProperties is the name of a Secret resource in the same Namespace as
this VM where each key/value pair from the Secret is used as a vApp
key/value pair.

Please note this field and Properties are mutually exclusive.

VirtualMachineCdromSpec

VirtualMachineCdromSpec describes the desired state of a CD-ROM device.

Appears In:
Field Description Default Validation

name string

Name consists of at least two lowercase letters or digits of this CD-ROM.
It must be unique among all CD-ROM devices attached to the VM.

This field is immutable when the VM is powered on.

Pattern: ^[a-z0-9]\{2,}$

Image describes the reference to an ISO type VirtualMachineImage or
ClusterVirtualMachineImage resource used as the backing for the CD-ROM.
If the image kind is omitted, it defaults to VirtualMachineImage.

This field is immutable when the VM is powered on.

Please note, unlike the spec.imageName field, the value of this
spec.cdrom.image.name MUST be a Kubernetes object name.

connected boolean

Connected describes the desired connection state of the CD-ROM device.

When true, the CD-ROM device is added and connected to the VM.
If the device already exists, it is updated to a connected state.

When explicitly set to false, the CD-ROM device is added but remains
disconnected from the VM. If the CD-ROM device already exists, it is
updated to a disconnected state.

Note: Before disconnecting a CD-ROM, the device may need to be unmounted
in the guest OS. Refer to the following KB article for more details:
https://knowledge.broadcom.com/external/article?legacyId=2144053

Defaults to true if omitted.

true

allowGuestControl boolean

AllowGuestControl describes whether or not a web console connection
may be used to connect/disconnect the CD-ROM device.

Defaults to true if omitted.

true

VirtualMachineClass

VirtualMachineClass is the schema for the virtualmachineclasses API and represents the desired state and observed status of a virtualmachineclasses resource.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha3

kind string

VirtualMachineClass

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineClassHardware

VirtualMachineClassHardware describes a virtual hardware resource specification.

Field Description Default Validation

cpus integer

memory Quantity

devices VirtualDevices

instanceStorage InstanceStorage

VirtualMachineClassPolicies

VirtualMachineClassPolicies describes the policy configuration to be used by a VirtualMachineClass.

Field Description Default Validation

VirtualMachineClassResources

VirtualMachineClassResources describes the virtual hardware resource reservations and limits configuration to be used by a VirtualMachineClass.

Field Description Default Validation

VirtualMachineClassSpec

VirtualMachineClassSpec defines the desired state of VirtualMachineClass.

Appears In:
Field Description Default Validation

controllerName string

ControllerName describes the name of the controller responsible for
reconciling VirtualMachine resources that are realized from this
VirtualMachineClass.

When omitted, controllers reconciling VirtualMachine resources determine
the default controller name from the environment variable
DEFAULT_VM_CLASS_CONTROLLER_NAME. If this environment variable is not
defined or empty, it defaults to vmoperator.vmware.com/vsphere.

Once a non-empty value is assigned to this field, attempts to set this
field to an empty value will be silently ignored.

Hardware describes the configuration of the VirtualMachineClass
attributes related to virtual hardware. The configuration specified in
this field is used to customize the virtual hardware characteristics of
any VirtualMachine associated with this VirtualMachineClass.

Policies describes the configuration of the VirtualMachineClass
attributes related to virtual infrastructure policy. The configuration
specified in this field is used to customize various policies related to
infrastructure resource consumption.

description string

Description describes the configuration of the VirtualMachineClass which
is not related to virtual hardware or infrastructure policy. This field
is used to address remaining specs about this VirtualMachineClass.

configSpec RawMessage

ConfigSpec describes additional configuration information for a
VirtualMachine.
The contents of this field are the VirtualMachineConfigSpec data object
(https://bit.ly/3HDtiRu) marshaled to JSON using the discriminator
field "_typeName" to preserve type information.

Schemaless: \{}
Type: object

reservedProfileID string

ReservedProfileID describes the reservation profile associated with
the namespace-scoped VirtualMachineClass object.

reservedSlots integer

ReservedSlots describes the number of slots reserved for VMs that use
this VirtualMachineClass.
This field is only valid in conjunction with reservedProfileID.

Minimum: 0

VirtualMachineClassStatus

VirtualMachineClassStatus defines the observed state of VirtualMachineClass.

Appears In:

VirtualMachineCryptoSpec

VirtualMachineCryptoSpec defines the desired state of a VirtualMachine’s encryption state.

Appears In:
Field Description Default Validation

encryptionClassName string

EncryptionClassName describes the name of the EncryptionClass resource
used to encrypt this VM.

Please note, this field is not required to encrypt the VM. If the
underlying platform has a default key provider, the VM may still be fully
or partially encrypted depending on the specified storage and VM classes.

If there is a default key provider and an encryption storage class is
selected, the files in the VM’s home directory and non-PVC virtual disks
will be encrypted

If there is a default key provider and a VM Class with a virtual, trusted
platform module (vTPM) is selected, the files in the VM’s home directory,
minus any virtual disks, will be encrypted.

If the underlying vSphere platform does not have a default key provider,
then this field is required when specifying an encryption storage class
and/or a VM Class with a vTPM.

If this field is set, spec.storageClass must use an encryption-enabled
storage class.

useDefaultKeyProvider boolean

UseDefaultKeyProvider describes the desired behavior for when an explicit
EncryptionClass is not provided.

When an explicit EncryptionClass is not provided and this value is true:

  • Deploying a VirtualMachine with an encryption storage policy or vTPM
    will be encrypted using the default key provider.

  • If a VirtualMachine is not encrypted, uses an encryption storage
    policy or has a virtual, trusted platform module (vTPM), there is a
    default key provider, the VM will be encrypted using the default key
    provider.

  • If a VirtualMachine is encrypted with a provider other than the default
    key provider, the VM will be rekeyed using the default key provider.

When an explicit EncryptionClass is not provided and this value is false:

  • Deploying a VirtualMachine with an encryption storage policy or vTPM
    will fail.

  • If a VirtualMachine is encrypted with a provider other than the default
    key provider, the VM will be not be rekeyed.

Please note, this could result in a VirtualMachine that cannot be
powered on since it is encrypted using a provider or key that may have
been removed. Without the key, the VM cannot be decrypted and thus
cannot be powered on.

Defaults to true if omitted.

true

VirtualMachineCryptoStatus

Appears In:
Field Description Default Validation

Encrypted describes the observed state of the VirtualMachine’s
encryption. There may be two values in this list:

  • Config — This refers to all of the files related to a VM except any
    virtual disks.

  • Disks  — This refers to at least one of the VM’s attached disks. To
    determine the encryption state of the individual disks,
    please refer to status.volumes[].crypto.

providerID string

ProviderID describes the provider ID used to encrypt the VirtualMachine.
Please note, this field will be empty if the VirtualMachine is not
encrypted.

keyID string

KeyID describes the key ID used to encrypt the VirtualMachine.
Please note, this field will be empty if the VirtualMachine is not
encrypted.

VirtualMachineEncryptionType

Underlying type: string

VirtualMachineGroup

VirtualMachineGroup is the schema for the VirtualMachineGroup API and represents the desired state and observed status of a VirtualMachineGroup resource.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha3

kind string

VirtualMachineGroup

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineGroupBootOrderGroup

VirtualMachineGroupBootOrderGroup describes a boot order group within a VirtualMachineGroup.

Field Description Default Validation

members GroupMember array

Members describes the names of VirtualMachine or VirtualMachineGroup
objects that are members of this boot order group. The VM or VM Group
objects must be in the same namespace as this group.

powerOnDelay Duration

PowerOnDelay is the amount of time to wait before powering on all the
members of this boot order group.

If omitted, the members will be powered on immediately when the group’s
power state changes to PoweredOn.

VirtualMachineGroupMemberStatus

VirtualMachineGroupMemberStatus describes the observed status of a group member.

Field Description Default Validation

name string

Name is the name of this member.

kind string

Kind is the kind of this member, which can be either VirtualMachine or
VirtualMachineGroup.

Enum: [VirtualMachine VirtualMachineGroup]

uid UID

UID is the K8s metadata UID of this current member object.

Placement describes the placement results for this member.

Please note this field is only set for VirtualMachine members.

PowerState describes the observed power state of this member.

Please note this field is only set for VirtualMachine members.

Enum: [PoweredOff PoweredOn Suspended]

conditions Condition array

Conditions describes any conditions associated with this member.

  • The GroupLinked condition is True when the member exists and has its
    "Spec.GroupName" field set to the group’s name.

  • The PowerStateSynced condition is True for the VirtualMachine member
    when the member’s power state matches the group’s power state.

  • The PlacementReady condition is True for the VirtualMachine member
    when the member has a placement decision ready.

  • The ReadyType condition is True for the VirtualMachineGroup member
    when all of its members' conditions are True.

VirtualMachineGroupPlacementDatastoreStatus

Field Description Default Validation

name string

Name describes the name of a datastore.

id string

ID describes the datastore ID.

url string

URL describes the datastore URL.

supportedDiskFormats string array

SupportedDiskFormat describes the list of disk formats supported by this
datastore.

diskKey integer

DiskKey describes the device key to which this recommendation applies.
When omitted, this recommendation is for the VM’s home directory.

topLevelDirectoryCreateSupported boolean

TopLevelDirectoryCreateSupported indicates whether or not the datastore
supports creating a top-level directory or requires the use of the
namespace manager (i.e. vSAN).

VirtualMachineGroupSpec

VirtualMachineGroupSpec defines the desired state of VirtualMachineGroup.

Appears In:
Field Description Default Validation

groupName string

GroupName describes the name of the group that this group belongs to.

When this field is set to a valid group that contains this VM Group as a
member, an owner reference to that group is added to this VM Group.

When this field is deleted or changed, any existing owner reference to
the previous group will be removed from this VM Group.

BootOrder describes the boot sequence for this group members. Each boot
order contains a set of members that will be powered on simultaneously,
with an optional delay before powering on. The orders are processed
sequentially in the order they appear in this list, with delays being
cumulative across orders.

When powering off, all members are stopped immediately without delays.

PowerState describes the desired power state of a VirtualMachineGroup.

Please note this field may be omitted when creating a new VM group. This
ensures that the power states of any existing VMs that are added to the
group do not have their power states changed until the group’s power
state is explicitly altered.

However, once the field is set to a non-empty value, it may no longer be
set to an empty value. This means that if the group’s power state is
PoweredOn, and a VM whose power state is PoweredOff is added to the
group, that VM will be powered on.

Enum: [PoweredOff PoweredOn Suspended]

nextForcePowerStateSyncTime string

NextForcePowerStateSyncTime may be used to force sync the power state of
the group to all of its members, by setting the value of this field to
"now" (case-insensitive).

A mutating webhook changes this value to the current time (UTC), which
the VM Group controller then uses to trigger a sync of the group’s power
state to its members.

Please note it is not possible to schedule future syncs using this field.
The only value that users may set is the string "now" (case-insensitive).

PowerOffMode describes the desired behavior when powering off a VM Group.
Refer to the VirtualMachine.PowerOffMode field for more details.

Please note this field is only propagated to the group’s members when
the group’s power state is changed or the nextForcePowerStateSyncTime
field is set to "now".

Enum: [Hard Soft TrySoft]

SuspendMode describes the desired behavior when suspending a VM Group.
Refer to the VirtualMachine.SuspendMode field for more details.

Please note this field is only propagated to the group’s members when
the group’s power state is changed or the nextForcePowerStateSyncTime
field is set to "now".

Enum: [Hard Soft TrySoft]

VirtualMachineGroupStatus

VirtualMachineGroupStatus defines the observed state of VirtualMachineGroup.

Appears In:
Field Description Default Validation

Members describes the observed status of group members.

lastUpdatedPowerStateTime Time

LastUpdatedPowerStateTime describes the observed time when the power
state of the group was last updated.

conditions Condition array

Conditions describes any conditions associated with this VM Group.

  • The ReadyType condition is True when all of the group members have
    all of their expected conditions set to True.

VirtualMachineImage

VirtualMachineImage is the schema for the virtualmachineimages API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha3

kind string

VirtualMachineImage

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineImageCache

VirtualMachineImageCache is the schema for the virtualmachineimagecaches API.

Deprecated: This type is deprecated and will be removed in a future release. Please use v1alpha5.VirtualMachineImageCache instead.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha3

kind string

VirtualMachineImageCache

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineImageCacheFileStatus

Field Description Default Validation

id string

ID describes the value used to locate the file.
The value of this field depends on the type of file:

  • Type=Other  — The ID value describes a datastore path,
    ex. "[my-datastore-1] .contentlib-cache/1234/5678/my-disk-1.vmdk"

  • Type=Disk, DiskType=Classic — The ID value describes a datastore
    path.

  • Type=Disk, DiskType=Managed — The ID value describes a First Class
    Disk (FCD).

Type describes the type of file.

Enum: [Disk Other]

DiskType describes the type of disk.
This field is only non-empty when Type=Disk.

Enum: [Classic Managed]

VirtualMachineImageCacheFileType

Underlying type: string

VirtualMachineImageCacheFileType describes the types of files that may be cached.

Validation:
  • Enum: [Disk Other]

VirtualMachineImageCacheLocationSpec

Field Description Default Validation

datacenterID string

DatacenterID describes the ID of the datacenter to which the image should
be cached.

profileID string

ProfileID describes the ID of the storage profile used to cache the
image.
Please note, this profile must include the datastore specified by the
datastoreID field.

datastoreID string

DatastoreID describes the ID of the datastore to which the image should
be cached.

VirtualMachineImageCacheLocationStatus

Field Description Default Validation

datacenterID string

DatacenterID describes the ID of the datacenter where the image is
cached.

datastoreID string

DatastoreID describes the ID of the datastore where the image is cached.

profileID string

ProfileID describes the ID of the storage profile used to cache the
image.

Files describes the image’s files cached on this datastore.

conditions Condition array

Conditions describes any conditions associated with this cache location.

Generally this should just include the ReadyType condition.

VirtualMachineImageCacheOVFStatus

Field Description Default Validation

configMapName string

ConfigMapName describes the name of the ConfigMap resource that contains
the image’s OVF envelope encoded as YAML. The data is located in the
ConfigMap key "value".

providerVersion string

ProviderVersion describes the observed provider version at which the OVF
is cached.
The provider is Content Library, the version is the content version.

VirtualMachineImageCacheSpec

VirtualMachineImageCacheSpec defines the desired state of VirtualMachineImageCache.

Field Description Default Validation

providerID string

ProviderID describes the ID of the provider item to which the image
corresponds.
If the provider is Content Library, the ID refers to a Content Library
item.

providerVersion string

ProviderVersion describes the version of the provider item to which the
image corresponds.
The provider is Content Library, the version is the content version.

Locations describes the locations where the image should be cached.

VirtualMachineImageCacheStatus

VirtualMachineImageCacheStatus defines the observed state of VirtualMachineImageCache.

Field Description Default Validation

Locations describe the observed locations where the image is cached.

OVF describes the observed status of the cached OVF content.

conditions Condition array

Conditions describes any conditions associated with this cached image.

Generally this should just include the ReadyType condition, which will
only be True if all of the cached locations also have True ReadyType
condition.

VirtualMachineImageDiskInfo

VirtualMachineImageDiskInfo describes information about any disks associated with this image.

Field Description Default Validation

capacity Quantity

Capacity is the virtual disk capacity in bytes.

size Quantity

Size is the estimated populated size of the virtual disk in bytes.

VirtualMachineImageOSInfo

VirtualMachineImageOSInfo describes the image’s guest operating system.

Field Description Default Validation

id string

ID describes the operating system ID.

This value is also added to the image resource’s labels as
VirtualMachineImageOSIDLabel.

type string

Type describes the operating system type.

This value is also added to the image resource’s labels as
VirtualMachineImageOSTypeLabel.

version string

Version describes the operating system version.

This value is also added to the image resource’s labels as
VirtualMachineImageOSVersionLabel.

VirtualMachineImageProductInfo

VirtualMachineImageProductInfo describes product information for an image.

Field Description Default Validation

product string

Product is a general descriptor for the image.

vendor string

Vendor describes the organization/user that produced the image.

version string

Version describes the short-form version of the image.

fullVersion string

FullVersion describes the long-form version of the image.

VirtualMachineImageRef

Field Description Default Validation

kind string

Kind describes the type of image, either a namespace-scoped
VirtualMachineImage or cluster-scoped ClusterVirtualMachineImage.

name string

Name refers to the name of a VirtualMachineImage resource in the same
namespace as this VM or a cluster-scoped ClusterVirtualMachineImage.

VirtualMachineImageSpec

VirtualMachineImageSpec defines the desired state of VirtualMachineImage.

Field Description Default Validation

providerRef LocalObjectRef

ProviderRef is a reference to the resource that contains the source of
this image’s information.

VirtualMachineImageStatus

VirtualMachineImageStatus defines the observed state of VirtualMachineImage.

Field Description Default Validation

name string

Name describes the display name of this image.

capabilities string array

Capabilities describes the image’s observed capabilities.

The capabilities are discerned when VM Operator reconciles an image.
If the source of an image is an OVF in Content Library, then the
capabilities are parsed from the OVF property
capabilities.image.vmoperator.vmware.com as a comma-separated list of
values. Well-known capabilities include:

  • cloud-init

  • nvidia-gpu

  • sriov-net

Every capability is also added to the resource’s labels as
VirtualMachineImageCapabilityLabel + Value. For example, if the
capability is "cloud-init" then the following label will be added to the
resource: capability.image.vmoperator.vmware.com/cloud-init.

firmware string

Firmware describe the firmware type used by this image, ex. BIOS, EFI.

hardwareVersion integer

HardwareVersion describes the observed hardware version of this image.

OSInfo describes the observed operating system information for this
image.

The OS information is also added to the image resource’s labels. Please
refer to VirtualMachineImageOSInfo for more information.

ovfProperties OVFProperty array

OVFProperties describes the observed user configurable OVF properties defined for this
image.

vmwareSystemProperties KeyValuePair array

VMwareSystemProperties describes the observed VMware system properties defined for
this image.

ProductInfo describes the observed product information for this image.

Disks describes the observed disk information for this image.

providerContentVersion string

ProviderContentVersion describes the content version from the provider item
that this image corresponds to. If the provider of this image is a Content
Library, this will be the version of the corresponding Content Library item.

providerItemID string

ProviderItemID describes the ID of the provider item that this image corresponds to.
If the provider of this image is a Content Library, this ID will be that of the
corresponding Content Library item.

conditions Condition array

Conditions describes the observed conditions for this image.

type string

Type describes the content library item type (OVF or ISO) of the image.

VirtualMachineNetworkConfigDHCPOptionsStatus

VirtualMachineNetworkConfigDHCPOptionsStatus describes the configured DHCP options.

Field Description Default Validation

enabled boolean

Enabled describes whether DHCP is enabled.

VirtualMachineNetworkConfigDHCPStatus

VirtualMachineNetworkConfigDHCPStatus describes the configured state of the system-wide DHCP settings for IP4 and IP6.

Field Description Default Validation

IP4 describes the configured state of the IP4 DHCP settings.

IP6 describes the configured state of the IP6 DHCP settings.

VirtualMachineNetworkConfigDNSStatus

VirtualMachineNetworkConfigDNSStatus describes the configured state of the RFC 1034 client-side DNS settings.

Field Description Default Validation

hostName string

HostName is the host name portion of the DNS name. For example,
the "my-vm" part of "my-vm.domain.local".

domainName string

DomainName is the domain name portion of the DNS name. For example,
the "domain.local" part of "my-vm.domain.local".

nameservers string array

Nameservers is a list of the IP addresses for the DNS servers to use.

IP4 addresses are specified using dotted decimal notation. For example,
"192.0.2.1".

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
symbol '::' to represent multiple 16-bit groups of contiguous 0’s only
once in an address as described in RFC 2373.

searchDomains string array

SearchDomains is a list of domains in which to search for hosts, in the
order of preference.

VirtualMachineNetworkConfigInterfaceIPStatus

VirtualMachineNetworkConfigInterfaceIPStatus describes the configured state of a VM’s network interface’s IP configuration.

Field Description Default Validation

DHCP describes the interface’s configured DHCP options.

addresses string array

Addresses describes configured IP addresses for this interface.
Addresses include the network’s prefix length, ex. 192.168.0.0/24 or
2001:DB8:101::230:6eff:fe04:d9ff::/64.

gateway4 string

Gateway4 describes the interface’s configured, default, IP4 gateway.

Please note the IP address include the network prefix length, ex.
192.168.0.1/24.

gateway6 string

Gateway6 describes the interface’s configured, default, IP6 gateway.

Please note the IP address includes the network prefix length, ex.
2001:db8:101::1/64.

VirtualMachineNetworkConfigInterfaceStatus

VirtualMachineNetworkConfigInterfaceStatus describes the configured state of network interface.

Field Description Default Validation

name string

Name describes the corresponding network interface with the same name
in the VM’s desired network interface list.

Please note this name is not necessarily related to the name of the
device as it is surfaced inside of the guest.

IP describes the interface’s configured IP information.

DNS describes the interface’s configured DNS information.

VirtualMachineNetworkConfigStatus

Field Description Default Validation

Interfaces describes the configured state of the network interfaces.

DNS describes the configured state of client-side DNS.

VirtualMachineNetworkDHCPOptionsStatus

VirtualMachineNetworkDHCPOptionsStatus describes the observed state of DHCP options.

Field Description Default Validation

config KeyValuePair array

Config describes platform-dependent settings for the DHCP client.

The key part is a unique number while the value part is the platform
specific configuration command. For example on Linux and BSD systems
using the file dhclient.conf output would be reported at system scope:
key='1', value='timeout 60;' key='2', value='reboot 10;'. The output
reported per interface would be:
key='1', value='prepend domain-name-servers 192.0.2.1;'
key='2', value='require subnet-mask, domain-name-servers;'.

enabled boolean

Enabled reports the status of the DHCP client services.

VirtualMachineNetworkDHCPStatus

VirtualMachineNetworkDHCPStatus describes the observed state of the client-side, system-wide DHCP settings for IP4 and IP6.

Field Description Default Validation

IP4 describes the observed state of the IP4 DHCP client settings.

IP6 describes the observed state of the IP6 DHCP client settings.

VirtualMachineNetworkDNSStatus

VirtualMachineNetworkDNSStatus describes the observed state of the guest’s RFC 1034 client-side DNS settings.

Field Description Default Validation

dhcp boolean

DHCP indicates whether or not dynamic host control protocol (DHCP) was
used to configure DNS configuration.

hostName string

HostName is the host name portion of the DNS name. For example,
the "my-vm" part of "my-vm.domain.local".

domainName string

DomainName is the domain name portion of the DNS name. For example,
the "domain.local" part of "my-vm.domain.local".

nameservers string array

Nameservers is a list of the IP addresses for the DNS servers to use.

IP4 addresses are specified using dotted decimal notation. For example,
"192.0.2.1".

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
symbol '::' to represent multiple 16-bit groups of contiguous 0’s only
once in an address as described in RFC 2373.

searchDomains string array

SearchDomains is a list of domains in which to search for hosts, in the
order of preference.

VirtualMachineNetworkIPRouteGatewayStatus

VirtualMachineNetworkIPRouteGatewayStatus describes the observed state of a guest network’s IP route’s next hop gateway.

Field Description Default Validation

device string

Device is the name of the device in the guest for which this gateway
applies.

address string

Address is the IP4 or IP6 address of the gateway.

VirtualMachineNetworkIPRouteStatus

VirtualMachineNetworkIPRouteStatus describes the observed state of a guest network’s IP routes.

Field Description Default Validation

Gateway describes where to send the packets to next.

networkAddress string

NetworkAddress is the IP4 or IP6 address of the destination network.

Addresses include the network’s prefix length, ex. 192.168.0.0/24 or
2001:DB8:101::230:6eff:fe04:d9ff::/64.

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of symbol
'::' to represent multiple 16-bit groups of contiguous 0’s only once in
an address as described in RFC 2373.

VirtualMachineNetworkIPStackStatus

VirtualMachineNetworkIPStackStatus describes the observed state of a VM’s IP stack.

Field Description Default Validation

DHCP describes the VM’s observed, client-side, system-wide DHCP options.

DNS describes the VM’s observed, client-side DNS configuration.

IPRoutes contain the VM’s routing tables for all address families.

kernelConfig KeyValuePair array

KernelConfig describes the observed state of the VM’s kernel IP
configuration settings.

The key part contains a unique number while the value part contains the
'key=value' as provided by the underlying provider. For example, on
Linux and/or BSD, the systcl -a output would be reported as:
key='5', value='net.ipv4.tcp_keepalive_time = 7200'.

VirtualMachineNetworkInterfaceIPAddrStatus

VirtualMachineNetworkInterfaceIPAddrStatus describes information about a specific IP address.

Field Description Default Validation

address string

Address is an IP4 or IP6 address and their network prefix length.

An IP4 address is specified using dotted decimal notation. For example,
"192.0.2.1".

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
symbol '::' to represent multiple 16-bit groups of contiguous 0’s only
once in an address as described in RFC 2373.

lifetime Time

Lifetime describes when this address will expire.

origin string

Origin describes how this address was configured.

Enum: [dhcp linklayer manual other random]

state string

State describes the state of this IP address.

Enum: [deprecated duplicate inaccessible invalid preferred tentative unknown]

VirtualMachineNetworkInterfaceIPStatus

VirtualMachineNetworkInterfaceIPStatus describes the observed state of a VM’s network interface’s IP configuration.

Field Description Default Validation

autoConfigurationEnabled boolean

AutoConfigurationEnabled describes whether or not ICMPv6 router
solicitation requests are enabled or disabled from a given interface.

These requests acquire an IP6 address and default gateway route from
zero-to-many routers on the connected network.

If not set then ICMPv6 is not available on this VM.

DHCP describes the VM’s observed, client-side, interface-specific DHCP
options.

Addresses describes observed IP addresses for this interface.

macAddr string

MACAddr describes the observed MAC address for this interface.

VirtualMachineNetworkInterfaceSpec

VirtualMachineNetworkInterfaceSpec describes the desired state of a VM’s network interface.

Field Description Default Validation

name string

Name describes the unique name of this network interface, used to
distinguish it from other network interfaces attached to this VM.

When the bootstrap provider is Cloud-Init and GuestDeviceName is not
specified, the device inside the guest will be renamed to this value.
Please note it is up to the user to ensure the provided name does not
conflict with any other devices inside the guest, ex. dvd, cdrom, sda, etc.

Pattern: ^[a-z0-9]\{2,}$

Network is the name of the network resource to which this interface is
connected.

If no network is provided, then this interface will be connected to the
Namespace’s default network.

guestDeviceName string

GuestDeviceName is used to rename the device inside the guest when the
bootstrap provider is Cloud-Init. Please note it is up to the user to
ensure the provided device name does not conflict with any other devices
inside the guest, ex. dvd, cdrom, sda, etc.

Pattern: ^\w\w+$

macAddr string

MACAddr is the optional MAC address of this interface.

If no MAC address is provided, one will be generated by either the network
provider or vCenter.

Please note this field is only supported when the Network API Group is
crd.nsx.vmware.com.

Pattern: ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$

addresses string array

Addresses is an optional list of IP4 or IP6 addresses to assign to this
interface.

Please note this field is only supported if the connected network
supports manual IP allocation.

Please note IP4 and IP6 addresses must include the network prefix length,
ex. 192.168.0.10/24 or 2001:db8:101::a/64.

Please note this field may not contain IP4 addresses if DHCP4 is set
to true or IP6 addresses if DHCP6 is set to true.

dhcp4 boolean

DHCP4 indicates whether or not this interface uses DHCP for IP4
networking.

Please note this field is only supported if the network connection
supports DHCP.

Please note this field is mutually exclusive with IP4 addresses in the
Addresses field and the Gateway4 field.

dhcp6 boolean

DHCP6 indicates whether or not this interface uses DHCP for IP6
networking.

Please note this field is only supported if the network connection
supports DHCP.

Please note this field is mutually exclusive with IP6 addresses in the
Addresses field and the Gateway6 field.

gateway4 string

Gateway4 is the default, IP4 gateway for this interface.

If unset, the gateway from the network provider will be used. However,
if set to "None", the network provider gateway will be ignored.

Please note this field is only supported if the network connection
supports manual IP allocation.

Please note this field is mutually exclusive with DHCP4.

gateway6 string

Gateway6 is the primary IP6 gateway for this interface.

If unset, the gateway from the network provider will be used. However,
if set to "None", the network provider gateway will be ignored.

Please note this field is only supported if the network connection
supports manual IP allocation.

Please note this field is mutually exclusive with DHCP6.

mtu integer

MTU is the Maximum Transmission Unit size in bytes.

Please note this feature is available only with the following bootstrap
providers: CloudInit.

nameservers string array

Nameservers is a list of IP4 and/or IP6 addresses used as DNS
nameservers.

Please note this feature is available only with the following bootstrap
providers: CloudInit and Sysprep.

When using CloudInit and UseGlobalNameserversAsDefault is either unset or
true, if nameservers is not provided, the global nameservers will be used
instead.

Please note that Linux allows only three nameservers
(https://linux.die.net/man/5/resolv.conf).

Routes is a list of optional, static routes.

Please note this feature is available only with the following bootstrap
providers: CloudInit.

searchDomains string array

SearchDomains is a list of search domains used when resolving IP
addresses with DNS.

Please note this feature is available only with the following bootstrap
providers: CloudInit.

When using CloudInit and UseGlobalSearchDomainsAsDefault is either unset
or true, if search domains is not provided, the global search domains
will be used instead.

VirtualMachineNetworkInterfaceStatus

VirtualMachineNetworkInterfaceStatus describes the observed state of a VM’s network interface.

Field Description Default Validation

name string

Name describes the corresponding network interface with the same name
in the VM’s desired network interface list. If unset, then there is no
corresponding entry for this interface.

Please note this name is not necessarily related to the name of the
device as it is surfaced inside of the guest.

deviceKey integer

DeviceKey describes the unique hardware device key of this network
interface.

IP describes the observed state of the interface’s IP configuration.

DNS describes the observed state of the interface’s DNS configuration.

VirtualMachineNetworkRouteSpec

VirtualMachineNetworkRouteSpec defines a static route for a guest.

Field Description Default Validation

to string

To is either "default", or an IP4 or IP6 address.

via string

Via is an IP4 or IP6 address.

metric integer

Metric is the weight/priority of the route.

Minimum: 1

VirtualMachineNetworkSpec

VirtualMachineNetworkSpec defines a VM’s desired network configuration.

Appears In:
Field Description Default Validation

hostName string

HostName describes the value the guest uses as its host name. If omitted,
the name of the VM will be used.

Please note, this feature is available with the following bootstrap
providers: CloudInit, LinuxPrep, and Sysprep.

This field must adhere to the format specified in RFC-1034, Section 3.5
for DNS labels:

  • The total length is restricted to 63 characters or less.

  • The total length is restricted to 15 characters or less on Windows
    systems.

  • The value may begin with a digit per RFC-1123.

  • Underscores are not allowed.

  • Dashes are permitted, but not at the start or end of the value.

  • Symbol unicode points, such as emoji, are permitted, ex. ✓. However,
    please note that the use of emoji, even where allowed, may not
    compatible with the guest operating system, so it recommended to
    stick with more common characters for this value.

  • The value may be a valid IP4 or IP6 address. Please note, the use of
    an IP address for a host name is not compatible with all guest
    operating systems and is discouraged. Additionally, using an IP
    address for the host name is disallowed if spec.network.domainName is
    non-empty.

Please note, the combined values of spec.network.hostName and
spec.network.domainName may not exceed 255 characters in length.

domainName string

DomainName describes the value the guest uses as its domain name.

Please note, this feature is available with the following bootstrap
providers: CloudInit, LinuxPrep, and Sysprep.

This field must adhere to the format specified in RFC-1034, Section 3.5
for DNS names:

  • When joined with the host name, the total length is restricted to 255
    characters or less.

  • Individual segments must be 63 characters or less.

  • The top-level domain( ex. ".com"), is at least two letters with no
    special characters.

  • Underscores are not allowed.

  • Dashes are permitted, but not at the start or end of the value.

  • Long, top-level domain names (ex. ".london") are permitted.

  • Symbol unicode points, such as emoji, are disallowed in the top-level
    domain.

Please note, the combined values of spec.network.hostName and
spec.network.domainName may not exceed 255 characters in length.

When deploying a guest running Microsoft Windows, this field describes
the domain the computer should join.

disabled boolean

Disabled is a flag that indicates whether or not to disable networking
for this VM.

When set to true, the VM is not configured with a default interface nor
any specified from the Interfaces field.

nameservers string array

Nameservers is a list of IP4 and/or IP6 addresses used as DNS
nameservers. These are applied globally.

Please note global nameservers are only available with the following
bootstrap providers: LinuxPrep and Sysprep. The Cloud-Init bootstrap
provider supports per-interface nameservers. However, when Cloud-Init
is used and UseGlobalNameserversAsDefault is true, the global
nameservers will be used when the per-interface nameservers is not
provided.

Please note that Linux allows only three nameservers
(https://linux.die.net/man/5/resolv.conf).

searchDomains string array

SearchDomains is a list of search domains used when resolving IP
addresses with DNS. These are applied globally.

Please note global search domains are only available with the following
bootstrap providers: LinuxPrep and Sysprep. The Cloud-Init bootstrap
provider supports per-interface search domains. However, when Cloud-Init
is used and UseGlobalSearchDomainsAsDefault is true, the global search
domains will be used when the per-interface search domains is not provided.

Interfaces is the list of network interfaces used by this VM.

If the Interfaces field is empty and the Disabled field is false, then
a default interface with the name eth0 will be created.

The maximum number of network interface allowed is 10 because a vSphere
virtual machine may not have more than 10 virtual ethernet card devices.

MaxItems: 10

VirtualMachineNetworkStatus

VirtualMachineNetworkStatus defines the observed state of a VM’s network configuration.

Appears In:
Field Description Default Validation

Config describes the resolved, configured network settings for the VM,
such as an interface’s IP address obtained from IPAM, or global DNS
settings.

Please note this information does not represent the observed network
state of the VM, but is intended for situations where someone boots a VM
with no appropriate bootstrap engine and needs to know the network config
valid for the deployed VM.

hostName string

HostName describes the observed hostname reported by the VirtualMachine’s
guest operating system.

Please note, this value is only reported if VMware Tools is installed in
the guest, and the value may or may not be a fully qualified domain name
(FQDN), it simply depends on what is reported by the guest.

Interfaces describes the status of the VM’s network interfaces.

IPStacks describes information about the guest’s configured IP networking
stacks.

primaryIP4 string

PrimaryIP4 describes the VM’s primary IP4 address.

If the bootstrap provider is CloudInit then this value is set to the
value of the VM’s "guestinfo.local-ipv4" property. Please see
https://bit.ly/3NJB534 for more information on how this value is
calculated.

If the bootstrap provider is anything else then this field is set to the
value of the infrastructure VM’s "guest.ipAddress" field. Please see
https://bit.ly/3Au0jM4 for more information.

primaryIP6 string

PrimaryIP6 describes the VM’s primary IP6 address.

If the bootstrap provider is CloudInit then this value is set to the
value of the VM’s "guestinfo.local-ipv6" property. Please see
https://bit.ly/3NJB534 for more information on how this value is
calculated.

If the bootstrap provider is anything else then this field is set to the
value of the infrastructure VM’s "guest.ipAddress" field. Please see
https://bit.ly/3Au0jM4 for more information.

VirtualMachinePlacementStatus

Field Description Default Validation

zoneID string

Zone describes the recommended zone for this VM.

node string

Node describes the recommended node for this VM.

pool string

Pool describes the recommended resource pool for this VM.

Datastores describe the recommended datastores for this VM.
This includes the recommendations for each of the VM’s disks
and files.

VirtualMachinePowerOpMode

Underlying type: string

VirtualMachinePowerOpMode represents the various power operation modes when powering off or suspending a VM.

Validation:
  • Enum: [Hard Soft TrySoft]

VirtualMachinePowerState

Underlying type: string

VirtualMachinePowerState defines a VM’s desired and observed power states.

Validation:
  • Enum: [PoweredOff PoweredOn Suspended]

VirtualMachinePublishRequest

VirtualMachinePublishRequest defines the information necessary to publish a VirtualMachine as a VirtualMachineImage to an image registry.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha3

kind string

VirtualMachinePublishRequest

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachinePublishRequestSource

VirtualMachinePublishRequestSource is the source of a publication request, typically a VirtualMachine resource.

Field Description Default Validation

name string

Name is the name of the referenced object.

If omitted this value defaults to the name of the
VirtualMachinePublishRequest resource.

apiVersion string

APIVersion is the API version of the referenced object.

vmoperator.vmware.com/v1alpha1

kind string

Kind is the kind of referenced object.

VirtualMachine

VirtualMachinePublishRequestSpec

VirtualMachinePublishRequestSpec defines the desired state of a VirtualMachinePublishRequest.

All the fields in this spec are optional. This is especially useful when a DevOps persona wants to publish a VM without doing anything more than applying a VirtualMachinePublishRequest resource that has the same name as said VM in the same namespace as said VM.

Field Description Default Validation

Source is the source of the publication request, ex. a VirtualMachine
resource.

If this value is omitted then the publication controller checks to
see if there is a resource with the same name as this
VirtualMachinePublishRequest resource, an API version equal to
spec.source.apiVersion, and a kind equal to spec.source.kind. If such
a resource exists, then it is the source of the publication.

Target is the target of the publication request, ex. item
information and a ContentLibrary resource.

If this value is omitted, the controller uses spec.source.name + "-image"
as the name of the published item. Additionally, when omitted the
controller attempts to identify the target location by matching a
resource with an API version equal to spec.target.location.apiVersion, a
kind equal to spec.target.location.kind, w/ the label
"imageregistry.vmware.com/default".

Please note that while optional, if a VirtualMachinePublishRequest sans
target information is applied to a namespace without a default
publication target, then the VirtualMachinePublishRequest resource
will be marked in error.

ttlSecondsAfterFinished integer

TTLSecondsAfterFinished is the time-to-live duration for how long this
resource will be allowed to exist once the publication operation
completes. After the TTL expires, the resource will be automatically
deleted without the user having to take any direct action.

If this field is unset then the request resource will not be
automatically deleted. If this field is set to zero then the request
resource is eligible for deletion immediately after it finishes.

Minimum: 0

VirtualMachinePublishRequestStatus

VirtualMachinePublishRequestStatus defines the observed state of a VirtualMachinePublishRequest.

Field Description Default Validation

SourceRef is the reference to the source of the publication request,
ex. a VirtualMachine resource.

TargetRef is the reference to the target of the publication request,
ex. item information and a ContentLibrary resource.

completionTime Time

CompletionTime represents time when the request was completed. It is not
guaranteed to be set in happens-before order across separate operations.
It is represented in RFC3339 form and is in UTC.

The value of this field should be equal to the value of the
LastTransitionTime for the status condition Type=Complete.

startTime Time

StartTime represents time when the request was acknowledged by the
controller. It is not guaranteed to be set in happens-before order
across separate operations. It is represented in RFC3339 form and is
in UTC.

attempts integer

Attempts represents the number of times the request to publish the VM
has been attempted.

lastAttemptTime Time

LastAttemptTime represents the time when the latest request was sent.

imageName string

ImageName is the name of the VirtualMachineImage resource that is
eventually realized in the same namespace as the VM and publication
request after the publication operation completes.

This field will not be set until the VirtualMachineImage resource
is realized.

ready boolean

Ready is set to true only when the VM has been published successfully
and the new VirtualMachineImage resource is ready.

Readiness is determined by waiting until there is status condition
Type=Complete and ensuring it and all other status conditions present
have a Status=True. The conditions present will be:

  • SourceValid

  • TargetValid

  • Uploaded

  • ImageAvailable

  • Complete

conditions Condition array

Conditions is a list of the latest, available observations of the
request’s current state.

VirtualMachinePublishRequestTarget

VirtualMachinePublishRequestTarget is the target of a publication request, typically a ContentLibrary resource.

Field Description Default Validation

Item contains information about the name of the object to which
the VM is published.

Please note this value is optional and if omitted, the controller
will use spec.source.name + "-image" as the name of the published
item.

Location contains information about the location to which to publish
the VM.

VirtualMachinePublishRequestTargetItem

VirtualMachinePublishRequestTargetItem is the item part of a publication request’s target.

Field Description Default Validation

name string

Name is the name of the published object.

If the spec.target.location.apiVersion equals
imageregistry.vmware.com/v1alpha1 and the spec.target.location.kind
equals ContentLibrary, then this should be the name that will
show up in vCenter Content Library, not the custom resource name
in the namespace.

If omitted then the controller will use spec.source.name + "-image".

description string

Description is the description to assign to the published object.

VirtualMachinePublishRequestTargetLocation

VirtualMachinePublishRequestTargetLocation is the location part of a publication request’s target.

Field Description Default Validation

name string

Name is the name of the referenced object.

Please note an error will be returned if this field is not
set in a namespace that lacks a default publication target.

A default publication target is a resource with an API version
equal to spec.target.location.apiVersion, a kind equal to
spec.target.location.kind, and has the label
"imageregistry.vmware.com/default".

apiVersion string

APIVersion is the API version of the referenced object.

imageregistry.vmware.com/v1alpha1

kind string

Kind is the kind of referenced object.

ContentLibrary

VirtualMachineReadinessProbeSpec

VirtualMachineReadinessProbeSpec describes a probe used to determine if a VM is in a ready state. All probe actions are mutually exclusive.

Appears In:
Field Description Default Validation

tcpSocket TCPSocketAction

TCPSocket specifies an action involving a TCP port.

Deprecated: The TCPSocket action requires network connectivity that is not supported in all environments.
This field will be removed in a later API version.

guestHeartbeat GuestHeartbeatAction

GuestHeartbeat specifies an action involving the guest heartbeat status.

guestInfo GuestInfoAction array

GuestInfo specifies an action involving key/value pairs from GuestInfo.

The elements are evaluated with the logical AND operator, meaning
all expressions must evaluate as true for the probe to succeed.

For example, a VM resource’s probe definition could be specified as the
following:

guestInfo:
- key: ready
value: true

With the above configuration in place, the VM would not be considered
ready until the GuestInfo key "ready" was set to the value "true".

From within the guest operating system it is possible to set GuestInfo
key/value pairs using the program "vmware-rpctool," which is included
with VM Tools. For example, the following command will set the key
"guestinfo.ready" to the value "true":

vmware-rpctool "info-set guestinfo.ready true"

Once executed, the VM’s readiness probe will be signaled and the
VM resource will be marked as ready.

timeoutSeconds integer

TimeoutSeconds specifies a number of seconds after which the probe times out.
Defaults to 10 seconds. Minimum value is 1.

Maximum: 60
Minimum: 1

periodSeconds integer

PeriodSeconds specifics how often (in seconds) to perform the probe.
Defaults to 10 seconds. Minimum value is 1.

Minimum: 1

VirtualMachineReplicaSet

VirtualMachineReplicaSet is the schema for the virtualmachinereplicasets API.

Deprecated: This type is deprecated and will be removed in a future release. Please use v1alpha5.VirtualMachineReplicaSet instead.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha3

kind string

VirtualMachineReplicaSet

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineReplicaSetSpec

VirtualMachineReplicaSetSpec is the specification of a VirtualMachineReplicaSet.

Field Description Default Validation

replicas integer

Replicas is the number of desired replicas.
This is a pointer to distinguish between explicit zero and unspecified.
Defaults to 1.

1

deletePolicy string

DeletePolicy defines the policy used to identify nodes to delete when downscaling.
Only supported deletion policy is "Random".

Enum: [Random]

selector LabelSelector

Selector is a label to query over virtual machines that should match the
replica count. A virtual machine’s label keys and values must match in order
to be controlled by this VirtualMachineReplicaSet.

It must match the VirtualMachine template’s labels.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors

Template is the object that describes the virtual machine that will be
created if insufficient replicas are detected.

VirtualMachineReplicaSetStatus

VirtualMachineReplicaSetStatus represents the observed state of a VirtualMachineReplicaSet resource.

Field Description Default Validation

replicas integer

Replicas is the most recently observed number of replicas.

fullyLabeledReplicas integer

FullyLabeledReplicas is the number of replicas that have labels matching the
labels of the virtual machine template of the VirtualMachineReplicaSet.

readyReplicas integer

ReadyReplicas is the number of ready replicas for this VirtualMachineReplicaSet. A
virtual machine is considered ready when it’s "Ready" condition is marked as
true.

observedGeneration integer

ObservedGeneration reflects the generation of the most recently observed
VirtualMachineReplicaSet.

conditions Condition array

Conditions represents the latest available observations of a
VirtualMachineReplicaSet’s current state.

VirtualMachineReservedSpec

VirtualMachineReservedSpec describes a set of VM configuration options reserved for system use. Modification attempts by DevOps users will result in a validation error.

Appears In:
Field Description Default Validation

resourcePolicyName string

VirtualMachineResourceSpec

VirtualMachineResourceSpec describes a virtual hardware policy specification.

Field Description Default Validation

cpu Quantity

memory Quantity

VirtualMachineService

VirtualMachineService is the Schema for the virtualmachineservices API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha3

kind string

VirtualMachineService

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineServicePort

VirtualMachineServicePort describes the specification of a service port to be exposed by a VirtualMachineService. This VirtualMachineServicePort specification includes attributes that define the external and internal representation of the service port.

Field Description Default Validation

name string

Name describes the name to be used to identify this
VirtualMachineServicePort.

protocol string

Protocol describes the Layer 4 transport protocol for this port.
Supports "TCP", "UDP", and "SCTP".

port integer

Port describes the external port that will be exposed by the service.

targetPort integer

TargetPort describes the internal port open on a VirtualMachine that
should be mapped to the external Port.

VirtualMachineServiceSpec

VirtualMachineServiceSpec defines the desired state of VirtualMachineService.

Appears In:
Field Description Default Validation

Type specifies a desired VirtualMachineServiceType for this
VirtualMachineService. Supported types are ClusterIP, LoadBalancer,
ExternalName.

Ports specifies a list of VirtualMachineServicePort to expose with this
VirtualMachineService. Each of these ports will be an accessible network
entry point to access this service by.

selector object (keys:string, values:string)

Selector specifies a map of key-value pairs, also known as a Label
Selector, that is used to match this VirtualMachineService with the set
of VirtualMachines that should back this VirtualMachineService.

loadBalancerIP string

LoadBalancer will get created with the IP specified in this field.
Only applies to VirtualMachineService Type: LoadBalancer
This feature depends on whether the underlying load balancer provider
supports specifying the loadBalancerIP when a load balancer is created.
This field will be ignored if the provider does not support the feature.
Deprecated: This field was under-specified and its meaning varies across implementations.
Using it is non-portable and it may not support dual-stack.
Users are encouraged to use implementation-specific annotations when available.

loadBalancerSourceRanges string array

LoadBalancerSourceRanges is an array of IP addresses in the format of
CIDRs, for example: 103.21.244.0/22 and 10.0.0.0/24.
If specified and supported by the load balancer provider, this will
restrict ingress traffic to the specified client IPs. This field will be
ignored if the provider does not support the feature.

clusterIp string

ClusterIP is the IP address of the service and is usually assigned
randomly by the master. If an address is specified manually and is not in
use by others, it will be allocated to the service; otherwise, creation
of the service will fail. This field can not be changed through updates.
Valid values are "None", empty string (""), or a valid IP address. "None"
can be specified for headless services when proxying is not required.
Only applies to types ClusterIP and LoadBalancer.
Ignored if type is ExternalName.
More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

externalName string

ExternalName is the external reference that kubedns or equivalent will
return as a CNAME record for this service. No proxying will be involved.
Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123)
and requires Type to be ExternalName.

VirtualMachineServiceStatus

VirtualMachineServiceStatus defines the observed state of VirtualMachineService.

Appears In:
Field Description Default Validation

loadBalancer LoadBalancerStatus

LoadBalancer contains the current status of the load balancer,
if one is present.

VirtualMachineServiceType

Underlying type: string

VirtualMachineServiceType string describes ingress methods for a service.

VirtualMachineSetResourcePolicy

VirtualMachineSetResourcePolicy is the Schema for the virtualmachinesetresourcepolicies API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha3

kind string

VirtualMachineSetResourcePolicy

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineSetResourcePolicySpec

VirtualMachineSetResourcePolicySpec defines the desired state of VirtualMachineSetResourcePolicy.

Field Description Default Validation

resourcePool ResourcePoolSpec

folder string

clusterModuleGroups string array

VirtualMachineSetResourcePolicyStatus

VirtualMachineSetResourcePolicyStatus defines the observed state of VirtualMachineSetResourcePolicy.

Field Description Default Validation

resourcePools ResourcePoolStatus array

clustermodules VSphereClusterModuleStatus array

VirtualMachineSpec

VirtualMachineSpec defines the desired state of a VirtualMachine.

Field Description Default Validation

Cdrom describes the desired state of the VM’s CD-ROM devices.

Each CD-ROM device requires a reference to an ISO-type
VirtualMachineImage or ClusterVirtualMachineImage resource as backing.

Multiple CD-ROM devices using the same backing image, regardless of image
kinds (namespace or cluster scope), are not allowed.

CD-ROM devices can be added, updated, or removed when the VM is powered
off. When the VM is powered on, only the connection state of existing
CD-ROM devices can be changed.
CD-ROM devices are attached to the VM in the specified list-order.

Image describes the reference to the VirtualMachineImage or
ClusterVirtualMachineImage resource used to deploy this VM.

Please note, unlike the field spec.imageName, the value of
spec.image.name MUST be a Kubernetes object name.

Please also note, when creating a new VirtualMachine, if this field and
spec.imageName are both non-empty, then they must refer to the same
resource or an error is returned.

Please note, this field may be empty if the VM was imported instead of
deployed by VM Operator. An imported VirtualMachine resource references
an existing VM on the underlying platform that was not deployed from a
VM image.

imageName string

ImageName describes the name of the image resource used to deploy this
VM.

This field may be used to specify the name of a VirtualMachineImage
or ClusterVirtualMachineImage resource. The resolver first checks to see
if there is a VirtualMachineImage with the specified name in the
same namespace as the VM being deployed. If no such resource exists, the
resolver then checks to see if there is a ClusterVirtualMachineImage
resource with the specified name.

This field may also be used to specify the display name (vSphere name) of
a VirtualMachineImage or ClusterVirtualMachineImage resource. If the
display name unambiguously resolves to a distinct VM image (among all
existing VirtualMachineImages in the VM’s namespace and all existing
ClusterVirtualMachineImages), then a mutation webhook updates the
spec.image field with the reference to the resolved VM image. If the
display name resolves to multiple or no VM images, then the mutation
webhook denies the request and returns an error.

Please also note, when creating a new VirtualMachine, if this field and
spec.image are both non-empty, then they must refer to the same
resource or an error is returned.

Please note, this field may be empty if the VM was imported instead of
deployed by VM Operator. An imported VirtualMachine resource references
an existing VM on the underlying platform that was not deployed from a
VM image.

className string

ClassName describes the name of the VirtualMachineClass resource used to
deploy this VM.

Please note, this field may be empty if the VM was imported instead of
deployed by VM Operator. An imported VirtualMachine resource references
an existing VM on the underlying platform that was not deployed from a
VM class.

affinity AffinitySpec

Affinity describes the VM’s scheduling constraints.

Crypto describes the desired encryption state of the VirtualMachine.

storageClass string

StorageClass describes the name of a Kubernetes StorageClass resource
used to configure this VM’s storage-related attributes.

Please see https://kubernetes.io/docs/concepts/storage/storage-classes/
for more information on Kubernetes storage classes.

Bootstrap describes the desired state of the guest’s bootstrap
configuration.

If omitted, a default bootstrap method may be selected based on the
guest OS identifier. If Linux, then the LinuxPrep method is used.

Network describes the desired network configuration for the VM.

Please note this value may be omitted entirely and the VM will be
assigned a single, virtual network interface that is connected to the
Namespace’s default network.

PowerState describes the desired power state of a VirtualMachine.

Please note this field may be omitted when creating a new VM and will
default to "PoweredOn." However, once the field is set to a non-empty
value, it may no longer be set to an empty value.

Additionally, setting this value to "Suspended" is not supported when
creating a new VM. The valid values when creating a new VM are
"PoweredOn" and "PoweredOff." An empty value is also allowed on create
since this value defaults to "PoweredOn" for new VMs.

Enum: [PoweredOff PoweredOn Suspended]

PowerOffMode describes the desired behavior when powering off a VM.

There are three, supported power off modes: Hard, Soft, and
TrySoft. The first mode, Hard, is the equivalent of a physical
system’s power cord being ripped from the wall. The Soft mode
requires the VM’s guest to have VM Tools installed and attempts to
gracefully shutdown the VM. Its variant, TrySoft, first attempts
a graceful shutdown, and if that fails or the VM is not in a powered off
state after five minutes, the VM is halted.

If omitted, the mode defaults to TrySoft.

TrySoft

Enum: [Hard Soft TrySoft]

SuspendMode describes the desired behavior when suspending a VM.

There are three, supported suspend modes: Hard, Soft, and
TrySoft. The first mode, Hard, is where vSphere suspends the VM to
disk without any interaction inside of the guest. The Soft mode
requires the VM’s guest to have VM Tools installed and attempts to
gracefully suspend the VM. Its variant, TrySoft, first attempts
a graceful suspend, and if that fails or the VM is not in a put into
standby by the guest after five minutes, the VM is suspended.

If omitted, the mode defaults to TrySoft.

TrySoft

Enum: [Hard Soft TrySoft]

nextRestartTime string

NextRestartTime may be used to restart the VM, in accordance with
RestartMode, by setting the value of this field to "now"
(case-insensitive).

A mutating webhook changes this value to the current time (UTC), which
the VM controller then uses to determine the VM should be restarted by
comparing the value to the timestamp of the last time the VM was
restarted.

Please note it is not possible to schedule future restarts using this
field. The only value that users may set is the string "now"
(case-insensitive).

RestartMode describes the desired behavior for restarting a VM when
spec.nextRestartTime is set to "now" (case-insensitive).

There are three, supported suspend modes: Hard, Soft, and
TrySoft. The first mode, Hard, is where vSphere resets the VM without any
interaction inside of the guest. The Soft mode requires the VM’s guest to
have VM Tools installed and asks the guest to restart the VM. Its
variant, TrySoft, first attempts a soft restart, and if that fails or
does not complete within five minutes, the VM is hard reset.

If omitted, the mode defaults to TrySoft.

TrySoft

Enum: [Hard Soft TrySoft]

volumes VirtualMachineVolume array

Volumes describes a list of volumes that can be mounted to the VM.

ReadinessProbe describes a probe used to determine the VM’s ready state.

Advanced describes a set of optional, advanced VM configuration options.

Reserved describes a set of VM configuration options reserved for system
use.

Please note attempts to modify the value of this field by a DevOps user
will result in a validation error.

minHardwareVersion integer

MinHardwareVersion describes the desired, minimum hardware version.

The logic that determines the hardware version is as follows:

  1. If this field is set, then its value is used.

  2. Otherwise, if the VirtualMachineClass used to deploy the VM contains a
    non-empty hardware version, then it is used.

  3. Finally, if the hardware version is still undetermined, the value is
    set to the default hardware version for the Datacenter/Cluster/Host
    where the VM is provisioned.

This field is never updated to reflect the derived hardware version.
Instead, VirtualMachineStatus.HardwareVersion surfaces
the observed hardware version.

Please note, setting this field’s value to N ensures a VM’s hardware
version is equal to or greater than N. For example, if a VM’s observed
hardware version is 10 and this field’s value is 13, then the VM will be
upgraded to hardware version 13. However, if the observed hardware
version is 17 and this field’s value is 13, no change will occur.

Several features are hardware version dependent, for example:

  • NVMe Controllers >= 14

  • Dynamic Direct Path I/O devices >= 17

Please refer to https://kb.vmware.com/s/article/1003746 for a list of VM
hardware versions.

It is important to remember that a VM’s hardware version may not be
downgraded and upgrading a VM deployed from an image based on an older
hardware version to a more recent one may result in unpredictable
behavior. In other words, please be careful when choosing to upgrade a
VM to a newer hardware version.

Minimum: 13

instanceUUID string

InstanceUUID describes the desired Instance UUID for a VM.
If omitted, this field defaults to a random UUID.
This value is only used for the VM Instance UUID,
it is not used within cloudInit.
This identifier is used by VirtualCenter to uniquely identify all
virtual machine instances, including those that may share the same BIOS UUID.

Format: uuid

biosUUID string

BiosUUID describes the desired BIOS UUID for a VM.
If omitted, this field defaults to a random UUID.
When the bootstrap provider is Cloud-Init, this value is used as the
default value for spec.bootstrap.cloudInit.instanceID if it is omitted.

Format: uuid

guestID string

GuestID describes the desired guest operating system identifier for a VM.

The logic that determines the guest ID is as follows:

If this field is set, then its value is used.
Otherwise, if the VM is deployed from an OVF template that defines a
guest ID, then that value is used.
The guest ID from VirtualMachineClass used to deploy the VM is ignored.

Please note that some guest ID values may require a minimal hardware
version, which can be set using the spec.minHardwareVersion field.
To see the mapping between virtual hardware versions and the product
versions that support a specific guest ID, please refer to
https://knowledge.broadcom.com/external/article/315655/virtual-machine-hardware-versions.html.

Please note that this field is immutable after the VM is powered on.
To change the guest ID after the VM is powered on, the VM must be powered
off and then powered on again with the updated guest ID spec.

This field is required when the VM has any CD-ROM devices attached.

groupName string

GroupName indicates the name of the VirtualMachineGroup to which this
VM belongs.

VMs that belong to a group do not drive their own placement, rather that
is handled by the group.

When this field is set to a valid group that contains this VM as a
member, an owner reference to that group is added to this VM.

When this field is deleted or changed, any existing owner reference to
the previous group will be removed from this VM.

VirtualMachineStatus

VirtualMachineStatus defines the observed state of a VirtualMachine instance.

Appears In:
Field Description Default Validation

Class is a reference to the VirtualMachineClass resource used to deploy
this VM.

host string

Host describes the hostname or IP address of the infrastructure host
where the VM is executed.

PowerState describes the observed power state of the VirtualMachine.

Enum: [PoweredOff PoweredOn Suspended]

conditions Condition array

Conditions describes the observed conditions of the VirtualMachine.

Crypto describes the observed state of the VirtualMachine’s encryption
configuration.

Network describes the observed state of the VM’s network configuration.
Please note much of the network status information is only available if
the guest has VM Tools installed.

uniqueID string

UniqueID describes a unique identifier that is provided by the underlying
infrastructure provider, such as vSphere.

biosUUID string

BiosUUID describes a unique identifier provided by the underlying
infrastructure provider that is exposed to the Guest OS BIOS as a unique
hardware identifier.

instanceUUID string

InstanceUUID describes the unique instance UUID provided by the
underlying infrastructure provider, such as vSphere.

Volumes describes the observed state of the volumes that are intended to
be attached to the VirtualMachine.

changeBlockTracking boolean

ChangeBlockTracking describes whether or not change block tracking is
enabled for the VirtualMachine.

zone string

Zone describes the availability zone where the VirtualMachine has been
scheduled.

Please note this field may be empty when the cluster is not zone-aware.

lastRestartTime Time

LastRestartTime describes the last time the VM was restarted.

hardwareVersion integer

HardwareVersion describes the VirtualMachine resource’s observed
hardware version.

Please refer to VirtualMachineSpec.MinHardwareVersion for more
information on the topic of a VM’s hardware version.

Storage describes the observed state of the VirtualMachine’s storage.

VirtualMachineStorageStatus

VirtualMachineStorageStatus defines the observed state of a VirtualMachine’s storage.

Appears In:
Field Description Default Validation

Usage describes the observed amount of storage used by a VirtualMachine.

VirtualMachineStorageStatusUsage

Field Description Default Validation

total Quantity

Total describes the total storage space used by a VirtualMachine that
counts against the Namespace’s storage quota.

disks Quantity

Disks describes the total storage space used by a VirtualMachine’s
non-PVC disks.

other Quantity

Other describes the total storage space used by the VirtualMachine’s
non disk files, ex. the configuration file, swap space, logs, snapshots,
etc.

VirtualMachineTemplateSpec

VirtualMachineTemplateSpec describes the data needed to create a VirtualMachine from a template.

Field Description Default Validation

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

Specification of the desired behavior of each replica virtual machine.

VirtualMachineVolume

VirtualMachineVolume represents a named volume in a VM.

Appears In:
Field Description Default Validation

name string

Name represents the volume’s name. Must be a DNS_LABEL and unique within
the VM.

persistentVolumeClaim PersistentVolumeClaimVolumeSource

PersistentVolumeClaim represents a reference to a PersistentVolumeClaim
in the same namespace.

VirtualMachineVolumeCryptoStatus

Field Description Default Validation

providerID string

ProviderID describes the provider ID used to encrypt the volume.
Please note, this field will be empty if the volume is not
encrypted.

keyID string

KeyID describes the key ID used to encrypt the volume.
Please note, this field will be empty if the volume is not
encrypted.

VirtualMachineVolumeProvisioningMode

Underlying type: string

VirtualMachineVolumeProvisioningMode is the type used to express the desired or observed provisioning mode for a virtual machine disk.

Validation:
  • Enum: [Thin Thick ThickEagerZero]

VirtualMachineVolumeSource

VirtualMachineVolumeSource represents the source location of a volume to mount. Only one of its members may be specified.

Appears In:
Field Description Default Validation

persistentVolumeClaim PersistentVolumeClaimVolumeSource

PersistentVolumeClaim represents a reference to a PersistentVolumeClaim
in the same namespace.

VirtualMachineVolumeStatus

VirtualMachineVolumeStatus defines the observed state of a VirtualMachineVolume instance.

Appears In:
Field Description Default Validation

name string

Name is the name of the attached volume.

Type is the type of the attached volume.

Managed

Enum: [Classic Managed]

Crypto describes the volume’s encryption status.

limit Quantity

Limit describes the storage limit for the volume.

used Quantity

Used describes the observed, non-shared size of the volume on disk.
For example, if this is a linked-clone’s boot volume, this value
represents the space consumed by the linked clone, not the parent.

attached boolean

Attached represents whether a volume has been successfully attached to
the VirtualMachine or not.

diskUUID string

DiskUUID represents the underlying virtual disk UUID and is present when
attachment succeeds.

error string

Error represents the last error seen when attaching or detaching a
volume. Error will be empty if attachment succeeds.

VirtualMachineVolumeType

Underlying type: string

VirtualMachineVolumeType describes the type of a VirtualMachine volume.

Validation:
  • Enum: [Classic Managed]

VirtualMachineWebConsoleRequest

VirtualMachineWebConsoleRequest allows the creation of a one-time, web console connection to a VM.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha3

kind string

VirtualMachineWebConsoleRequest

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineWebConsoleRequestSpec

VirtualMachineWebConsoleRequestSpec describes the desired state for a web console request to a VM.

Field Description Default Validation

name string

Name is the name of a VM in the same Namespace as this web console
request.

publicKey string

PublicKey is used to encrypt the status.response. This is expected to be a RSA OAEP public key in X.509 PEM format.

VirtualMachineWebConsoleRequestStatus

VirtualMachineWebConsoleRequestStatus describes the observed state of the request.

Field Description Default Validation

response string

Response will be the authenticated ticket corresponding to this web console request.

expiryTime Time

ExpiryTime is the time at which access via this request will expire.

proxyAddr string

ProxyAddr describes the host address and optional port used to access
the VM’s web console.

The value could be a DNS entry, IPv4, or IPv6 address, followed by an
optional port. For example, valid values include:

DNS
* host.com
* host.com:6443

IPv4
* 1.2.3.4
* 1.2.3.4:6443

IPv6
* 1234:1234:1234:1234:1234:1234:1234:1234
* [1234:1234:1234:1234:1234:1234:1234:1234]:6443
* 1234:1234:1234:0000:0000:0000:1234:1234
* 1234:1234:1234::::1234:1234
* [1234:1234:1234::::1234:1234]:6443

In other words, the field may be set to any value that is parsable
by Go’s https://pkg.go.dev/net#ResolveIPAddr and
https://pkg.go.dev/net#ParseIP functions.

vmoperator.vmware.com/v1alpha4

Package v1alpha4 is one of the schemas for VM Operator.

AffinitySpec

AffinitySpec defines the group of affinity scheduling rules.

Appears In:
Field Description Default Validation

vmAffinity VMAffinitySpec

VMAffinity describes affinity scheduling rules related to other VMs.

vmAntiAffinity VMAntiAffinitySpec

VMAntiAffinity describes anti-affinity scheduling rules related to other
VMs.

ClusterVirtualMachineImage

ClusterVirtualMachineImage is the schema for the clustervirtualmachineimages API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha4

kind string

ClusterVirtualMachineImage

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

DynamicDirectPathIODevice

DynamicDirectPathIODevice contains the configuration corresponding to a Dynamic DirectPath I/O device.

Appears In:
Field Description Default Validation

vendorID integer

deviceID integer

customLabel string

GroupMember

GroupMember describes a member of a VirtualMachineGroup.

Field Description Default Validation

name string

Name is the name of member of this group.

kind string

Kind is the kind of member of this group, which can be either
VirtualMachine or VirtualMachineGroup.

If omitted, it defaults to VirtualMachine.

VirtualMachine

Enum: [VirtualMachine VirtualMachineGroup]

GuestHeartbeatAction

GuestHeartbeatAction describes an action based on the guest heartbeat.

Field Description Default Validation

thresholdStatus GuestHeartbeatStatus

ThresholdStatus is the value that the guest heartbeat status must be at or above to be
considered successful.

green

Enum: [yellow green]

GuestHeartbeatStatus

Underlying type: string

GuestHeartbeatStatus is the guest heartbeat status.

Appears In:

GuestInfoAction

GuestInfoAction describes a key from GuestInfo that must match the associated value expression.

Field Description Default Validation

key string

Key is the name of the GuestInfo key.

The key is automatically prefixed with "guestinfo." before being
evaluated. Thus if the key "guestinfo.mykey" is provided, it will be
evaluated as "guestinfo.guestinfo.mykey".

value string

Value is a regular expression that is matched against the value of the
specified key.

An empty value is the equivalent of "match any" or ".*".

All values must adhere to the RE2 regular expression syntax as documented
at https://golang.org/s/re2syntax. Invalid values may be rejected or
ignored depending on the implementation of this API. Either way, invalid
values will not be considered when evaluating the ready state of a VM.

InstanceStorage

InstanceStorage provides information used to configure instance storage volumes for a VirtualMachine.

Field Description Default Validation

storageClass string

StorageClass refers to the name of a StorageClass resource used to
provide the storage for the configured instance storage volumes.
The value of this field has no relationship to or bearing on the field
virtualMachine.spec.storageClass. Please note the referred StorageClass
must be available in the same namespace as the VirtualMachineClass that
uses it for configuring instance storage.

volumes InstanceStorageVolume array

Volumes describes instance storage volumes created for a VirtualMachine
instance that use this VirtualMachineClass.

InstanceStorageVolume

InstanceStorageVolume contains information required to create an instance storage volume on a VirtualMachine.

Appears In:
Field Description Default Validation

size Quantity

InstanceVolumeClaimVolumeSource

InstanceVolumeClaimVolumeSource contains information about the instance storage volume claimed as a PVC.

Field Description Default Validation

storageClass string

StorageClass is the name of the Kubernetes StorageClass that provides
the backing storage for this instance storage volume.

size Quantity

Size is the size of the requested instance storage volume.

LoadBalancerIngress

LoadBalancerIngress represents the status of a load balancer ingress point: traffic intended for the service should be sent to an ingress point. IP or Hostname may both be set in this structure. It is up to the consumer to determine which field should be used when accessing this LoadBalancer.

Appears In:
Field Description Default Validation

ip string

IP is set for load balancer ingress points that are specified by an IP
address.

hostname string

Hostname is set for load balancer ingress points that are specified by a
DNS address.

LoadBalancerStatus

LoadBalancerStatus represents the status of a load balancer.

Field Description Default Validation

ingress LoadBalancerIngress array

Ingress is a list containing ingress addresses for the load balancer.
Traffic intended for the service should be sent to any of these ingress
points.

NetworkDeviceStatus

NetworkDeviceStatus defines the network interface IP configuration including gateway, subnet mask and IP address as seen by OVF properties.

Appears In:
Field Description Default Validation

Gateway4 string

Gateway4 is the gateway for the IPv4 address family for this device.

MacAddress string

MacAddress is the MAC address of the network device.

IPAddresses string array

IpAddresses represents one or more IP addresses assigned to the network
device in CIDR notation, ex. "192.0.2.1/16".

NetworkStatus

NetworkStatus describes the observed state of the VM’s network configuration.

Field Description Default Validation

Devices NetworkDeviceStatus array

Devices describe a list of current status information for each
network interface that is desired to be attached to the
VirtualMachineTemplate.

Nameservers string array

Nameservers describe a list of the DNS servers accessible by one of the
VM’s configured network devices.

OVFProperty

OVFProperty describes an OVF property associated with an image. OVF properties may be used in conjunction with the vAppConfig bootstrap provider to customize a VM during its creation.

Field Description Default Validation

key string

Key describes the OVF property’s key.

type string

Type describes the OVF property’s type.

default string

Default describes the OVF property’s default value.

PersistentVolumeClaimVolumeSource

PersistentVolumeClaimVolumeSource is a composite for the Kubernetes corev1.PersistentVolumeClaimVolumeSource and instance storage options.

Field Description Default Validation

claimName string

claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

readOnly boolean

readOnly Will force the ReadOnly setting in VolumeMounts.
Default false.

instanceVolumeClaim InstanceVolumeClaimVolumeSource

InstanceVolumeClaim is set if the PVC is backed by instance storage.

ResourcePoolSpec

ResourcePoolSpec defines a Logical Grouping of workloads that share resource policies.

Field Description Default Validation

name string

Name describes the name of the ResourcePool grouping.

Reservations describes the guaranteed resources reserved for the
ResourcePool.

Limits describes the limit to resources available to the ResourcePool.

ResourcePoolStatus

ResourcePoolStatus describes the observed state of a vSphere child resource pool created for the Spec.ResourcePool.Name.

Field Description Default Validation

clusterMoID string

childResourcePoolMoID string

TCPSocketAction

TCPSocketAction describes an action based on opening a socket.

Field Description Default Validation

Port specifies a number or name of the port to access on the VM.
If the format of port is a number, it must be in the range 1 to 65535.
If the format of name is a string, it must be an IANA_SVC_NAME.

host string

Host is an optional host name to connect to. Host defaults to the VM IP.

VGPUDevice

VGPUDevice contains the configuration corresponding to a vGPU device.

Appears In:
Field Description Default Validation

profileName string

VMAffinitySpec

VMAffinitySpec defines the affinity requirements for scheduling rules related to other VMs.

Appears In:
Field Description Default Validation

requiredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

RequiredDuringSchedulingPreferredDuringExecution describes affinity
requirements that must be met or the VM will not be scheduled.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

preferredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

PreferredDuringSchedulingPreferredDuringExecution describes affinity
requirements that should be met, but the VM can still be scheduled if
the requirement cannot be satisfied. The scheduler will prefer to
schedule VMs that satisfy the affinity expressions specified by this
field, but it may choose to violate one or more of the expressions.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

VMAffinityTerm

VMAffinityTerm defines the VM affinity/anti-affinity term.

Field Description Default Validation

labelSelector LabelSelector

LabelSelector is a label query over a set of VMs.
When omitted, this term matches with no VMs.

topologyKey string

TopologyKey describes where this VM should be co-located (affinity) or not
co-located (anti-affinity).
Commonly used values include:
kubernetes.io/hostname — The rule is executed in the context of a node/host.
topology.kubernetes.io/zone — This rule is executed in the context of a zone.

Please note, The following rules apply when specifying the topology key in the context of a zone/host.

  • When topology key is in the context of a zone, the only supported verbs are
    PreferredDuringSchedulingPreferredDuringExecution and RequiredDuringSchedulingPreferredDuringExecution.

  • When topology key is in the context of a host, the only supported verbs are
    PreferredDuringSchedulingPreferredDuringExecution and RequiredDuringSchedulingPreferredDuringExecution
    for VM-VM node-level anti-affinity scheduling.

VMAntiAffinitySpec

VMAntiAffinitySpec defines the anti-affinity requirements for scheduling rules related to other VMs.

Appears In:
Field Description Default Validation

requiredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

RequiredDuringSchedulingPreferredDuringExecution describes anti-affinity
requirements that must be met or the VM will not be scheduled.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

preferredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

PreferredDuringSchedulingPreferredDuringExecution describes anti-affinity
requirements that should be met, but the VM can still be scheduled if
the requirement cannot be satisfied. The scheduler will prefer to
schedule VMs that satisfy the anti-affinity expressions specified by
this field, but it may choose to violate one or more of the expressions.
Additionally, it also describes the anti-affinity requirements that
should be met during run-time, but the VM can still be run if the
requirements cannot be satisfied.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

VSphereClusterModuleStatus

VSphereClusterModuleStatus describes the observed state of a vSphere cluster module.

Field Description Default Validation

groupName string

moduleUUID string

clusterMoID string

VirtualDevices

VirtualDevices contains information about the virtual devices associated with a VirtualMachineClass.

Field Description Default Validation

vgpuDevices VGPUDevice array

dynamicDirectPathIODevices DynamicDirectPathIODevice array

VirtualMachine

VirtualMachine is the schema for the virtualmachines API and represents the desired state and observed status of a virtualmachines resource.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha4

kind string

VirtualMachine

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineAdvancedSpec

VirtualMachineAdvancedSpec describes a set of optional, advanced VM configuration options.

Appears In:
Field Description Default Validation

bootDiskCapacity Quantity

BootDiskCapacity is the capacity of the VM’s boot disk — the first disk
from the VirtualMachineImage from which the VM was deployed.

Please note it is not advised to change this value while the VM is
running. Also, resizing the VM’s boot disk may require actions inside of
the guest to take advantage of the additional capacity. Finally, changing
the size of the VM’s boot disk, even increasing it, could adversely
affect the VM.

Please note this field is ignored if the VM is deployed from an ISO with
CD-ROM devices attached.

defaultVolumeProvisioningMode VirtualMachineVolumeProvisioningMode

DefaultVolumeProvisioningMode specifies the default provisioning mode for
persistent volumes managed by this VM.

Enum: [Thin Thick ThickEagerZero]

changeBlockTracking boolean

ChangeBlockTracking is a flag that enables incremental backup support
for this VM, a feature utilized by external backup systems such as
VMware Data Recovery.

VirtualMachineBootstrapCloudInitSpec

VirtualMachineBootstrapCloudInitSpec describes the CloudInit configuration used to bootstrap the VM.

Field Description Default Validation

instanceID string

InstanceID is the cloud-init metadata instance ID.
If omitted, this field defaults to the VM’s BiosUUID.

cloudConfig CloudConfig

CloudConfig describes a subset of a Cloud-Init CloudConfig, used to
bootstrap the VM.

Please note this field and RawCloudConfig are mutually exclusive.

rawCloudConfig SecretKeySelector

RawCloudConfig describes a key in a Secret resource that contains the
CloudConfig data used to bootstrap the VM.

The CloudConfig data specified by the key may be plain-text,
base64-encoded, or gzipped and base64-encoded.

Please note this field and CloudConfig are mutually exclusive.

sshAuthorizedKeys string array

SSHAuthorizedKeys is a list of public keys that CloudInit will apply to
the guest’s default user.

useGlobalNameserversAsDefault boolean

UseGlobalNameserversAsDefault will use the global nameservers specified in
the NetworkSpec as the per-interface nameservers when the per-interface
nameservers is not provided.

Defaults to true if omitted.

useGlobalSearchDomainsAsDefault boolean

UseGlobalSearchDomainsAsDefault will use the global search domains specified
in the NetworkSpec as the per-interface search domains when the per-interface
search domains is not provided.

Defaults to true if omitted.

VirtualMachineBootstrapLinuxPrepSpec

VirtualMachineBootstrapLinuxPrepSpec describes the LinuxPrep configuration used to bootstrap the VM.

Field Description Default Validation

hardwareClockIsUTC boolean

HardwareClockIsUTC specifies whether the hardware clock is in UTC or
local time.

timeZone string

TimeZone is a case-sensitive timezone, such as Europe/Sofia.

Valid values are based on the tz (timezone) database used by Linux and
other Unix systems. The values are strings in the form of
"Area/Location," in which Area is a continent or ocean name, and
Location is the city, island, or other regional designation.

Please see https://kb.vmware.com/s/article/2145518 for a list of valid
time zones for Linux systems.

VirtualMachineBootstrapSpec

VirtualMachineBootstrapSpec defines the desired state of a VM’s bootstrap configuration.

Appears In:
Field Description Default Validation

CloudInit may be used to bootstrap Linux guests with Cloud-Init or
Windows guests that support Cloudbase-Init.

The guest’s networking stack is configured by Cloud-Init on Linux guests
and Cloudbase-Init on Windows guests.

Please note this bootstrap provider may not be used in conjunction with
the other bootstrap providers.

LinuxPrep may be used to bootstrap Linux guests.

The guest’s networking stack is configured by Guest OS Customization
(GOSC).

Please note this bootstrap provider may be used in conjunction with the
VAppConfig bootstrap provider when wanting to configure the guest’s
network with GOSC but also send vApp/OVF properties into the guest.

This bootstrap provider may not be used in conjunction with the CloudInit
or Sysprep bootstrap providers.

Sysprep may be used to bootstrap Windows guests.

The guest’s networking stack is configured by Guest OS Customization
(GOSC).

Please note this bootstrap provider may be used in conjunction with the
VAppConfig bootstrap provider when wanting to configure the guest’s
network with GOSC but also send vApp/OVF properties into the guest.

This bootstrap provider may not be used in conjunction with the CloudInit
or LinuxPrep bootstrap providers.

VAppConfig may be used to bootstrap guests that rely on vApp properties
(how VMware surfaces OVF properties on guests) to transport data into the
guest.

The guest’s networking stack may be configured using either vApp
properties or GOSC.

Many OVFs define one or more properties that are used by the guest to
bootstrap its networking stack. If the VirtualMachineImage defines one or
more properties like this, then they can be configured to use the network
data provided for this VM at runtime by setting these properties to Go
template strings.

It is also possible to use GOSC to bootstrap this VM’s network stack by
configuring either the LinuxPrep or Sysprep bootstrap providers.

Please note the VAppConfig bootstrap provider in conjunction with the
LinuxPrep bootstrap provider is the equivalent of setting the v1alpha1
VM metadata transport to "OvfEnv".

This bootstrap provider may not be used in conjunction with the CloudInit
bootstrap provider.

VirtualMachineBootstrapSysprepSpec

VirtualMachineBootstrapSysprepSpec describes the Sysprep configuration used to bootstrap the VM.

Field Description Default Validation

sysprep Sysprep

Sysprep is an object representation of a Windows sysprep.xml answer file.

This field encloses all the individual keys listed in a sysprep.xml file.

For more detailed information please see
https://technet.microsoft.com/en-us/library/cc771830(v=ws.10).aspx.

Please note this field and RawSysprep are mutually exclusive.

rawSysprep SecretKeySelector

RawSysprep describes a key in a Secret resource that contains an XML
string of the Sysprep text used to bootstrap the VM.

The data specified by the Secret key may be plain-text, base64-encoded,
or gzipped and base64-encoded.

Please note this field and Sysprep are mutually exclusive.

VirtualMachineBootstrapVAppConfigSpec

VirtualMachineBootstrapVAppConfigSpec describes the vApp configuration used to bootstrap the VM.

Field Description Default Validation

properties KeyValueOrSecretKeySelectorPair array

Properties is a list of vApp/OVF property key/value pairs.

Please note this field and RawProperties are mutually exclusive.

rawProperties string

RawProperties is the name of a Secret resource in the same Namespace as
this VM where each key/value pair from the Secret is used as a vApp
key/value pair.

Please note this field and Properties are mutually exclusive.

VirtualMachineCdromSpec

VirtualMachineCdromSpec describes the desired state of a CD-ROM device.

Appears In:
Field Description Default Validation

name string

Name consists of at least two lowercase letters or digits of this CD-ROM.
It must be unique among all CD-ROM devices attached to the VM.

This field is immutable when the VM is powered on.

Pattern: ^[a-z0-9]\{2,}$

Image describes the reference to an ISO type VirtualMachineImage or
ClusterVirtualMachineImage resource used as the backing for the CD-ROM.
If the image kind is omitted, it defaults to VirtualMachineImage.

This field is immutable when the VM is powered on.

Please note, unlike the spec.imageName field, the value of this
spec.cdrom.image.name MUST be a Kubernetes object name.

connected boolean

Connected describes the desired connection state of the CD-ROM device.

When true, the CD-ROM device is added and connected to the VM.
If the device already exists, it is updated to a connected state.

When explicitly set to false, the CD-ROM device is added but remains
disconnected from the VM. If the CD-ROM device already exists, it is
updated to a disconnected state.

Note: Before disconnecting a CD-ROM, the device may need to be unmounted
in the guest OS. Refer to the following KB article for more details:
https://knowledge.broadcom.com/external/article?legacyId=2144053

Defaults to true if omitted.

true

allowGuestControl boolean

AllowGuestControl describes whether or not a web console connection
may be used to connect/disconnect the CD-ROM device.

Defaults to true if omitted.

true

VirtualMachineClass

VirtualMachineClass is the schema for the virtualmachineclasses API and represents the desired state and observed status of a virtualmachineclasses resource.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha4

kind string

VirtualMachineClass

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineClassHardware

VirtualMachineClassHardware describes a virtual hardware resource specification.

Field Description Default Validation

cpus integer

memory Quantity

devices VirtualDevices

instanceStorage InstanceStorage

VirtualMachineClassInstance

VirtualMachineClassInstance is the schema for the virtualmachineclassinstances API and represents the desired state and observed status of a virtualmachineclassinstance resource.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha4

kind string

VirtualMachineClassInstance

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineClassInstanceSpec

VirtualMachineClassInstanceSpec defines the desired state of VirtualMachineClassInstance. It is a composite of VirtualMachineClassSpec.

Field Description Default Validation

controllerName string

ControllerName describes the name of the controller responsible for
reconciling VirtualMachine resources that are realized from this
VirtualMachineClass.

When omitted, controllers reconciling VirtualMachine resources determine
the default controller name from the environment variable
DEFAULT_VM_CLASS_CONTROLLER_NAME. If this environment variable is not
defined or empty, it defaults to vmoperator.vmware.com/vsphere.

Once a non-empty value is assigned to this field, attempts to set this
field to an empty value will be silently ignored.

Hardware describes the configuration of the VirtualMachineClass
attributes related to virtual hardware. The configuration specified in
this field is used to customize the virtual hardware characteristics of
any VirtualMachine associated with this VirtualMachineClass.

Policies describes the configuration of the VirtualMachineClass
attributes related to virtual infrastructure policy. The configuration
specified in this field is used to customize various policies related to
infrastructure resource consumption.

description string

Description describes the configuration of the VirtualMachineClass which
is not related to virtual hardware or infrastructure policy. This field
is used to address remaining specs about this VirtualMachineClass.

configSpec RawMessage

ConfigSpec describes additional configuration information for a
VirtualMachine.
The contents of this field are the VirtualMachineConfigSpec data object
(https://bit.ly/3HDtiRu) marshaled to JSON using the discriminator
field "_typeName" to preserve type information.

Schemaless: \{}
Type: object

reservedProfileID string

ReservedProfileID describes the reservation profile associated with
the namespace-scoped VirtualMachineClass object.

reservedSlots integer

ReservedSlots describes the number of slots reserved for VMs that use
this VirtualMachineClass.
This field is only valid in conjunction with reservedProfileID.

Minimum: 0

VirtualMachineClassInstanceStatus

VirtualMachineClassInstanceStatus defines the observed state of VirtualMachineClassInstance.

VirtualMachineClassPolicies

VirtualMachineClassPolicies describes the policy configuration to be used by a VirtualMachineClass.

Field Description Default Validation

VirtualMachineClassResources

VirtualMachineClassResources describes the virtual hardware resource reservations and limits configuration to be used by a VirtualMachineClass.

Field Description Default Validation

VirtualMachineClassSpec

VirtualMachineClassSpec defines the desired state of VirtualMachineClass.

Field Description Default Validation

controllerName string

ControllerName describes the name of the controller responsible for
reconciling VirtualMachine resources that are realized from this
VirtualMachineClass.

When omitted, controllers reconciling VirtualMachine resources determine
the default controller name from the environment variable
DEFAULT_VM_CLASS_CONTROLLER_NAME. If this environment variable is not
defined or empty, it defaults to vmoperator.vmware.com/vsphere.

Once a non-empty value is assigned to this field, attempts to set this
field to an empty value will be silently ignored.

Hardware describes the configuration of the VirtualMachineClass
attributes related to virtual hardware. The configuration specified in
this field is used to customize the virtual hardware characteristics of
any VirtualMachine associated with this VirtualMachineClass.

Policies describes the configuration of the VirtualMachineClass
attributes related to virtual infrastructure policy. The configuration
specified in this field is used to customize various policies related to
infrastructure resource consumption.

description string

Description describes the configuration of the VirtualMachineClass which
is not related to virtual hardware or infrastructure policy. This field
is used to address remaining specs about this VirtualMachineClass.

configSpec RawMessage

ConfigSpec describes additional configuration information for a
VirtualMachine.
The contents of this field are the VirtualMachineConfigSpec data object
(https://bit.ly/3HDtiRu) marshaled to JSON using the discriminator
field "_typeName" to preserve type information.

Schemaless: \{}
Type: object

reservedProfileID string

ReservedProfileID describes the reservation profile associated with
the namespace-scoped VirtualMachineClass object.

reservedSlots integer

ReservedSlots describes the number of slots reserved for VMs that use
this VirtualMachineClass.
This field is only valid in conjunction with reservedProfileID.

Minimum: 0

VirtualMachineClassStatus

VirtualMachineClassStatus defines the observed state of VirtualMachineClass.

Appears In:

VirtualMachineCryptoSpec

VirtualMachineCryptoSpec defines the desired state of a VirtualMachine’s encryption state.

Appears In:
Field Description Default Validation

encryptionClassName string

EncryptionClassName describes the name of the EncryptionClass resource
used to encrypt this VM.

Please note, this field is not required to encrypt the VM. If the
underlying platform has a default key provider, the VM may still be fully
or partially encrypted depending on the specified storage and VM classes.

If there is a default key provider and an encryption storage class is
selected, the files in the VM’s home directory and non-PVC virtual disks
will be encrypted

If there is a default key provider and a VM Class with a virtual, trusted
platform module (vTPM) is selected, the files in the VM’s home directory,
minus any virtual disks, will be encrypted.

If the underlying vSphere platform does not have a default key provider,
then this field is required when specifying an encryption storage class
and/or a VM Class with a vTPM.

If this field is set, spec.storageClass must use an encryption-enabled
storage class.

useDefaultKeyProvider boolean

UseDefaultKeyProvider describes the desired behavior for when an explicit
EncryptionClass is not provided.

When an explicit EncryptionClass is not provided and this value is true:

  • Deploying a VirtualMachine with an encryption storage policy or vTPM
    will be encrypted using the default key provider.

  • If a VirtualMachine is not encrypted, uses an encryption storage
    policy or has a virtual, trusted platform module (vTPM), there is a
    default key provider, the VM will be encrypted using the default key
    provider.

  • If a VirtualMachine is encrypted with a provider other than the default
    key provider, the VM will be rekeyed using the default key provider.

When an explicit EncryptionClass is not provided and this value is false:

  • Deploying a VirtualMachine with an encryption storage policy or vTPM
    will fail.

  • If a VirtualMachine is encrypted with a provider other than the default
    key provider, the VM will be not be rekeyed.

Please note, this could result in a VirtualMachine that cannot be
powered on since it is encrypted using a provider or key that may have
been removed. Without the key, the VM cannot be decrypted and thus
cannot be powered on.

Defaults to true if omitted.

true

VirtualMachineCryptoStatus

Appears In:
Field Description Default Validation

Encrypted describes the observed state of the VirtualMachine’s
encryption. There may be two values in this list:

  • Config — This refers to all of the files related to a VM except any
    virtual disks.

  • Disks  — This refers to at least one of the VM’s attached disks. To
    determine the encryption state of the individual disks,
    please refer to status.volumes[].crypto.

providerID string

ProviderID describes the provider ID used to encrypt the VirtualMachine.
Please note, this field will be empty if the VirtualMachine is not
encrypted.

keyID string

KeyID describes the key ID used to encrypt the VirtualMachine.
Please note, this field will be empty if the VirtualMachine is not
encrypted.

VirtualMachineEncryptionType

Underlying type: string

VirtualMachineGroup

VirtualMachineGroup is the schema for the VirtualMachineGroup API and represents the desired state and observed status of a VirtualMachineGroup resource.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha4

kind string

VirtualMachineGroup

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineGroupBootOrderGroup

VirtualMachineGroupBootOrderGroup describes a boot order group within a VirtualMachineGroup.

Field Description Default Validation

members GroupMember array

Members describes the names of VirtualMachine or VirtualMachineGroup
objects that are members of this boot order group. The VM or VM Group
objects must be in the same namespace as this group.

powerOnDelay Duration

PowerOnDelay is the amount of time to wait before powering on all the
members of this boot order group.

If omitted, the members will be powered on immediately when the group’s
power state changes to PoweredOn.

VirtualMachineGroupMemberStatus

VirtualMachineGroupMemberStatus describes the observed status of a group member.

Field Description Default Validation

name string

Name is the name of this member.

kind string

Kind is the kind of this member, which can be either VirtualMachine or
VirtualMachineGroup.

Enum: [VirtualMachine VirtualMachineGroup]

uid UID

UID is the K8s metadata UID of this current member object.

Placement describes the placement results for this member.

Please note this field is only set for VirtualMachine members.

PowerState describes the observed power state of this member.

Please note this field is only set for VirtualMachine members.

Enum: [PoweredOff PoweredOn Suspended]

conditions Condition array

Conditions describes any conditions associated with this member.

  • The GroupLinked condition is True when the member exists and has its
    "Spec.GroupName" field set to the group’s name.

  • The PowerStateSynced condition is True for the VirtualMachine member
    when the member’s power state matches the group’s power state.

  • The PlacementReady condition is True for the VirtualMachine member
    when the member has a placement decision ready.

  • The ReadyType condition is True for the VirtualMachineGroup member
    when all of its members' conditions are True.

VirtualMachineGroupPlacementDatastoreStatus

Field Description Default Validation

name string

Name describes the name of a datastore.

id string

ID describes the datastore ID.

url string

URL describes the datastore URL.

supportedDiskFormats string array

SupportedDiskFormat describes the list of disk formats supported by this
datastore.

diskKey integer

DiskKey describes the device key to which this recommendation applies.
When omitted, this recommendation is for the VM’s home directory.

topLevelDirectoryCreateSupported boolean

TopLevelDirectoryCreateSupported indicates whether or not the datastore
supports creating a top-level directory or requires the use of the
namespace manager (i.e. vSAN).

VirtualMachineGroupSpec

VirtualMachineGroupSpec defines the desired state of VirtualMachineGroup.

Appears In:
Field Description Default Validation

groupName string

GroupName describes the name of the group that this group belongs to.

When this field is set to a valid group that contains this VM Group as a
member, an owner reference to that group is added to this VM Group.

When this field is deleted or changed, any existing owner reference to
the previous group will be removed from this VM Group.

BootOrder describes the boot sequence for this group members. Each boot
order contains a set of members that will be powered on simultaneously,
with an optional delay before powering on. The orders are processed
sequentially in the order they appear in this list, with delays being
cumulative across orders.

When powering off, all members are stopped immediately without delays.

PowerState describes the desired power state of a VirtualMachineGroup.

Please note this field may be omitted when creating a new VM group. This
ensures that the power states of any existing VMs that are added to the
group do not have their power states changed until the group’s power
state is explicitly altered.

However, once the field is set to a non-empty value, it may no longer be
set to an empty value. This means that if the group’s power state is
PoweredOn, and a VM whose power state is PoweredOff is added to the
group, that VM will be powered on.

Enum: [PoweredOff PoweredOn Suspended]

nextForcePowerStateSyncTime string

NextForcePowerStateSyncTime may be used to force sync the power state of
the group to all of its members, by setting the value of this field to
"now" (case-insensitive).

A mutating webhook changes this value to the current time (UTC), which
the VM Group controller then uses to trigger a sync of the group’s power
state to its members.

Please note it is not possible to schedule future syncs using this field.
The only value that users may set is the string "now" (case-insensitive).

PowerOffMode describes the desired behavior when powering off a VM Group.
Refer to the VirtualMachine.PowerOffMode field for more details.

Please note this field is only propagated to the group’s members when
the group’s power state is changed or the nextForcePowerStateSyncTime
field is set to "now".

Enum: [Hard Soft TrySoft]

SuspendMode describes the desired behavior when suspending a VM Group.
Refer to the VirtualMachine.SuspendMode field for more details.

Please note this field is only propagated to the group’s members when
the group’s power state is changed or the nextForcePowerStateSyncTime
field is set to "now".

Enum: [Hard Soft TrySoft]

VirtualMachineGroupStatus

VirtualMachineGroupStatus defines the observed state of VirtualMachineGroup.

Appears In:
Field Description Default Validation

Members describes the observed status of group members.

lastUpdatedPowerStateTime Time

LastUpdatedPowerStateTime describes the observed time when the power
state of the group was last updated.

conditions Condition array

Conditions describes any conditions associated with this VM Group.

  • The ReadyType condition is True when all of the group members have
    all of their expected conditions set to True.

VirtualMachineImage

VirtualMachineImage is the schema for the virtualmachineimages API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha4

kind string

VirtualMachineImage

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineImageCache

VirtualMachineImageCache is the schema for the virtualmachineimagecaches API.

Deprecated: This type is deprecated and will be removed in a future release. Please use v1alpha5.VirtualMachineImageCache instead.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha4

kind string

VirtualMachineImageCache

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineImageCacheFileStatus

Field Description Default Validation

id string

ID describes the value used to locate the file.
The value of this field depends on the type of file:

  • Type=Other  — The ID value describes a datastore path,
    ex. "[my-datastore-1] .contentlib-cache/1234/5678/my-disk-1.vmdk"

  • Type=Disk, DiskType=Classic — The ID value describes a datastore
    path.

  • Type=Disk, DiskType=Managed — The ID value describes a First Class
    Disk (FCD).

Type describes the type of file.

Enum: [Disk Other]

DiskType describes the type of disk.
This field is only non-empty when Type=Disk.

Enum: [Classic Managed]

VirtualMachineImageCacheFileType

Underlying type: string

VirtualMachineImageCacheFileType describes the types of files that may be cached.

Validation:
  • Enum: [Disk Other]

VirtualMachineImageCacheLocationSpec

Field Description Default Validation

datacenterID string

DatacenterID describes the ID of the datacenter to which the image should
be cached.

profileID string

ProfileID describes the ID of the storage profile used to cache the
image.
Please note, this profile must include the datastore specified by the
datastoreID field.

datastoreID string

DatastoreID describes the ID of the datastore to which the image should
be cached.

VirtualMachineImageCacheLocationStatus

Field Description Default Validation

datacenterID string

DatacenterID describes the ID of the datacenter where the image is
cached.

datastoreID string

DatastoreID describes the ID of the datastore where the image is cached.

profileID string

ProfileID describes the ID of the storage profile used to cache the
image.

Files describes the image’s files cached on this datastore.

conditions Condition array

Conditions describes any conditions associated with this cache location.

Generally this should just include the ReadyType condition.

VirtualMachineImageCacheOVFStatus

Field Description Default Validation

configMapName string

ConfigMapName describes the name of the ConfigMap resource that contains
the image’s OVF envelope encoded as YAML. The data is located in the
ConfigMap key "value".

providerVersion string

ProviderVersion describes the observed provider version at which the OVF
is cached.
The provider is Content Library, the version is the content version.

VirtualMachineImageCacheSpec

VirtualMachineImageCacheSpec defines the desired state of VirtualMachineImageCache.

Field Description Default Validation

providerID string

ProviderID describes the ID of the provider item to which the image
corresponds.
If the provider is Content Library, the ID refers to a Content Library
item.

providerVersion string

ProviderVersion describes the version of the provider item to which the
image corresponds.
The provider is Content Library, the version is the content version.

Locations describes the locations where the image should be cached.

VirtualMachineImageCacheStatus

VirtualMachineImageCacheStatus defines the observed state of VirtualMachineImageCache.

Field Description Default Validation

Locations describe the observed locations where the image is cached.

OVF describes the observed status of the cached OVF content.

conditions Condition array

Conditions describes any conditions associated with this cached image.

Generally this should just include the ReadyType condition, which will
only be True if all of the cached locations also have True ReadyType
condition.

VirtualMachineImageDiskInfo

VirtualMachineImageDiskInfo describes information about any disks associated with this image.

Field Description Default Validation

capacity Quantity

Capacity is the virtual disk capacity in bytes.

size Quantity

Size is the estimated populated size of the virtual disk in bytes.

VirtualMachineImageOSInfo

VirtualMachineImageOSInfo describes the image’s guest operating system.

Field Description Default Validation

id string

ID describes the operating system ID.

This value is also added to the image resource’s labels as
VirtualMachineImageOSIDLabel.

type string

Type describes the operating system type.

This value is also added to the image resource’s labels as
VirtualMachineImageOSTypeLabel.

version string

Version describes the operating system version.

This value is also added to the image resource’s labels as
VirtualMachineImageOSVersionLabel.

VirtualMachineImageProductInfo

VirtualMachineImageProductInfo describes product information for an image.

Field Description Default Validation

product string

Product is a general descriptor for the image.

vendor string

Vendor describes the organization/user that produced the image.

version string

Version describes the short-form version of the image.

fullVersion string

FullVersion describes the long-form version of the image.

VirtualMachineImageRef

Field Description Default Validation

kind string

Kind describes the type of image, either a namespace-scoped
VirtualMachineImage or cluster-scoped ClusterVirtualMachineImage.

name string

Name refers to the name of a VirtualMachineImage resource in the same
namespace as this VM or a cluster-scoped ClusterVirtualMachineImage.

VirtualMachineImageSpec

VirtualMachineImageSpec defines the desired state of VirtualMachineImage.

Field Description Default Validation

providerRef LocalObjectRef

ProviderRef is a reference to the resource that contains the source of
this image’s information.

VirtualMachineImageStatus

VirtualMachineImageStatus defines the observed state of VirtualMachineImage.

Field Description Default Validation

name string

Name describes the display name of this image.

capabilities string array

Capabilities describes the image’s observed capabilities.

The capabilities are discerned when VM Operator reconciles an image.
If the source of an image is an OVF in Content Library, then the
capabilities are parsed from the OVF property
capabilities.image.vmoperator.vmware.com as a comma-separated list of
values. Well-known capabilities include:

  • cloud-init

  • nvidia-gpu

  • sriov-net

Every capability is also added to the resource’s labels as
VirtualMachineImageCapabilityLabel + Value. For example, if the
capability is "cloud-init" then the following label will be added to the
resource: capability.image.vmoperator.vmware.com/cloud-init.

firmware string

Firmware describe the firmware type used by this image, ex. BIOS, EFI.

hardwareVersion integer

HardwareVersion describes the observed hardware version of this image.

OSInfo describes the observed operating system information for this
image.

The OS information is also added to the image resource’s labels. Please
refer to VirtualMachineImageOSInfo for more information.

ovfProperties OVFProperty array

OVFProperties describes the observed user configurable OVF properties defined for this
image.

vmwareSystemProperties KeyValuePair array

VMwareSystemProperties describes the observed VMware system properties defined for
this image.

ProductInfo describes the observed product information for this image.

Disks describes the observed disk information for this image.

providerContentVersion string

ProviderContentVersion describes the content version from the provider item
that this image corresponds to. If the provider of this image is a Content
Library, this will be the version of the corresponding Content Library item.

providerItemID string

ProviderItemID describes the ID of the provider item that this image corresponds to.
If the provider of this image is a Content Library, this ID will be that of the
corresponding Content Library item.

conditions Condition array

Conditions describes the observed conditions for this image.

type string

Type describes the content library item type (OVF, ISO, or VM) of the
image.

VirtualMachineNetworkConfigDHCPOptionsStatus

VirtualMachineNetworkConfigDHCPOptionsStatus describes the configured DHCP options.

Field Description Default Validation

enabled boolean

Enabled describes whether DHCP is enabled.

VirtualMachineNetworkConfigDHCPStatus

VirtualMachineNetworkConfigDHCPStatus describes the configured state of the system-wide DHCP settings for IP4 and IP6.

Field Description Default Validation

IP4 describes the configured state of the IP4 DHCP settings.

IP6 describes the configured state of the IP6 DHCP settings.

VirtualMachineNetworkConfigDNSStatus

VirtualMachineNetworkConfigDNSStatus describes the configured state of the RFC 1034 client-side DNS settings.

Field Description Default Validation

hostName string

HostName is the host name portion of the DNS name. For example,
the "my-vm" part of "my-vm.domain.local".

domainName string

DomainName is the domain name portion of the DNS name. For example,
the "domain.local" part of "my-vm.domain.local".

nameservers string array

Nameservers is a list of the IP addresses for the DNS servers to use.

IP4 addresses are specified using dotted decimal notation. For example,
"192.0.2.1".

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
symbol '::' to represent multiple 16-bit groups of contiguous 0’s only
once in an address as described in RFC 2373.

searchDomains string array

SearchDomains is a list of domains in which to search for hosts, in the
order of preference.

VirtualMachineNetworkConfigInterfaceIPStatus

VirtualMachineNetworkConfigInterfaceIPStatus describes the configured state of a VM’s network interface’s IP configuration.

Field Description Default Validation

DHCP describes the interface’s configured DHCP options.

addresses string array

Addresses describes configured IP addresses for this interface.
Addresses include the network’s prefix length, ex. 192.168.0.0/24 or
2001:DB8:101::230:6eff:fe04:d9ff::/64.

gateway4 string

Gateway4 describes the interface’s configured, default, IP4 gateway.

Please note the IP address include the network prefix length, ex.
192.168.0.1/24.

gateway6 string

Gateway6 describes the interface’s configured, default, IP6 gateway.

Please note the IP address includes the network prefix length, ex.
2001:db8:101::1/64.

VirtualMachineNetworkConfigInterfaceStatus

VirtualMachineNetworkConfigInterfaceStatus describes the configured state of network interface.

Field Description Default Validation

name string

Name describes the corresponding network interface with the same name
in the VM’s desired network interface list.

Please note this name is not necessarily related to the name of the
device as it is surfaced inside of the guest.

IP describes the interface’s configured IP information.

DNS describes the interface’s configured DNS information.

VirtualMachineNetworkConfigStatus

Field Description Default Validation

Interfaces describes the configured state of the network interfaces.

DNS describes the configured state of client-side DNS.

VirtualMachineNetworkDHCPOptionsStatus

VirtualMachineNetworkDHCPOptionsStatus describes the observed state of DHCP options.

Field Description Default Validation

config KeyValuePair array

Config describes platform-dependent settings for the DHCP client.

The key part is a unique number while the value part is the platform
specific configuration command. For example on Linux and BSD systems
using the file dhclient.conf output would be reported at system scope:
key='1', value='timeout 60;' key='2', value='reboot 10;'. The output
reported per interface would be:
key='1', value='prepend domain-name-servers 192.0.2.1;'
key='2', value='require subnet-mask, domain-name-servers;'.

enabled boolean

Enabled reports the status of the DHCP client services.

VirtualMachineNetworkDHCPStatus

VirtualMachineNetworkDHCPStatus describes the observed state of the client-side, system-wide DHCP settings for IP4 and IP6.

Field Description Default Validation

IP4 describes the observed state of the IP4 DHCP client settings.

IP6 describes the observed state of the IP6 DHCP client settings.

VirtualMachineNetworkDNSStatus

VirtualMachineNetworkDNSStatus describes the observed state of the guest’s RFC 1034 client-side DNS settings.

Field Description Default Validation

dhcp boolean

DHCP indicates whether or not dynamic host control protocol (DHCP) was
used to configure DNS configuration.

hostName string

HostName is the host name portion of the DNS name. For example,
the "my-vm" part of "my-vm.domain.local".

domainName string

DomainName is the domain name portion of the DNS name. For example,
the "domain.local" part of "my-vm.domain.local".

nameservers string array

Nameservers is a list of the IP addresses for the DNS servers to use.

IP4 addresses are specified using dotted decimal notation. For example,
"192.0.2.1".

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
symbol '::' to represent multiple 16-bit groups of contiguous 0’s only
once in an address as described in RFC 2373.

searchDomains string array

SearchDomains is a list of domains in which to search for hosts, in the
order of preference.

VirtualMachineNetworkIPRouteGatewayStatus

VirtualMachineNetworkIPRouteGatewayStatus describes the observed state of a guest network’s IP route’s next hop gateway.

Field Description Default Validation

device string

Device is the name of the device in the guest for which this gateway
applies.

address string

Address is the IP4 or IP6 address of the gateway.

VirtualMachineNetworkIPRouteStatus

VirtualMachineNetworkIPRouteStatus describes the observed state of a guest network’s IP routes.

Field Description Default Validation

Gateway describes where to send the packets to next.

networkAddress string

NetworkAddress is the IP4 or IP6 address of the destination network.

Addresses include the network’s prefix length, ex. 192.168.0.0/24 or
2001:DB8:101::230:6eff:fe04:d9ff::/64.

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of symbol
'::' to represent multiple 16-bit groups of contiguous 0’s only once in
an address as described in RFC 2373.

VirtualMachineNetworkIPStackStatus

VirtualMachineNetworkIPStackStatus describes the observed state of a VM’s IP stack.

Field Description Default Validation

DHCP describes the VM’s observed, client-side, system-wide DHCP options.

DNS describes the VM’s observed, client-side DNS configuration.

IPRoutes contain the VM’s routing tables for all address families.

kernelConfig KeyValuePair array

KernelConfig describes the observed state of the VM’s kernel IP
configuration settings.

The key part contains a unique number while the value part contains the
'key=value' as provided by the underlying provider. For example, on
Linux and/or BSD, the systcl -a output would be reported as:
key='5', value='net.ipv4.tcp_keepalive_time = 7200'.

VirtualMachineNetworkInterfaceIPAddrStatus

VirtualMachineNetworkInterfaceIPAddrStatus describes information about a specific IP address.

Field Description Default Validation

address string

Address is an IP4 or IP6 address and their network prefix length.

An IP4 address is specified using dotted decimal notation. For example,
"192.0.2.1".

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
symbol '::' to represent multiple 16-bit groups of contiguous 0’s only
once in an address as described in RFC 2373.

lifetime Time

Lifetime describes when this address will expire.

origin string

Origin describes how this address was configured.

Enum: [dhcp linklayer manual other random]

state string

State describes the state of this IP address.

Enum: [deprecated duplicate inaccessible invalid preferred tentative unknown]

VirtualMachineNetworkInterfaceIPStatus

VirtualMachineNetworkInterfaceIPStatus describes the observed state of a VM’s network interface’s IP configuration.

Field Description Default Validation

autoConfigurationEnabled boolean

AutoConfigurationEnabled describes whether or not ICMPv6 router
solicitation requests are enabled or disabled from a given interface.

These requests acquire an IP6 address and default gateway route from
zero-to-many routers on the connected network.

If not set then ICMPv6 is not available on this VM.

DHCP describes the VM’s observed, client-side, interface-specific DHCP
options.

Addresses describes observed IP addresses for this interface.

macAddr string

MACAddr describes the observed MAC address for this interface.

VirtualMachineNetworkInterfaceSpec

VirtualMachineNetworkInterfaceSpec describes the desired state of a VM’s network interface.

Field Description Default Validation

name string

Name describes the unique name of this network interface, used to
distinguish it from other network interfaces attached to this VM.

When the bootstrap provider is Cloud-Init and GuestDeviceName is not
specified, the device inside the guest will be renamed to this value.
Please note it is up to the user to ensure the provided name does not
conflict with any other devices inside the guest, ex. dvd, cdrom, sda, etc.

Pattern: ^[a-z0-9]\{2,}$

Network is the name of the network resource to which this interface is
connected.

If no network is provided, then this interface will be connected to the
Namespace’s default network.

guestDeviceName string

GuestDeviceName is used to rename the device inside the guest when the
bootstrap provider is Cloud-Init. Please note it is up to the user to
ensure the provided device name does not conflict with any other devices
inside the guest, ex. dvd, cdrom, sda, etc.

Pattern: ^\w\w+$

macAddr string

MACAddr is the optional MAC address of this interface.

If no MAC address is provided, one will be generated by either the network
provider or vCenter.

Please note this field is only supported when the Network API Group is
crd.nsx.vmware.com.

Pattern: ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$

addresses string array

Addresses is an optional list of IP4 or IP6 addresses to assign to this
interface.

Please note this field is only supported if the connected network
supports manual IP allocation.

Please note IP4 and IP6 addresses must include the network prefix length,
ex. 192.168.0.10/24 or 2001:db8:101::a/64.

Please note this field may not contain IP4 addresses if DHCP4 is set
to true or IP6 addresses if DHCP6 is set to true.

dhcp4 boolean

DHCP4 indicates whether or not this interface uses DHCP for IP4
networking.

Please note this field is only supported if the network connection
supports DHCP.

Please note this field is mutually exclusive with IP4 addresses in the
Addresses field and the Gateway4 field.

dhcp6 boolean

DHCP6 indicates whether or not this interface uses DHCP for IP6
networking.

Please note this field is only supported if the network connection
supports DHCP.

Please note this field is mutually exclusive with IP6 addresses in the
Addresses field and the Gateway6 field.

gateway4 string

Gateway4 is the default, IP4 gateway for this interface.

If unset, the gateway from the network provider will be used. However,
if set to "None", the network provider gateway will be ignored.

Please note this field is only supported if the network connection
supports manual IP allocation.

Please note this field is mutually exclusive with DHCP4.

gateway6 string

Gateway6 is the primary IP6 gateway for this interface.

If unset, the gateway from the network provider will be used. However,
if set to "None", the network provider gateway will be ignored.

Please note this field is only supported if the network connection
supports manual IP allocation.

Please note this field is mutually exclusive with DHCP6.

mtu integer

MTU is the Maximum Transmission Unit size in bytes.

Please note this feature is available only with the following bootstrap
providers: CloudInit.

nameservers string array

Nameservers is a list of IP4 and/or IP6 addresses used as DNS
nameservers.

Please note this feature is available only with the following bootstrap
providers: CloudInit and Sysprep.

When using CloudInit and UseGlobalNameserversAsDefault is either unset or
true, if nameservers is not provided, the global nameservers will be used
instead.

Please note that Linux allows only three nameservers
(https://linux.die.net/man/5/resolv.conf).

Routes is a list of optional, static routes.

Please note this feature is available only with the following bootstrap
providers: CloudInit.

searchDomains string array

SearchDomains is a list of search domains used when resolving IP
addresses with DNS.

Please note this feature is available only with the following bootstrap
providers: CloudInit.

When using CloudInit and UseGlobalSearchDomainsAsDefault is either unset
or true, if search domains is not provided, the global search domains
will be used instead.

VirtualMachineNetworkInterfaceStatus

VirtualMachineNetworkInterfaceStatus describes the observed state of a VM’s network interface.

Field Description Default Validation

name string

Name describes the corresponding network interface with the same name
in the VM’s desired network interface list. If unset, then there is no
corresponding entry for this interface.

Please note this name is not necessarily related to the name of the
device as it is surfaced inside of the guest.

deviceKey integer

DeviceKey describes the unique hardware device key of this network
interface.

IP describes the observed state of the interface’s IP configuration.

DNS describes the observed state of the interface’s DNS configuration.

VirtualMachineNetworkRouteSpec

VirtualMachineNetworkRouteSpec defines a static route for a guest.

Field Description Default Validation

to string

To is either "default", or an IP4 or IP6 address.

via string

Via is an IP4 or IP6 address.

metric integer

Metric is the weight/priority of the route.

Minimum: 1

VirtualMachineNetworkSpec

VirtualMachineNetworkSpec defines a VM’s desired network configuration.

Appears In:
Field Description Default Validation

hostName string

HostName describes the value the guest uses as its host name. If omitted,
the name of the VM will be used.

Please note, this feature is available with the following bootstrap
providers: CloudInit, LinuxPrep, and Sysprep.

This field must adhere to the format specified in RFC-1034, Section 3.5
for DNS labels:

  • The total length is restricted to 63 characters or less.

  • The total length is restricted to 15 characters or less on Windows
    systems.

  • The value may begin with a digit per RFC-1123.

  • Underscores are not allowed.

  • Dashes are permitted, but not at the start or end of the value.

  • Symbol unicode points, such as emoji, are permitted, ex. ✓. However,
    please note that the use of emoji, even where allowed, may not
    compatible with the guest operating system, so it recommended to
    stick with more common characters for this value.

  • The value may be a valid IP4 or IP6 address. Please note, the use of
    an IP address for a host name is not compatible with all guest
    operating systems and is discouraged. Additionally, using an IP
    address for the host name is disallowed if spec.network.domainName is
    non-empty.

Please note, the combined values of spec.network.hostName and
spec.network.domainName may not exceed 255 characters in length.

domainName string

DomainName describes the value the guest uses as its domain name.

Please note, this feature is available with the following bootstrap
providers: CloudInit, LinuxPrep, and Sysprep.

This field must adhere to the format specified in RFC-1034, Section 3.5
for DNS names:

  • When joined with the host name, the total length is restricted to 255
    characters or less.

  • Individual segments must be 63 characters or less.

  • The top-level domain( ex. ".com"), is at least two letters with no
    special characters.

  • Underscores are not allowed.

  • Dashes are permitted, but not at the start or end of the value.

  • Long, top-level domain names (ex. ".london") are permitted.

  • Symbol unicode points, such as emoji, are disallowed in the top-level
    domain.

Please note, the combined values of spec.network.hostName and
spec.network.domainName may not exceed 255 characters in length.

When deploying a guest running Microsoft Windows, this field describes
the domain the computer should join.

disabled boolean

Disabled is a flag that indicates whether or not to disable networking
for this VM.

When set to true, the VM is not configured with a default interface nor
any specified from the Interfaces field.

nameservers string array

Nameservers is a list of IP4 and/or IP6 addresses used as DNS
nameservers. These are applied globally.

Please note global nameservers are only available with the following
bootstrap providers: LinuxPrep and Sysprep. The Cloud-Init bootstrap
provider supports per-interface nameservers. However, when Cloud-Init
is used and UseGlobalNameserversAsDefault is true, the global
nameservers will be used when the per-interface nameservers is not
provided.

Please note that Linux allows only three nameservers
(https://linux.die.net/man/5/resolv.conf).

searchDomains string array

SearchDomains is a list of search domains used when resolving IP
addresses with DNS. These are applied globally.

Please note global search domains are only available with the following
bootstrap providers: LinuxPrep and Sysprep. The Cloud-Init bootstrap
provider supports per-interface search domains. However, when Cloud-Init
is used and UseGlobalSearchDomainsAsDefault is true, the global search
domains will be used when the per-interface search domains is not provided.

Interfaces is the list of network interfaces used by this VM.

If the Interfaces field is empty and the Disabled field is false, then
a default interface with the name eth0 will be created.

The maximum number of network interface allowed is 10 because a vSphere
virtual machine may not have more than 10 virtual ethernet card devices.

MaxItems: 10

VirtualMachineNetworkStatus

VirtualMachineNetworkStatus defines the observed state of a VM’s network configuration.

Appears In:
Field Description Default Validation

Config describes the resolved, configured network settings for the VM,
such as an interface’s IP address obtained from IPAM, or global DNS
settings.

Please note this information does not represent the observed network
state of the VM, but is intended for situations where someone boots a VM
with no appropriate bootstrap engine and needs to know the network config
valid for the deployed VM.

hostName string

HostName describes the observed hostname reported by the VirtualMachine’s
guest operating system.

Please note, this value is only reported if VMware Tools is installed in
the guest, and the value may or may not be a fully qualified domain name
(FQDN), it simply depends on what is reported by the guest.

Interfaces describes the status of the VM’s network interfaces.

IPStacks describes information about the guest’s configured IP networking
stacks.

primaryIP4 string

PrimaryIP4 describes the VM’s primary IP4 address.

If the bootstrap provider is CloudInit then this value is set to the
value of the VM’s "guestinfo.local-ipv4" property. Please see
https://bit.ly/3NJB534 for more information on how this value is
calculated.

If the bootstrap provider is anything else then this field is set to the
value of the infrastructure VM’s "guest.ipAddress" field. Please see
https://bit.ly/3Au0jM4 for more information.

primaryIP6 string

PrimaryIP6 describes the VM’s primary IP6 address.

If the bootstrap provider is CloudInit then this value is set to the
value of the VM’s "guestinfo.local-ipv6" property. Please see
https://bit.ly/3NJB534 for more information on how this value is
calculated.

If the bootstrap provider is anything else then this field is set to the
value of the infrastructure VM’s "guest.ipAddress" field. Please see
https://bit.ly/3Au0jM4 for more information.

VirtualMachinePlacementStatus

Field Description Default Validation

zoneID string

Zone describes the recommended zone for this VM.

node string

Node describes the recommended node for this VM.

pool string

Pool describes the recommended resource pool for this VM.

Datastores describe the recommended datastores for this VM.
This includes the recommendations for each of the VM’s disks
and files.

VirtualMachinePowerOpMode

Underlying type: string

VirtualMachinePowerOpMode represents the various power operation modes when powering off or suspending a VM.

Validation:
  • Enum: [Hard Soft TrySoft]

VirtualMachinePowerState

Underlying type: string

VirtualMachinePowerState defines a VM’s desired and observed power states.

Validation:
  • Enum: [PoweredOff PoweredOn Suspended]

VirtualMachinePromoteDisksMode

Underlying type: string

VirtualMachinePromoteDisksMode represents the available modes for promoting child disks to full clones.

Validation:
  • Enum: [Online Offline Disabled]

Appears In:

VirtualMachinePublishRequest

VirtualMachinePublishRequest defines the information necessary to publish a VirtualMachine as a VirtualMachineImage to an image registry.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha4

kind string

VirtualMachinePublishRequest

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachinePublishRequestSource

VirtualMachinePublishRequestSource is the source of a publication request, typically a VirtualMachine resource.

Field Description Default Validation

name string

Name is the name of the referenced object.

If omitted this value defaults to the name of the
VirtualMachinePublishRequest resource.

apiVersion string

APIVersion is the API version of the referenced object.

vmoperator.vmware.com/v1alpha1

kind string

Kind is the kind of referenced object.

VirtualMachine

VirtualMachinePublishRequestSpec

VirtualMachinePublishRequestSpec defines the desired state of a VirtualMachinePublishRequest.

All the fields in this spec are optional. This is especially useful when a DevOps persona wants to publish a VM without doing anything more than applying a VirtualMachinePublishRequest resource that has the same name as said VM in the same namespace as said VM.

Field Description Default Validation

Source is the source of the publication request, ex. a VirtualMachine
resource.

If this value is omitted then the publication controller checks to
see if there is a resource with the same name as this
VirtualMachinePublishRequest resource, an API version equal to
spec.source.apiVersion, and a kind equal to spec.source.kind. If such
a resource exists, then it is the source of the publication.

Target is the target of the publication request, ex. item
information and a ContentLibrary resource.

If this value is omitted, the controller uses spec.source.name + "-image"
as the name of the published item. Additionally, when omitted the
controller attempts to identify the target location by matching a
resource with an API version equal to spec.target.location.apiVersion, a
kind equal to spec.target.location.kind, w/ the label
"imageregistry.vmware.com/default".

Please note that while optional, if a VirtualMachinePublishRequest sans
target information is applied to a namespace without a default
publication target, then the VirtualMachinePublishRequest resource
will be marked in error.

ttlSecondsAfterFinished integer

TTLSecondsAfterFinished is the time-to-live duration for how long this
resource will be allowed to exist once the publication operation
completes. After the TTL expires, the resource will be automatically
deleted without the user having to take any direct action.

If this field is unset then the request resource will not be
automatically deleted. If this field is set to zero then the request
resource is eligible for deletion immediately after it finishes.

Minimum: 0

VirtualMachinePublishRequestStatus

VirtualMachinePublishRequestStatus defines the observed state of a VirtualMachinePublishRequest.

Field Description Default Validation

SourceRef is the reference to the source of the publication request,
ex. a VirtualMachine resource.

TargetRef is the reference to the target of the publication request,
ex. item information and a ContentLibrary resource.

completionTime Time

CompletionTime represents time when the request was completed. It is not
guaranteed to be set in happens-before order across separate operations.
It is represented in RFC3339 form and is in UTC.

The value of this field should be equal to the value of the
LastTransitionTime for the status condition Type=Complete.

startTime Time

StartTime represents time when the request was acknowledged by the
controller. It is not guaranteed to be set in happens-before order
across separate operations. It is represented in RFC3339 form and is
in UTC.

attempts integer

Attempts represents the number of times the request to publish the VM
has been attempted.

lastAttemptTime Time

LastAttemptTime represents the time when the latest request was sent.

imageName string

ImageName is the name of the VirtualMachineImage resource that is
eventually realized in the same namespace as the VM and publication
request after the publication operation completes.

This field will not be set until the VirtualMachineImage resource
is realized.

ready boolean

Ready is set to true only when the VM has been published successfully
and the new VirtualMachineImage resource is ready.

Readiness is determined by waiting until there is status condition
Type=Complete and ensuring it and all other status conditions present
have a Status=True. The conditions present will be:

  • SourceValid

  • TargetValid

  • Uploaded

  • ImageAvailable

  • Complete

conditions Condition array

Conditions is a list of the latest, available observations of the
request’s current state.

VirtualMachinePublishRequestTarget

VirtualMachinePublishRequestTarget is the target of a publication request, typically a ContentLibrary resource.

Field Description Default Validation

Item contains information about the name of the object to which
the VM is published.

Please note this value is optional and if omitted, the controller
will use spec.source.name + "-image" as the name of the published
item.

Location contains information about the location to which to publish
the VM.

VirtualMachinePublishRequestTargetItem

VirtualMachinePublishRequestTargetItem is the item part of a publication request’s target.

Field Description Default Validation

name string

Name is the name of the published object.

If the spec.target.location.apiVersion equals
imageregistry.vmware.com/v1alpha1 and the spec.target.location.kind
equals ContentLibrary, then this should be the name that will
show up in vCenter Content Library, not the custom resource name
in the namespace.

If omitted then the controller will use spec.source.name + "-image".

description string

Description is the description to assign to the published object.

VirtualMachinePublishRequestTargetLocation

VirtualMachinePublishRequestTargetLocation is the location part of a publication request’s target.

Field Description Default Validation

name string

Name is the name of the referenced object.

Please note an error will be returned if this field is not
set in a namespace that lacks a default publication target.

A default publication target is a resource with an API version
equal to spec.target.location.apiVersion, a kind equal to
spec.target.location.kind, and has the label
"imageregistry.vmware.com/default".

apiVersion string

APIVersion is the API version of the referenced object.

imageregistry.vmware.com/v1alpha1

kind string

Kind is the kind of referenced object.

ContentLibrary

VirtualMachineReadinessProbeSpec

VirtualMachineReadinessProbeSpec describes a probe used to determine if a VM is in a ready state. All probe actions are mutually exclusive.

Appears In:
Field Description Default Validation

tcpSocket TCPSocketAction

TCPSocket specifies an action involving a TCP port.

Deprecated: The TCPSocket action requires network connectivity that is not supported in all environments.
This field will be removed in a later API version.

guestHeartbeat GuestHeartbeatAction

GuestHeartbeat specifies an action involving the guest heartbeat status.

guestInfo GuestInfoAction array

GuestInfo specifies an action involving key/value pairs from GuestInfo.

The elements are evaluated with the logical AND operator, meaning
all expressions must evaluate as true for the probe to succeed.

For example, a VM resource’s probe definition could be specified as the
following:

guestInfo:
- key: ready
value: true

With the above configuration in place, the VM would not be considered
ready until the GuestInfo key "ready" was set to the value "true".

From within the guest operating system it is possible to set GuestInfo
key/value pairs using the program "vmware-rpctool," which is included
with VM Tools. For example, the following command will set the key
"guestinfo.ready" to the value "true":

vmware-rpctool "info-set guestinfo.ready true"

Once executed, the VM’s readiness probe will be signaled and the
VM resource will be marked as ready.

timeoutSeconds integer

TimeoutSeconds specifies a number of seconds after which the probe times out.
Defaults to 10 seconds. Minimum value is 1.

Maximum: 60
Minimum: 1

periodSeconds integer

PeriodSeconds specifics how often (in seconds) to perform the probe.
Defaults to 10 seconds. Minimum value is 1.

Minimum: 1

VirtualMachineReplicaSet

VirtualMachineReplicaSet is the schema for the virtualmachinereplicasets API.

Deprecated: This type is deprecated and will be removed in a future release. Please use v1alpha5.VirtualMachineReplicaSet instead.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha4

kind string

VirtualMachineReplicaSet

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineReplicaSetSpec

VirtualMachineReplicaSetSpec is the specification of a VirtualMachineReplicaSet.

Field Description Default Validation

replicas integer

Replicas is the number of desired replicas.
This is a pointer to distinguish between explicit zero and unspecified.
Defaults to 1.

1

deletePolicy string

DeletePolicy defines the policy used to identify nodes to delete when downscaling.
Only supported deletion policy is "Random".

Enum: [Random]

selector LabelSelector

Selector is a label to query over virtual machines that should match the
replica count. A virtual machine’s label keys and values must match in order
to be controlled by this VirtualMachineReplicaSet.

It must match the VirtualMachine template’s labels.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors

Template is the object that describes the virtual machine that will be
created if insufficient replicas are detected.

VirtualMachineReplicaSetStatus

VirtualMachineReplicaSetStatus represents the observed state of a VirtualMachineReplicaSet resource.

Field Description Default Validation

replicas integer

Replicas is the most recently observed number of replicas.

fullyLabeledReplicas integer

FullyLabeledReplicas is the number of replicas that have labels matching the
labels of the virtual machine template of the VirtualMachineReplicaSet.

readyReplicas integer

ReadyReplicas is the number of ready replicas for this VirtualMachineReplicaSet. A
virtual machine is considered ready when it’s "Ready" condition is marked as
true.

observedGeneration integer

ObservedGeneration reflects the generation of the most recently observed
VirtualMachineReplicaSet.

conditions Condition array

Conditions represents the latest available observations of a
VirtualMachineReplicaSet’s current state.

VirtualMachineReservedSpec

VirtualMachineReservedSpec describes a set of VM configuration options reserved for system use. Modification attempts by DevOps users will result in a validation error.

Appears In:
Field Description Default Validation

resourcePolicyName string

VirtualMachineResourceSpec

VirtualMachineResourceSpec describes a virtual hardware policy specification.

Field Description Default Validation

cpu Quantity

memory Quantity

VirtualMachineService

VirtualMachineService is the Schema for the virtualmachineservices API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha4

kind string

VirtualMachineService

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineServicePort

VirtualMachineServicePort describes the specification of a service port to be exposed by a VirtualMachineService. This VirtualMachineServicePort specification includes attributes that define the external and internal representation of the service port.

Field Description Default Validation

name string

Name describes the name to be used to identify this
VirtualMachineServicePort.

protocol string

Protocol describes the Layer 4 transport protocol for this port.
Supports "TCP", "UDP", and "SCTP".

port integer

Port describes the external port that will be exposed by the service.

targetPort integer

TargetPort describes the internal port open on a VirtualMachine that
should be mapped to the external Port.

VirtualMachineServiceSpec

VirtualMachineServiceSpec defines the desired state of VirtualMachineService.

Appears In:
Field Description Default Validation

Type specifies a desired VirtualMachineServiceType for this
VirtualMachineService. Supported types are ClusterIP, LoadBalancer,
ExternalName.

Ports specifies a list of VirtualMachineServicePort to expose with this
VirtualMachineService. Each of these ports will be an accessible network
entry point to access this service by.

selector object (keys:string, values:string)

Selector specifies a map of key-value pairs, also known as a Label
Selector, that is used to match this VirtualMachineService with the set
of VirtualMachines that should back this VirtualMachineService.

loadBalancerIP string

LoadBalancer will get created with the IP specified in this field.
Only applies to VirtualMachineService Type: LoadBalancer
This feature depends on whether the underlying load balancer provider
supports specifying the loadBalancerIP when a load balancer is created.
This field will be ignored if the provider does not support the feature.
Deprecated: This field was under-specified and its meaning varies across implementations.
Using it is non-portable and it may not support dual-stack.
Users are encouraged to use implementation-specific annotations when available.

loadBalancerSourceRanges string array

LoadBalancerSourceRanges is an array of IP addresses in the format of
CIDRs, for example: 103.21.244.0/22 and 10.0.0.0/24.
If specified and supported by the load balancer provider, this will
restrict ingress traffic to the specified client IPs. This field will be
ignored if the provider does not support the feature.

clusterIp string

ClusterIP is the IP address of the service and is usually assigned
randomly by the master. If an address is specified manually and is not in
use by others, it will be allocated to the service; otherwise, creation
of the service will fail. This field can not be changed through updates.
Valid values are "None", empty string (""), or a valid IP address. "None"
can be specified for headless services when proxying is not required.
Only applies to types ClusterIP and LoadBalancer.
Ignored if type is ExternalName.
More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

externalName string

ExternalName is the external reference that kubedns or equivalent will
return as a CNAME record for this service. No proxying will be involved.
Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123)
and requires Type to be ExternalName.

VirtualMachineServiceStatus

VirtualMachineServiceStatus defines the observed state of VirtualMachineService.

Appears In:
Field Description Default Validation

loadBalancer LoadBalancerStatus

LoadBalancer contains the current status of the load balancer,
if one is present.

VirtualMachineServiceType

Underlying type: string

VirtualMachineServiceType string describes ingress methods for a service.

VirtualMachineSetResourcePolicy

VirtualMachineSetResourcePolicy is the Schema for the virtualmachinesetresourcepolicies API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha4

kind string

VirtualMachineSetResourcePolicy

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineSetResourcePolicySpec

VirtualMachineSetResourcePolicySpec defines the desired state of VirtualMachineSetResourcePolicy.

Field Description Default Validation

resourcePool ResourcePoolSpec

folder string

clusterModuleGroups string array

VirtualMachineSetResourcePolicyStatus

VirtualMachineSetResourcePolicyStatus defines the observed state of VirtualMachineSetResourcePolicy.

Field Description Default Validation

resourcePools ResourcePoolStatus array

clustermodules VSphereClusterModuleStatus array

VirtualMachineSpec

VirtualMachineSpec defines the desired state of a VirtualMachine.

Field Description Default Validation

Cdrom describes the desired state of the VM’s CD-ROM devices.

Each CD-ROM device requires a reference to an ISO-type
VirtualMachineImage or ClusterVirtualMachineImage resource as backing.

Multiple CD-ROM devices using the same backing image, regardless of image
kinds (namespace or cluster scope), are not allowed.

CD-ROM devices can be added, updated, or removed when the VM is powered
off. When the VM is powered on, only the connection state of existing
CD-ROM devices can be changed.
CD-ROM devices are attached to the VM in the specified list-order.

Image describes the reference to the VirtualMachineImage or
ClusterVirtualMachineImage resource used to deploy this VM.

Please note, unlike the field spec.imageName, the value of
spec.image.name MUST be a Kubernetes object name.

Please also note, when creating a new VirtualMachine, if this field and
spec.imageName are both non-empty, then they must refer to the same
resource or an error is returned.

Please note, this field may be empty if the VM was imported instead of
deployed by VM Operator. An imported VirtualMachine resource references
an existing VM on the underlying platform that was not deployed from a
VM image.

imageName string

ImageName describes the name of the image resource used to deploy this
VM.

This field may be used to specify the name of a VirtualMachineImage
or ClusterVirtualMachineImage resource. The resolver first checks to see
if there is a VirtualMachineImage with the specified name in the
same namespace as the VM being deployed. If no such resource exists, the
resolver then checks to see if there is a ClusterVirtualMachineImage
resource with the specified name.

This field may also be used to specify the display name (vSphere name) of
a VirtualMachineImage or ClusterVirtualMachineImage resource. If the
display name unambiguously resolves to a distinct VM image (among all
existing VirtualMachineImages in the VM’s namespace and all existing
ClusterVirtualMachineImages), then a mutation webhook updates the
spec.image field with the reference to the resolved VM image. If the
display name resolves to multiple or no VM images, then the mutation
webhook denies the request and returns an error.

Please also note, when creating a new VirtualMachine, if this field and
spec.image are both non-empty, then they must refer to the same
resource or an error is returned.

Please note, this field may be empty if the VM was imported instead of
deployed by VM Operator. An imported VirtualMachine resource references
an existing VM on the underlying platform that was not deployed from a
VM image.

className string

ClassName describes the name of the VirtualMachineClass resource used to
deploy this VM.

Please note, this field may be empty if the VM was imported instead of
deployed by VM Operator. An imported VirtualMachine resource references
an existing VM on the underlying platform that was not deployed from a
VM class.

If a VM is using a class, a different value in spec.className
leads to the VM being resized.

affinity AffinitySpec

Affinity describes the VM’s scheduling constraints.

Crypto describes the desired encryption state of the VirtualMachine.

storageClass string

StorageClass describes the name of a Kubernetes StorageClass resource
used to configure this VM’s storage-related attributes.

Please see https://kubernetes.io/docs/concepts/storage/storage-classes/
for more information on Kubernetes storage classes.

Bootstrap describes the desired state of the guest’s bootstrap
configuration.

If omitted, a default bootstrap method may be selected based on the
guest OS identifier. If Linux, then the LinuxPrep method is used.

Network describes the desired network configuration for the VM.

Please note this value may be omitted entirely and the VM will be
assigned a single, virtual network interface that is connected to the
Namespace’s default network.

PowerState describes the desired power state of a VirtualMachine.

Please note this field may be omitted when creating a new VM and will
default to "PoweredOn." However, once the field is set to a non-empty
value, it may no longer be set to an empty value.

Additionally, setting this value to "Suspended" is not supported when
creating a new VM. The valid values when creating a new VM are
"PoweredOn" and "PoweredOff." An empty value is also allowed on create
since this value defaults to "PoweredOn" for new VMs.

Enum: [PoweredOff PoweredOn Suspended]

PowerOffMode describes the desired behavior when powering off a VM.

There are three, supported power off modes: Hard, Soft, and
TrySoft. The first mode, Hard, is the equivalent of a physical
system’s power cord being ripped from the wall. The Soft mode
requires the VM’s guest to have VM Tools installed and attempts to
gracefully shutdown the VM. Its variant, TrySoft, first attempts
a graceful shutdown, and if that fails or the VM is not in a powered off
state after five minutes, the VM is halted.

If omitted, the mode defaults to TrySoft.

TrySoft

Enum: [Hard Soft TrySoft]

SuspendMode describes the desired behavior when suspending a VM.

There are three, supported suspend modes: Hard, Soft, and
TrySoft. The first mode, Hard, is where vSphere suspends the VM to
disk without any interaction inside of the guest. The Soft mode
requires the VM’s guest to have VM Tools installed and attempts to
gracefully suspend the VM. Its variant, TrySoft, first attempts
a graceful suspend, and if that fails or the VM is not in a put into
standby by the guest after five minutes, the VM is suspended.

If omitted, the mode defaults to TrySoft.

TrySoft

Enum: [Hard Soft TrySoft]

nextRestartTime string

NextRestartTime may be used to restart the VM, in accordance with
RestartMode, by setting the value of this field to "now"
(case-insensitive).

A mutating webhook changes this value to the current time (UTC), which
the VM controller then uses to determine the VM should be restarted by
comparing the value to the timestamp of the last time the VM was
restarted.

Please note it is not possible to schedule future restarts using this
field. The only value that users may set is the string "now"
(case-insensitive).

RestartMode describes the desired behavior for restarting a VM when
spec.nextRestartTime is set to "now" (case-insensitive).

There are three, supported suspend modes: Hard, Soft, and
TrySoft. The first mode, Hard, is where vSphere resets the VM without any
interaction inside of the guest. The Soft mode requires the VM’s guest to
have VM Tools installed and asks the guest to restart the VM. Its
variant, TrySoft, first attempts a soft restart, and if that fails or
does not complete within five minutes, the VM is hard reset.

If omitted, the mode defaults to TrySoft.

TrySoft

Enum: [Hard Soft TrySoft]

volumes VirtualMachineVolume array

Volumes describes a list of volumes that can be mounted to the VM.

ReadinessProbe describes a probe used to determine the VM’s ready state.

Advanced describes a set of optional, advanced VM configuration options.

Reserved describes a set of VM configuration options reserved for system
use.

Please note attempts to modify the value of this field by a DevOps user
will result in a validation error.

minHardwareVersion integer

MinHardwareVersion describes the desired, minimum hardware version.

The logic that determines the hardware version is as follows:

  1. If this field is set, then its value is used.

  2. Otherwise, if the VirtualMachineClass used to deploy the VM contains a
    non-empty hardware version, then it is used.

  3. Finally, if the hardware version is still undetermined, the value is
    set to the default hardware version for the Datacenter/Cluster/Host
    where the VM is provisioned.

This field is never updated to reflect the derived hardware version.
Instead, VirtualMachineStatus.HardwareVersion surfaces
the observed hardware version.

Please note, setting this field’s value to N ensures a VM’s hardware
version is equal to or greater than N. For example, if a VM’s observed
hardware version is 10 and this field’s value is 13, then the VM will be
upgraded to hardware version 13. However, if the observed hardware
version is 17 and this field’s value is 13, no change will occur.

Several features are hardware version dependent, for example:

  • NVMe Controllers >= 14

  • Dynamic Direct Path I/O devices >= 17

Please refer to https://kb.vmware.com/s/article/1003746 for a list of VM
hardware versions.

It is important to remember that a VM’s hardware version may not be
downgraded and upgrading a VM deployed from an image based on an older
hardware version to a more recent one may result in unpredictable
behavior. In other words, please be careful when choosing to upgrade a
VM to a newer hardware version.

Minimum: 13

instanceUUID string

InstanceUUID describes the desired Instance UUID for a VM.
If omitted, this field defaults to a random UUID.
This value is only used for the VM Instance UUID,
it is not used within cloudInit.
This identifier is used by VirtualCenter to uniquely identify all
virtual machine instances, including those that may share the same BIOS UUID.

Format: uuid

biosUUID string

BiosUUID describes the desired BIOS UUID for a VM.
If omitted, this field defaults to a random UUID.
When the bootstrap provider is Cloud-Init, this value is used as the
default value for spec.bootstrap.cloudInit.instanceID if it is omitted.

Format: uuid

guestID string

GuestID describes the desired guest operating system identifier for a VM.

The logic that determines the guest ID is as follows:

If this field is set, then its value is used.
Otherwise, if the VM is deployed from an OVF template that defines a
guest ID, then that value is used.
The guest ID from VirtualMachineClass used to deploy the VM is ignored.

Please note that some guest ID values may require a minimal hardware
version, which can be set using the spec.minHardwareVersion field.
To see the mapping between virtual hardware versions and the product
versions that support a specific guest ID, please refer to
https://knowledge.broadcom.com/external/article/315655/virtual-machine-hardware-versions.html.

Please note that this field is immutable after the VM is powered on.
To change the guest ID after the VM is powered on, the VM must be powered
off and then powered on again with the updated guest ID spec.

This field is required when the VM has any CD-ROM devices attached.

PromoteDisksMode describes the mode used to promote a VM’s delta disks to
full disks. The available modes are:

  • Disabled — Do not promote disks.

  • Online  — Promote disks while the VM is powered on. VMs with
    snapshots do not support online promotion.

  • Offline  — Promote disks while the VM is powered off.

Please note, this field is ignored for encrypted VMs since they do not
use delta disks.

Defaults to Online.

Online

Enum: [Online Offline Disabled]

groupName string

GroupName indicates the name of the VirtualMachineGroup to which this
VM belongs.

VMs that belong to a group do not drive their own placement, rather that
is handled by the group.

When this field is set to a valid group that contains this VM as a
member, an owner reference to that group is added to this VM.

When this field is deleted or changed, any existing owner reference to
the previous group will be removed from this VM.

VirtualMachineStatus

VirtualMachineStatus defines the observed state of a VirtualMachine instance.

Appears In:
Field Description Default Validation

nodeName string

NodeName describes the observed name of the node where the VirtualMachine
is scheduled.

PowerState describes the observed power state of the VirtualMachine.

Enum: [PoweredOff PoweredOn Suspended]

conditions Condition array

Conditions describes the observed conditions of the VirtualMachine.

Crypto describes the observed state of the VirtualMachine’s encryption
configuration.

Network describes the observed state of the VM’s network configuration.
Please note much of the network status information is only available if
the guest has VM Tools installed.

uniqueID string

UniqueID describes a unique identifier that is provided by the underlying
infrastructure provider, such as vSphere.

biosUUID string

BiosUUID describes a unique identifier provided by the underlying
infrastructure provider that is exposed to the Guest OS BIOS as a unique
hardware identifier.

instanceUUID string

InstanceUUID describes the unique instance UUID provided by the
underlying infrastructure provider, such as vSphere.

Volumes describes the observed state of the volumes that are intended to
be attached to the VirtualMachine.

changeBlockTracking boolean

ChangeBlockTracking describes whether or not change block tracking is
enabled for the VirtualMachine.

zone string

Zone describes the availability zone where the VirtualMachine has been
scheduled.

Please note this field may be empty when the cluster is not zone-aware.

lastRestartTime Time

LastRestartTime describes the last time the VM was restarted.

hardwareVersion integer

HardwareVersion describes the VirtualMachine resource’s observed
hardware version.

Please refer to VirtualMachineSpec.MinHardwareVersion for more
information on the topic of a VM’s hardware version.

Storage describes the observed state of the VirtualMachine’s storage.

VirtualMachineStorageStatus

VirtualMachineStorageStatus defines the observed state of a VirtualMachine’s storage.

Appears In:
Field Description Default Validation

total Quantity

Total describes the total storage space used by a VirtualMachine that
counts against the Namespace’s storage quota.
This value is a sum of requested.disks and used.other.

Requested describes the observed amount of storage requested by a
VirtualMachine.

Used describes the observed amount of storage used by a VirtualMachine.

VirtualMachineStorageStatusRequested

Field Description Default Validation

disks Quantity

Disks describes the total storage space requested by a VirtualMachine’s
non-PVC disks.

VirtualMachineStorageStatusUsed

Field Description Default Validation

disks Quantity

Disks describes the total storage space used by a VirtualMachine’s
non-PVC disks. This does not include the any child / delta disks
created for snapshots.

other Quantity

Other describes the total storage space used by the VirtualMachine’s
non-disk files, ex. the configuration file, swap space, logs, etc.
This does not include the non-disk files created for snapshots,
ex. snapshot data, list, and memory files.

VirtualMachineTemplateSpec

VirtualMachineTemplateSpec describes the data needed to create a VirtualMachine from a template.

Field Description Default Validation

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

Specification of the desired behavior of each replica virtual machine.

VirtualMachineVolume

VirtualMachineVolume represents a named volume in a VM.

Appears In:
Field Description Default Validation

name string

Name represents the volume’s name. Must be a DNS_LABEL and unique within
the VM.

persistentVolumeClaim PersistentVolumeClaimVolumeSource

PersistentVolumeClaim represents a reference to a PersistentVolumeClaim
in the same namespace.

VirtualMachineVolumeCryptoStatus

Field Description Default Validation

providerID string

ProviderID describes the provider ID used to encrypt the volume.
Please note, this field will be empty if the volume is not
encrypted.

keyID string

KeyID describes the key ID used to encrypt the volume.
Please note, this field will be empty if the volume is not
encrypted.

VirtualMachineVolumeProvisioningMode

Underlying type: string

VirtualMachineVolumeProvisioningMode is the type used to express the desired or observed provisioning mode for a virtual machine disk.

Validation:
  • Enum: [Thin Thick ThickEagerZero]

VirtualMachineVolumeSource

VirtualMachineVolumeSource represents the source location of a volume to mount. Only one of its members may be specified.

Appears In:
Field Description Default Validation

persistentVolumeClaim PersistentVolumeClaimVolumeSource

PersistentVolumeClaim represents a reference to a PersistentVolumeClaim
in the same namespace.

VirtualMachineVolumeStatus

VirtualMachineVolumeStatus defines the observed state of a VirtualMachineVolume instance.

Appears In:
Field Description Default Validation

name string

Name is the name of the attached volume.

Type is the type of the attached volume.

Managed

Enum: [Classic Managed]

Crypto describes the volume’s encryption status.

limit Quantity

Limit describes the maximum, requested capacity of the volume.

requested Quantity

Requested describes the minimum, requested capacity of the volume.

Please note, this value is used when calculating a VM’s impact to a
namespace’s storage quota.

used Quantity

Used describes the observed, non-shared size of the volume on disk.

For example, if this is a linked-clone’s boot volume, this value
represents the space consumed by the linked clone, not the parent.

Another example is when a volume is thin-provisioned. The volume’s
capacity may be 20Gi, but the actual usage on disk may only be a few
hundred mebibytes.

attached boolean

Attached represents whether a volume has been successfully attached to
the VirtualMachine or not.

diskUUID string

DiskUUID represents the underlying virtual disk UUID and is present when
attachment succeeds.

error string

Error represents the last error seen when attaching or detaching a
volume. Error will be empty if attachment succeeds.

VirtualMachineVolumeType

Underlying type: string

VirtualMachineVolumeType describes the type of a VirtualMachine volume.

Validation:
  • Enum: [Classic Managed]

VirtualMachineWebConsoleRequest

VirtualMachineWebConsoleRequest allows the creation of a one-time, web console connection to a VM.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha4

kind string

VirtualMachineWebConsoleRequest

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineWebConsoleRequestSpec

VirtualMachineWebConsoleRequestSpec describes the desired state for a web console request to a VM.

Field Description Default Validation

name string

Name is the name of a VM in the same Namespace as this web console
request.

publicKey string

PublicKey is used to encrypt the status.response. This is expected to be a RSA OAEP public key in X.509 PEM format.

VirtualMachineWebConsoleRequestStatus

VirtualMachineWebConsoleRequestStatus describes the observed state of the request.

Field Description Default Validation

response string

Response will be the authenticated ticket corresponding to this web console request.

expiryTime Time

ExpiryTime is the time at which access via this request will expire.

proxyAddr string

ProxyAddr describes the host address and optional port used to access
the VM’s web console.

The value could be a DNS entry, IPv4, or IPv6 address, followed by an
optional port. For example, valid values include:

DNS
* host.com
* host.com:6443

IPv4
* 1.2.3.4
* 1.2.3.4:6443

IPv6
* 1234:1234:1234:1234:1234:1234:1234:1234
* [1234:1234:1234:1234:1234:1234:1234:1234]:6443
* 1234:1234:1234:0000:0000:0000:1234:1234
* 1234:1234:1234::::1234:1234
* [1234:1234:1234::::1234:1234]:6443

In other words, the field may be set to any value that is parsable
by Go’s https://pkg.go.dev/net#ResolveIPAddr and
https://pkg.go.dev/net#ParseIP functions.

vmoperator.vmware.com/v1alpha5

Package v1alpha5 is one of the schemas for VM Operator.

AffinitySpec

AffinitySpec defines the group of affinity scheduling rules.

Appears In:
Field Description Default Validation

vmAffinity VMAffinitySpec

VMAffinity describes affinity scheduling rules related to other VMs.

vmAntiAffinity VMAntiAffinitySpec

VMAntiAffinity describes anti-affinity scheduling rules related to other
VMs.

ClusterVirtualMachineImage

ClusterVirtualMachineImage is the schema for the clustervirtualmachineimages API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha5

kind string

ClusterVirtualMachineImage

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

DynamicDirectPathIODevice

DynamicDirectPathIODevice contains the configuration corresponding to a Dynamic DirectPath I/O device.

Appears In:
Field Description Default Validation

vendorID integer

deviceID integer

customLabel string

GroupMember

GroupMember describes a member of a VirtualMachineGroup.

Field Description Default Validation

name string

Name is the name of member of this group.

kind string

Kind is the kind of member of this group, which can be either
VirtualMachine or VirtualMachineGroup.

If omitted, it defaults to VirtualMachine.

VirtualMachine

Enum: [VirtualMachine VirtualMachineGroup]

GuestHeartbeatAction

GuestHeartbeatAction describes an action based on the guest heartbeat.

Field Description Default Validation

thresholdStatus GuestHeartbeatStatus

ThresholdStatus is the value that the guest heartbeat status must be at or above to be
considered successful.

green

Enum: [yellow green]

GuestHeartbeatStatus

Underlying type: string

GuestHeartbeatStatus is the guest heartbeat status.

Appears In:

GuestInfoAction

GuestInfoAction describes a key from GuestInfo that must match the associated value expression.

Field Description Default Validation

key string

Key is the name of the GuestInfo key.

The key is automatically prefixed with "guestinfo." before being
evaluated. Thus if the key "guestinfo.mykey" is provided, it will be
evaluated as "guestinfo.guestinfo.mykey".

value string

Value is a regular expression that is matched against the value of the
specified key.

An empty value is the equivalent of "match any" or ".*".

All values must adhere to the RE2 regular expression syntax as documented
at https://golang.org/s/re2syntax. Invalid values may be rejected or
ignored depending on the implementation of this API. Either way, invalid
values will not be considered when evaluating the ready state of a VM.

IDEControllerSpec

Field Description Default Validation

busNumber integer

BusNumber describes the desired bus number of the controller.

Maximum: 1
Minimum: 0

InstanceStorage

InstanceStorage provides information used to configure instance storage volumes for a VirtualMachine.

Field Description Default Validation

storageClass string

StorageClass refers to the name of a StorageClass resource used to
provide the storage for the configured instance storage volumes.
The value of this field has no relationship to or bearing on the field
virtualMachine.spec.storageClass. Please note the referred StorageClass
must be available in the same namespace as the VirtualMachineClass that
uses it for configuring instance storage.

volumes InstanceStorageVolume array

Volumes describes instance storage volumes created for a VirtualMachine
instance that use this VirtualMachineClass.

InstanceStorageVolume

InstanceStorageVolume contains information required to create an instance storage volume on a VirtualMachine.

Appears In:
Field Description Default Validation

size Quantity

InstanceVolumeClaimVolumeSource

InstanceVolumeClaimVolumeSource contains information about the instance storage volume claimed as a PVC.

Field Description Default Validation

storageClass string

StorageClass is the name of the Kubernetes StorageClass that provides
the backing storage for this instance storage volume.

size Quantity

Size is the size of the requested instance storage volume.

LoadBalancerIngress

LoadBalancerIngress represents the status of a load balancer ingress point: traffic intended for the service should be sent to an ingress point. IP or Hostname may both be set in this structure. It is up to the consumer to determine which field should be used when accessing this LoadBalancer.

Appears In:
Field Description Default Validation

ip string

IP is set for load balancer ingress points that are specified by an IP
address.

hostname string

Hostname is set for load balancer ingress points that are specified by a
DNS address.

LoadBalancerStatus

LoadBalancerStatus represents the status of a load balancer.

Field Description Default Validation

ingress LoadBalancerIngress array

Ingress is a list containing ingress addresses for the load balancer.
Traffic intended for the service should be sent to any of these ingress
points.

NVMEControllerSpec

Field Description Default Validation

busNumber integer

BusNumber describes the desired bus number of the controller.

Maximum: 3
Minimum: 0

SharingMode describes the sharing mode for the controller.

Defaults to None.

None

Enum: [None Physical]

NetworkDeviceStatus

NetworkDeviceStatus defines the network interface IP configuration including gateway, subnet mask and IP address as seen by OVF properties.

Appears In:
Field Description Default Validation

Gateway4 string

Gateway4 is the gateway for the IPv4 address family for this device.

MacAddress string

MacAddress is the MAC address of the network device.

IPAddresses string array

IpAddresses represents one or more IP addresses assigned to the network
device in CIDR notation, ex. "192.0.2.1/16".

NetworkStatus

NetworkStatus describes the observed state of the VM’s network configuration.

Field Description Default Validation

Devices NetworkDeviceStatus array

Devices describe a list of current status information for each
network interface that is desired to be attached to the
VirtualMachineTemplate.

Nameservers string array

Nameservers describe a list of the DNS servers accessible by one of the
VM’s configured network devices.

OVFProperty

OVFProperty describes an OVF property associated with an image. OVF properties may be used in conjunction with the vAppConfig bootstrap provider to customize a VM during its creation.

Field Description Default Validation

key string

Key describes the OVF property’s key.

type string

Type describes the OVF property’s type.

default string

Default describes the OVF property’s default value.

PersistentVolumeClaimVolumeSource

PersistentVolumeClaimVolumeSource is a composite for the Kubernetes corev1.PersistentVolumeClaimVolumeSource and instance storage options.

Field Description Default Validation

claimName string

claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

readOnly boolean

readOnly Will force the ReadOnly setting in VolumeMounts.
Default false.

instanceVolumeClaim InstanceVolumeClaimVolumeSource

InstanceVolumeClaim is set if the PVC is backed by instance storage.

PolicySpec

Underlying type: LocalObjectRef

Field Description Default Validation

apiVersion string

APIVersion defines the versioned schema of this representation of an
object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind string

Kind is a string value representing the REST resource this object
represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

name string

Name refers to a unique resource in the current namespace.
More info: http://kubernetes.io/docs/user-guide/identifiers#names

PolicyStatus

Appears In:
Field Description Default Validation

generation integer

Generation describes the observed generation of the policy applied to
this VM.

QuiesceSpec

QuiesceSpec represents specifications that will be used to quiesce the guest when taking a snapshot.

Field Description Default Validation

timeout Duration

Timeout represents the maximum time in minutes for snapshot
operation to be performed on the virtual machine. The timeout
can not be less than 5 minutes or more than 240 minutes.

ResourcePoolSpec

ResourcePoolSpec defines a Logical Grouping of workloads that share resource policies.

Field Description Default Validation

name string

Name describes the name of the ResourcePool grouping.

Reservations describes the guaranteed resources reserved for the
ResourcePool.

Limits describes the limit to resources available to the ResourcePool.

ResourcePoolStatus

ResourcePoolStatus describes the observed state of a vSphere child resource pool created for the Spec.ResourcePool.Name.

Field Description Default Validation

clusterMoID string

childResourcePoolMoID string

SATAControllerSpec

Field Description Default Validation

busNumber integer

BusNumber describes the desired bus number of the controller.

Maximum: 3
Minimum: 0

SCSIControllerSpec

Field Description Default Validation

busNumber integer

BusNumber describes the desired bus number of the controller.

Maximum: 3
Minimum: 0

SharingMode describes the sharing mode for the controller.

Defaults to None.

None

Enum: [None Physical Virtual]

Type describes the desired type of SCSI controller.

Defaults to ParaVirtual.

ParaVirtual

Enum: [ParaVirtual BusLogic LsiLogic LsiLogicSAS]

SCSIControllerType

Underlying type: string

Validation:
  • Enum: [ParaVirtual BusLogic LsiLogic LsiLogicSAS]

Appears In:

TCPSocketAction

TCPSocketAction describes an action based on opening a socket.

Field Description Default Validation

Port specifies a number or name of the port to access on the VM.
If the format of port is a number, it must be in the range 1 to 65535.
If the format of name is a string, it must be an IANA_SVC_NAME.

host string

Host is an optional host name to connect to. Host defaults to the VM IP.

VGPUDevice

VGPUDevice contains the configuration corresponding to a vGPU device.

Appears In:
Field Description Default Validation

profileName string

VMAffinitySpec

VMAffinitySpec defines the affinity requirements for scheduling rules related to other VMs.

Appears In:
Field Description Default Validation

requiredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

RequiredDuringSchedulingPreferredDuringExecution describes affinity
requirements that must be met or the VM will not be scheduled.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

preferredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

PreferredDuringSchedulingPreferredDuringExecution describes affinity
requirements that should be met, but the VM can still be scheduled if
the requirement cannot be satisfied. The scheduler will prefer to
schedule VMs that satisfy the affinity expressions specified by this
field, but it may choose to violate one or more of the expressions.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

VMAffinityTerm

VMAffinityTerm defines the VM affinity/anti-affinity term.

Field Description Default Validation

labelSelector LabelSelector

LabelSelector is a label query over a set of VMs.
When omitted, this term matches with no VMs.

topologyKey string

TopologyKey describes where this VM should be co-located (affinity) or not
co-located (anti-affinity).
Commonly used values include:
kubernetes.io/hostname — The rule is executed in the context of a node/host.
topology.kubernetes.io/zone — This rule is executed in the context of a zone.

Please note, The following rules apply when specifying the topology key in the context of a zone/host.

  • When topology key is in the context of a zone, the only supported verbs are
    PreferredDuringSchedulingPreferredDuringExecution and RequiredDuringSchedulingPreferredDuringExecution.

  • When topology key is in the context of a host, the only supported verbs are
    PreferredDuringSchedulingPreferredDuringExecution and RequiredDuringSchedulingPreferredDuringExecution
    for VM-VM node-level anti-affinity scheduling.

VMAntiAffinitySpec

VMAntiAffinitySpec defines the anti-affinity requirements for scheduling rules related to other VMs.

Appears In:
Field Description Default Validation

requiredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

RequiredDuringSchedulingPreferredDuringExecution describes anti-affinity
requirements that must be met or the VM will not be scheduled.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

preferredDuringSchedulingPreferredDuringExecution VMAffinityTerm array

PreferredDuringSchedulingPreferredDuringExecution describes anti-affinity
requirements that should be met, but the VM can still be scheduled if
the requirement cannot be satisfied. The scheduler will prefer to
schedule VMs that satisfy the anti-affinity expressions specified by
this field, but it may choose to violate one or more of the expressions.
Additionally, it also describes the anti-affinity requirements that
should be met during run-time, but the VM can still be run if the
requirements cannot be satisfied.

When there are multiple elements, the lists of nodes corresponding to
each term are intersected, i.e. all terms must be satisfied.

Note: Any update to this field will replace the entire list rather than
merging with the existing elements.

VSphereClusterModuleStatus

VSphereClusterModuleStatus describes the observed state of a vSphere cluster module.

Field Description Default Validation

groupName string

moduleUUID string

clusterMoID string

VirtualControllerSharingMode

Underlying type: string

VirtualControllerStatus

Field Description Default Validation

busNumber integer

BusNumber describes the observed bus number of the controller.

Type describes the observed type of the controller.

Enum: [IDE NVME SCSI SATA]

deviceKey integer

DeviceKey describes the observed device key of the controller.

devices VirtualDeviceStatus array

Devices describes the observed devices connected to the controller.

VirtualControllerType

Underlying type: string

Validation:
  • Enum: [IDE NVME SCSI SATA]

VirtualDeviceStatus

Field Description Default Validation

Type describes the type of the virtual device.

Enum: [CDROM Disk]

unitNumber integer

UnitNumber describes the observed unit number of the device.

VirtualDeviceType

Underlying type: string

Validation:
  • Enum: [CDROM Disk]

Appears In:

VirtualDevices

VirtualDevices contains information about the virtual devices associated with a VirtualMachineClass.

Field Description Default Validation

vgpuDevices VGPUDevice array

dynamicDirectPathIODevices DynamicDirectPathIODevice array

VirtualMachine

VirtualMachine is the schema for the virtualmachines API and represents the desired state and observed status of a virtualmachines resource.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha5

kind string

VirtualMachine

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineAdvancedSpec

VirtualMachineAdvancedSpec describes a set of optional, advanced VM configuration options.

Appears In:
Field Description Default Validation

bootDiskCapacity Quantity

BootDiskCapacity is the capacity of the VM’s boot disk — the first disk
from the VirtualMachineImage from which the VM was deployed.

Please note it is not advised to change this value while the VM is
running. Also, resizing the VM’s boot disk may require actions inside of
the guest to take advantage of the additional capacity. Finally, changing
the size of the VM’s boot disk, even increasing it, could adversely
affect the VM.

Please note this field is ignored if the VM is deployed from an ISO with
CD-ROM devices attached.

defaultVolumeProvisioningMode VolumeProvisioningMode

DefaultVolumeProvisioningMode specifies the default provisioning mode for
persistent volumes managed by this VM.

Enum: [Thin Thick ThickEagerZero]

changeBlockTracking boolean

ChangeBlockTracking is a flag that enables incremental backup support
for this VM, a feature utilized by external backup systems such as
VMware Data Recovery.

VirtualMachineBootOptions

VirtualMachineBootOptions defines the boot-time behavior of a virtual machine.

Appears In:
Field Description Default Validation

Firmware represents the firmware for the virtual machine to use. Any update
to this value after the virtual machine has already been created will be
ignored. Setting will happen in the following manner:

  1. If this value is specified, it will be used to set the VM firmware. If this
    value is unset, then

  2. the virtual machine image will be checked. If that value is set, then it will
    be used to set the VM firmware. If that value is unset, then

  3. the virtual machine class will be checked. If that value is set, then it will
    be used to set the VM firmware. If that value is unset, then

  4. the VM firmware will be set, by default, to BIOS.

The available values of this field are:

  • bios

  • efi

Enum: [bios efi]

bootDelay Duration

BootDelay is the delay before starting the boot sequence. The boot delay
specifies a time interval between virtual machine power on or restart and
the beginning of the boot sequence.

BootOrder represents the boot order of the virtual machine. After list is exhausted,
default BIOS boot device algorithm is used for booting. Note that order of the entries
in the list is important: device listed first is used for boot first, if that one
fails second entry is used, and so on. Platform may have some internal limit on the
number of devices it supports. If bootable device is not reached before platform’s limit
is hit, boot will fail. At least single entry is supported by all products supporting
boot order settings.

BootRetry specifies whether a virtual machine that fails to boot
will try again. The available values are:

  • Enabled — A virtual machine that fails to boot will try again
    after BootRetryDelay time period has expired.

  • Disabled — The virtual machine waits indefinitely for you to
    initiate boot retry.

Disabled

bootRetryDelay Duration

BootRetryDelay specifies a time interval between virtual machine boot failure
and the subsequent attempt to boot again. The virtual machine uses this value
only if BootRetry is Enabled.

EFISecureBoot specifies whether the virtual machine’s firmware will
perform signature checks of any EFI images loaded during startup. If set to
true, signature checks will be performed and the virtual machine’s firmware
will refuse to start any images which do not pass those signature checks.

Please note, this field will not be honored unless the value of
spec.bootOptions.firmware is "EFI". The available values are:

  • Enabled — Signature checks will be performed and the virtual machine’s firmware
    will refuse to start any images which do not pass those signature checks.

  • Disabled — No signature checks will be performed.

Disabled

Enum: [Enabled Disabled]

NetworkBootProtocol is the protocol to attempt during PXE network boot or NetBoot.
The available protocols are:

  • IP4 — PXE (or Apple NetBoot) over IPv4. The default.

  • IP6 — PXE over IPv6. Only meaningful for EFI virtual machines.

IP4

Enum: [IP4 IP6]

VirtualMachineBootOptionsBootRetry

Underlying type: string

VirtualMachineBootOptionsBootRetry represents whether a virtual machine that fails to boot will automatically try again.

VirtualMachineBootOptionsBootableDevice

VirtualMachineBootOptionsBootableDevice represents a bootable device that a VM may be booted from.

Field Description Default Validation

Type represents the type of bootable device.

The available device types are:

  • Disk

  • Network

  • CDRom

Enum: [Disk Network CDRom]

name string

Name represents the name of the bootable device. It is
required for Disk and Network device types, while ignored
for CDRom device types.

VirtualMachineBootOptionsBootableDeviceType

Underlying type: string

VirtualMachineBootOptionsBootableDeviceType represents the type of bootable device.

Validation:
  • Enum: [Disk Network CDRom]

VirtualMachineBootOptionsEFISecureBoot

Underlying type: string

VirtualMachineBootOptionsEFISecureBoot represents whether the virtual machine will perform EFI Secure Boot.

Validation:
  • Enum: [Enabled Disabled]

VirtualMachineBootOptionsFirmwareType

Underlying type: string

VirtualMachineBootOptionsFirmwareType represents the firmware to use.

Validation:
  • Enum: [bios efi]

VirtualMachineBootOptionsNetworkBootProtocol

Underlying type: string

VirtualMachineBootOptionsNetworkBootProtocol represents the protocol to use during PXE network boot or NetBoot.

Validation:
  • Enum: [IP4 IP6]

VirtualMachineBootstrapCloudInitSpec

VirtualMachineBootstrapCloudInitSpec describes the CloudInit configuration used to bootstrap the VM.

Field Description Default Validation

instanceID string

InstanceID is the cloud-init metadata instance ID.
If omitted, this field defaults to the VM’s BiosUUID.

cloudConfig CloudConfig

CloudConfig describes a subset of a Cloud-Init CloudConfig, used to
bootstrap the VM.

Please note this field and RawCloudConfig are mutually exclusive.

rawCloudConfig SecretKeySelector

RawCloudConfig describes a key in a Secret resource that contains the
CloudConfig data used to bootstrap the VM.

The CloudConfig data specified by the key may be plain-text,
base64-encoded, or gzipped and base64-encoded.

Please note this field and CloudConfig are mutually exclusive.

sshAuthorizedKeys string array

SSHAuthorizedKeys is a list of public keys that CloudInit will apply to
the guest’s default user.

useGlobalNameserversAsDefault boolean

UseGlobalNameserversAsDefault will use the global nameservers specified in
the NetworkSpec as the per-interface nameservers when the per-interface
nameservers is not provided.

Defaults to true if omitted.

useGlobalSearchDomainsAsDefault boolean

UseGlobalSearchDomainsAsDefault will use the global search domains specified
in the NetworkSpec as the per-interface search domains when the per-interface
search domains is not provided.

Defaults to true if omitted.

waitOnNetwork4 boolean

WaitOnNetwork4 indicates whether the cloud-init datasource should wait
for an IPv4 address to be available before writing the instance-data.

When set to true, the cloud-init datasource will sleep for a second,
check network status, and repeat until an IPv4 address is available.

waitOnNetwork6 boolean

WaitOnNetwork6 indicates whether the cloud-init datasource should wait
for an IPv6 address to be available before writing the instance-data.

When set to true, the cloud-init datasource will sleep for a second,
check network status, and repeat until an IPv6 address is available.

VirtualMachineBootstrapLinuxPrepSpec

VirtualMachineBootstrapLinuxPrepSpec describes the LinuxPrep configuration used to bootstrap the VM.

Field Description Default Validation

hardwareClockIsUTC boolean

HardwareClockIsUTC specifies whether the hardware clock is in UTC or
local time.

timeZone string

TimeZone is a case-sensitive timezone, such as Europe/Sofia.

Valid values are based on the tz (timezone) database used by Linux and
other Unix systems. The values are strings in the form of
"Area/Location," in which Area is a continent or ocean name, and
Location is the city, island, or other regional designation.

Please see https://kb.vmware.com/s/article/2145518 for a list of valid
time zones for Linux systems.

expirePasswordAfterNextLogin boolean

ExpirePasswordAfterNextLogin indicates whether or not the root account is required to
change their password after the next login.

Password is the new root password for the machine.

When not explicitly specified, the Key field for the selector defaults to
password.

ScriptText is the script to run before and after customization.

customizeAtNextPowerOn boolean

CustomizeAtNextPowerOn describes when customization is performed on the VM.

When set to false, the VM will not be customized at the next power on. When
set to true, the VM will be customized at the next power on, and after the
customization this field will be set to false. This allows for when
customization is done explicitly requested, i.e. so that changes made in the
VM are not overridden by a later customization.

When not set, the VM will only be customized at every power on when the hash
of the previous customization specification is different from the current
specification.

VirtualMachineBootstrapSpec

VirtualMachineBootstrapSpec defines the desired state of a VM’s bootstrap configuration.

Appears In:
Field Description Default Validation

CloudInit may be used to bootstrap Linux guests with Cloud-Init or
Windows guests that support Cloudbase-Init.

The guest’s networking stack is configured by Cloud-Init on Linux guests
and Cloudbase-Init on Windows guests.

Please note this bootstrap provider may not be used in conjunction with
the other bootstrap providers.

LinuxPrep may be used to bootstrap Linux guests.

The guest’s networking stack is configured by Guest OS Customization
(GOSC).

Please note this bootstrap provider may be used in conjunction with the
VAppConfig bootstrap provider when wanting to configure the guest’s
network with GOSC but also send vApp/OVF properties into the guest.

This bootstrap provider may not be used in conjunction with the CloudInit
or Sysprep bootstrap providers.

Sysprep may be used to bootstrap Windows guests.

The guest’s networking stack is configured by Guest OS Customization
(GOSC).

Please note this bootstrap provider may be used in conjunction with the
VAppConfig bootstrap provider when wanting to configure the guest’s
network with GOSC but also send vApp/OVF properties into the guest.

This bootstrap provider may not be used in conjunction with the CloudInit
or LinuxPrep bootstrap providers.

VAppConfig may be used to bootstrap guests that rely on vApp properties
(how VMware surfaces OVF properties on guests) to transport data into the
guest.

The guest’s networking stack may be configured using either vApp
properties or GOSC.

Many OVFs define one or more properties that are used by the guest to
bootstrap its networking stack. If the VirtualMachineImage defines one or
more properties like this, then they can be configured to use the network
data provided for this VM at runtime by setting these properties to Go
template strings.

It is also possible to use GOSC to bootstrap this VM’s network stack by
configuring either the LinuxPrep or Sysprep bootstrap providers.

Please note the VAppConfig bootstrap provider in conjunction with the
LinuxPrep bootstrap provider is the equivalent of setting the v1alpha1
VM metadata transport to "OvfEnv".

This bootstrap provider may not be used in conjunction with the CloudInit
bootstrap provider.

VirtualMachineBootstrapSysprepSpec

VirtualMachineBootstrapSysprepSpec describes the Sysprep configuration used to bootstrap the VM.

Field Description Default Validation

sysprep Sysprep

Sysprep is an object representation of a Windows sysprep.xml answer file.

This field encloses all the individual keys listed in a sysprep.xml file.

For more detailed information please see
https://technet.microsoft.com/en-us/library/cc771830(v=ws.10).aspx.

Please note this field and RawSysprep are mutually exclusive.

rawSysprep SecretKeySelector

RawSysprep describes a key in a Secret resource that contains an XML
string of the Sysprep text used to bootstrap the VM.

The data specified by the Secret key may be plain-text, base64-encoded,
or gzipped and base64-encoded.

Please note this field and Sysprep are mutually exclusive.

customizeAtNextPowerOn boolean

CustomizeAtNextPowerOn describes when customization is performed on the VM.

When set to false, the VM will not be customized at the next power on. When
set to true, the VM will be customized at the next power on, and after the
customization this field will be set to false. This allows for when
customization is done explicitly requested, i.e. so that changes made in the
VM are not overridden by a later customization.

When not set, the VM will only be customized at every power on when the hash
of the previous customization specification is different from the current
specification.

VirtualMachineBootstrapVAppConfigSpec

VirtualMachineBootstrapVAppConfigSpec describes the vApp configuration used to bootstrap the VM.

Field Description Default Validation

properties KeyValueOrSecretKeySelectorPair array

Properties is a list of vApp/OVF property key/value pairs.

Please note this field and RawProperties are mutually exclusive.

rawProperties string

RawProperties is the name of a Secret resource in the same Namespace as
this VM where each key/value pair from the Secret is used as a vApp
key/value pair.

Please note this field and Properties are mutually exclusive.

VirtualMachineCPUAllocationStatus

Field Description Default Validation

total integer

Total describes the observed number of processors.

reservation integer

Reservation describes the observed CPU reservation in MHz.

VirtualMachineCdromSpec

VirtualMachineCdromSpec describes the desired state of a CD-ROM device.

Field Description Default Validation

name string

Name consists of at least two lowercase letters or digits of this CD-ROM.
It must be unique among all CD-ROM devices attached to the VM.

This field is immutable when the VM is powered on.

Pattern: ^[a-z0-9]\{2,}$

Image describes the reference to an ISO type VirtualMachineImage or
ClusterVirtualMachineImage resource used as the backing for the CD-ROM.
If the image kind is omitted, it defaults to VirtualMachineImage.

This field is immutable when the VM is powered on.

Please note, unlike the spec.imageName field, the value of this
spec.cdrom.image.name MUST be a Kubernetes object name.

controllerBusNumber integer

ControllerBusNumber describes the bus number of the controller to which
this CD-ROM should be attached.

The bus number specifies a controller based on the value of the
controllerType field:

  • IDE  — spec.hardware.ideControllers

  • SATA — spec.hardware.sataControllers

If this and controllerType are both omitted, the CD-ROM will be attached
to the first available IDE controller. If there is no IDE controller
with an available slot, a new SATA controller will be added as long as
there are currently three or fewer SATA controllers.

If the specified controller has no available slots, the request will be
denied.

controllerType VirtualControllerType

ControllerType describes the type of the controller to which this CD-ROM
should be attached.

Please keep in mind the number of devices supported by the different
types of controllers:

  • IDE  — 4 total (2 per controller)

  • SATA  — 120 total (30 per controller)

Defaults to IDE when controllerBusNumber is also omitted; otherwise the
default value is determined by the logic outlined in the description of
the controllerBusNumber field.

Enum: [IDE SATA]

unitNumber integer

UnitNumber describes the desired unit number for attaching the CD-ROM to
a storage controller.

When omitted, the next available unit number of the selected controller
is used.

This value must be unique for the controller referenced by the
controllerBusNumber and controllerType properties. If the value is
already used by another device, this CD-ROM will not be attached.

connected boolean

Connected describes the desired connection state of the CD-ROM device.

When true, the CD-ROM device is added and connected to the VM.
If the device already exists, it is updated to a connected state.

When explicitly set to false, the CD-ROM device is added but remains
disconnected from the VM. If the CD-ROM device already exists, it is
updated to a disconnected state.

Note: Before disconnecting a CD-ROM, the device may need to be unmounted
in the guest OS. Refer to the following KB article for more details:
https://knowledge.broadcom.com/external/article?legacyId=2144053

Defaults to true if omitted.

true

allowGuestControl boolean

AllowGuestControl describes whether or not a web console connection
may be used to connect/disconnect the CD-ROM device.

Defaults to true if omitted.

true

VirtualMachineClass

VirtualMachineClass is the schema for the virtualmachineclasses API and represents the desired state and observed status of a virtualmachineclasses resource.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha5

kind string

VirtualMachineClass

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineClassHardware

VirtualMachineClassHardware describes a virtual hardware resource specification.

Field Description Default Validation

cpus integer

memory Quantity

devices VirtualDevices

instanceStorage InstanceStorage

VirtualMachineClassInstance

VirtualMachineClassInstance is the schema for the virtualmachineclassinstances API and represents the desired state and observed status of a virtualmachineclassinstance resource.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha5

kind string

VirtualMachineClassInstance

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineClassInstanceSpec

VirtualMachineClassInstanceSpec defines the desired state of VirtualMachineClassInstance. It is a composite of VirtualMachineClassSpec.

Field Description Default Validation

controllerName string

ControllerName describes the name of the controller responsible for
reconciling VirtualMachine resources that are realized from this
VirtualMachineClass.

When omitted, controllers reconciling VirtualMachine resources determine
the default controller name from the environment variable
DEFAULT_VM_CLASS_CONTROLLER_NAME. If this environment variable is not
defined or empty, it defaults to vmoperator.vmware.com/vsphere.

Once a non-empty value is assigned to this field, attempts to set this
field to an empty value will be silently ignored.

Hardware describes the configuration of the VirtualMachineClass
attributes related to virtual hardware. The configuration specified in
this field is used to customize the virtual hardware characteristics of
any VirtualMachine associated with this VirtualMachineClass.

Policies describes the configuration of the VirtualMachineClass
attributes related to virtual infrastructure policy. The configuration
specified in this field is used to customize various policies related to
infrastructure resource consumption.

description string

Description describes the configuration of the VirtualMachineClass which
is not related to virtual hardware or infrastructure policy. This field
is used to address remaining specs about this VirtualMachineClass.

configSpec RawMessage

ConfigSpec describes additional configuration information for a
VirtualMachine.
The contents of this field are the VirtualMachineConfigSpec data object
(https://bit.ly/3HDtiRu) marshaled to JSON using the discriminator
field "_typeName" to preserve type information.

Schemaless: \{}
Type: object

reservedProfileID string

ReservedProfileID describes the reservation profile associated with
the namespace-scoped VirtualMachineClass object.

reservedSlots integer

ReservedSlots describes the number of slots reserved for VMs that use
this VirtualMachineClass.
This field is only valid in conjunction with reservedProfileID.

Minimum: 0

VirtualMachineClassInstanceStatus

VirtualMachineClassInstanceStatus defines the observed state of VirtualMachineClassInstance.

VirtualMachineClassPolicies

VirtualMachineClassPolicies describes the policy configuration to be used by a VirtualMachineClass.

Field Description Default Validation

VirtualMachineClassResources

VirtualMachineClassResources describes the virtual hardware resource reservations and limits configuration to be used by a VirtualMachineClass.

Field Description Default Validation

VirtualMachineClassSpec

VirtualMachineClassSpec defines the desired state of VirtualMachineClass.

Field Description Default Validation

controllerName string

ControllerName describes the name of the controller responsible for
reconciling VirtualMachine resources that are realized from this
VirtualMachineClass.

When omitted, controllers reconciling VirtualMachine resources determine
the default controller name from the environment variable
DEFAULT_VM_CLASS_CONTROLLER_NAME. If this environment variable is not
defined or empty, it defaults to vmoperator.vmware.com/vsphere.

Once a non-empty value is assigned to this field, attempts to set this
field to an empty value will be silently ignored.

Hardware describes the configuration of the VirtualMachineClass
attributes related to virtual hardware. The configuration specified in
this field is used to customize the virtual hardware characteristics of
any VirtualMachine associated with this VirtualMachineClass.

Policies describes the configuration of the VirtualMachineClass
attributes related to virtual infrastructure policy. The configuration
specified in this field is used to customize various policies related to
infrastructure resource consumption.

description string

Description describes the configuration of the VirtualMachineClass which
is not related to virtual hardware or infrastructure policy. This field
is used to address remaining specs about this VirtualMachineClass.

configSpec RawMessage

ConfigSpec describes additional configuration information for a
VirtualMachine.
The contents of this field are the VirtualMachineConfigSpec data object
(https://bit.ly/3HDtiRu) marshaled to JSON using the discriminator
field "_typeName" to preserve type information.

Schemaless: \{}
Type: object

reservedProfileID string

ReservedProfileID describes the reservation profile associated with
the namespace-scoped VirtualMachineClass object.

reservedSlots integer

ReservedSlots describes the number of slots reserved for VMs that use
this VirtualMachineClass.
This field is only valid in conjunction with reservedProfileID.

Minimum: 0

VirtualMachineClassStatus

VirtualMachineClassStatus defines the observed state of VirtualMachineClass.

Appears In:

VirtualMachineCryptoSpec

VirtualMachineCryptoSpec defines the desired state of a VirtualMachine’s encryption state.

Appears In:
Field Description Default Validation

encryptionClassName string

EncryptionClassName describes the name of the EncryptionClass resource
used to encrypt this VM.

Please note, this field is not required to encrypt the VM. If the
underlying platform has a default key provider, the VM may still be fully
or partially encrypted depending on the specified storage and VM classes.

If there is a default key provider and an encryption storage class is
selected, the files in the VM’s home directory and non-PVC virtual disks
will be encrypted

If there is a default key provider and a VM Class with a virtual, trusted
platform module (vTPM) is selected, the files in the VM’s home directory,
minus any virtual disks, will be encrypted.

If the underlying vSphere platform does not have a default key provider,
then this field is required when specifying an encryption storage class
and/or a VM Class with a vTPM.

If this field is set, spec.storageClass must use an encryption-enabled
storage class.

useDefaultKeyProvider boolean

UseDefaultKeyProvider describes the desired behavior for when an explicit
EncryptionClass is not provided.

When an explicit EncryptionClass is not provided and this value is true:

  • Deploying a VirtualMachine with an encryption storage policy or vTPM
    will be encrypted using the default key provider.

  • If a VirtualMachine is not encrypted, uses an encryption storage
    policy or has a virtual, trusted platform module (vTPM), there is a
    default key provider, the VM will be encrypted using the default key
    provider.

  • If a VirtualMachine is encrypted with a provider other than the default
    key provider, the VM will be rekeyed using the default key provider.

When an explicit EncryptionClass is not provided and this value is false:

  • Deploying a VirtualMachine with an encryption storage policy or vTPM
    will fail.

  • If a VirtualMachine is encrypted with a provider other than the default
    key provider, the VM will be not be rekeyed.

Please note, this could result in a VirtualMachine that cannot be
powered on since it is encrypted using a provider or key that may have
been removed. Without the key, the VM cannot be decrypted and thus
cannot be powered on.

Defaults to true if omitted.

true

VTPMMode describes the desired behavior when deploying a VirtualMachine
using a VirtualMachine-backed image which created from an encrypted
VirtualMachine with a vTPM.

The possible values for this field are:

  • Clone - The vTPM will be preserved from the VirtualMachineImage.

  • New - The vTPM will not be preserved.

The default value of this field is New.

New

Enum: [Clone New]

VirtualMachineCryptoStatus

Appears In:
Field Description Default Validation

Encrypted describes the observed state of the VirtualMachine’s
encryption. There may be two values in this list:

  • Config — This refers to all of the files related to a VM except any
    virtual disks.

  • Disks  — This refers to at least one of the VM’s attached disks. To
    determine the encryption state of the individual disks,
    please refer to status.volumes[].crypto.

providerID string

ProviderID describes the provider ID used to encrypt the VirtualMachine.
Please note, this field will be empty if the VirtualMachine is not
encrypted.

keyID string

KeyID describes the key ID used to encrypt the VirtualMachine.
Please note, this field will be empty if the VirtualMachine is not
encrypted.

hasVTPM boolean

HasVTPM indicates whether or not the VM has a vTPM.

VirtualMachineCryptoVTPMMode

Underlying type: string

VirtualMachineCryptoVTPMMode represents whether to preserve the vTPM from an encrypted VirtualMachine-backed image when deploying a VirtualMachine.

Validation:
  • Enum: [Clone New]

VirtualMachineEncryptionType

Underlying type: string

VirtualMachineGroup

VirtualMachineGroup is the schema for the VirtualMachineGroup API and represents the desired state and observed status of a VirtualMachineGroup resource.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha5

kind string

VirtualMachineGroup

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineGroupBootOrderGroup

VirtualMachineGroupBootOrderGroup describes a boot order group within a VirtualMachineGroup.

Field Description Default Validation

members GroupMember array

Members describes the names of VirtualMachine or VirtualMachineGroup
objects that are members of this boot order group. The VM or VM Group
objects must be in the same namespace as this group.

powerOnDelay Duration

PowerOnDelay is the amount of time to wait before powering on all the
members of this boot order group.

If omitted, the members will be powered on immediately when the group’s
power state changes to PoweredOn.

VirtualMachineGroupMemberStatus

VirtualMachineGroupMemberStatus describes the observed status of a group member.

Field Description Default Validation

name string

Name is the name of this member.

kind string

Kind is the kind of this member, which can be either VirtualMachine or
VirtualMachineGroup.

Enum: [VirtualMachine VirtualMachineGroup]

uid UID

UID is the K8s metadata UID of this current member object.

Placement describes the placement results for this member.

Please note this field is only set for VirtualMachine members.

PowerState describes the observed power state of this member.

Please note this field is only set for VirtualMachine members.

Enum: [PoweredOff PoweredOn Suspended]

conditions Condition array

Conditions describes any conditions associated with this member.

  • The GroupLinked condition is True when the member exists and has its
    "Spec.GroupName" field set to the group’s name.

  • The PowerStateSynced condition is True for the VirtualMachine member
    when the member’s power state matches the group’s power state.

  • The PlacementReady condition is True for the VirtualMachine member
    when the member has a placement decision ready.

  • The ReadyType condition is True for the VirtualMachineGroup member
    when all of its members' conditions are True.

VirtualMachineGroupPlacementDatastoreStatus

Field Description Default Validation

name string

Name describes the name of a datastore.

id string

ID describes the datastore ID.

url string

URL describes the datastore URL.

supportedDiskFormats string array

SupportedDiskFormat describes the list of disk formats supported by this
datastore.

diskKey integer

DiskKey describes the device key to which this recommendation applies.
When omitted, this recommendation is for the VM’s home directory.

topLevelDirectoryCreateSupported boolean

TopLevelDirectoryCreateSupported indicates whether or not the datastore
supports creating a top-level directory or requires the use of the
namespace manager (i.e. vSAN).

VirtualMachineGroupPublishRequest

VirtualMachineGroupPublishRequest defines the information necessary to publish the VirtualMachines in a VirtualMachineGroup as VirtualMachineImages to an image registry.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha5

kind string

VirtualMachineGroupPublishRequest

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineGroupPublishRequestImageStatus

Field Description Default Validation

source string

Source is the name of the published VirtualMachine.

publishRequestName string

PublishRequestName is the name of the VirtualMachinePublishRequest object
created to publish the VM.

imageName string

ImageName is the name of the VirtualMachineImage resource that is
eventually realized after the publication operation completes.

This field will not be set until the VirtualMachineImage resource
is realized.

conditions Condition array

Conditions is a copy of the conditions from the
VirtualMachinePublishRequest object created to publish the VM.

VirtualMachineGroupPublishRequestSpec

VirtualMachineGroupPublishRequestSpec defines the desired state of a VirtualMachineGroupPublishRequest.

All the fields in this spec are optional. This is especially useful when a DevOps persona wants to publish a VM Group without doing anything more than applying a VirtualMachineGroupPublishRequest resource that has the same name as said VMs in the same namespace as said VMs in VM Group.

Field Description Default Validation

source string

Source is the name of the VirtualMachineGroup to be published.

If this value is omitted then the publication controller checks to
see if there is a VirtualMachineGroup with the same name as this
VirtualMachineGroupPublishRequest resource. If such a resource exists,
then it is the source of the publication.

virtualMachines string array

VirtualMachines is a list of the VirtualMachine objects from the source
VirtualMachineGroup that are included in this publish request.

If omitted, this field defaults to the names of all of the VMs currently
a member of the group, either directly or indirectly via a nested group.

target string

Target is the name of the ContentLibrary resource to which the
VirtualMachines from the VirtualMachineGroup should be published.

When this value is omitted, the controller attempts to identify the
target location by matching a ContentLibrary resource with the label
"imageregistry.vmware.com/default".

Please note that while optional, if a VirtualMachineGroupPublishRequest
sans target information is applied to a namespace without a default
publication target, then the VirtualMachineGroupPublishRequest resource
will be marked in error.

ttlSecondsAfterFinished integer

TTLSecondsAfterFinished is the time-to-live duration for how long this
resource will be allowed to exist once the publication operation
completes. After the TTL expires, the resource will be automatically
deleted without the user having to take any direct action.
This will be passed into each VirtualMachinePublishRequestSpec.

If this field is unset then the request resource will not be
automatically deleted. If this field is set to zero then the request
resource is eligible for deletion immediately after it finishes.

Minimum: 0

VirtualMachineGroupPublishRequestStatus

VirtualMachineGroupPublishRequestStatus defines the observed state of a VirtualMachineGroupPublishRequest.

Field Description Default Validation

source string

Source is the name of the published VirtualMachineGroup.

target string

Target is the name of the ContentLibrary to which the group is published.

completionTime Time

CompletionTime represents when the request was completed. It is not
guaranteed to be set in happens-before order across separate operations.
It is represented in RFC3339 form and is in UTC.

The value of this field should be equal to the value of the
LastTransitionTime for the status condition Type=Complete.

startTime Time

StartTime represents when the request was acknowledged by the
controller. It is not guaranteed to be set in happens-before order
across separate operations. It is represented in RFC3339 form and is
in UTC.

Please note that the group will not be published until the group’s Ready
condition is true.

Images describes the observed status of the individual VirtualMachine
publications.

conditions Condition array

Conditions is a list of the latest, available observations of the
request’s current state.

VirtualMachineGroupSpec

VirtualMachineGroupSpec defines the desired state of VirtualMachineGroup.

Appears In:
Field Description Default Validation

groupName string

GroupName describes the name of the group that this group belongs to.

When this field is set to a valid group that contains this VM Group as a
member, an owner reference to that group is added to this VM Group.

When this field is deleted or changed, any existing owner reference to
the previous group will be removed from this VM Group.

BootOrder describes the boot sequence for this group members. Each boot
order contains a set of members that will be powered on simultaneously,
with an optional delay before powering on. The orders are processed
sequentially in the order they appear in this list, with delays being
cumulative across orders.

When powering off, all members are stopped immediately without delays.

PowerState describes the desired power state of a VirtualMachineGroup.

Please note this field may be omitted when creating a new VM group. This
ensures that the power states of any existing VMs that are added to the
group do not have their power states changed until the group’s power
state is explicitly altered.

However, once the field is set to a non-empty value, it may no longer be
set to an empty value. This means that if the group’s power state is
PoweredOn, and a VM whose power state is PoweredOff is added to the
group, that VM will be powered on.

Enum: [PoweredOff PoweredOn Suspended]

nextForcePowerStateSyncTime string

NextForcePowerStateSyncTime may be used to force sync the power state of
the group to all of its members, by setting the value of this field to
"now" (case-insensitive).

A mutating webhook changes this value to the current time (UTC), which
the VM Group controller then uses to trigger a sync of the group’s power
state to its members.

Please note it is not possible to schedule future syncs using this field.
The only value that users may set is the string "now" (case-insensitive).

PowerOffMode describes the desired behavior when powering off a VM Group.
Refer to the VirtualMachine.PowerOffMode field for more details.

Please note this field is only propagated to the group’s members when
the group’s power state is changed or the nextForcePowerStateSyncTime
field is set to "now".

Enum: [Hard Soft TrySoft]

SuspendMode describes the desired behavior when suspending a VM Group.
Refer to the VirtualMachine.SuspendMode field for more details.

Please note this field is only propagated to the group’s members when
the group’s power state is changed or the nextForcePowerStateSyncTime
field is set to "now".

Enum: [Hard Soft TrySoft]

VirtualMachineGroupStatus

VirtualMachineGroupStatus defines the observed state of VirtualMachineGroup.

Appears In:
Field Description Default Validation

Members describes the observed status of group members.

lastUpdatedPowerStateTime Time

LastUpdatedPowerStateTime describes the observed time when the power
state of the group was last updated.

conditions Condition array

Conditions describes any conditions associated with this VM Group.

  • The ReadyType condition is True when all of the group members have
    all of their expected conditions set to True.

VirtualMachineGuestStatus

Appears In:
Field Description Default Validation

guestID string

GuestID describes the ID of the observed operating system.

guestFullName string

GuestFullName describes the full name of the observed operating system.

VirtualMachineHardwareSpec

Appears In:
Field Description Default Validation

Cdrom describes the desired state of the VM’s CD-ROM devices.

Each CD-ROM device requires a reference to an ISO-type
VirtualMachineImage or ClusterVirtualMachineImage resource as backing.

Multiple CD-ROM devices using the same backing image, regardless of image
kinds (namespace or cluster scope), are not allowed.

CD-ROM devices can be added, updated, or removed when the VM is powered
off. When the VM is powered on, only the connection state of existing
CD-ROM devices can be changed.
CD-ROM devices are attached to the VM in the specified list-order.

ideControllers IDEControllerSpec array

IDEControllers describes the desired list of IDE controllers for the VM.

Defaults to two IDE controllers, with bus 0 and bus 1.

MaxItems: 2

nvmeControllers NVMEControllerSpec array

NVMEControllers describes the desired list of NVME controllers for the
VM.

MaxItems: 4

sataControllers SATAControllerSpec array

SATAControllers describes the desired list of SATA controllers for the
VM.

Please note, all SATA controllers are VirtualAHCI.

MaxItems: 4

scsiControllers SCSIControllerSpec array

SCSIControllers describes the desired list of SCSI controllers for the
VM.

MaxItems: 4

VirtualMachineHardwareStatus

Appears In:
Field Description Default Validation

controllers VirtualControllerStatus array

Controllers describes the observed list of virtual controllers for the
VM.

CPU describes the observed CPU allocation of the VM.

Memory describes the observed memory allocation of the VM.

VGPUs describes the observed vGPUs used by this VM.

VirtualMachineHardwareVGPUStatus

Field Description Default Validation

Type describes the observed type of the vGPU.

profile string

Profile describes the observed profile used by the vGPU.

Please note, this is only applicable to Nvidia vGPUs.

MigrationType describes the vGPU’s observed vMotion support.

VirtualMachineImage

VirtualMachineImage is the schema for the virtualmachineimages API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha5

kind string

VirtualMachineImage

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineImageCache

VirtualMachineImageCache is the schema for the virtualmachineimagecaches API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha5

kind string

VirtualMachineImageCache

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineImageCacheFileStatus

Field Description Default Validation

id string

ID describes the value used to locate the file.
The value of this field depends on the type of file:

  • Type=Other  — The ID value describes a datastore path,
    ex. "[my-datastore-1] .contentlib-cache/1234/5678/my-disk-1.vmdk"

  • Type=Disk, DiskType=Classic — The ID value describes a datastore
    path.

  • Type=Disk, DiskType=Managed — The ID value describes a First Class
    Disk (FCD).

Type describes the type of file.

Enum: [Disk Other]

diskType VolumeType

DiskType describes the type of disk.
This field is only non-empty when Type=Disk.

Enum: [Classic Managed]

VirtualMachineImageCacheFileType

Underlying type: string

VirtualMachineImageCacheFileType describes the types of files that may be cached.

Validation:
  • Enum: [Disk Other]

VirtualMachineImageCacheLocationSpec

Field Description Default Validation

datacenterID string

DatacenterID describes the ID of the datacenter to which the image should
be cached.

MinLength: 1

profileID string

ProfileID describes the ID of the storage profile used to cache the
image.
Please note, this profile must include the datastore specified by the
datastoreID field.

MinLength: 1

datastoreID string

DatastoreID describes the ID of the datastore to which the image should
be cached.

MinLength: 1

VirtualMachineImageCacheLocationStatus

Field Description Default Validation

datacenterID string

DatacenterID describes the ID of the datacenter where the image is
cached.

datastoreID string

DatastoreID describes the ID of the datastore where the image is cached.

profileID string

ProfileID describes the ID of the storage profile used to cache the
image.

Files describes the image’s files cached on this datastore.

conditions Condition array

Conditions describes any conditions associated with this cache location.

Generally this should just include the ReadyType condition.

VirtualMachineImageCacheOVFStatus

Field Description Default Validation

configMapName string

ConfigMapName describes the name of the ConfigMap resource that contains
the image’s OVF envelope encoded as YAML. The data is located in the
ConfigMap key "value".

providerVersion string

ProviderVersion describes the observed provider version at which the OVF
is cached.
The provider is Content Library, the version is the content version.

VirtualMachineImageCacheSpec

VirtualMachineImageCacheSpec defines the desired state of VirtualMachineImageCache.

Field Description Default Validation

providerID string

ProviderID describes the ID of the provider item to which the image
corresponds.
If the provider is Content Library, the ID refers to a Content Library
item.

providerVersion string

ProviderVersion describes the version of the provider item to which the
image corresponds.
The provider is Content Library, the version is the content version.

Locations describes the locations where the image should be cached.

VirtualMachineImageCacheStatus

VirtualMachineImageCacheStatus defines the observed state of VirtualMachineImageCache.

Field Description Default Validation

Locations describe the observed locations where the image is cached.

OVF describes the observed status of the cached OVF content.

conditions Condition array

Conditions describes any conditions associated with this cached image.

Generally this should just include the ReadyType condition, which will
only be True if all of the cached locations also have True ReadyType
condition.

VirtualMachineImageDiskInfo

VirtualMachineImageDiskInfo describes information about any disks associated with this image.

Field Description Default Validation

name string

Name is the unique identifier for the virtual disk.

limit Quantity

Limit is the total virtual disk capacity.

requested Quantity

Requested is the minimum storage requirements for the virtual disk.

controllerType VirtualControllerType

ControllerType describes the type of controller to which this disk is
attached.

Enum: [IDE NVME SCSI SATA]

controllerBusNumber integer

ControllerBusNumber describes bus number of the controller to which this
disk is attached.

unitNumber integer

UnitNumber describes the unit number for this disk.

VirtualMachineImageOSInfo

VirtualMachineImageOSInfo describes the image’s guest operating system.

Field Description Default Validation

id string

ID describes the operating system ID.

This value is also added to the image resource’s labels as
VirtualMachineImageOSIDLabel.

type string

Type describes the operating system type.

This value is also added to the image resource’s labels as
VirtualMachineImageOSTypeLabel.

version string

Version describes the operating system version.

This value is also added to the image resource’s labels as
VirtualMachineImageOSVersionLabel.

VirtualMachineImageProductInfo

VirtualMachineImageProductInfo describes product information for an image.

Field Description Default Validation

product string

Product is a general descriptor for the image.

vendor string

Vendor describes the organization/user that produced the image.

version string

Version describes the short-form version of the image.

fullVersion string

FullVersion describes the long-form version of the image.

VirtualMachineImageRef

Field Description Default Validation

kind string

Kind describes the type of image, either a namespace-scoped
VirtualMachineImage or cluster-scoped ClusterVirtualMachineImage.

name string

Name refers to the name of a VirtualMachineImage resource in the same
namespace as this VM or a cluster-scoped ClusterVirtualMachineImage.

VirtualMachineImageSpec

VirtualMachineImageSpec defines the desired state of VirtualMachineImage.

Field Description Default Validation

providerRef LocalObjectRef

ProviderRef is a reference to the resource that contains the source of
this image’s information.

VirtualMachineImageStatus

VirtualMachineImageStatus defines the observed state of VirtualMachineImage.

Field Description Default Validation

name string

Name describes the display name of this image.

capabilities string array

Capabilities describes the image’s observed capabilities.

The capabilities are discerned when VM Operator reconciles an image.
If the source of an image is an OVF in Content Library, then the
capabilities are parsed from the OVF property
capabilities.image.vmoperator.vmware.com as a comma-separated list of
values. Well-known capabilities include:

  • cloud-init

  • nvidia-gpu

  • sriov-net

Every capability is also added to the resource’s labels as
VirtualMachineImageCapabilityLabel + Value. For example, if the
capability is "cloud-init" then the following label will be added to the
resource: capability.image.vmoperator.vmware.com/cloud-init.

firmware string

Firmware describe the firmware type used by this image, ex. BIOS, EFI.

hardwareVersion integer

HardwareVersion describes the observed hardware version of this image.

OSInfo describes the observed operating system information for this
image.

The OS information is also added to the image resource’s labels. Please
refer to VirtualMachineImageOSInfo for more information.

ovfProperties OVFProperty array

OVFProperties describes the observed user configurable OVF properties defined for this
image.

vmwareSystemProperties KeyValuePair array

VMwareSystemProperties describes the observed VMware system properties defined for
this image.

ProductInfo describes the observed product information for this image.

Disks describes the observed disk information for this image.

providerContentVersion string

ProviderContentVersion describes the content version from the provider item
that this image corresponds to. If the provider of this image is a Content
Library, this will be the version of the corresponding Content Library item.

providerItemID string

ProviderItemID describes the ID of the provider item that this image corresponds to.
If the provider of this image is a Content Library, this ID will be that of the
corresponding Content Library item.

conditions Condition array

Conditions describes the observed conditions for this image.

type string

Type describes the content library item type (OVF, ISO, or VM) of the
image.

VirtualMachineMemoryAllocationStatus

Field Description Default Validation

total Quantity

Total describes the observed amount of configured memory.

reservation Quantity

Reservation describes the observed memory reservation.

VirtualMachineNetworkConfigDHCPOptionsStatus

VirtualMachineNetworkConfigDHCPOptionsStatus describes the configured DHCP options.

Field Description Default Validation

enabled boolean

Enabled describes whether DHCP is enabled.

VirtualMachineNetworkConfigDHCPStatus

VirtualMachineNetworkConfigDHCPStatus describes the configured state of the system-wide DHCP settings for IP4 and IP6.

Field Description Default Validation

IP4 describes the configured state of the IP4 DHCP settings.

IP6 describes the configured state of the IP6 DHCP settings.

VirtualMachineNetworkConfigDNSStatus

VirtualMachineNetworkConfigDNSStatus describes the configured state of the RFC 1034 client-side DNS settings.

Field Description Default Validation

hostName string

HostName is the host name portion of the DNS name. For example,
the "my-vm" part of "my-vm.domain.local".

domainName string

DomainName is the domain name portion of the DNS name. For example,
the "domain.local" part of "my-vm.domain.local".

nameservers string array

Nameservers is a list of the IP addresses for the DNS servers to use.

IP4 addresses are specified using dotted decimal notation. For example,
"192.0.2.1".

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
symbol '::' to represent multiple 16-bit groups of contiguous 0’s only
once in an address as described in RFC 2373.

searchDomains string array

SearchDomains is a list of domains in which to search for hosts, in the
order of preference.

VirtualMachineNetworkConfigInterfaceIPStatus

VirtualMachineNetworkConfigInterfaceIPStatus describes the configured state of a VM’s network interface’s IP configuration.

Field Description Default Validation

DHCP describes the interface’s configured DHCP options.

addresses string array

Addresses describes configured IP addresses for this interface.
Addresses include the network’s prefix length, ex. 192.168.0.0/24 or
2001:DB8:101::230:6eff:fe04:d9ff::/64.

gateway4 string

Gateway4 describes the interface’s configured, default, IP4 gateway.

Please note the IP address include the network prefix length, ex.
192.168.0.1/24.

gateway6 string

Gateway6 describes the interface’s configured, default, IP6 gateway.

Please note the IP address includes the network prefix length, ex.
2001:db8:101::1/64.

VirtualMachineNetworkConfigInterfaceStatus

VirtualMachineNetworkConfigInterfaceStatus describes the configured state of network interface.

Field Description Default Validation

name string

Name describes the corresponding network interface with the same name
in the VM’s desired network interface list.

Please note this name is not necessarily related to the name of the
device as it is surfaced inside of the guest.

IP describes the interface’s configured IP information.

DNS describes the interface’s configured DNS information.

VirtualMachineNetworkConfigStatus

Field Description Default Validation

Interfaces describes the configured state of the network interfaces.

DNS describes the configured state of client-side DNS.

VirtualMachineNetworkDHCPOptionsStatus

VirtualMachineNetworkDHCPOptionsStatus describes the observed state of DHCP options.

Field Description Default Validation

config KeyValuePair array

Config describes platform-dependent settings for the DHCP client.

The key part is a unique number while the value part is the platform
specific configuration command. For example on Linux and BSD systems
using the file dhclient.conf output would be reported at system scope:
key='1', value='timeout 60;' key='2', value='reboot 10;'. The output
reported per interface would be:
key='1', value='prepend domain-name-servers 192.0.2.1;'
key='2', value='require subnet-mask, domain-name-servers;'.

enabled boolean

Enabled reports the status of the DHCP client services.

VirtualMachineNetworkDHCPStatus

VirtualMachineNetworkDHCPStatus describes the observed state of the client-side, system-wide DHCP settings for IP4 and IP6.

Field Description Default Validation

IP4 describes the observed state of the IP4 DHCP client settings.

IP6 describes the observed state of the IP6 DHCP client settings.

VirtualMachineNetworkDNSStatus

VirtualMachineNetworkDNSStatus describes the observed state of the guest’s RFC 1034 client-side DNS settings.

Field Description Default Validation

dhcp boolean

DHCP indicates whether or not dynamic host control protocol (DHCP) was
used to configure DNS configuration.

hostName string

HostName is the host name portion of the DNS name. For example,
the "my-vm" part of "my-vm.domain.local".

domainName string

DomainName is the domain name portion of the DNS name. For example,
the "domain.local" part of "my-vm.domain.local".

nameservers string array

Nameservers is a list of the IP addresses for the DNS servers to use.

IP4 addresses are specified using dotted decimal notation. For example,
"192.0.2.1".

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
symbol '::' to represent multiple 16-bit groups of contiguous 0’s only
once in an address as described in RFC 2373.

searchDomains string array

SearchDomains is a list of domains in which to search for hosts, in the
order of preference.

VirtualMachineNetworkIPRouteGatewayStatus

VirtualMachineNetworkIPRouteGatewayStatus describes the observed state of a guest network’s IP route’s next hop gateway.

Field Description Default Validation

device string

Device is the name of the device in the guest for which this gateway
applies.

address string

Address is the IP4 or IP6 address of the gateway.

VirtualMachineNetworkIPRouteStatus

VirtualMachineNetworkIPRouteStatus describes the observed state of a guest network’s IP routes.

Field Description Default Validation

Gateway describes where to send the packets to next.

networkAddress string

NetworkAddress is the IP4 or IP6 address of the destination network.

Addresses include the network’s prefix length, ex. 192.168.0.0/24 or
2001:DB8:101::230:6eff:fe04:d9ff::/64.

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of symbol
'::' to represent multiple 16-bit groups of contiguous 0’s only once in
an address as described in RFC 2373.

VirtualMachineNetworkIPStackStatus

VirtualMachineNetworkIPStackStatus describes the observed state of a VM’s IP stack.

Field Description Default Validation

DHCP describes the VM’s observed, client-side, system-wide DHCP options.

DNS describes the VM’s observed, client-side DNS configuration.

IPRoutes contain the VM’s routing tables for all address families.

kernelConfig KeyValuePair array

KernelConfig describes the observed state of the VM’s kernel IP
configuration settings.

The key part contains a unique number while the value part contains the
'key=value' as provided by the underlying provider. For example, on
Linux and/or BSD, the systcl -a output would be reported as:
key='5', value='net.ipv4.tcp_keepalive_time = 7200'.

VirtualMachineNetworkInterfaceIPAddrStatus

VirtualMachineNetworkInterfaceIPAddrStatus describes information about a specific IP address.

Field Description Default Validation

address string

Address is an IP4 or IP6 address and their network prefix length.

An IP4 address is specified using dotted decimal notation. For example,
"192.0.2.1".

IP6 addresses are 128-bit addresses represented as eight fields of up to
four hexadecimal digits. A colon separates each field (:). For example,
2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
symbol '::' to represent multiple 16-bit groups of contiguous 0’s only
once in an address as described in RFC 2373.

lifetime Time

Lifetime describes when this address will expire.

origin string

Origin describes how this address was configured.

Enum: [dhcp linklayer manual other random]

state string

State describes the state of this IP address.

Enum: [deprecated duplicate inaccessible invalid preferred tentative unknown]

VirtualMachineNetworkInterfaceIPStatus

VirtualMachineNetworkInterfaceIPStatus describes the observed state of a VM’s network interface’s IP configuration.

Field Description Default Validation

autoConfigurationEnabled boolean

AutoConfigurationEnabled describes whether or not ICMPv6 router
solicitation requests are enabled or disabled from a given interface.

These requests acquire an IP6 address and default gateway route from
zero-to-many routers on the connected network.

If not set then ICMPv6 is not available on this VM.

DHCP describes the VM’s observed, client-side, interface-specific DHCP
options.

Addresses describes observed IP addresses for this interface.

macAddr string

MACAddr describes the observed MAC address for this interface.

VirtualMachineNetworkInterfaceSpec

VirtualMachineNetworkInterfaceSpec describes the desired state of a VM’s network interface.

Field Description Default Validation

name string

Name describes the unique name of this network interface, used to
distinguish it from other network interfaces attached to this VM.

When the bootstrap provider is Cloud-Init and GuestDeviceName is not
specified, the device inside the guest will be renamed to this value.
Please note it is up to the user to ensure the provided name does not
conflict with any other devices inside the guest, ex. dvd, cdrom, sda, etc.

Pattern: ^[a-z0-9]\{2,}$

Network is the name of the network resource to which this interface is
connected.

If no network is provided, then this interface will be connected to the
Namespace’s default network.

guestDeviceName string

GuestDeviceName is used to rename the device inside the guest when the
bootstrap provider is Cloud-Init. Please note it is up to the user to
ensure the provided device name does not conflict with any other devices
inside the guest, ex. dvd, cdrom, sda, etc.

Pattern: ^\w\w+$

macAddr string

MACAddr is the optional MAC address of this interface.

If no MAC address is provided, one will be generated by either the network
provider or vCenter.

Please note this field is only supported when the Network API Group is
crd.nsx.vmware.com.

Pattern: ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$

addresses string array

Addresses is an optional list of IP4 or IP6 addresses to assign to this
interface.

Please note this field is only supported if the connected network
supports manual IP allocation.

Please note IP4 and IP6 addresses must include the network prefix length,
ex. 192.168.0.10/24 or 2001:db8:101::a/64.

Please note this field may not contain IP4 addresses if DHCP4 is set
to true or IP6 addresses if DHCP6 is set to true.

dhcp4 boolean

DHCP4 indicates whether or not this interface uses DHCP for IP4
networking.

Please note this field is only supported if the network connection
supports DHCP.

Please note this field is mutually exclusive with IP4 addresses in the
Addresses field and the Gateway4 field.

dhcp6 boolean

DHCP6 indicates whether or not this interface uses DHCP for IP6
networking.

Please note this field is only supported if the network connection
supports DHCP.

Please note this field is mutually exclusive with IP6 addresses in the
Addresses field and the Gateway6 field.

gateway4 string

Gateway4 is the default, IP4 gateway for this interface.

If unset, the gateway from the network provider will be used. However,
if set to "None", the network provider gateway will be ignored.

Please note this field is only supported if the network connection
supports manual IP allocation.

Please note this field is mutually exclusive with DHCP4.

gateway6 string

Gateway6 is the primary IP6 gateway for this interface.

If unset, the gateway from the network provider will be used. However,
if set to "None", the network provider gateway will be ignored.

Please note this field is only supported if the network connection
supports manual IP allocation.

Please note this field is mutually exclusive with DHCP6.

mtu integer

MTU is the Maximum Transmission Unit size in bytes.

Please note this feature is available only with the following bootstrap
providers: CloudInit.

nameservers string array

Nameservers is a list of IP4 and/or IP6 addresses used as DNS
nameservers.

Please note this feature is available only with the following bootstrap
providers: CloudInit and Sysprep.

When using CloudInit and UseGlobalNameserversAsDefault is either unset or
true, if nameservers is not provided, the global nameservers will be used
instead.

Please note that Linux allows only three nameservers
(https://linux.die.net/man/5/resolv.conf).

Routes is a list of optional, static routes.

Please note this feature is available only with the following bootstrap
providers: CloudInit.

searchDomains string array

SearchDomains is a list of search domains used when resolving IP
addresses with DNS.

Please note this feature is available only with the following bootstrap
providers: CloudInit.

When using CloudInit and UseGlobalSearchDomainsAsDefault is either unset
or true, if search domains is not provided, the global search domains
will be used instead.

VirtualMachineNetworkInterfaceStatus

VirtualMachineNetworkInterfaceStatus describes the observed state of a VM’s network interface.

Field Description Default Validation

name string

Name describes the corresponding network interface with the same name
in the VM’s desired network interface list. If unset, then there is no
corresponding entry for this interface.

Please note this name is not necessarily related to the name of the
device as it is surfaced inside of the guest.

deviceKey integer

DeviceKey describes the unique hardware device key of this network
interface.

IP describes the observed state of the interface’s IP configuration.

DNS describes the observed state of the interface’s DNS configuration.

VirtualMachineNetworkRouteSpec

VirtualMachineNetworkRouteSpec defines a static route for a guest.

Field Description Default Validation

to string

To is either "default", or an IP4 or IP6 address.

via string

Via is an IP4 or IP6 address.

metric integer

Metric is the weight/priority of the route.

Minimum: 1

VirtualMachineNetworkSpec

VirtualMachineNetworkSpec defines a VM’s desired network configuration.

Appears In:
Field Description Default Validation

hostName string

HostName describes the value the guest uses as its host name. If omitted,
the name of the VM will be used.

Please note, this feature is available with the following bootstrap
providers: CloudInit, LinuxPrep, and Sysprep.

This field must adhere to the format specified in RFC-1034, Section 3.5
for DNS labels:

  • The total length is restricted to 63 characters or less.

  • The total length is restricted to 15 characters or less on Windows
    systems.

  • The value may begin with a digit per RFC-1123.

  • Underscores are not allowed.

  • Dashes are permitted, but not at the start or end of the value.

  • Symbol unicode points, such as emoji, are permitted, ex. ✓. However,
    please note that the use of emoji, even where allowed, may not
    compatible with the guest operating system, so it recommended to
    stick with more common characters for this value.

  • The value may be a valid IP4 or IP6 address. Please note, the use of
    an IP address for a host name is not compatible with all guest
    operating systems and is discouraged. Additionally, using an IP
    address for the host name is disallowed if spec.network.domainName is
    non-empty.

Please note, the combined values of spec.network.hostName and
spec.network.domainName may not exceed 255 characters in length.

domainName string

DomainName describes the value the guest uses as its domain name.

Please note, this feature is available with the following bootstrap
providers: CloudInit, LinuxPrep, and Sysprep.

This field must adhere to the format specified in RFC-1034, Section 3.5
for DNS names:

  • When joined with the host name, the total length is restricted to 255
    characters or less.

  • Individual segments must be 63 characters or less.

  • The top-level domain( ex. ".com"), is at least two letters with no
    special characters.

  • Underscores are not allowed.

  • Dashes are permitted, but not at the start or end of the value.

  • Long, top-level domain names (ex. ".london") are permitted.

  • Symbol unicode points, such as emoji, are disallowed in the top-level
    domain.

Please note, the combined values of spec.network.hostName and
spec.network.domainName may not exceed 255 characters in length.

When deploying a guest running Microsoft Windows, this field describes
the domain the computer should join.

disabled boolean

Disabled is a flag that indicates whether or not to disable networking
for this VM.

When set to true, the VM is not configured with a default interface nor
any specified from the Interfaces field.

nameservers string array

Nameservers is a list of IP4 and/or IP6 addresses used as DNS
nameservers. These are applied globally.

Please note global nameservers are only available with the following
bootstrap providers: LinuxPrep and Sysprep. The Cloud-Init bootstrap
provider supports per-interface nameservers. However, when Cloud-Init
is used and UseGlobalNameserversAsDefault is true, the global
nameservers will be used when the per-interface nameservers is not
provided.

Please note that Linux allows only three nameservers
(https://linux.die.net/man/5/resolv.conf).

searchDomains string array

SearchDomains is a list of search domains used when resolving IP
addresses with DNS. These are applied globally.

Please note global search domains are only available with the following
bootstrap providers: LinuxPrep and Sysprep. The Cloud-Init bootstrap
provider supports per-interface search domains. However, when Cloud-Init
is used and UseGlobalSearchDomainsAsDefault is true, the global search
domains will be used when the per-interface search domains is not provided.

Interfaces is the list of network interfaces used by this VM.

If the Interfaces field is empty and the Disabled field is false, then
a default interface with the name eth0 will be created.

The maximum number of network interface allowed is 10 because a vSphere
virtual machine may not have more than 10 virtual ethernet card devices.

MaxItems: 10

VirtualMachineNetworkStatus

VirtualMachineNetworkStatus defines the observed state of a VM’s network configuration.

Appears In:
Field Description Default Validation

Config describes the resolved, configured network settings for the VM,
such as an interface’s IP address obtained from IPAM, or global DNS
settings.

Please note this information does not represent the observed network
state of the VM, but is intended for situations where someone boots a VM
with no appropriate bootstrap engine and needs to know the network config
valid for the deployed VM.

hostName string

HostName describes the observed hostname reported by the VirtualMachine’s
guest operating system.

Please note, this value is only reported if VMware Tools is installed in
the guest, and the value may or may not be a fully qualified domain name
(FQDN), it simply depends on what is reported by the guest.

Interfaces describes the status of the VM’s network interfaces.

IPStacks describes information about the guest’s configured IP networking
stacks.

primaryIP4 string

PrimaryIP4 describes the VM’s primary IP4 address.

If the bootstrap provider is CloudInit then this value is set to the
value of the VM’s "guestinfo.local-ipv4" property. Please see
https://bit.ly/3NJB534 for more information on how this value is
calculated.

If the bootstrap provider is anything else then this field is set to the
value of the infrastructure VM’s "guest.ipAddress" field. Please see
https://bit.ly/3Au0jM4 for more information.

primaryIP6 string

PrimaryIP6 describes the VM’s primary IP6 address.

If the bootstrap provider is CloudInit then this value is set to the
value of the VM’s "guestinfo.local-ipv6" property. Please see
https://bit.ly/3NJB534 for more information on how this value is
calculated.

If the bootstrap provider is anything else then this field is set to the
value of the infrastructure VM’s "guest.ipAddress" field. Please see
https://bit.ly/3Au0jM4 for more information.

VirtualMachinePlacementStatus

Field Description Default Validation

zoneID string

Zone describes the recommended zone for this VM.

node string

Node describes the recommended node for this VM.

pool string

Pool describes the recommended resource pool for this VM.

Datastores describe the recommended datastores for this VM.
This includes the recommendations for each of the VM’s disks
and files.

VirtualMachinePowerOpMode

Underlying type: string

VirtualMachinePowerOpMode represents the various power operation modes when powering off or suspending a VM.

Validation:
  • Enum: [Hard Soft TrySoft]

VirtualMachinePowerState

Underlying type: string

VirtualMachinePowerState defines a VM’s desired and observed power states.

Validation:
  • Enum: [PoweredOff PoweredOn Suspended]

VirtualMachinePromoteDisksMode

Underlying type: string

VirtualMachinePromoteDisksMode represents the available modes for promoting child disks to full clones.

Validation:
  • Enum: [Online Offline Disabled]

Appears In:

VirtualMachinePublishRequest

VirtualMachinePublishRequest defines the information necessary to publish a VirtualMachine as a VirtualMachineImage to an image registry.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha5

kind string

VirtualMachinePublishRequest

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachinePublishRequestSource

VirtualMachinePublishRequestSource is the source of a publication request, typically a VirtualMachine resource.

Field Description Default Validation

name string

Name is the name of the referenced object.

If omitted this value defaults to the name of the
VirtualMachinePublishRequest resource.

apiVersion string

APIVersion is the API version of the referenced object.

vmoperator.vmware.com/v1alpha1

kind string

Kind is the kind of referenced object.

VirtualMachine

VirtualMachinePublishRequestSpec

VirtualMachinePublishRequestSpec defines the desired state of a VirtualMachinePublishRequest.

All the fields in this spec are optional. This is especially useful when a DevOps persona wants to publish a VM without doing anything more than applying a VirtualMachinePublishRequest resource that has the same name as said VM in the same namespace as said VM.

Field Description Default Validation

Source is the source of the publication request, ex. a VirtualMachine
resource.

If this value is omitted then the publication controller checks to
see if there is a resource with the same name as this
VirtualMachinePublishRequest resource, an API version equal to
spec.source.apiVersion, and a kind equal to spec.source.kind. If such
a resource exists, then it is the source of the publication.

Target is the target of the publication request, ex. item
information and a ContentLibrary resource.

If this value is omitted, the controller uses spec.source.name + "-image"
as the name of the published item. Additionally, when omitted the
controller attempts to identify the target location by matching a
resource with an API version equal to spec.target.location.apiVersion, a
kind equal to spec.target.location.kind, w/ the label
"imageregistry.vmware.com/default".

Please note that while optional, if a VirtualMachinePublishRequest sans
target information is applied to a namespace without a default
publication target, then the VirtualMachinePublishRequest resource
will be marked in error.

ttlSecondsAfterFinished integer

TTLSecondsAfterFinished is the time-to-live duration for how long this
resource will be allowed to exist once the publication operation
completes. After the TTL expires, the resource will be automatically
deleted without the user having to take any direct action.

If this field is unset then the request resource will not be
automatically deleted. If this field is set to zero then the request
resource is eligible for deletion immediately after it finishes.

Minimum: 0

backoffLimit integer

BackoffLimit is the number of status.attempts that should be allowed
before failing the VirtualMachinePublishRequest and halting any
future processing.

3

Minimum: 0

VirtualMachinePublishRequestStatus

VirtualMachinePublishRequestStatus defines the observed state of a VirtualMachinePublishRequest.

Field Description Default Validation

SourceRef is the reference to the source of the publication request,
ex. a VirtualMachine resource.

TargetRef is the reference to the target of the publication request,
ex. item information and a ContentLibrary resource.

completionTime Time

CompletionTime represents time when the request was completed. It is not
guaranteed to be set in happens-before order across separate operations.
It is represented in RFC3339 form and is in UTC.

The value of this field should be equal to the value of the
LastTransitionTime for the status condition Type=Complete.

startTime Time

StartTime represents time when the request was acknowledged by the
controller. It is not guaranteed to be set in happens-before order
across separate operations. It is represented in RFC3339 form and is
in UTC.

attempts integer

Attempts represents the number of times the request to publish the VM
has been attempted.

lastAttemptTime Time

LastAttemptTime represents the time when the latest request was sent.

imageName string

ImageName is the name of the VirtualMachineImage resource that is
eventually realized in the same namespace as the VM and publication
request after the publication operation completes.

This field will not be set until the VirtualMachineImage resource
is realized.

ready boolean

Ready is set to true only when the VM has been published successfully
and the new VirtualMachineImage resource is ready.

Readiness is determined by waiting until there is status condition
Type=Complete and ensuring it and all other status conditions present
have a Status=True. The conditions present will be:

  • SourceValid

  • TargetValid

  • Uploaded

  • ImageAvailable

  • Complete

conditions Condition array

Conditions is a list of the latest, available observations of the
request’s current state.

VirtualMachinePublishRequestTarget

VirtualMachinePublishRequestTarget is the target of a publication request, typically a ContentLibrary resource.

Field Description Default Validation

Item contains information about the name of the object to which
the VM is published.

Please note this value is optional and if omitted, the controller
will use spec.source.name + "-image" as the name of the published
item.

Location contains information about the location to which to publish
the VM.

VirtualMachinePublishRequestTargetItem

VirtualMachinePublishRequestTargetItem is the item part of a publication request’s target.

Field Description Default Validation

name string

Name is the name of the published object.

If the spec.target.location.apiVersion equals
imageregistry.vmware.com/v1alpha1 and the spec.target.location.kind
equals ContentLibrary, then this should be the name that will
show up in vCenter Content Library, not the custom resource name
in the namespace.

If omitted then the controller will use spec.source.name + "-image".

description string

Description is the description to assign to the published object.

VirtualMachinePublishRequestTargetLocation

VirtualMachinePublishRequestTargetLocation is the location part of a publication request’s target.

Field Description Default Validation

name string

Name is the name of the referenced object.

Please note an error will be returned if this field is not
set in a namespace that lacks a default publication target.

A default publication target is a resource with an API version
equal to spec.target.location.apiVersion, a kind equal to
spec.target.location.kind, and has the label
"imageregistry.vmware.com/default".

apiVersion string

APIVersion is the API version of the referenced object.

imageregistry.vmware.com/v1alpha1

kind string

Kind is the kind of referenced object.

ContentLibrary

VirtualMachineReadinessProbeSpec

VirtualMachineReadinessProbeSpec describes a probe used to determine if a VM is in a ready state. All probe actions are mutually exclusive.

Appears In:
Field Description Default Validation

tcpSocket TCPSocketAction

TCPSocket specifies an action involving a TCP port.

Deprecated: The TCPSocket action requires network connectivity that is not supported in all environments.
This field will be removed in a later API version.

guestHeartbeat GuestHeartbeatAction

GuestHeartbeat specifies an action involving the guest heartbeat status.

guestInfo GuestInfoAction array

GuestInfo specifies an action involving key/value pairs from GuestInfo.

The elements are evaluated with the logical AND operator, meaning
all expressions must evaluate as true for the probe to succeed.

For example, a VM resource’s probe definition could be specified as the
following:

guestInfo:
- key: ready
value: true

With the above configuration in place, the VM would not be considered
ready until the GuestInfo key "ready" was set to the value "true".

From within the guest operating system it is possible to set GuestInfo
key/value pairs using the program "vmware-rpctool," which is included
with VM Tools. For example, the following command will set the key
"guestinfo.ready" to the value "true":

vmware-rpctool "info-set guestinfo.ready true"

Once executed, the VM’s readiness probe will be signaled and the
VM resource will be marked as ready.

timeoutSeconds integer

TimeoutSeconds specifies a number of seconds after which the probe times out.
Defaults to 10 seconds. Minimum value is 1.

Maximum: 60
Minimum: 1

periodSeconds integer

PeriodSeconds specifics how often (in seconds) to perform the probe.
Defaults to 10 seconds. Minimum value is 1.

Minimum: 1

VirtualMachineReplicaSet

VirtualMachineReplicaSet is the schema for the virtualmachinereplicasets API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha5

kind string

VirtualMachineReplicaSet

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineReplicaSetSpec

VirtualMachineReplicaSetSpec is the specification of a VirtualMachineReplicaSet.

Field Description Default Validation

replicas integer

Replicas is the number of desired replicas.
This is a pointer to distinguish between explicit zero and unspecified.
Defaults to 1.

1

deletePolicy string

DeletePolicy defines the policy used to identify nodes to delete when downscaling.
Only supported deletion policy is "Random".

Enum: [Random]

selector LabelSelector

Selector is a label to query over virtual machines that should match the
replica count. A virtual machine’s label keys and values must match in order
to be controlled by this VirtualMachineReplicaSet.

It must match the VirtualMachine template’s labels.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors

Template is the object that describes the virtual machine that will be
created if insufficient replicas are detected.

VirtualMachineReplicaSetStatus

VirtualMachineReplicaSetStatus represents the observed state of a VirtualMachineReplicaSet resource.

Field Description Default Validation

replicas integer

Replicas is the most recently observed number of replicas.

fullyLabeledReplicas integer

FullyLabeledReplicas is the number of replicas that have labels matching the
labels of the virtual machine template of the VirtualMachineReplicaSet.

readyReplicas integer

ReadyReplicas is the number of ready replicas for this VirtualMachineReplicaSet. A
virtual machine is considered ready when it’s "Ready" condition is marked as
true.

observedGeneration integer

ObservedGeneration reflects the generation of the most recently observed
VirtualMachineReplicaSet.

conditions Condition array

Conditions represents the latest available observations of a
VirtualMachineReplicaSet’s current state.

VirtualMachineReservedSpec

VirtualMachineReservedSpec describes a set of VM configuration options reserved for system use. Modification attempts by DevOps users will result in a validation error.

Appears In:
Field Description Default Validation

resourcePolicyName string

VirtualMachineResourceSpec

VirtualMachineResourceSpec describes a virtual hardware policy specification.

Field Description Default Validation

cpu Quantity

memory Quantity

VirtualMachineService

VirtualMachineService is the Schema for the virtualmachineservices API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha5

kind string

VirtualMachineService

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineServicePort

VirtualMachineServicePort describes the specification of a service port to be exposed by a VirtualMachineService. This VirtualMachineServicePort specification includes attributes that define the external and internal representation of the service port.

Field Description Default Validation

name string

Name describes the name to be used to identify this
VirtualMachineServicePort.

protocol string

Protocol describes the Layer 4 transport protocol for this port.
Supports "TCP", "UDP", and "SCTP".

port integer

Port describes the external port that will be exposed by the service.

targetPort integer

TargetPort describes the internal port open on a VirtualMachine that
should be mapped to the external Port.

VirtualMachineServiceSpec

VirtualMachineServiceSpec defines the desired state of VirtualMachineService.

Appears In:
Field Description Default Validation

Type specifies a desired VirtualMachineServiceType for this
VirtualMachineService. Supported types are ClusterIP, LoadBalancer,
ExternalName.

Ports specifies a list of VirtualMachineServicePort to expose with this
VirtualMachineService. Each of these ports will be an accessible network
entry point to access this service by.

selector object (keys:string, values:string)

Selector specifies a map of key-value pairs, also known as a Label
Selector, that is used to match this VirtualMachineService with the set
of VirtualMachines that should back this VirtualMachineService.

loadBalancerIP string

LoadBalancer will get created with the IP specified in this field.
Only applies to VirtualMachineService Type: LoadBalancer
This feature depends on whether the underlying load balancer provider
supports specifying the loadBalancerIP when a load balancer is created.
This field will be ignored if the provider does not support the feature.
Deprecated: This field was under-specified and its meaning varies across implementations.
Using it is non-portable and it may not support dual-stack.
Users are encouraged to use implementation-specific annotations when available.

loadBalancerSourceRanges string array

LoadBalancerSourceRanges is an array of IP addresses in the format of
CIDRs, for example: 103.21.244.0/22 and 10.0.0.0/24.
If specified and supported by the load balancer provider, this will
restrict ingress traffic to the specified client IPs. This field will be
ignored if the provider does not support the feature.

clusterIp string

ClusterIP is the IP address of the service and is usually assigned
randomly by the master. If an address is specified manually and is not in
use by others, it will be allocated to the service; otherwise, creation
of the service will fail. This field can not be changed through updates.
Valid values are "None", empty string (""), or a valid IP address. "None"
can be specified for headless services when proxying is not required.
Only applies to types ClusterIP and LoadBalancer.
Ignored if type is ExternalName.
More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

externalName string

ExternalName is the external reference that kubedns or equivalent will
return as a CNAME record for this service. No proxying will be involved.
Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123)
and requires Type to be ExternalName.

VirtualMachineServiceStatus

VirtualMachineServiceStatus defines the observed state of VirtualMachineService.

Appears In:
Field Description Default Validation

loadBalancer LoadBalancerStatus

LoadBalancer contains the current status of the load balancer,
if one is present.

VirtualMachineServiceType

Underlying type: string

VirtualMachineServiceType string describes ingress methods for a service.

VirtualMachineSetResourcePolicy

VirtualMachineSetResourcePolicy is the Schema for the virtualmachinesetresourcepolicies API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha5

kind string

VirtualMachineSetResourcePolicy

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineSetResourcePolicySpec

VirtualMachineSetResourcePolicySpec defines the desired state of VirtualMachineSetResourcePolicy.

Field Description Default Validation

resourcePool ResourcePoolSpec

folder string

clusterModuleGroups string array

VirtualMachineSetResourcePolicyStatus

VirtualMachineSetResourcePolicyStatus defines the observed state of VirtualMachineSetResourcePolicy.

Field Description Default Validation

resourcePools ResourcePoolStatus array

clustermodules VSphereClusterModuleStatus array

VirtualMachineSnapshot

VirtualMachineSnapshot is the schema for the virtualmachinesnapshot API.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha5

kind string

VirtualMachineSnapshot

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineSnapshotReference

Field Description Default Validation

Type describes the type of the snapshot reference.

Possible values are: Managed, Unmanaged

Managed

Enum: [Managed Unmanaged]

name string

Name is the name of the snapshot resource. This field is only set
for managed snapshots.

VirtualMachineSnapshotReferenceType

Underlying type: string

VirtualMachineSnapshotReferenceType defines the type of the snapshot reference.

Validation:
  • Enum: [Managed Unmanaged]

VirtualMachineSnapshotSpec

VirtualMachineSnapshotSpec defines the desired state of VirtualMachineSnapshot.

Field Description Default Validation

memory boolean

Memory represents whether the snapshot includes the VM’s
memory. If true, a dump of the internal state of the virtual
machine (a memory dump) is included in the snapshot. Memory
snapshots consume time and resources and thus, take longer to
create.
The virtual machine must support this capability.
When set to false, the power state of the snapshot is set to
false.
For a VM in suspended state, memory is always included
in the snapshot.

quiesce QuiesceSpec

Quiesce represents the spec used for granular control over
quiesce details. If quiesceSpec is set and the virtual machine
is powered on when the snapshot is taken, VMware Tools is used
to quiesce the file system in the virtual machine. This assures
that a disk snapshot represents a consistent state of the guest
file systems. If the virtual machine is powered off or VMware
Tools are not available, the quiesce spec is ignored.

description string

Description represents a description of the snapshot.

vmName string

VMName represents the name of the virtual machine for which the
snapshot is requested.

VirtualMachineSnapshotStatus

VirtualMachineSnapshotStatus defines the observed state of VirtualMachineSnapshot.

Field Description Default Validation

PowerState represents the observed power state of the virtual
machine when the snapshot was taken.

Enum: [PoweredOff PoweredOn Suspended]

quiesced boolean

Quiesced represents whether or not the snapshot was created
with the quiesce option to ensure a snapshot with a consistent
state of the guest file system.

uniqueID string

UniqueID describes a unique identifier provider by the backing
infrastructure (e.g., vSphere) that can be used to distinguish
this snapshot from other snapshots of this virtual machine.

Children represents the snapshots for which this snapshot is
the parent.

conditions Condition array

Conditions describes the observed conditions of the VirtualMachine.

Storage describes the observed amount of storage used by a
VirtualMachineSnapshot, including the space for FCDs.

VirtualMachineSnapshotStorageStatus

VirtualMachineSnapshotStorageStatus defines the observed state of a VirtualMachineSnapshot’s storage.

Field Description Default Validation

used Quantity

Used describes the observed amount of storage used by a
VirtualMachineSnapshot, except the space for FCDs.

Requested describes the observed amount of storage requested by a
VirtualMachineSnapshot. It’s a list of requested storage for each
storage class.
Since a snapshot can have multiple PVCs, it can point to multiple storage
classes.

VirtualMachineSnapshotStorageStatusRequested

VirtualMachineSnapshotStorageStatusRequested describes the observed amount of storage requested by a VirtualMachineSnapshot for a storage class.

Field Description Default Validation

storageClass string

StorageClass is the name of the storage class.

total Quantity

Total describes the total storage space requested by a
VirtualMachineSnapshot for the storage class.

VirtualMachineSpec

VirtualMachineSpec defines the desired state of a VirtualMachine.

Field Description Default Validation

Image describes the reference to the VirtualMachineImage or
ClusterVirtualMachineImage resource used to deploy this VM.

Please note, unlike the field spec.imageName, the value of
spec.image.name MUST be a Kubernetes object name.

Please also note, when creating a new VirtualMachine, if this field and
spec.imageName are both non-empty, then they must refer to the same
resource or an error is returned.

Please note, this field may be empty if the VM was imported instead of
deployed by VM Operator. An imported VirtualMachine resource references
an existing VM on the underlying platform that was not deployed from a
VM image.

imageName string

ImageName describes the name of the image resource used to deploy this
VM.

This field may be used to specify the name of a VirtualMachineImage
or ClusterVirtualMachineImage resource. The resolver first checks to see
if there is a VirtualMachineImage with the specified name in the
same namespace as the VM being deployed. If no such resource exists, the
resolver then checks to see if there is a ClusterVirtualMachineImage
resource with the specified name.

This field may also be used to specify the display name (vSphere name) of
a VirtualMachineImage or ClusterVirtualMachineImage resource. If the
display name unambiguously resolves to a distinct VM image (among all
existing VirtualMachineImages in the VM’s namespace and all existing
ClusterVirtualMachineImages), then a mutation webhook updates the
spec.image field with the reference to the resolved VM image. If the
display name resolves to multiple or no VM images, then the mutation
webhook denies the request and returns an error.

Please also note, when creating a new VirtualMachine, if this field and
spec.image are both non-empty, then they must refer to the same
resource or an error is returned.

Please note, this field may be empty if the VM was imported instead of
deployed by VM Operator. An imported VirtualMachine resource references
an existing VM on the underlying platform that was not deployed from a
VM image.

className string

ClassName describes the name of the VirtualMachineClass resource used to
deploy this VM.

When creating a virtual machine, if this field is empty and a
VirtualMachineClassInstance is specified in spec.class, then
this field is populated with the VirtualMachineClass object’s
name.

Please also note, when creating a new VirtualMachine, if this field and
spec.class are both non-empty, then they must refer to the same
VirtualMachineClass or an error is returned.

Please note, this field may be empty if the VM was imported instead of
deployed by VM Operator. An imported VirtualMachine resource references
an existing VM on the underlying platform that was not deployed from a
VM class.

If a VM is using a class, a different value in spec.className
leads to the VM being resized.

Class describes the VirtualMachineClassInstance resource that is
referenced by this virtual machine. This can be the
VirtualMachineClassInstance that the virtual machine was
created, or later resized with.

The value of spec.class.Name must be the Kubernetes object name
of a valid VirtualMachineClassInstance resource.

Please also note, if this field and spec.className are both
non-empty, then they must refer to the same VirtualMachineClass
or an error is returned.

If a className is specified, but this field is omitted, VM operator
picks the latest instance for the VM class to create the VM.

If a VM class has been modified and thus, the newly available
VirtualMachineClassInstance can be specified in spec.class to
trigger a resize operation.

affinity AffinitySpec

Affinity describes the VM’s scheduling constraints.

Crypto describes the desired encryption state of the VirtualMachine.

storageClass string

StorageClass describes the name of a Kubernetes StorageClass resource
used to configure this VM’s storage-related attributes.

Please see https://kubernetes.io/docs/concepts/storage/storage-classes/
for more information on Kubernetes storage classes.

Bootstrap describes the desired state of the guest’s bootstrap
configuration.

If omitted, a default bootstrap method may be selected based on the
guest OS identifier. If Linux, then the LinuxPrep method is used.

Network describes the desired network configuration for the VM.

Please note this value may be omitted entirely and the VM will be
assigned a single, virtual network interface that is connected to the
Namespace’s default network.

PowerState describes the desired power state of a VirtualMachine.

Please note this field may be omitted when creating a new VM and will
default to "PoweredOn." However, once the field is set to a non-empty
value, it may no longer be set to an empty value.

Additionally, setting this value to "Suspended" is not supported when
creating a new VM. The valid values when creating a new VM are
"PoweredOn" and "PoweredOff." An empty value is also allowed on create
since this value defaults to "PoweredOn" for new VMs.

Enum: [PoweredOff PoweredOn Suspended]

PowerOffMode describes the desired behavior when powering off a VM.

There are three, supported power off modes: Hard, Soft, and
TrySoft. The first mode, Hard, is the equivalent of a physical
system’s power cord being ripped from the wall. The Soft mode
requires the VM’s guest to have VM Tools installed and attempts to
gracefully shutdown the VM. Its variant, TrySoft, first attempts
a graceful shutdown, and if that fails or the VM is not in a powered off
state after five minutes, the VM is halted.

If omitted, the mode defaults to TrySoft.

TrySoft

Enum: [Hard Soft TrySoft]

SuspendMode describes the desired behavior when suspending a VM.

There are three, supported suspend modes: Hard, Soft, and
TrySoft. The first mode, Hard, is where vSphere suspends the VM to
disk without any interaction inside of the guest. The Soft mode
requires the VM’s guest to have VM Tools installed and attempts to
gracefully suspend the VM. Its variant, TrySoft, first attempts
a graceful suspend, and if that fails or the VM is not in a put into
standby by the guest after five minutes, the VM is suspended.

If omitted, the mode defaults to TrySoft.

TrySoft

Enum: [Hard Soft TrySoft]

nextRestartTime string

NextRestartTime may be used to restart the VM, in accordance with
RestartMode, by setting the value of this field to "now"
(case-insensitive).

A mutating webhook changes this value to the current time (UTC), which
the VM controller then uses to determine the VM should be restarted by
comparing the value to the timestamp of the last time the VM was
restarted.

Please note it is not possible to schedule future restarts using this
field. The only value that users may set is the string "now"
(case-insensitive).

RestartMode describes the desired behavior for restarting a VM when
spec.nextRestartTime is set to "now" (case-insensitive).

There are three, supported suspend modes: Hard, Soft, and
TrySoft. The first mode, Hard, is where vSphere resets the VM without any
interaction inside of the guest. The Soft mode requires the VM’s guest to
have VM Tools installed and asks the guest to restart the VM. Its
variant, TrySoft, first attempts a soft restart, and if that fails or
does not complete within five minutes, the VM is hard reset.

If omitted, the mode defaults to TrySoft.

TrySoft

Enum: [Hard Soft TrySoft]

volumes VirtualMachineVolume array

Volumes describes a list of volumes that can be mounted to the VM.

ReadinessProbe describes a probe used to determine the VM’s ready state.

Advanced describes a set of optional, advanced VM configuration options.

Reserved describes a set of VM configuration options reserved for system
use.

Please note attempts to modify the value of this field by a DevOps user
will result in a validation error.

minHardwareVersion integer

MinHardwareVersion describes the desired, minimum hardware version.

The logic that determines the hardware version is as follows:

  1. If this field is set, then its value is used.

  2. Otherwise, if the VirtualMachineClass used to deploy the VM contains a
    non-empty hardware version, then it is used.

  3. Finally, if the hardware version is still undetermined, the value is
    set to the default hardware version for the Datacenter/Cluster/Host
    where the VM is provisioned.

This field is never updated to reflect the derived hardware version.
Instead, VirtualMachineStatus.HardwareVersion surfaces
the observed hardware version.

Please note, setting this field’s value to N ensures a VM’s hardware
version is equal to or greater than N. For example, if a VM’s observed
hardware version is 10 and this field’s value is 13, then the VM will be
upgraded to hardware version 13. However, if the observed hardware
version is 17 and this field’s value is 13, no change will occur.

Several features are hardware version dependent, for example:

  • NVMe Controllers >= 14

  • Dynamic Direct Path I/O devices >= 17

Please refer to https://kb.vmware.com/s/article/1003746 for a list of VM
hardware versions.

It is important to remember that a VM’s hardware version may not be
downgraded and upgrading a VM deployed from an image based on an older
hardware version to a more recent one may result in unpredictable
behavior. In other words, please be careful when choosing to upgrade a
VM to a newer hardware version.

Minimum: 13

instanceUUID string

InstanceUUID describes the desired Instance UUID for a VM.
If omitted, this field defaults to a random UUID.
This value is only used for the VM Instance UUID,
it is not used within cloudInit.
This identifier is used by VirtualCenter to uniquely identify all
virtual machine instances, including those that may share the same BIOS UUID.

Format: uuid

biosUUID string

BiosUUID describes the desired BIOS UUID for a VM.
If omitted, this field defaults to a random UUID.
When the bootstrap provider is Cloud-Init, this value is used as the
default value for spec.bootstrap.cloudInit.instanceID if it is omitted.

Format: uuid

guestID string

GuestID describes the desired guest operating system identifier for a VM.

The logic that determines the guest ID is as follows:

If this field is set, then its value is used.
Otherwise, if the VM is deployed from an OVF template that defines a
guest ID, then that value is used.
The guest ID from VirtualMachineClass used to deploy the VM is ignored.

Please note that some guest ID values may require a minimal hardware
version, which can be set using the spec.minHardwareVersion field.
To see the mapping between virtual hardware versions and the product
versions that support a specific guest ID, please refer to
https://knowledge.broadcom.com/external/article/315655/virtual-machine-hardware-versions.html.

Please note that this field is immutable after the VM is powered on.
To change the guest ID after the VM is powered on, the VM must be powered
off and then powered on again with the updated guest ID spec.

This field is required when the VM has any CD-ROM devices attached.

PromoteDisksMode describes the mode used to promote a VM’s delta disks to
full disks. The available modes are:

  • Disabled — Do not promote disks.

  • Online  — Promote disks while the VM is powered on. VMs with
    snapshots do not support online promotion.

  • Offline  — Promote disks while the VM is powered off.

Please note, this field is ignored for encrypted VMs since they do not
use delta disks.

Defaults to Online.

Online

Enum: [Online Offline Disabled]

BootOptions describes the settings that control the boot behavior of the
virtual machine. These settings take effect during the next power-on of the
virtual machine.

currentSnapshotName string

CurrentSnapshotName represents the desired snapshot that the VM
should point to. This field can be specified to revert the VM
to a given snapshot. Once the virtual machine has been
successfully reverted to the desired snapshot, the value of
this field is cleared.

The value of this field must be the name of an existing
VirtualMachineSnapshot resource in the same namespace.

Reverting a virtual machine to a snapshot rolls back the data
and the configuration of the virtual machine to that of the
specified snapshot. The VirtualMachineSpec of the
VirtualMachine resource is replaced from the one stored with
the snapshot.

If the virtual machine is currently powered off, but you revert to
a snapshot that was taken while the VM was powered on, then the
VM will be automatically powered on during the revert.
Additionally, the VirtualMachineSpec will be updated to match
the power state from the snapshot (i.e., powered on). This can
be overridden by specifying the PowerState to PoweredOff in the
VirtualMachineSpec.

groupName string

GroupName indicates the name of the VirtualMachineGroup to which this
VM belongs.

VMs that belong to a group do not drive their own placement, rather that
is handled by the group.

When this field is set to a valid group that contains this VM as a
member, an owner reference to that group is added to this VM.

When this field is deleted or changed, any existing owner reference to
the previous group will be removed from this VM.

Hardware describes the VM’s desired hardware.

policies PolicySpec array

Policies describes a list of policies that should be explicitly applied
to this VM.

Please note, not all policies may be applied explicitly to a VM. Please
consult a policy to determine if it may be applied directly. For example,
the ComputePolicy object from the vsphere.policy.vmware.com API group
has a field named spec.type. Only ComputePolicy objects with
type=Optional may be applied explicitly to a VM.

Valid policy types are: ComputePolicy.

VirtualMachineStatus

VirtualMachineStatus defines the observed state of a VirtualMachine instance.

Appears In:
Field Description Default Validation

Class is a reference to the VirtualMachineClass resource used to deploy
this VM.

nodeName string

NodeName describes the observed name of the node where the VirtualMachine
is scheduled.

PowerState describes the observed power state of the VirtualMachine.

Enum: [PoweredOff PoweredOn Suspended]

conditions Condition array

Conditions describes the observed conditions of the VirtualMachine.

Crypto describes the observed state of the VirtualMachine’s encryption
configuration.

Network describes the observed state of the VM’s network configuration.
Please note much of the network status information is only available if
the guest has VM Tools installed.

uniqueID string

UniqueID describes a unique identifier that is provided by the underlying
infrastructure provider, such as vSphere.

biosUUID string

BiosUUID describes a unique identifier provided by the underlying
infrastructure provider that is exposed to the Guest OS BIOS as a unique
hardware identifier.

instanceUUID string

InstanceUUID describes the unique instance UUID provided by the
underlying infrastructure provider, such as vSphere.

Volumes describes the observed state of the volumes that are intended to
be attached to the VirtualMachine.

changeBlockTracking boolean

ChangeBlockTracking describes whether or not change block tracking is
enabled for the VirtualMachine.

zone string

Zone describes the availability zone where the VirtualMachine has been
scheduled.

Please note this field may be empty when the cluster is not zone-aware.

lastRestartTime Time

LastRestartTime describes the last time the VM was restarted.

hardwareVersion integer

HardwareVersion describes the VirtualMachine resource’s observed
hardware version.

Please refer to VirtualMachineSpec.MinHardwareVersion for more
information on the topic of a VM’s hardware version.

Storage describes the observed state of the VirtualMachine’s storage.

CurrentSnapshot describes the observed working snapshot of the VirtualMachine.
This field contains the name of the current snapshot.

rootSnapshots VirtualMachineSnapshotReference array

RootSnapshots represents the observed list of root snapshots of
a VM. Since each snapshot includes the list of its child
snapshots, these root snapshot references can effectively be
used to construct the entire snapshot chain of a virtual
machine.

Guest describes the observed state of the VM’s guest.

Hardware describes the observed state of the VM’s hardware.

policies PolicyStatus array

Policies describes the observed policies applied to this VM.

VirtualMachineStorageStatus

VirtualMachineStorageStatus defines the observed state of a VirtualMachine’s storage.

Appears In:
Field Description Default Validation

total Quantity

Total describes the total storage space used by a VirtualMachine that
counts against the Namespace’s storage quota.
This value is a sum of requested.disks + used.other.

Requested describes the observed amount of storage requested by a
VirtualMachine.

Used describes the observed amount of storage used by a VirtualMachine.

VirtualMachineStorageStatusRequested

Field Description Default Validation

disks Quantity

Disks describes the total storage space requested by a VirtualMachine’s
disks.

VirtualMachineStorageStatusUsed

Field Description Default Validation

disks Quantity

Disks describes the total storage space used by a VirtualMachine’s
disks.

Snapshots describes the total storage space used by a VirtualMachine’s
snapshots.

other Quantity

Other describes the total storage space used by the VirtualMachine’s
non disk files, ex. the configuration file, swap space, logs, etc.

VirtualMachineStorageStatusUsedSnapshotDetails

Field Description Default Validation

VM describes the total storage space used by the VirtualMachine’s
VirtualMachineSnapshot, including the space for snapshot’s metadata,
memory file, delta disks, etc.

volume Quantity

Volume describes the total storage space used by the VirtualMachine’s
VolumeSnapshot, including the space for first class disk(FCD)'s
delta disks.

VirtualMachineTemplateSpec

VirtualMachineTemplateSpec describes the data needed to create a VirtualMachine from a template.

Field Description Default Validation

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

Specification of the desired behavior of each replica virtual machine.

VirtualMachineVGPUMigrationType

Underlying type: string

VirtualMachineVGPUType

Underlying type: string

VirtualMachineVolume

VirtualMachineVolume represents a named volume in a VM.

Appears In:
Field Description Default Validation

name string

Name represents the volume’s name. Must be a DNS_LABEL and unique within
the VM.

persistentVolumeClaim PersistentVolumeClaimVolumeSource

PersistentVolumeClaim represents a reference to a PersistentVolumeClaim
in the same namespace.

removable boolean

Removable describes whether or not this volume may be removed from
spec.volumes. This is a safety measure that allows users to prevent the
accidental removal of disks from a VM that should not be removed, such as
the VM’s boot disk(s).

Users may change this value at any time.

When deploying a VM, disks from the VM image are automatically marked as
removable=false in order to prevent the accidental removal of the disks
needed to boot the VM.

Defaults to true.

true

applicationType VolumeApplicationType

ApplicationType describes the type of application for which this volume
is intended to be used.

  • OracleRAC  — The volume is configured with
    diskMode=IndependentPersistent and
    sharingMode=MultiWriter and attached to the first
    SCSI controller with an available slot and
    sharingMode=None. If no such controller exists,
    a new ParaVirtual SCSI controller will be created
    with sharingMode=None long as there are currently
    three or fewer SCSI controllers.

  • MicrosoftWSFC  — The volume is configured with
    diskMode=IndependentPersistent and attached to a
    SCSI controller with sharingMode=Physical.
    If no such controller exists, a new ParaVirtual
    SCSI controller will be created with
    sharingMode=Physical as long as there are currently
    three or fewer SCSI controllers.

Enum: [OracleRAC MicrosoftWSFC]

controllerBusNumber integer

ControllerBusNumber describes the bus number of the controller to which
this volume should be attached.

The bus number specifies a controller based on the value of the
controllerType field:

  • IDE  — spec.hardware.ideControllers

  • NVME — spec.hardware.nvmeControllers

  • SATA — spec.hardware.sataControllers

  • SCSI — spec.hardware.scsiControllers

If this and controllerType are both omitted, the volume will be attached
to the first available SCSI controller. If there is no SCSI controller
with an available slot, a new ParaVirtual SCSI controller will be added
as long as there are currently three or fewer SCSI controllers.

If the specified controller has no available slots, the request will be
denied.

controllerType VirtualControllerType

ControllerType describes the type of the controller to which this volume
should be attached.

Please keep in mind the number of volumes supported by the different
types of controllers:

  • IDE  — 4 total (2 per controller)

  • NVME  — 256 total (64 per controller)

  • SATA  — 120 total (30 per controller)

  • SCSI (ParaVirtual) — 256 total (64 per controller)

  • SCSI (BusLogic)  — 60 total (15 per controller)

  • SCSI (LsiLogic)  — 60 total (15 per controller)

  • SCSI (LsiLogicSAS) — 60 total (15 per controller)

Please note, the number of supported volumes per SCSI controller may seem
off, but remember that a SCSI controller occupies a slot on its own bus.
Thus even though a ParaVirtual SCSI controller supports 65 targets and
the other types of SCSI controllers support 16 targets, one of the
targets is occupied by the controller itself.

Defaults to SCSI when controllerBusNumber is also omitted; otherwise the
default value is determined by the logic outlined in the description of
the controllerBusNumber field.

Enum: [IDE NVME SCSI SATA]

diskMode VolumeDiskMode

DiskMode describes the desired mode to use when attaching the volume.

Please note, volumes attached as IndependentNonPersistent or
IndependentPersistent are not included in a VM’s snapshots or backups.

Also, any data written to volumes attached as IndependentNonPersistent or
NonPersistent will be discarded when the VM is powered off.

When applicationType=OracleRAC or applicationType=MicrosoftWSFC, this
field defaults to IndependentPersistent.
Otherwise, defaults to Persistent.

Enum: [IndependentNonPersistent IndependentPersistent NonPersistent Persistent]

sharingMode VolumeSharingMode

SharingMode describes the volume’s desired sharing mode.

When applicationType=OracleRAC, this field defaults to MultiWriter.
Otherwise, defaults to None.

Enum: [MultiWriter None]

unitNumber integer

UnitNumber describes the desired unit number for attaching the volume to
a storage controller.

When omitted, the next available unit number of the selected controller
is used.

This value must be unique for the controller referenced by the
controllerBusNumber and controllerType properties. If the value is
already used by another device, this volume will not be attached.

Please note the value 7 is invalid if controllerType=SCSI as 7 is the
unit number of the SCSI controller on its own bus.

VirtualMachineVolumeCryptoStatus

Field Description Default Validation

providerID string

ProviderID describes the provider ID used to encrypt the volume.
Please note, this field will be empty if the volume is not
encrypted.

keyID string

KeyID describes the key ID used to encrypt the volume.
Please note, this field will be empty if the volume is not
encrypted.

VirtualMachineVolumeSource

VirtualMachineVolumeSource represents the source location of a volume to mount. Only one of its members may be specified.

Appears In:
Field Description Default Validation

persistentVolumeClaim PersistentVolumeClaimVolumeSource

PersistentVolumeClaim represents a reference to a PersistentVolumeClaim
in the same namespace.

VirtualMachineVolumeStatus

VirtualMachineVolumeStatus defines the observed state of a VirtualMachineVolume instance.

Appears In:
Field Description Default Validation

name string

Name describes the name of the volume.

controllerBusNumber integer

ControllerBusNumber describes the volume’s observed controller bus
number.

controllerType VirtualControllerType

ControllerType describes the volume’s observed controller type.

Enum: [IDE NVME SCSI SATA]

unitNumber integer

UnitNumber describes the volume’s observed unit number.

type VolumeType

Type is the type of the attached volume.

Managed

Enum: [Classic Managed]

diskMode VolumeDiskMode

DiskMode describes the volume’s observed disk mode.

Enum: [IndependentNonPersistent IndependentPersistent NonPersistent Persistent]

sharingMode VolumeSharingMode

SharingMode describes the volume’s observed sharing mode.

Enum: [MultiWriter None]

Crypto describes the volume’s encryption status.

limit Quantity

Limit describes the maximum, requested capacity of the volume.

requested Quantity

Requested describes the minimum, requested capacity of the volume.

Please note, this value is used when calculating a VM’s impact to a
namespace’s storage quota.

used Quantity

Used describes the observed, non-shared size of the volume on disk.

For example, if this is a linked-clone’s boot volume, this value
represents the space consumed by the linked clone, not the parent.

Another example is when a volume is thin-provisioned. The volume’s
capacity may be 20Gi, but the actual usage on disk may only be a few
hundred mebibytes.

attached boolean

Attached represents whether a volume has been successfully attached to
the VirtualMachine or not.

diskUUID string

DiskUUID represents the underlying virtual disk UUID and is present when
attachment succeeds.

error string

Error represents the last error seen when attaching or detaching a
volume. Error will be empty if attachment succeeds.

VirtualMachineWebConsoleRequest

VirtualMachineWebConsoleRequest allows the creation of a one-time, web console connection to a VM.

Field Description Default Validation

apiVersion string

vmoperator.vmware.com/v1alpha5

kind string

VirtualMachineWebConsoleRequest

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VirtualMachineWebConsoleRequestSpec

VirtualMachineWebConsoleRequestSpec describes the desired state for a web console request to a VM.

Field Description Default Validation

name string

Name is the name of a VM in the same Namespace as this web console
request.

publicKey string

PublicKey is used to encrypt the status.response. This is expected to be a RSA OAEP public key in X.509 PEM format.

VirtualMachineWebConsoleRequestStatus

VirtualMachineWebConsoleRequestStatus describes the observed state of the request.

Field Description Default Validation

response string

Response will be the authenticated ticket corresponding to this web console request.

expiryTime Time

ExpiryTime is the time at which access via this request will expire.

proxyAddr string

ProxyAddr describes the host address and optional port used to access
the VM’s web console.

The value could be a DNS entry, IPv4, or IPv6 address, followed by an
optional port. For example, valid values include:

DNS
* host.com
* host.com:6443

IPv4
* 1.2.3.4
* 1.2.3.4:6443

IPv6
* 1234:1234:1234:1234:1234:1234:1234:1234
* [1234:1234:1234:1234:1234:1234:1234:1234]:6443
* 1234:1234:1234:0000:0000:0000:1234:1234
* 1234:1234:1234::::1234:1234
* [1234:1234:1234::::1234:1234]:6443

In other words, the field may be set to any value that is parsable
by Go’s https://pkg.go.dev/net#ResolveIPAddr and
https://pkg.go.dev/net#ParseIP functions.

VolumeApplicationType

Underlying type: string

Validation:
  • Enum: [OracleRAC MicrosoftWSFC]

Appears In:

VolumeDiskMode

Underlying type: string

Validation:
  • Enum: [IndependentNonPersistent IndependentPersistent NonPersistent Persistent]

VolumeProvisioningMode

Underlying type: string

VolumeProvisioningMode is the type used to express the desired or observed provisioning mode for a virtual machine disk.

Validation:
  • Enum: [Thin Thick ThickEagerZero]

VolumeSharingMode

Underlying type: string

Validation:
  • Enum: [MultiWriter None]

VolumeType

Underlying type: string

VolumeType describes the type of a VirtualMachine volume.

Validation:
  • Enum: [Classic Managed]