Documentation ¶
Index ¶
- Constants
- Variables
- func GetgovmomiClient(cfg *VSphereConfig) (*govmomi.Client, error)
- type Instances
- func (i *Instances) AddSSHKeyToAllInstances(user string, keyData []byte) error
- func (i *Instances) CurrentNodeName(hostname string) (k8stypes.NodeName, error)
- func (i *Instances) ExternalID(nodeName k8stypes.NodeName) (string, error)
- func (i *Instances) InstanceID(nodeName k8stypes.NodeName) (string, error)
- func (i *Instances) InstanceType(name k8stypes.NodeName) (string, error)
- func (i *Instances) NodeAddresses(nodeName k8stypes.NodeName) ([]v1.NodeAddress, error)
- type VSphere
- func (vs *VSphere) AttachDisk(vmDiskPath string, nodeName k8stypes.NodeName) (diskID string, diskUUID string, err error)
- func (vs *VSphere) Clusters() (cloudprovider.Clusters, bool)
- func (vs *VSphere) CreateVolume(volumeOptions *VolumeOptions) (volumePath string, err error)
- func (vs *VSphere) DeleteVolume(vmDiskPath string) error
- func (vs *VSphere) DetachDisk(volPath string, nodeName k8stypes.NodeName) error
- func (vs *VSphere) DiskIsAttached(volPath string, nodeName k8stypes.NodeName) (bool, error)
- func (vs *VSphere) DisksAreAttached(volPaths []string, nodeName k8stypes.NodeName) (map[string]bool, error)
- func (vs *VSphere) Instances() (cloudprovider.Instances, bool)
- func (vs *VSphere) LoadBalancer() (cloudprovider.LoadBalancer, bool)
- func (vs *VSphere) NodeExists(c *govmomi.Client, nodeName k8stypes.NodeName) (bool, error)
- func (vs *VSphere) ProviderName() string
- func (vs *VSphere) Routes() (cloudprovider.Routes, bool)
- func (vs *VSphere) ScrubDNS(nameservers, searches []string) (nsOut, srchOut []string)
- func (vs *VSphere) Zones() (cloudprovider.Zones, bool)
- type VSphereConfig
- type VolumeOptions
- type Volumes
Constants ¶
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 DummyVMName = "kubernetes-helper-vm" VSANDatastoreType = "vsan" )
Variables ¶
var DiskformatValidOptions = generateDiskFormatValidOptions()
var ErrFileAlreadyExist = errors.New("File requested already exist")
var ErrNoDevicesFound = errors.New("No devices found")
var ErrNoDiskIDFound = errors.New("No vSphere disk ID found")
var ErrNoDiskUUIDFound = errors.New("No disk UUID found")
var ErrNonSupportedControllerType = errors.New("Disk is attached to non-supported controller type")
Functions ¶
func GetgovmomiClient ¶
func GetgovmomiClient(cfg *VSphereConfig) (*govmomi.Client, error)
Types ¶
type Instances ¶
type Instances struct {
// contains filtered or unexported fields
}
func (*Instances) AddSSHKeyToAllInstances ¶
func (*Instances) CurrentNodeName ¶
func (*Instances) ExternalID ¶
ExternalID returns the cloud provider ID of the node with the specified Name (deprecated).
func (*Instances) InstanceID ¶
InstanceID returns the cloud provider ID of the node with the specified Name.
func (*Instances) InstanceType ¶
func (*Instances) NodeAddresses ¶
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 ¶
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) CreateVolume ¶
func (vs *VSphere) CreateVolume(volumeOptions *VolumeOptions) (volumePath string, err error)
CreateVolume creates a volume of given size (in KiB).
func (*VSphere) DeleteVolume ¶
DeleteVolume deletes a volume given volume name. Also, deletes the folder where the volume resides.
func (*VSphere) DetachDisk ¶
DetachDisk detaches given virtual disk volume from the compute running kubelet.
func (*VSphere) DiskIsAttached ¶
DiskIsAttached returns if disk is attached to the VM using controllers supported by the plugin.
func (*VSphere) DisksAreAttached ¶
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 ¶
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 ¶
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.
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 ¶
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 ¶
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 }