session

package
v1.8.5 Latest Latest
Warning

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

Go to latest
Published: Dec 14, 2023 License: Apache-2.0 Imports: 43 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// CAPWClusterRoleLabelKey is the key for the label applied to a VM that was
	// created by CAPW.
	CAPWClusterRoleLabelKey = "capw.vmware.com/cluster.role" //nolint:gosec

	// CAPVClusterRoleLabelKey is the key for the label applied to a VM that was
	// created by CAPV.
	CAPVClusterRoleLabelKey = "capv.vmware.com/cluster.role"
)
View Source
const (
	// OvfEnvironmentTransportGuestInfo is the OVF transport type that uses
	// GuestInfo. The other valid type is "iso".
	OvfEnvironmentTransportGuestInfo = "com.vmware.guestInfo"
)

Variables

This section is empty.

Functions

func GetCloudInitGuestInfoCustSpec

func GetCloudInitGuestInfoCustSpec(
	cloudInitMetadata string,
	config *vimTypes.VirtualMachineConfigInfo,
	updateArgs VMUpdateArgs) (*vimTypes.VirtualMachineConfigSpec, error)

func GetCloudInitMetadata

func GetCloudInitMetadata(vm *vmopv1.VirtualMachine,
	netplan network.Netplan,
	data map[string]string) (string, error)

func GetCloudInitPrepCustSpec

func GetCloudInitPrepCustSpec(
	cloudInitMetadata string,
	updateArgs VMUpdateArgs) (*vimTypes.VirtualMachineConfigSpec, *vimTypes.CustomizationSpec, error)

func GetLinuxPrepCustSpec

func GetLinuxPrepCustSpec(vmName string, updateArgs VMUpdateArgs) *vimTypes.CustomizationSpec

func GetMergedvAppConfigSpec

func GetMergedvAppConfigSpec(inProps map[string]string, vmProps []vimTypes.VAppPropertyInfo) *vimTypes.VmConfigSpec

GetMergedvAppConfigSpec prepares a vApp VmConfigSpec which will set the vmMetadata supplied key/value fields. Only fields marked userConfigurable and pre-existing on the VM (ie. originated from the OVF Image) will be set, and all others will be ignored.

func GetSysprepCustSpec added in v1.8.1

func GetSysprepCustSpec(vmName string, updateArgs VMUpdateArgs) (*vimTypes.CustomizationSpec, error)

func IsCustomizationPendingExtraConfig

func IsCustomizationPendingExtraConfig(extraConfig []vimTypes.BaseOptionValue) bool

func MarkCustomizationInfoCondition

func MarkCustomizationInfoCondition(vm *vmopv1.VirtualMachine, guestInfo *vimTypes.GuestInfo)

func MarkVMToolsRunningStatusCondition

func MarkVMToolsRunningStatusCondition(vm *vmopv1.VirtualMachine, guestInfo *vimTypes.GuestInfo)

func MutateUpdateArgsWithDNSInformation added in v1.8.1

func MutateUpdateArgsWithDNSInformation(
	vmLabels map[string]string,
	updateArgs *VMUpdateArgs,
	client ctrl.Client) error

func NicInfoToDevicesStatus

func NicInfoToDevicesStatus(
	vmCtx context.VirtualMachineContext,
	resVM *res.VirtualMachine,
	updateArgs VMUpdateArgs) []vmopv1.NetworkDeviceStatus

NicInfoToDevicesStatus returns a list of NetworkDeviceStatus constructed from the NetIfList and resVM.

func NicInfoToNetworkIfStatus

func NicInfoToNetworkIfStatus(nicInfo vimTypes.GuestNicInfo) vmopv1.NetworkInterfaceStatus

func TemplateVMMetadata

func TemplateVMMetadata(
	vmCtx context.VirtualMachineContext,
	resVM *res.VirtualMachine,
	updateArgs VMUpdateArgs)

TemplateVMMetadata can convert templated expressions to dynamic configuration data.

func UpdateConfigSpecAnnotation added in v1.8.1

func UpdateConfigSpecAnnotation(
	config *vimTypes.VirtualMachineConfigInfo,
	configSpec *vimTypes.VirtualMachineConfigSpec)

func UpdateConfigSpecCPUAllocation

func UpdateConfigSpecCPUAllocation(
	config *vimTypes.VirtualMachineConfigInfo,
	configSpec *vimTypes.VirtualMachineConfigSpec,
	vmClassSpec *vmopv1.VirtualMachineClassSpec,
	minCPUFreq uint64)

func UpdateConfigSpecChangeBlockTracking

func UpdateConfigSpecChangeBlockTracking(
	config *vimTypes.VirtualMachineConfigInfo,
	configSpec, classConfigSpec *vimTypes.VirtualMachineConfigSpec,
	vmSpec vmopv1.VirtualMachineSpec)

func UpdateConfigSpecExtraConfig

