deviceplugin

package
v0.0.0-...-4eadfbb Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DeviceRunContainerOptions

type DeviceRunContainerOptions struct {
	// The environment variables list.
	Envs []kubecontainer.EnvVar
	// The mounts for the container.
	Mounts []kubecontainer.Mount
	// The host devices mapped into the container.
	Devices []kubecontainer.DeviceInfo
}

DeviceRunContainerOptions contains the combined container runtime settings to consume its allocated devices.

type Handler

type Handler interface {
	// Start starts device plugin registration service.
	Start() error
	// Devices returns all of registered devices keyed by resourceName.
	Devices() map[string][]pluginapi.Device
	// Allocate attempts to allocate all of required extended resources for
	// the input container, issues an Allocate rpc request for each of such
	// resources, processes their AllocateResponses, and updates the cached
	// containerDevices on success.
	Allocate(pod *v1.Pod, container *v1.Container, activePods []*v1.Pod) error
	// GetDeviceRunContainerOptions checks whether we have cached containerDevices
	// for the passed-in <pod, container> and returns its DeviceRunContainerOptions
	// for the found one. An empty struct is returned in case no cached state is found.
	GetDeviceRunContainerOptions(pod *v1.Pod, container *v1.Container) *DeviceRunContainerOptions
}

Handler defines the functions used to manage and access device plugin resources.

type HandlerImpl

type HandlerImpl struct {
	// TODO: consider to change this to RWMutex.
	sync.Mutex
	// contains filtered or unexported fields
}

HandlerImpl implements the actual functionality to manage device plugin resources.

func NewHandlerImpl

func NewHandlerImpl(updateCapacityFunc func(v1.ResourceList)) (*HandlerImpl, error)

NewHandlerImpl creates a HandlerImpl to manage device plugin resources. updateCapacityFunc is called to update ContainerManager capacity when device capacity changes.

func (*HandlerImpl) Allocate

func (h *HandlerImpl) Allocate(pod *v1.Pod, container *v1.Container, activePods []*v1.Pod) error

Allocate attempts to allocate all of required extended resources for the input container, issues an Allocate rpc request for each of such resources, processes their AllocateResponses, and updates the cached containerDevices on success.

func (*HandlerImpl) Devices

func (h *HandlerImpl) Devices() map[string][]pluginapi.Device

Devices returns all of registered devices keyed by resourceName.

func (*HandlerImpl) GetDeviceRunContainerOptions

func (h *HandlerImpl) GetDeviceRunContainerOptions(pod *v1.Pod, container *v1.Container) *DeviceRunContainerOptions

GetDeviceRunContainerOptions checks whether we have cached containerDevices for the passed-in <pod, container> and returns its DeviceRunContainerOptions for the found one. An empty struct is returned in case no cached state is found.

func (*HandlerImpl) Start

func (h *HandlerImpl) Start() error

Start starts device plugin registration service.

type HandlerStub

type HandlerStub struct{}

HandlerStub provides a simple stub implementation for Handler.

func NewHandlerStub

func NewHandlerStub() (*HandlerStub, error)

NewHandlerStub creates a HandlerStub.

func (*HandlerStub) Allocate

func (h *HandlerStub) Allocate(pod *v1.Pod, container *v1.Container, activePods []*v1.Pod) error

Allocate simply returns nil.

func (*HandlerStub) Devices

func (h *HandlerStub) Devices() map[string][]pluginapi.Device

Devices returns an empty map.

func (*HandlerStub) GetDeviceRunContainerOptions

func (h *HandlerStub) GetDeviceRunContainerOptions(pod *v1.Pod, container *v1.Container) *DeviceRunContainerOptions

GetDeviceRunContainerOptions simply returns nil.

func (*HandlerStub) Start

func (h *HandlerStub) Start() error

Start simply returns nil.

type Manager

type Manager interface {
	// Start starts the gRPC Registration service.
	Start() error

	// Devices is the map of devices that have registered themselves
	// against the manager.
	// The map key is the ResourceName of the device plugins.
	Devices() map[string][]pluginapi.Device

	// Allocate takes resourceName and list of device Ids, and calls the
	// gRPC Allocate on the device plugin matching the resourceName.
	Allocate(string, []string) (*pluginapi.AllocateResponse, error)

	// Stop stops the manager.
	Stop() error

	// Returns checkpoint file path.
	CheckpointFile() string
}

Manager manages all the Device Plugins running on a node.

type ManagerImpl

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

ManagerImpl is the structure in charge of managing Device Plugins.

func NewManagerImpl

func NewManagerImpl(socketPath string, f MonitorCallback) (*ManagerImpl, error)

NewManagerImpl creates a new manager on the socket `socketPath`. f is the callback that is called when a device becomes unhealthy. socketPath is present for testing purposes in production this is pluginapi.KubeletSocket

func (*ManagerImpl) Allocate

func (m *ManagerImpl) Allocate(resourceName string, devs []string) (*pluginapi.AllocateResponse, error)

Allocate is the call that you can use to allocate a set of devices from the registered device plugins.

func (*ManagerImpl) CheckpointFile

func (m *ManagerImpl) CheckpointFile() string

CheckpointFile returns device plugin checkpoint file path.

func (*ManagerImpl) Devices

func (m *ManagerImpl) Devices() map[string][]pluginapi.Device

Devices is the map of devices that are known by the Device Plugin manager with the kind of the devices as key

func (*ManagerImpl) Register

Register registers a device plugin.

func (*ManagerImpl) Start

func (m *ManagerImpl) Start() error

Start starts the Device Plugin Manager

func (*ManagerImpl) Stop

func (m *ManagerImpl) Stop() error

Stop is the function that can stop the gRPC server.

type MonitorCallback

type MonitorCallback func(resourceName string, added, updated, deleted []pluginapi.Device)

MonitorCallback is the function called when a device's health state changes, or new devices are reported, or old devices are deleted. Updated contains the most recent state of the Device.

type Stub

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

Stub implementation for DevicePlugin.

func NewDevicePluginStub

func NewDevicePluginStub(devs []*pluginapi.Device, socket string) *Stub

NewDevicePluginStub returns an initialized DevicePlugin Stub.

func (*Stub) Allocate

Allocate does a mock allocation

func (*Stub) ListAndWatch

ListAndWatch lists devices and update that list according to the Update call

func (*Stub) Register

func (m *Stub) Register(kubeletEndpoint, resourceName string) error

Register registers the device plugin for the given resourceName with Kubelet.

func (*Stub) Start

func (m *Stub) Start() error

Start starts the gRPC server of the device plugin

func (*Stub) Stop

func (m *Stub) Stop() error

Stop stops the gRPC server

func (*Stub) Update

func (m *Stub) Update(devs []*pluginapi.Device)

Update allows the device plugin to send new devices through ListAndWatch

Jump to

Keyboard shortcuts

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