kubevirt

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Oct 19, 2020 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewKubevirtPlugin

func NewKubevirtPlugin() driver.Driver

NewKubevirtPlugin creates a new kubevirt driver.

Types

type MachinePlugin

type MachinePlugin struct {
	// SPI is an implementation of the PluginSPI interface.
	SPI PluginSPI
}

MachinePlugin implements cmi.MachineServer by delegating to a PluginSPI implementation.

func (*MachinePlugin) CreateMachine

CreateMachine handles a machine creation request REQUIRED METHOD

REQUEST PARAMETERS (driver.CreateMachineRequest) Machine *v1alpha1.Machine Machine object from whom VM is to be created MachineClass *v1alpha1.MachineClass MachineClass backing the machine object Secret *corev1.Secret Kubernetes secret that contains any sensitive data/credentials

RESPONSE PARAMETERS (driver.CreateMachineResponse) ProviderID string Unique identification of the VM at the cloud kubevirt. This could be the same/different from req.MachineName.

ProviderID typically matches with the node.Spec.ProviderID on the node object.
Eg: gce://project-name/region/vm-ProviderID

NodeName string Returns the name of the node-object that the VM register's with Kubernetes.

This could be different from req.MachineName as well

LastKnownState string (Optional) Last known state of VM during the current operation.

Could be helpful to continue operations in future requests.

OPTIONAL IMPLEMENTATION LOGIC It is optionally expected by the safety controller to use an identification mechanisms to map the VM Created by a providerSpec. These could be done using tag(s)/resource-groups etc. This logic is used by safety controller to delete orphan VMs which are not backed by any machine CRD

func (*MachinePlugin) DeleteMachine

DeleteMachine handles a machine deletion request

REQUEST PARAMETERS (driver.DeleteMachineRequest) Machine *v1alpha1.Machine Machine object from whom VM is to be deleted MachineClass *v1alpha1.MachineClass MachineClass backing the machine object Secret *corev1.Secret Kubernetes secret that contains any sensitive data/credentials

RESPONSE PARAMETERS (driver.DeleteMachineResponse) LastKnownState bytes(blob) (Optional) Last known state of VM during the current operation.

Could be helpful to continue operations in future requests.

func (*MachinePlugin) GetMachineStatus

GetMachineStatus handles a machine get status request OPTIONAL METHOD

REQUEST PARAMETERS (driver.GetMachineStatusRequest) Machine *v1alpha1.Machine Machine object from whom VM status needs to be returned MachineClass *v1alpha1.MachineClass MachineClass backing the machine object Secret *corev1.Secret Kubernetes secret that contains any sensitive data/credentials

RESPONSE PARAMETERS (driver.GetMachineStatueResponse) ProviderID string Unique identification of the VM at the cloud kubevirt. This could be the same/different from req.MachineName.

ProviderID typically matches with the node.Spec.ProviderID on the node object.
Eg: gce://project-name/region/vm-ProviderID

NodeName string Returns the name of the node-object that the VM register's with Kubernetes.

This could be different from req.MachineName as well

The request should return a NOT_FOUND (5) status errors code if the machine is not existing

func (*MachinePlugin) GetVolumeIDs

GetVolumeIDs returns a list of Volume IDs for all PV Specs for whom an kubevirt volume was found

REQUEST PARAMETERS (driver.GetVolumeIDsRequest) PVSpecList []*corev1.PersistentVolumeSpec PVSpecsList is a list PV specs for whom volume-IDs are required.

RESPONSE PARAMETERS (driver.GetVolumeIDsResponse) VolumeIDs []string VolumeIDs is a repeated list of VolumeIDs.

func (*MachinePlugin) ListMachines

ListMachines lists all the machines possibly created by a providerSpec Identifying machines created by a given providerSpec depends on the OPTIONAL IMPLEMENTATION LOGIC you have used to identify machines created by a providerSpec. It could be tags/resource-groups etc OPTIONAL METHOD

REQUEST PARAMETERS (driver.ListMachinesRequest) MachineClass *v1alpha1.MachineClass MachineClass based on which VMs created have to be listed Secret *corev1.Secret Kubernetes secret that contains any sensitive data/credentials

RESPONSE PARAMETERS (driver.ListMachinesResponse) MachineList map<string,string> A map containing the keys as the MachineID and value as the MachineName

for all machine's who where possibilly created by this ProviderSpec

type PluginSPI

type PluginSPI interface {
	// CreateMachine creates a machine with the given name, using the given provider spec and secret.
	CreateMachine(ctx context.Context, machineName string, providerSpec *api.KubeVirtProviderSpec, secret *corev1.Secret) (providerID string, err error)
	// DeleteMachine deletes the machine with the given name and provider id, using the given provider spec and secret.
	DeleteMachine(ctx context.Context, machineName, providerID string, providerSpec *api.KubeVirtProviderSpec, secret *corev1.Secret) (foundProviderID string, err error)
	// GetMachineStatus returns the provider id of the machine with the given name and provider id, using the given provider spec and secret.
	GetMachineStatus(ctx context.Context, machineName, providerID string, providerSpec *api.KubeVirtProviderSpec, secret *corev1.Secret) (foundProviderID string, err error)
	// ListMachines lists all machines matching the given provider spec and secret.
	ListMachines(ctx context.Context, providerSpec *api.KubeVirtProviderSpec, secret *corev1.Secret) (providerIDList map[string]string, err error)
	// ShutDownMachine shuts down the machine with the given name and provider id, using the given provider spec and secret.
	ShutDownMachine(ctx context.Context, machineName, providerID string, providerSpec *api.KubeVirtProviderSpec, secret *corev1.Secret) (foundProviderID string, err error)
}

PluginSPI is an interface for provider-specific machine operations.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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