vsphere

package
v1.6.4-beta.1 Latest Latest
Warning

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

Go to latest
Published: May 17, 2017 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProviderName                     = "vsphere"
	ActivePowerState                 = "poweredOn"
	SCSIControllerType               = "scsi"
	LSILogicControllerType           = "lsiLogic"
	BusLogicControllerType           = "busLogic"
	PVSCSIControllerType             = "pvscsi"
	LSILogicSASControllerType        = "lsiLogic-sas"
	SCSIControllerLimit              = 4
	SCSIControllerDeviceLimit        = 15
	SCSIDeviceSlots                  = 16
	SCSIReservedSlot                 = 7
	ThinDiskType                     = "thin"
	PreallocatedDiskType             = "preallocated"
	EagerZeroedThickDiskType         = "eagerZeroedThick"
	ZeroedThickDiskType              = "zeroedThick"
	VolDir                           = "kubevols"
	RoundTripperDefaultCount         = 3
	DummyVMPrefixName                = "vsphere-k8s"
	VSANDatastoreType                = "vsan"
	MAC_OUI_VC                       = "00:50:56"
	MAC_OUI_ESX                      = "00:0c:29"
	DiskNotFoundErrMsg               = "No vSphere disk ID found"
	NoDiskUUIDFoundErrMsg            = "No disk UUID found"
	NoDevicesFoundErrMsg             = "No devices found"
	NonSupportedControllerTypeErrMsg = "Disk is attached to non-supported controller type"
	FileAlreadyExistErrMsg           = "File requested already exist"
	CleanUpDummyVMRoutine_Interval   = 5
)

Variables

View Source
var DiskformatValidOptions = generateDiskFormatValidOptions()
View Source
var ErrFileAlreadyExist = errors.New(FileAlreadyExistErrMsg)
View Source
var ErrNoDevicesFound = errors.New(NoDevicesFoundErrMsg)
View Source
var ErrNoDiskIDFound = errors.New(DiskNotFoundErrMsg)
View Source
var ErrNoDiskUUIDFound = errors.New(NoDiskUUIDFoundErrMsg)
View Source
var ErrNonSupportedControllerType = errors.New(NonSupportedControllerTypeErrMsg)

Functions

func GetgovmomiClient added in v1.6.0

func GetgovmomiClient(cfg *VSphereConfig) (*govmomi.Client, error)

Types

type Instances

type Instances struct {
	// contains filtered or unexported fields
}

func (*Instances) AddSSHKeyToAllInstances

func (i *Instances) AddSSHKeyToAllInstances(user string, keyData []byte) error

func (*Instances) CurrentNodeName

func (i *Instances) CurrentNodeName(hostname string) (k8stypes.NodeName, error)

func (*Instances) ExternalID

func (i *Instances) ExternalID(nodeName k8stypes.NodeName) (string, error)

ExternalID returns the cloud provider ID of the node with the specified Name (deprecated).

func (*Instances) InstanceID

func (i *Instances) InstanceID(nodeName k8stypes.NodeName) (string, error)

InstanceID returns the cloud provider ID of the node with the specified Name.

func (*Instances) InstanceType

func (i *Instances) InstanceType(name k8stypes.NodeName) (string, error)

func (*Instances) NodeAddresses

func (i *Instances) NodeAddresses(nodeName k8stypes.NodeName) ([]v1.NodeAddress, error)

NodeAddresses is an implementation of Instances.NodeAddresses.

type VSphere

type VSphere struct {
	// contains filtered or unexported fields
}

VSphere is an implementation of cloud provider Interface for VSphere.

func GetVSphere added in v1.6.0

func GetVSphere() (*VSphere, error)

Reads vSphere configuration from system environment and construct vSphere object

func (*VSphere) AttachDisk

func (vs *VSphere) AttachDisk(vmDiskPath string, nodeName k8stypes.NodeName) (diskID string, diskUUID string, err error)

Attaches given virtual disk volume to the compute running kubelet.

func (*VSphere) Clusters

func (vs *VSphere) Clusters() (cloudprovider.Clusters, bool)

func (*VSphere) CreateVolume

func (vs *VSphere) CreateVolume(volumeOptions *VolumeOptions) (volumePath string, err error)

CreateVolume creates a volume of given size (in KiB).

func (*VSphere) DeleteVolume

func (vs *VSphere) DeleteVolume(vmDiskPath string) error

DeleteVolume deletes a volume given volume name. Also, deletes the folder where the volume resides.

func (*VSphere) DetachDisk

func (vs *VSphere) DetachDisk(volPath string, nodeName k8stypes.NodeName) error

DetachDisk detaches given virtual disk volume from the compute running kubelet.

func (*VSphere) DiskIsAttached added in v1.4.0

func (vs *VSphere) DiskIsAttached(volPath string, nodeName k8stypes.NodeName) (bool, error)

DiskIsAttached returns if disk is attached to the VM using controllers supported by the plugin.

func (*VSphere) DisksAreAttached added in v1.4.6

func (vs *VSphere) DisksAreAttached(volPaths []string, nodeName k8stypes.NodeName) (map[string]bool, error)

DisksAreAttached returns if disks are attached to the VM using controllers supported by the plugin.

func (*VSphere) Instances

func (vs *VSphere) Instances() (cloudprovider.Instances, bool)

Instances returns an implementation of Instances for vSphere.

func (*VSphere) LoadBalancer

func (vs *VSphere) LoadBalancer() (cloudprovider.LoadBalancer, bool)

LoadBalancer returns an implementation of LoadBalancer for vSphere.

func (*VSphere) NodeExists added in v1.4.0

func (vs *VSphere) NodeExists(c *govmomi.Client, nodeName k8stypes.NodeName) (bool, error)

NodeExists checks if the node with given nodeName exist. Returns false if VM doesn't exist or VM is in powerOff state.

func (*VSphere) ProviderName

func (vs *VSphere) ProviderName() string

ProviderName returns the cloud provider ID.

func (*VSphere) Routes

func (vs *VSphere) Routes() (cloudprovider.Routes, bool)

Routes returns a false since the interface is not supported for vSphere.

func (*VSphere) ScrubDNS

func (vs *VSphere) ScrubDNS(nameservers, searches []string) (nsOut, srchOut []string)

ScrubDNS filters DNS settings for pods.

func (*VSphere) Zones

func (vs *VSphere) Zones() (cloudprovider.Zones, bool)

Zones returns an implementation of Zones for Google vSphere.

type VSphereConfig

type VSphereConfig struct {
	Global struct {
		// vCenter username.
		User string `gcfg:"user"`
		// vCenter password in clear text.
		Password string `gcfg:"password"`
		// vCenter IP.
		VCenterIP string `gcfg:"server"`
		// vCenter port.
		VCenterPort string `gcfg:"port"`
		// True if vCenter uses self-signed cert.
		InsecureFlag bool `gcfg:"insecure-flag"`
		// Datacenter in which VMs are located.
		Datacenter string `gcfg:"datacenter"`
		// Datastore in which vmdks are stored.
		Datastore string `gcfg:"datastore"`
		// WorkingDir is path where VMs can be found.
		WorkingDir string `gcfg:"working-dir"`
		// Soap round tripper count (retries = RoundTripper - 1)
		RoundTripperCount uint `gcfg:"soap-roundtrip-count"`
		// VMUUID is the VM Instance UUID of virtual machine which can be retrieved from instanceUuid
		// property in VmConfigInfo, or also set as vc.uuid in VMX file.
		// If not set, will be fetched from the machine via sysfs (requires root)
		VMUUID string `gcfg:"vm-uuid"`
	}

	Network struct {
		// PublicNetwork is name of the network the VMs are joined to.
		PublicNetwork string `gcfg:"public-network"`
	}

	Disk struct {
		// SCSIControllerType defines SCSI controller to be used.
		SCSIControllerType string `dcfg:"scsicontrollertype"`
	}
}

type VolumeOptions added in v1.5.0

type VolumeOptions struct {
	CapacityKB         int
	Tags               map[string]string
	Name               string
	DiskFormat         string
	Datastore          string
	StorageProfileData string
}

VolumeOptions specifies capacity, tags, name and diskFormat for a volume.

type Volumes added in v1.4.0

type Volumes interface {
	// AttachDisk attaches given disk to given node. Current node
	// is used when nodeName is empty string.
	AttachDisk(vmDiskPath string, nodeName k8stypes.NodeName) (diskID string, diskUUID string, err error)

	// DetachDisk detaches given disk to given node. Current node
	// is used when nodeName is empty string.
	// Assumption: If node doesn't exist, disk is already detached from node.
	DetachDisk(volPath string, nodeName k8stypes.NodeName) error

	// DiskIsAttached checks if a disk is attached to the given node.
	// Assumption: If node doesn't exist, disk is not attached to the node.
	DiskIsAttached(volPath string, nodeName k8stypes.NodeName) (bool, error)

	// DisksAreAttached checks if a list disks are attached to the given node.
	// Assumption: If node doesn't exist, disks are not attached to the node.
	DisksAreAttached(volPath []string, nodeName k8stypes.NodeName) (map[string]bool, error)

	// CreateVolume creates a new vmdk with specified parameters.
	CreateVolume(volumeOptions *VolumeOptions) (volumePath string, err error)

	// DeleteVolume deletes vmdk.
	DeleteVolume(vmDiskPath string) error
}

Jump to

Keyboard shortcuts

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