func UpdateConfigSpecExtraConfig(
	config *vimTypes.VirtualMachineConfigInfo,
	configSpec,
	classConfigSpec *vimTypes.VirtualMachineConfigSpec,
	vmClassSpec *vmopv1.VirtualMachineClassSpec,
	vm *vmopv1.VirtualMachine,
	globalExtraConfig map[string]string,
	imageV1Alpha1Compatible bool)

func UpdateConfigSpecManagedBy added in v1.8.1

func UpdateConfigSpecManagedBy(
	config *vimTypes.VirtualMachineConfigInfo,
	configSpec *vimTypes.VirtualMachineConfigSpec)

func UpdateConfigSpecMemoryAllocation

func UpdateConfigSpecMemoryAllocation(
	config *vimTypes.VirtualMachineConfigInfo,
	configSpec *vimTypes.VirtualMachineConfigSpec,
	vmClassSpec *vmopv1.VirtualMachineClassSpec)

func UpdateEthCardDeviceChanges

func UpdateEthCardDeviceChanges(
	expectedEthCards object.VirtualDeviceList,
	currentEthCards object.VirtualDeviceList) ([]vimTypes.BaseVirtualDeviceConfigSpec, error)

func UpdateHardwareConfigSpec

func UpdateHardwareConfigSpec(
	config *vimTypes.VirtualMachineConfigInfo,
	configSpec *vimTypes.VirtualMachineConfigSpec,
	vmClassSpec *vmopv1.VirtualMachineClassSpec)

func UpdatePCIDeviceChanges

func UpdatePCIDeviceChanges(
	expectedPciDevices object.VirtualDeviceList,
	currentPciDevices object.VirtualDeviceList) ([]vimTypes.BaseVirtualDeviceConfigSpec, error)

UpdatePCIDeviceChanges returns devices changes for PCI devices attached to a VM. There are 2 types of PCI devices processed here and in case of cloning a VM, devices listed in VMClass are considered as source of truth.

Types

type CloudInitMetadata

type CloudInitMetadata struct {
	InstanceID    string          `yaml:"instance-id,omitempty"`
	LocalHostname string          `yaml:"local-hostname,omitempty"`
	Hostname      string          `yaml:"hostname,omitempty"`
	Network       network.Netplan `yaml:"network,omitempty"`
	PublicKeys    string          `yaml:"public-keys,omitempty"`
}

type Session

type Session struct {
	Client    *client.Client
	K8sClient ctrlruntime.Client
	Finder    *find.Finder

	// Fields only used during Update
	Cluster         *object.ClusterComputeResource
	NetworkProvider network.Provider
}

func (*Session) CreateVirtualMachine

func (s *Session) CreateVirtualMachine(
	vmCtx context.VirtualMachineContext,
	createArgs *VMCreateArgs) (*object.VirtualMachine, error)

func (*Session) UpdateVirtualMachine

func (s *Session) UpdateVirtualMachine(
	vmCtx context.VirtualMachineContext,
	vcVM *object.VirtualMachine,
	getUpdateArgsFn func() (*VMUpdateArgs, error)) (err error)

type VMCreateArgs

type VMCreateArgs struct {
	VMClass             *vmopv1.VirtualMachineClass
	VMImageStatus       *vmopv1.VirtualMachineImageStatus
	VMImageSpec         *vmopv1.VirtualMachineImageSpec
	ResourcePolicy      *vmopv1.VirtualMachineSetResourcePolicy
	VMMetadata          VMMetadata
	ContentLibraryUUID  string
	StorageClassesToIDs map[string]string
	StorageProvisioning string
	HasInstanceStorage  bool

	// From the ResourcePolicy if specified
	ChildResourcePoolName string
	ChildFolderName       string
	MinCPUFreq            uint64

	ConfigSpec          *vimTypes.VirtualMachineConfigSpec
	PlacementConfigSpec *vimTypes.VirtualMachineConfigSpec
	ClassConfigSpec     *vimTypes.VirtualMachineConfigSpec

	FolderMoID       string
	ResourcePoolMoID string
	HostMoID         string
	StorageProfileID string
	DatastoreMoID    string // gce2e only: used if StorageProfileID is unset
}

VMCreateArgs contains the arguments needed to create a VM on VC.

type VMMetadata

type VMMetadata struct {
	Data      map[string]string
	Transport vmopv1.VirtualMachineMetadataTransport
}

type VMUpdateArgs

type VMUpdateArgs struct {
	VMClass        *vmopv1.VirtualMachineClass
	ResourcePolicy *vmopv1.VirtualMachineSetResourcePolicy
	MinCPUFreq     uint64
	ExtraConfig    map[string]string
	VMMetadata     VMMetadata

	ConfigSpec      *vimTypes.VirtualMachineConfigSpec
	ClassConfigSpec *vimTypes.VirtualMachineConfigSpec

	NetIfList      network.InterfaceInfoList
	DNSServers     []string
	SearchSuffixes []string

	// hack. Remove after VMSVC-1261.
	// indicating if this VM image used is VM service v1alpha1 compatible.
	VirtualMachineImageV1Alpha1Compatible bool
}

VMUpdateArgs contains the arguments needed to update a VM on VC.

Jump to

Keyboard shortcuts

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