vms

package
v0.53.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 18, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	HooksPath = clusters.BasePath + "/%s/vms/lifecycle-hooks"
)
View Source
const (
	SolutionsPath = clusters.BasePath + "/%s/vms/solutions"
)
View Source
const (
	// TransitionPath is the endpoint for the transition API
	TransitionPath = clusters.BasePath + "/%s/vms/transition"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AlternativeVmSpec

type AlternativeVmSpec struct {
	// SelectionCriteria is the criteria to match System VMs for which to apply this alternative VM spec.
	SelectionCriteria VmSelectionSpec `json:"selection_criteria"`

	// Devices of the VMs not defined in the OVF descriptor. This
	// takes precedence over ClusterSolutionSpec#Devices.
	//
	// If ClusterSolutionSpec#VmDatastores is not set, the devices of
	// the VMs not defined in the OVF descriptor should be provided to
	// Devices and not as part of a VM lifecycle hook
	// (VM reconfiguration). Otherwise, the compatibility of the devices with the
	// selected host and datastore where the VM is deployed needs to be ensured
	// by the client.
	//
	// 1. For VM initial placement the devices are added to the VM configuration.
	// 2. For the reconfiguration it is checked what devices need to be added,
	// removed, and edited on the existing VMs. NOTE: No VM relocation is
	// executed before the VM reconfiguration.
	//
	// The supported property of vim.vm.ConfigSpec is
	// vim.vm.ConfigSpec.deviceChange. The supported
	// vim.vm.device.VirtualDeviceSpec.operation is Operation#add. For
	// vim.vm.device.VirtualEthernetCard the unique identifier is
	// vim.vm.device.VirtualDevice#unitNumber.
	// ClusterSolutionSpec#vmNetworks and devices are mutually
	// exclusive.
	//
	// If unset, ClusterSolutionSpec#Devices is used.
	Devices json.RawMessage `json:"devices,omitempty"`
}

AlternativeVmSpec contains to describe alternative VM configuration to be applied on VMs that matches a given selection criteria defined as VmSelectionSpec.

type ApplyResult

type ApplyResult struct {

	// ApplyStatus is the aggregated status of an apply operation.
	//
	// Unset if the apply operation is in progress.
	ApplyStatus ApplyStatus `json:"status"`

	// HostSolutionStatus is the apply status of all solutions with deployment type
	// DeploymentType.EVERY_HOST_PINNED that were part of the apply operation.
	HostSolutionStatus HostSolutionsApplyStatus `json:"host_solutions_status"`

	// ClusterSolutionStatus is the apply status of all solutions with deployment type
	// DeploymentType.CLUSTER_VM_SET that were part of the apply operation.
	ClusterSolutionStatus ClusterSolutionsApplyStatus `json:"cluster_solutions_status"`
}

ApplyResult contains fields that describe the result of an apply operation.

type ApplySpec

type ApplySpec struct {

	// HostSolutions is the apply filter for solutions with deployment type
	// DeploymentType.EVERY_HOST_PINNED.
	//
	// If unset or empty and ClusterSolutions is unset or empty,
	// all solutions are applied on the cluster.
	HostSolutions *HostSolutionsApplyFilterSpec `json:"host_solutions,omitempty"`

	// ClusterSolutions is the apply filter for solutions with deployment type
	// DeploymentType.CLUSTER_VM_SET.
	//
	// If unset or empty and HostSolutions is unset or empty, all solutions are applied on
	// the cluster.
	ClusterSolutions *ClusterSolutionsApplyFilterSpec `json:"cluster_solutions,omitempty"`
}

ApplySpec contains fields that describe a specification to be used for applying the desired solution specification to a given cluster.

type ApplyStatus

type ApplyStatus struct {
	Status Status `json:"status"`

	// StartTime is the vLCM system time when the operation started.
	StartTime time.Time `json:"start_time"`

	// EndTime is the vLCM system time when the operation completed.
	EndTime time.Time `json:"end_time"`
}

ApplyStatus contains fields that describe the status of an apply operation.

type AuthenticationScheme

type AuthenticationScheme string
const (
	None            AuthenticationScheme = "NONE"
	VmwareSessionId AuthenticationScheme = "VMWARE_SESSION_ID"
)

type CheckComplianceFilterSpec

type CheckComplianceFilterSpec struct {

	// Solutions are identifiers of the solutions that to be checked for compliance.
	//
	// If unset, the compliance is checked for all solutions in the cluster.
	Solutions *[]string `json:"solutions,omitempty"`

	// Hosts are identifiers of the hosts that to be checked for compliance of all
	// solutions with deployment type DeploymentType.EVERY_HOST_PINNED.
	//
	// If unset or empty and DeploymentUnits is unset or empty, the compliance is checked
	// for all hosts in the cluster.
	Hosts *[]string `json:"hosts,omitempty"`

	// DeploymentUnits are identifiers of the deployment units that to be checked for compliance
	// of all solutions with deployment type DeploymentType.CLUSTER_VM_SET.
	//
	// The deployment unit represents a single VM instance deployment.
	//
	// If unset or empty and Hosts is unset or empty, the compliance is checked for
	// all deployment units in the cluster.
	DeploymentUnits *[]string `json:"deployment_units,omitempty"`
}

CheckComplianceFilterSpec contains fields that describe a filter for compliance check in a given cluster.

type ClusterCompliance

type ClusterCompliance struct {

	// Status is the aggregated status of the compliance check operation.
	Status ComplianceStatus `json:"status"`

	// HostSolutionsStatus is the compliance status of all solutions with deployment type
	// DeploymentType.EVERY_HOST_PINNED that were part of the Solutions.CheckCompliance operation.
	HostSolutionsStatus HostSolutionsCompliance `json:"host_solutions_status"`

	// ClusterSolutionsStatus is the compliance status of all solutions with deployment type
	// DeploymentType.CLUSTER_VM_SET that were part of the Solutions.CheckCompliance operation.
	ClusterSolutionsStatus ClusterSolutionsCompliance `json:"cluster_solutions_status"`
}

ClusterCompliance contains fields that describe the result of the compliance Solutions.CheckCompliance operation.

type ClusterSolutionApplyStatus

type ClusterSolutionApplyStatus struct {

	// Status is the aggregated apply status for the deployment units of the solution.
	//
	// Unset if the apply operation is not completed for the specified deployment unit.
	Status ApplyStatus `json:"status"`

	// DeploymentUnitStatuses is the apply status for the different deployment units of the solution.
	DeploymentUnitStatuses map[string]ApplyStatus `json:"deployment_unit_statuses"`
}

ClusterSolutionApplyStatus contains fields that describe the apply status for a specific solution.

type ClusterSolutionCompliance

type ClusterSolutionCompliance struct {
	// Status is the aggregated compliance status for all deployment units for which a compliance check was requested.
	Status ComplianceStatus `json:"status"`

	// Compliances is the compliance status for the deployment units for which a compliance check was requested.
	Compliances map[string]DeploymentCompliance `json:"compliances"`
}

ClusterSolutionCompliance contains fields that describe the compliance for a specific solution.

type ClusterSolutionInfo

type ClusterSolutionInfo struct {
	// The number of instances of the specified VM to be deployed across the
	// cluster.
	VmCount int `json:"vm_count"`

	// VmPlacementPolicies  are the VM placement policies to be configured on the VMs.
	VmPlacementPolicies []VmPlacementPolicy `json:"vm_placement_policies"`

	// VmNetworks to be configured on the VMs. The map keys represent the
	// logical network names defined in the OVF descriptor while the map values
	// represent the VM network identifiers.
	//
	// If no VM networks are configured.
	VmNetworks map[string]string `json:"vm_networks"`

	// VmDatastores to be configured as a storage of the VMs. The first datastore
	// from the list available in the cluster is used.
	//
	// If unset the system automatically selects the datastore. The selection
	// takes into account the other properties of the desired state
	// specification (the provided VM storage policies and VM devices) and
	// the runtime state of the datastores in the cluster. It is required
	// DRS to be enabled on the cluster.
	VmDatastores *[]string `json:"vm_datastores,omitempty"`

	// RemediationPolicy to be configured for the deployment units.
	RemediationPolicy RemediationPolicy `json:"remediation_policy"`

	// AlternativeVmSpecs to be applied on the System VMs.
	//
	// If unset no AlternativeVmSpecs applied to the System VMs.
	AlternativeVmSpecs []AlternativeVmSpec `json:"alternative_vm_specs,omitempty"`

	// Devices of the VMs not defined in the OVF descriptor. If VmDatastores is
	// not set, the devices of the VMs not defined in the OVF descriptor should
	// be provided and not as part of a VM lifecycle hook (VM reconfiguration).
	// Otherwise, the compatibility of the devices with the selected host and
	// datastore where the VM is deployed needs to be ensured by the client.
	Devices json.RawMessage `json:"devices,omitempty"`
}

ClusterSolutionInfo contains fields that describe solution configuration only applicable for solutions with deployment type DeploymentType#CLUSTER_VM_SET}.

type ClusterSolutionSpec

type ClusterSolutionSpec struct {
	// The number of instances of the specified VM to be deployed across the
	// cluster.
	VmCount int `json:"vm_count"`

	// VmPlacementPolicies  are the VM placement policies to be configured on the VMs.
	VmPlacementPolicies []VmPlacementPolicy `json:"vm_placement_policies"`

	// VmNetworks to be configured on the VMs. The map keys represent the
	// logical network names defined in the OVF descriptor while the map values
	// represent the VM network identifiers.
	//
	// If no VM networks are configured.
	VmNetworks map[string]string `json:"vm_networks"`

	// VmDatastores to be configured as a storage of the VMs. The first datastore
	// from the list available in the cluster is used.
	//
	// If unset the system automatically selects the datastore. The selection
	// takes into account the other properties of the desired state
	// specification (the provided VM storage policies and VM devices) and
	// the runtime state of the datastores in the cluster. It is required
	// DRS to be enabled on the cluster.
	VmDatastores *[]string `json:"vm_datastores,omitempty"`

	// Devices of the VMs not defined in the OVF descriptor. If VmDatastores is
	// not set, the devices of the VMs not defined in the OVF descriptor should
	// be provided and not as part of a VM lifecycle hook (VM reconfiguration).
	// Otherwise, the compatibility of the devices with the selected host and
	// datastore where the VM is deployed needs to be ensured by the client.
	//
	// 1. For VM initial placement the devices are added to the VM
	// configuration. 2. For the reconfiguration it is checked what devices
	// need to be added, removed, and edited on the existing VMs. NOTE: No VM
	// relocation is executed before the VM reconfiguration.
	//
	// The supported property of vim.vm.ConfigSpec is
	// vim.vm.ConfigSpec.deviceChange. The supported
	// vim.vm.device.VirtualDeviceSpec.operation is Operation#add. For
	// vim.vm.device.VirtualEthernetCard the unique identifier is
	// vim.vm.device.VirtualDevice#unitNumber. VmNetworks and Devices are
	// mutually exclusive.
	//
	// If unset no additional devices will be added to
	// the VMs.
	// Optional<DynamicStructure> devices;
	Devices json.RawMessage `json:"devices,omitempty"`

	// RemediationPolicy to be configured for the deployment units.
	RemediationPolicy RemediationPolicy `json:"remediation_policy"`

	// AlternativeVmSpecs to be applied on the System VMs.
	// If unset no AlternativeVmSpecs applied to the System VMs.
	AlternativeVmSpecs []AlternativeVmSpec `json:"alternative_vm_specs,omitempty"`
}

ClusterSolutionSpec contains fields that describe solution configuration only applicable for solutions with deployment type DeploymentType#CLUSTER_VM_SET}.

type ClusterSolutionsApplyFilterSpec

type ClusterSolutionsApplyFilterSpec struct {

	// Solutions are specific solutions within the cluster to be considered during the
	// execution of the apply operation.
	//
	// If unset or empty, all solutions are applied.
	Solutions []string `json:"solutions,omitempty"`

	// Hosts on which solutions that are specified by this structure need
	// to be applied.
	//
	// If unset or empty, the solutions are applied on all of the hosts in the cluster.
	Hosts []string `json:"hosts,omitempty"`
}

ClusterSolutionsApplyFilterSpec contains fields that describe a filter that to be used for applying the desired specification of solutions with deployment type DeploymentType.CLUSTER_VM_SET to a given cluster.

type ClusterSolutionsApplyStatus

type ClusterSolutionsApplyStatus struct {

	// Status is the aggregated apply status of the solutions.
	//
	// Unset if the apply operation is not completed for solutions with deployment type
	// DeploymentType.CLUSTER_VM_SET.
	Status ApplyStatus `json:"status"`

	// SolutionStatuses is the apply status of the solutions that were part of the apply operation.
	SolutionStatuses map[string]ClusterSolutionApplyStatus `json:"solution_statuses"`
}

ClusterSolutionsApplyStatus contains fields that describe the apply status of solutions with deployment type DeploymentType.CLUSTER_VM_SET.

type ClusterSolutionsCompliance

type ClusterSolutionsCompliance struct {

	// Status is the aggregated compliance status for all solutions for which a compliance check was requested.
	Status ComplianceStatus `json:"status"`

	// Compliances for the solutions for which a compliance check was requested.
	Compliances map[string]ClusterSolutionCompliance `json:"compliances"`
}

ClusterSolutionsCompliance contains fields that describe the compliance of solutions with deployment type DeploymentType.CLUSTER_VM_SET.

type ComplianceStatus

type ComplianceStatus string

ComplianceStatus describes the possible compliance status.

const (

	// ComplianceStatusCompliant indicates the status is compliant with the desired solution specification.
	ComplianceStatusCompliant ComplianceStatus = "COMPLIANT"

	// ComplianceStatusNonCompliant indicates the status is non-compliant with the desired solution specification.
	ComplianceStatusNonCompliant ComplianceStatus = "NON_COMPLIANT"

	// ComplianceStatusIncompatible indicates the target state is incompatible with the system.
	ComplianceStatusIncompatible ComplianceStatus = "INCOMPATIBLE"
)

type DeploymentCompliance

type DeploymentCompliance struct {

	// Status is the compliance status of the deployment.
	Status ComplianceStatus `json:"status"`

	// Notifications describing the compliance result.
	Notifications rest.Notifications `json:"notifications"`

	// Deployment is the current VM deployment.
	Deployment DeploymentInfo `json:"deployment"`
}

DeploymentCompliance contains fields that describe the compliance of a given VM deployment. See DeploymentInfo.

type DeploymentInfo

type DeploymentInfo struct {

	// Status is the compliance status of the deployment.
	Status Status `json:"status"`

	// Vm is the identifier of the currently deployed VM. More information about the
	// runtime state of the VM can be observed through the VIM API.
	//
	// This field is unset if:
	//   - The VM deployment is not started yet.
	//   - There are issues specified by the Issues field that prevents the VM to be deployed.
	Vm *string `json:"vm,omitempty"`

	// ReplacementVm is the identifier of the VM that is going to replace the current deployed VM.
	// More information about the runtime state of the VM can be observed through the VIM API.
	//
	// This field is unset if there is no ongoing VM upgrade for the current VM deployment.
	ReplacementVm *string `json:"replacement_vm,omitempty"`

	// Issues is a list of IssueInfo which do not allow the deployment to reach
	// the desired specification specified by the SolutionInfo. In order to remediate these issues
	// an apply operation Solutions.Apply needs to be initiated.
	Issues []IssueInfo `json:"issues"`

	// LifecycleHook is the activated VM lifecycle hook for the VM specified by the Vm field
	// that the system is waiting to be processed by the solution in order to continue attempting to reach the desired specification.
	//
	// This field is unset if there is no activated hook for the VM.
	LifecycleHook *LifecycleHookInfo `json:"lifecycle_hook,omitempty"`

	// SolutionInfo describes the current desired solution specification of the deployment.
	SolutionInfo SolutionInfo `json:"solution_info"`
}

DeploymentInfo contains fields that describe the state of a single VM deployment of a solution.

type DeploymentType

type DeploymentType string
const (
	EveryHostPinned DeploymentType = "EVERY_HOST_PINNED"
	ClusterVmSet    DeploymentType = "CLUSTER_VM_SET"
)

type DiskType

type DiskType string
const (
	DiskTypeDefault DiskType = "DEFAULT"
	DiskTypeThin    DiskType = "THIN"
	DiskTypeThick   DiskType = "THICK"
)

type DynamicUpdateSpec

type DynamicUpdateSpec struct {
	Vm string `json:"vm"`

	Solution string `json:"solution"`

	LifecycleState LifecycleState `json:"lifecycle_state"`

	AlternativeVmSpec *AlternativeVmSpec `json:"alternative_vm_spec,omitempty"`
}

type EnableSpec

type EnableSpec struct {
	// EamAgencyID is the identifier of the solution in EAM (EAM agency).
	EamAgencyID string `json:"eam_agency_id"`

	// Solution is the target desired solution specification in vLCM.
	Solution *SolutionSpec `json:"solution"`
}

EnableSpec contains fields that describe specification for enablement of EAM managed solution in vLCM.

type HookListResult

type HookListResult struct {
	Hooks []LifecycleHookInfo `json:"hooks"`
}

type HostApplyStatus

type HostApplyStatus struct {

	// Status is the aggregated apply status of the solutions on the host.
	//
	// Unset if the apply operation is not completed for the specified host.
	Status ApplyStatus `json:"status"`

	// SolutionStatus is the apply status of the different solutions on the host.
	SolutionStatus map[string]ApplyStatus `json:"solution_statuses"`
}

HostApplyStatus contains fields that describe the apply status for a specific host.

type HostCompliance

type HostCompliance struct {

	// Status is the aggregated compliance status for all solutions for which compliance check was requested.
	Status ComplianceStatus `json:"status"`

	// Compliances for the solutions for which a compliance check was requested.
	Compliances map[string]DeploymentCompliance `json:"compliances"`
}

HostCompliance contains fields that describe the compliance for a specific host.

type HostSolutionsApplyFilterSpec

type HostSolutionsApplyFilterSpec struct {

	// Solutions are specific solutions within the cluster to be considered during the
	// execution of the apply operation.
	//
	// If unset or empty, all solutions are applied.
	Solutions *[]string `json:"solutions,omitempty"`

	// Hosts on which solutions that are specified by this structure need
	// to be applied.
	//
	// If unset or empty, the solutions are applied on all of the hosts in the cluster.
	Hosts *[]string `json:"hosts,omitempty"`
}

HostSolutionsApplyFilterSpec contains fields that describe a filter that to be used for applying the desired specification of solutions with deployment type DeploymentType.EVERY_HOST_PINNED to a given cluster.

type HostSolutionsApplyStatus

type HostSolutionsApplyStatus struct {

	// Status is the aggregated apply status of the solutions.
	//
	// Unset if the apply operation is not completed for solutions with deployment type
	// DeploymentType.EVERY_HOST_PINNED.
	Status ApplyStatus `json:"status"`

	// HostStatuses is the apply status of the hosts that were part of the apply operation.
	HostStatuses map[string]HostApplyStatus `json:"hostStatuses"`
}

HostSolutionsApplyStatus contains fields that describe the apply status of solutions with deployment type DeploymentType.EVERY_HOST_PINNED.

type HostSolutionsCompliance

type HostSolutionsCompliance struct {

	// Status is the aggregated compliance status for all solutions for which a compliance check was requested.
	Status ComplianceStatus `json:"status"`

	// Compliances is the compliance status of the hosts that were part of the check compliance operation.
	Compliances map[string]HostCompliance `json:"compliances"`
}

HostSolutionsCompliance contains fields that describe the compliance of solutions with deployment type DeploymentType.EVERY_HOST_PINNED.

type IssueInfo

type IssueInfo struct {

	// Type of the issue.
	Type IssueType `json:"type"`

	// Notifications provides additional information about the issue.
	Notifications rest.Notifications `json:"notifications"`
}

IssueInfo contains fields that describe an issue that blocks the system to reach the desired specification of a given VM deployment.

type IssueType

type IssueType string
const (

	// VmPoweredOn indicates the System VM is expected to be powered-off, but it is powered-on.
	// To remediate the deployment, re-invoke Solutions.Apply to have vLCM power-off the System VM.
	VmPoweredOn IssueType = "VM_POWERED_ON"

	// VmPoweredOff indicates the System VM is expected to be powered-on, but it is powered-off.
	// To remediate the deployment, re-invoke Solutions.Apply to have vLCM power-on the System VM.
	VmPoweredOff IssueType = "VM_POWERED_OFF"

	// VmSuspended indicates the System VM is expected to be powered-on, but it is suspended.
	// To remediate the deployment, re-invoke Solutions.Apply to have vLCM power-on the System VM.
	VmSuspended IssueType = "VM_SUSPENDED"

	// VmInaccessible indicates the System VM is expected to be connected, but it is inaccessible.
	// To remediate the deployment, remove the VM and re-invoke Solutions.Apply to have vLCM
	// redeploy the System VM or do the necessary changes to ensure that the connection state
	// of the VM is vim.ConnectionState.connected.
	// NOTE: When the HA is enabled on the cluster this may be transient state and automatically remediated.
	VmInaccessible IssueType = "VM_INACCESSIBLE"

	// VmCorrupted indicates the System VM is corrupted. To remediate the deployment,
	// re-invoke Solutions.Apply to have vLCM delete the System VM and redeploy it.
	VmCorrupted IssueType = "VM_CORRUPTED"

	// VmNotDeployed indicates the System VM has not been deployed because of an unexpected error.
	// To remediate the deployment, re-invoke Solutions.Apply to have vLCM redeploy the System VM.
	VmNotDeployed IssueType = "VM_NOT_DEPLOYED"

	// VmNotRemoved indicates the System VM has not been deployed because of an unexpected error.
	// To remediate the deployment, manually remove the VM or re-invoke Solutions.Apply to have vLCM retry the System VM removal.
	VmNotRemoved IssueType = "VM_NOT_REMOVED"

	// VmDatastoreMissing indicates the System VM has not been deployed because the configured datastore
	// for it is missing on the host. To unblock the System VM deployment, provide a proper datastore in the SolutionSpec.
	// To remediate the deployment, re-invoke Solutions.Apply to have vLCM redeploy the System VM.
	VmDatastoreMissing IssueType = "VM_DATASTORE_MISSING"

	// VmNetworkMissing indicates the System VM has not been deployed because the configured network
	// for it is missing on the host. To unblock the System VM deployment provide a proper network in the SolutionSpec.
	// To remediate the deployment, re-invoke Solutions.Apply to have vLCM redeploy the System VM.
	VmNetworkMissing IssueType = "VM_NETWORK_MISSING"

	// OvfInvalidFormat indicates the System VM has not been deployed because the provided
	// OvfResource part of SolutionSpec contains an invalid OVF. To unblock the System VM deployment
	// provide a new OvfResource with valid OVF. To remediate the deployment, re-invoke Solutions.Apply
	// to have vLCM redeploy the System VM.
	OvfInvalidFormat IssueType = "OVF_INVALID_FORMAT"

	// OvfInvalidProperty indicates the System VM is expected to be deployed or reconfigured, but an OVF
	// property is either missing or has an invalid value. To unblock the System VM deployment or reconfiguration,
	// provide a new ovfDescriptorProperties in the SolutionSpec. To remediate the deployment,
	// re-invoke Solutions.Apply to have vLCM redeploy or reconfigure the System VM.
	OvfInvalidProperty IssueType = "OVF_INVALID_PROPERTY"

	// OvfCannotAccess indicates the System VM has not been deployed because vLCM is not able to
	// access the OVF package. To unblock the System VM deployment, provide a proper accessible OvfResource.
	// To remediate the deployment, re-invoke Solutions.Apply to have vLCM redeploy the System VM.
	OvfCannotAccess IssueType = "OVF_CANNOT_ACCESS"

	// OvfCertificateNotTrusted indicates the System VM has not been deployed because vLCM is not able to
	// make successful SSL trust verification of the server certificate when establishing connection to the provided OVF package.
	// To unblock the System VM deployment, provide a valid OvfResource.Certificate or ensure the server certificate is
	// signed by a CA trusted by the system. To remediate the deployment, re-invoke Solutions.Apply to have vLCM redeploy the System VM.
	OvfCertificateNotTrusted IssueType = "OVF_CERTIFICATE_NOT_TRUSTED"

	// InsufficientSpace indicates the System VM has not been deployed because the configured System VM
	// datastore does not have enough free space. To unblock the System VM deployment, make enough free space
	// on the datastore or provide a new datastore in the SolutionSpec. To remediate the deployment,
	// re-invoke Solutions.Apply to have vLCM redeploy the System VM.
	InsufficientSpace IssueType = "INSUFFICIENT_SPACE"

	// InsufficientResources indicates the System VM has not been powered-on because the cluster does not
	// have enough free CPU or memory resources. To unblock the System VM power-on, make enough CPU and memory resources available.
	// To remediate the deployment, re-invoke Solutions.Apply to have vLCM power-on the System VM.
	InsufficientResources IssueType = "INSUFFICIENT_RESOURCES"

	// HostInMaintenanceMode indicates a System VM operation has not been initiated because the host is in
	// maintenance mode. To unblock the System VM operation, move the host out of maintenance mode.
	// To remediate the deployment, re-invoke Solutions.Apply to have vLCM retry the operation.
	HostInMaintenanceMode IssueType = "HOST_IN_MAINTENANCE_MODE"

	// HostInPartialMaintenanceMode indicates a System VM operation has not been initiated because the host is in
	// partial maintenance mode. To unblock the System VM operation, move the host out of partial maintenance mode.
	// To remediate the deployment, re-invoke Solutions.Apply to have vLCM retry the operation.
	HostInPartialMaintenanceMode IssueType = "HOST_IN_PARTIAL_MAINTENANCE_MODE"

	// HostInStandbyMode indicates a System VM operation has not been initiated because the host is in
	// stand by mode. To unblock the System VM operation, move the host out of stand by mode.
	// To remediate the deployment, re-invoke Solutions.Apply to have vLCM retry the operation.
	HostInStandbyMode IssueType = "HOST_IN_STAND_BY_MODE"

	// HostNotReachable indicates a System VM operation has not been initiated because the host is not
	// reachable from vCenter Server. Any operation on the affected host is not possible.
	// Typical reasons are disconnected or powered-off host. To unblock the System VM operation,
	// reconnect and powered-on the host. To remediate the deployment, re-invoke Solutions.Apply to have vLCM retry the operation.
	HostNotReachable IssueType = "HOST_NOT_REACHABLE"

	// VmInvalidConfig indicates a System VM operation has not been initiated because the System VM
	// has an invalid configuration. To unblock the System VM operation, inspect and correct the System VM configuration as necessary.
	// To remediate the deployment, re-invoke Solutions.Apply to have vLCM retry the operation.
	VmInvalidConfig IssueType = "VM_INVALID_CONFIG"

	// VmsDisabled indicates System VMs are disabled on the cluster via internal ESX Agent
	// Manager (EAM) API (eam.EsxtAgentManager.disable). The present System VMs in the cluster are powered-off.
	// No new System VMs are created. Modifications of the desired specification are not permitted.
	//
	// This issue cannot be remediated via vLCM API. Remediation requires the System VMs to be enabled
	// on the cluster via internal EAM API (eam.EsxAgentManager.enable). As result, the present System VMs
	// are powered-on, Modifications of the desired specification are permitted.
	//
	// Enabling and disabling the System VMs operations on the cluster is operated by vSAN Cluster Shutdown
	// and Start-up workflows. Refer to vSAN Cluster Shutdown and Start-up documentation.
	//
	// NOTE: In future versions of vLCM, Enabling and disabling the System VM operations will happen via internal vLCM APIs.
	VmsDisabled IssueType = "VMS_DISABLED"

	// VmLifecycleHookTimedOut indicates the System VM deployment is not completed because the System VM
	// lifecycle hook has not been processed in the configured LifecycleHookConfig.Timeout.
	// To remediate the deployment, re-invoke Solutions.Apply and process again the VM lifecycle hook.
	VmLifecycleHookTimedOut IssueType = "VM_LIFECYCLE_HOOK_TIMED_OUT"

	// VmLifecycleHookFailed indicates the System VM deployment is not completed because the System VM
	// lifecycle hook has been failed by the client. To remediate the deployment, re-invoke Solutions.Apply
	// and process again the VM lifecycle hook.
	VmLifecycleHookFailed IssueType = "VM_LIFECYCLE_HOOK_FAILED"

	// VmProtected indicates the System VM deployment is not completed because the System VM is
	// protected from modifications (example: VM is in a process of vSphere HA recovery).
	// To remediate the deployment, re-invoke Solutions.Apply to have vLCM retry the operation.
	VmProtected IssueType = "VM_PROTECTED"

	// VmLifecycleHookDynamicUpdateFailed indicates the System VM deployment is not completed because the System VM
	// lifecycle hook dynamic update has failed. To remediate the deployment, re-invoke Solutions.Apply to have vLCM retry the operation.
	VmLifecycleHookDynamicUpdateFailed IssueType = "VM_LIFECYCLE_HOOK_DYNAMIC_UPDATE_FAILED"

	// ClusterTransitionFailed indicates the System VM deployment is not completed because the System VM
	// failed to transition to the target cluster. To remediate the deployment, re-invoke Solutions.Apply to have vLCM retry the operation.
	ClusterTransitionFailed IssueType = "CLUSTER_TRANSITION_FAILED"

	// TransitionFailed indicates the System VM deployment is not completed because the Agent failed
	// to transition to a System VM. To remediate the deployment, re-invoke Solutions.Apply to have vLCM retry the operation.
	TransitionFailed IssueType = "TRANSITION_FAILED"
)

type LifecycleHookConfig

type LifecycleHookConfig struct {

	// Timeout is the maximum time in seconds for vLCM to wait for a hook to
	// be processed by the solution. An issue is raised if the time elapsed and
	// the hook is still not processed. See Solutions.IssueInfo. The
	// issue is attached to the Solutions.DeploymentInfo structure that
	// holds the VM for which the hook was activated.
	//
	// If unset, defaults to 10 hours.
	Timeout *int `json:"timeout,omitempty"`
}

LifecycleHookConfig contains fields that describe a VM lifecycle hook configuration.

type LifecycleHookInfo

type LifecycleHookInfo struct {

	// Vm is the identifier of the VM for which the hook is activated.
	Vm string `json:"vm"`

	// LifecycleState is the state of the VM specified by Vm.
	LifecycleState LifecycleState `json:"lifecycle_state"`

	// DynamicUpdateProcessed represents if the DynamicUpdateSpec given with
	// LcycleHooks.ProcessDynamicUpdate is applied successfully for
	// the LifecycleState of the given member vm.
	//
	// Defaults to False.
	//
	// See LifecycleHooks#processDynamicUpdate about how to process the
	// dynamic update for a given LifecycleState.
	DynamicUpdateProcessed bool `json:"dynamic_update_processed"`
}

LifecycleHookInfo contains fields that describe a VM lifecycle hook that is activated for a given VM.

type LifecycleState

type LifecycleState string

LifecycleState contains the different VM lifecycle states a solution can hook into. See LifecycleHooks and SolutionSpec.

const (
	// PostProvisioning reached once immediately after a VM is created.
	PostProvisioning LifecycleState = "POST_PROVISIONING"

	// PostPowerOn is post VM power-on, reached immediately after every VM power-on.
	PostPowerOn LifecycleState = "POST_POWER_ON"
)

type ListResult

type ListResult struct {
	Solutions map[string]SolutionInfo `json:"solutions"`
}

ListResult contains fields that describe the desired specification of the solutions in a given cluster specified by the FilterSpec of the corresponding list operation.

type LocationType

type LocationType string

LocationType defines the supported locations of OVF packages.

const (
	RemoteFile LocationType = "REMOTE_FILE"
	LocalFile  LocationType = "LOCAL_FILE"
)

type Manager

type Manager struct {
	*rest.Client
}

Manager extends rest.Client, adding cluster related methods.

func (*Manager) Apply

func (m *Manager) Apply(ctx context.Context, cluster types.ManagedObjectReference, applySpec *ApplySpec) (string, error)

Apply applies the given solution and returns the taskid.

func (*Manager) ApplyWaitForCompletion

func (m *Manager) ApplyWaitForCompletion(ctx context.Context, taskId string) (*ApplyResult, error)

ApplyWaitForCompletion waits for the apply task to complete and returns the result from the apply task.

func (*Manager) CheckCompliance

func (m *Manager) CheckCompliance(ctx context.Context, cluster types.ManagedObjectReference, filterSpec *CheckComplianceFilterSpec) (*ClusterCompliance, error)

func (*Manager) Delete

func (m *Manager) Delete(ctx context.Context, cluster types.ManagedObjectReference, solution string) error

func (*Manager) Enable

func (m *Manager) Enable(ctx context.Context, cluster types.ManagedObjectReference, solution string, spec *EnableSpec) error

Enable enables an EAM managed solution in vLCM.

func (*Manager) EnableAsync

func (m *Manager) EnableAsync(ctx context.Context, cluster types.ManagedObjectReference, solution string, spec *EnableSpec) (string, error)

EnableAsync enables an EAM managed solution in vLCM asynchronously and returns a task id. The solution specification is validated before the enablement is started.

The enablement only transfers ownership of the solution from EAM to LCCM and sets the desired state in LCCM. The new desired state is not applied, the solution system VMs are untouched.

The following happens once the operation is started:

  • A removal of the corresponding agency in EAM is triggered.

The following happens once the operation is completed:

  • The corresponding agency in EAM can no longer be controlled through the EAM API.
  • The management of the desired solution specification can be done only through vLCM. See Solutions

func (*Manager) Get

func (m *Manager) Get(ctx context.Context, cluster types.ManagedObjectReference, solution string) (*SolutionInfo, error)

func (*Manager) List

func (*Manager) ListHooks

func (m *Manager) ListHooks(ctx context.Context, cluster types.ManagedObjectReference, solution string) (*HookListResult, error)

func (*Manager) MarkAsProcessed

func (m *Manager) MarkAsProcessed(ctx context.Context, cluster types.ManagedObjectReference, spec *ProcessedHookSpec) (*HookListResult, error)

func (*Manager) MultiSourceEnable

func (m *Manager) MultiSourceEnable(ctx context.Context, cluster types.ManagedObjectReference, solution string, spec *MultiSourceEnableSpec) error

MultiSourceEnable enables multiple EAM managed solutions in vLCM as a single solution.

func (*Manager) MultiSourceEnableAsync

func (m *Manager) MultiSourceEnableAsync(ctx context.Context, cluster types.ManagedObjectReference, solution string, spec *MultiSourceEnableSpec) (string, error)

MultiSourceEnableAsync enables multiple EAM managed solutions in vLCM as a single solution asynchronously and returns a task id. The solution specification is validated before the enablement is started.

The enablement only transfers ownership of the solutions from EAM to LCCM and sets the desired state in LCCM. The new desired state is not applied, the solution system VMs are untouched.

The following happens once the operation is started:

  • A removal of the corresponding agencies in EAM is triggered.

The following happens once the operation is completed:

  • The corresponding agencies in EAM can no longer be controlled through the EAM API.
  • The management of the desired solution specification can be done only through vLCM. See Solutions

Supported only for solutions with deployment type DeploymentType#CLUSTER_VM_SET.

func (*Manager) ProcessDynamicUpdate

func (m *Manager) ProcessDynamicUpdate(ctx context.Context, cluster types.ManagedObjectReference, spec *DynamicUpdateSpec) error

func (*Manager) Set

func (m *Manager) Set(ctx context.Context, cluster types.ManagedObjectReference, solution string, spec *SolutionSpec) error

Set sets and overrides the current desired specification for a given solution and cluster. The provided desired specification is validated before that.

Parameters:

  • cluster: Identifier of the cluster.
  • solution: Identifier of the solution.
  • spec: Solution specification.

Returns an error if:

  • There is an unknown internal error. The accompanying error message will give more details about the failure.
  • The validation of the solution specification fails.
  • The cluster is not managed by vLCM.
  • There is no cluster associated with the given identifier.
  • The service is not available.
  • The caller is not authenticated.
  • The user doesn't have the required privileges.

func (*Manager) Transition

func (m *Manager) Transition(ctx context.Context, cluster types.ManagedObjectReference, solution string, spec *TransitionSpec) error

Transition transitions a System VM Solution desired state to a target cluster.

func (*Manager) TransitionAsync

func (m *Manager) TransitionAsync(ctx context.Context, cluster types.ManagedObjectReference, solution string, spec *TransitionSpec) (string, error)

TransitionAsync transitions a System VM Solution desired state to a target cluster asynchronously and returns a task id. The solution specification is validated before the transition is started.

The operation only initiates the transition. The target desired state is not applied and the solution system VMs remain untouched. A consecutive Solutions#apply operation is needed to complete the transition.

Once the operation is completed:

  • The desired state for the solution is set to the target cluster.
  • The solution can be managed only on the target cluster.

type MultiSourceEnableSpec

type MultiSourceEnableSpec struct {
	// EamAgencyIDs is a list of EAM Agency identifiers.
	EamAgencyIDs []string `json:"eam_agency_ids"`

	// Solution is the target desired solution specification in vLCM.
	// The given SolutionSpec should not contain any AlternativeVmSpecs. See SourceAlternativeVmSpecs
	// about how to configure AlternativeVmSpecs.
	Solution *SolutionSpec `json:"solution"`

	// SourceVmSelectionSpecs is the relation between System VMs and their respective VmSelectionSpecs.
	// Provided VM IDs must be part of the solution being transitioned and
	// must exist in the cluster where the solution is installed.
	// Provided VmSelectionSpecs must be present in the applied desired state as part of the
	// ClusterSolutionSpec#alternativeVmSpecs.
	//
	// If unset, no VmSelectionSpecs are applied on the source agencies' System VMs during the enablement.
	SourceVmSelectionSpecs map[string]VmSelectionSpec `json:"source_vm_selection_specs,omitempty"`

	// ClusterModule to be reused for transitioned System VMs. Used to express
	// VM-VM anti affinity relation between System VMs in the vSphere Cluster.
	// The module must exist for the cluster where the solution is installed.
	//
	// If unset, no cluster module is reused. vLCM creates a new module if needed.
	ClusterModule string `json:"cluster_module,omitempty"`
}

MultiSourceEnableSpec contains fields that describe specification for enablement of multiple EAM managed solutions into single vLCM managed solution. Supported only for solutions with deployment type vms.ClusterVmSet.

type OvfResource

type OvfResource struct {

	// LocationType of OVF package.
	LocationType LocationType `json:"location_type"`

	// Url to the file server or the local VC file system where the OVF package
	// can be downloaded. The supported URI schemes are http, https, and file.
	Url string `json:"url"`

	// SslCertificateValidation configuration for SSL Certificate validation of
	// the URL specified by the Url.
	SslCertificateValidation SslCertificateValidation `json:"ssl_certificate_validation"`

	// Certificate that is to be trusted by vLCM when downloading the OVF
	// package from a file server.
	Certificate string `json:"certificate,omitempty"`

	// AuthenticationScheme is the authentication scheme needed to access the OVF URL.
	AuthenticationScheme AuthenticationScheme `json:"authentication_scheme"`
}

OvfResource contains fields that describe the location of an OVF package and a configuration for its download.

type ProcessedHookSpec

type ProcessedHookSpec struct {
	LifecycleState LifecycleState `json:"lifecycle_state"`

	ProcessedSuccessfully bool `json:"processed_successfully"`

	Vm string `json:"vm"`
}

type RedeploymentPolicy

type RedeploymentPolicy string

RedeploymentPolicy defines the different remediation policies which require redeployment of the System VMs.

const (
	// RECREATE is the default policy used by vLCM for System VM redeployment.
	// System VMs are redeployed as follows: Once the new replica is
	// provisioned, the old replica is powered off and deleted. Then the new
	// replica is powered on and it's setup is completed to have the System VM
	// fully operational.
	//
	// This policy causes a downtime.
	ReCreate RedeploymentPolicy = "RECREATE"

	// BlueGreen Follows a standard blue-green strategy. System VMs are
	// redeployed as follows: Once the new replica is provisioned, it is
	// powered on. Then the new replica setup is completed to have the System
	// VM fully operational. Then the old replica is powered off and deleted.
	// This policy provides zero-downtime.
	BlueGreen RedeploymentPolicy = "BLUE_GREEN"
)

type RemediationPolicy

type RemediationPolicy string

RemediationPolicy defines the remediation policies applied to entities.

const (
	// Parallel is the default remediation policy. Entities are remediated in parallel.
	Parallel RemediationPolicy = "PARALLEL"

	// Sequential policy is where entities are remediated sequentially, one at a time.
	Sequential RemediationPolicy = "SEQUENTIAL"
)

type SolutionInfo

type SolutionInfo struct {
	// DeploymentType of the solution
	DeploymentType DeploymentType `json:"deployment_type"`

	// DisplayName is the display name of the solution.
	DisplayName string `json:"display_name"`

	// DisplayVersion is the display version of the solution.
	DisplayVersion string `json:"display_version"`

	// VmNameTemplate is the VM name template.
	VmNameTemplate VmNameTemplate `json:"vm_name_template"`

	// ClusterSolutionInfo is the configuration that is only applicable for
	// solutions with deployment type ClusterVmSET.
	ClusterSolutionInfo ClusterSolutionInfo `json:"cluster_solution_info"`

	// HookConfigurations keys represent LifecycleStates while the map values
	// represent their configurations.
	HookConfigurations map[LifecycleState]LifecycleHookConfig `json:"hook_configurations"`

	// OvfResource is information about the OVF resource that to be used for
	// the VM deployments.
	OvfResource OvfResource `json:"ovf_resource"`

	//  OvfDescriptorProperties are the OVF properties that to be assigned to
	//  the VMs' OVF properties when powered on. The keys of the map must not
	//  include any white-space characters. The map keys represent the names of
	//  properties while the map values represent the values of those
	//  properties.
	OvfDescriptorProperties map[string]string `json:"ovf_descriptor_properties"`

	// VmCloneConfig is the VM cloning configuration.
	VmCloneConfig VmCloneConfig `json:"vm_clone_config"`

	// Storage policies to be configured on the VMs.
	VmStoragePolicy StoragePolicy `json:"vm_storage_policy"`

	// Storage policy profiles to be configured on the VMs. The profiles are
	// passed to vim.vm.ConfigSpec#vmProfile without any interpretation.
	VmStorageProfiles []string `json:"vm_storage_profiles"`

	VmDiskType DiskType `json:"vm_disk_type"`

	VmResourcePool string `json:"vm_resource_pool"`

	VmFolder string `json:"vm_folder"`

	// VmResourceSpec is the VMs resource configuration.
	//
	// If unset the default resource configuration specified in the OVF
	// descriptor is used.
	VmResourceSpec *VmResourceSpec `json:"vm_resource_spec,omitempty"`

	// Specifies System VMs redeployment policy.
	RedeploymentPolicy RedeploymentPolicy `json:"redeployment_policy"`
}

type SolutionSpec

type SolutionSpec struct {
	// DeploymentType of the solution
	DeploymentType DeploymentType `json:"deployment_type"`

	// DisplayName is the display name of the solution.
	DisplayName string `json:"display_name"`

	// DisplayVersion is the display version of the solution.
	DisplayVersion string `json:"display_version"`

	// VmNameTemplate is the VM name template.
	VmNameTemplate VmNameTemplate `json:"vm_name_template"`

	// ClusterSolutionSpec is the configuration that is only applicable for
	// solutions with deployment type ClusterVmSET.
	ClusterSolutionSpec ClusterSolutionSpec `json:"cluster_solution_spec,omitempty"`

	// HookConfigurations keys represent LifecycleStates while the map values
	// represent their configurations.
	HookConfigurations map[LifecycleState]LifecycleHookConfig `json:"hook_configurations"`

	// OvfResource is information about the OVF resource that to be used for
	// the VM deployments.
	OvfResource OvfResource `json:"ovf_resource"`

	//  OvfDescriptorProperties are the OVF properties that to be assigned to
	//  the VMs' OVF properties when powered on. The keys of the map must not
	//  include any white-space characters. The map keys represent the names of
	//  properties while the map values represent the values of those
	//  properties.
	OvfDescriptorProperties map[string]string `json:"ovf_descriptor_properties"`

	// VmCloneConfig is the VM cloning configuration.
	VmCloneConfig VmCloneConfig `json:"vm_clone_config"`

	// Storage policies to be configured on the VMs.
	VmStoragePolicy StoragePolicy `json:"vm_storage_policy"`

	// Storage policy profiles to be configured on the VMs. The profiles are
	// passed to vim.vm.ConfigSpec#vmProfile without any interpretation.
	VmStorageProfiles []string `json:"vm_storage_profiles"`

	VmDiskType DiskType `json:"vm_disk_type"`

	VmResourcePool string `json:"vm_resource_pool"`

	VmFolder string `json:"vm_folder"`

	// VmResourceSpec is the VMs resource configuration.
	//
	// If unset the default resource configuration specified in the OVF
	// descriptor is used.
	VmResourceSpec *VmResourceSpec `json:"vm_resource_spec,omitempty"`

	// Specifies System VMs redeployment policy.
	RedeploymentPolicy RedeploymentPolicy `json:"redeployment_policy"`
}

type SslCertificateValidation

type SslCertificateValidation string
const (
	SslCertificateValidationEnabled  SslCertificateValidation = "ENABLED"
	SslCertificateValidationDisabled SslCertificateValidation = "DISABLED"
)

type Status

type Status string

Status defines how well a deployment conforms to the desired specification that is specified by the solutionInfo.

const (
	// Success indicates the apply operation completed successfully.
	Success Status = "SUCCESS"

	// Error indicates the apply operation encountered an error.
	Error Status = "ERROR"
)
const (

	// StatusNotApplied indicates the desired specification of the solution has never been applied.
	StatusNotApplied Status = "NOT_APPLIED"

	// StatusInProgress indicates the system is actively working to reach the desired specification.
	StatusInProgress Status = "IN_PROGRESS"

	// StatusCompliant indicates the deployment is in full compliance with the desired specification.
	StatusCompliant Status = "COMPLIANT"

	// StatusIssue indicates the system has hit issues that do not allow the deployment to reach
	// the desired specification. See Solutions.DeploymentInfo.Issues.
	StatusIssue Status = "ISSUE"

	// StatusInLifecycleHook indicates the system is waiting on an activated VM lifecycle hook to be
	// processed by the solution in order to continue attempting to reach the desired specification.
	// See Solutions.DeploymentInfo.LifecycleHook.
	StatusInLifecycleHook Status = "IN_LIFECYCLE_HOOK"

	// StatusBlocked indicates the system is blocked from reaching the desired specification.
	// For example, this can occur if RemediationPolicy.SEQUENTIAL is set and another deployment is in ISSUE status.
	StatusBlocked Status = "BLOCKED"

	// StatusObsoleteSpec indicates the current desired specification of the solution is newer than the applied.
	//
	// This state should take precedence over:
	//   - Status.BLOCKED
	//   - Status.IN_PROGRESS
	//   - Status.ISSUE
	//   - Status.IN_LIFECYCLE_HOOK
	StatusObsoleteSpec Status = "OBSOLETE_SPEC"
)

type StoragePolicy

type StoragePolicy string
const (
	Default StoragePolicy = "DEFAULT"
	Profile StoragePolicy = "PROFILE"
)

type SuffixFormat

type SuffixFormat string

SuffixFormat defines the types of VM name suffixes.

const (
	// UUID suffix format.
	Uuid SuffixFormat = "UUID"

	// Suffix in the format "(counter)" where "counter" is monotonically
	// growing integer.
	Counter SuffixFormat = "COUNTER"
)

type TransitionSpec

type TransitionSpec struct {
	// SourceCluster is the cluster to transition from.
	SourceCluster string `json:"source_cluster"`

	// Solution is the target desired solution specification in vLCM.
	Solution *SolutionSpec `json:"solution"`
}

TransitionSpec contains fields that describe the specification for transitioning a System VM Solution.

type ValidationResult

type ValidationResult struct {
	// Notifications associated with the validation.
	Notifications rest.Notifications `json:"notifications"`
}

ValidationResult contains fields that describe a validation result.

type VmCloneConfig

type VmCloneConfig string
const (
	AllClones VmCloneConfig = "ALL_CLONES"

	// The system creates a snapshot of the first deployed VM and after that uses
	// full VM clone method to deploy others.
	FullClones VmCloneConfig = "FULL_CLONES_ONLY"

	// The system does not use VM clone methods to deploy VMs.
	NoClones VmCloneConfig = "NO_CLONES"
)

type VmNameTemplate

type VmNameTemplate struct {
	// Prefix is the  VM name prefix.
	Prefix string `json:"prefix"`

	// Suffix is VM name suffix format.
	Suffix SuffixFormat `json:"suffix"`
}

VmNameTemplate contains that describe a template for VM names.

type VmPlacementPolicy

type VmPlacementPolicy string

VmPlacementPolicy defines the DRS placement policies applied on the VMs.

const (
	// VmVmAntiAffinity defines VMs are anti-affined to each other.
	VmVmAntiAffinity VmPlacementPolicy = "VM_VM_ANTI_AFFINITY"
)

type VmResourceSpec

type VmResourceSpec struct {

	// OvfDeploymentOption corresponds to the Configuration element of the
	// DeploymentOptionSection in the OVF descriptor (e.g. "small", "medium",
	// "large"). If unset the default deployment options as specified in the
	// OVF descriptor is used.
	OvfDeploymentOption *string `json:"ovf_deployment_option,omitempty"`
}

VmResourceSpec describes the VM resource configurations.

type VmSelectionSpec

type VmSelectionSpec struct {
	// SelectionType is the type for this VmSelectionSpec.
	SelectionType VmSelectionType `json:"selection_type"`

	// ExtraConfigValue is the unique VM extra configuration property value. The recommended usage is
	// with an UUID.
	//
	// See VmSelectionTypeVmExtraConfig for more details.
	ExtraConfigValue string `json:"extra_config_value"`
}

VmSelectionSpec structure contains fields to describe the criteria used to select System VMs to which an AlternativeVmSpec configuration is applied.

type VmSelectionType

type VmSelectionType string

VmSelectionType defines the different selection types for VM selection.

const (
	// VmSelectionTypeVmExtraConfig selects System VMs that have a specific property configured in the VM
	// extra configuration. The property has a
	// key='com.vmware.vim.eam.selection'. The value represents a unique
	// identifier used for VM selection and is provided by the client.
	VmSelectionTypeVmExtraConfig VmSelectionType = "VM_EXTRA_CONFIG"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL