session

package
v1.8.0 Latest Latest
Warning

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

Go to latest
Published: Jan 8, 2023 License: Apache-2.0 Imports: 39 Imported by: 0

Documentation

Index

Constants

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 EncodeGzipBase64

func EncodeGzipBase64(s string) (string, error)

func ExtraConfigToMap

func ExtraConfigToMap(input []vimTypes.BaseOptionValue) (output map[string]string)

func GetCloudInitGuestInfoCustSpec

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

func GetCloudInitMetadata

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

func GetCloudInitPrepCustSpec

func GetCloudInitPrepCustSpec(
	cloudInitMetadata string,
	updateArgs VMUpdateArgs) (*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 IsCustomizationPendingExtraConfig

func IsCustomizationPendingExtraConfig(extraConfig []vimTypes.BaseOptionValue) bool

func MarkCustomizationInfoCondition

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

func MarkVMToolsRunningStatusCondition

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

func MergeExtraConfig

func MergeExtraConfig(extraConfig []vimTypes.BaseOptionValue, newMap map[string]string) []vimTypes.BaseOptionValue

MergeExtraConfig adds the key/value to the ExtraConfig if the key is not present, to let to the value be changed by the VM. The existing usage of ExtraConfig is hard to fit in the reconciliation model.

func NicInfoToDevicesStatus

func NicInfoToDevicesStatus(updateArgs VMUpdateArgs) []v1alpha1.NetworkDeviceStatus

func NicInfoToNetworkIfStatus

func NicInfoToNetworkIfStatus(nicInfo vimTypes.GuestNicInfo) v1alpha1.NetworkInterfaceStatus

func TemplateVMMetadata

func TemplateVMMetadata(vmCtx context.VirtualMachineContext, updateArgs VMUpdateArgs)

TemplateVMMetadata can convert templated expressions to dynamic configuration data.

func UpdateConfigSpecCPUAllocation

func UpdateConfigSpecCPUAllocation(
	config *vimTypes.VirtualMachineConfigInfo,
	configSpec *vimTypes.VirtualMachineConfigSpec,
	vmClassSpec *v1alpha1.VirtualMachineClassSpec,
	minCPUFeq uint64)

func UpdateConfigSpecChangeBlockTracking

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

func UpdateConfigSpecDeviceGroups

func UpdateConfigSpecDeviceGroups(
	config *vimTypes.VirtualMachineConfigInfo,
	configSpec, classConfigSpec *vimTypes.VirtualMachineConfigSpec)

UpdateConfigSpecDeviceGroups sets the desired config spec device groups to reconcile by differencing the current VM config and the class config spec device groups.

func UpdateConfigSpecExtraConfig

func UpdateConfigSpecExtraConfig(
	config *vimTypes.VirtualMachineConfigInfo,
	configSpec,
	classConfigSpec *vimTypes.VirtualMachineConfigSpec,
	vmImageStatus *v1alpha1.VirtualMachineImageStatus,
	vmClassSpec *v1alpha1.VirtualMachineClassSpec,
	vm *v1alpha1.VirtualMachine,
	globalExtraConfig map[string]string)

func UpdateConfigSpecMemoryAllocation

func UpdateConfigSpecMemoryAllocation(
	config *vimTypes.VirtualMachineConfigInfo,
	configSpec *vimTypes.VirtualMachineConfigSpec,
	vmClassSpec *v1alpha1.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 *v1alpha1.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,
	updateArgs *VMUpdateArgs) (err error)

type VMCreateArgs

type VMCreateArgs struct {
	VMClass             *vmopv1alpha1.VirtualMachineClass
	VMImageStatus       *vmopv1alpha1.VirtualMachineImageStatus
	ResourcePolicy      *vmopv1alpha1.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 v1alpha1.VirtualMachineMetadataTransport
}

type VMUpdateArgs

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

	ConfigSpec      *vimTypes.VirtualMachineConfigSpec
	ClassConfigSpec *vimTypes.VirtualMachineConfigSpec

	NetIfList  network.InterfaceInfoList
	DNSServers []string
}

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