 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
- type ActivePodsFunc
- type DeviceRunContainerOptions
- type Handler
- type HandlerImpl
- func (h *HandlerImpl) Allocate(node *schedulercache.NodeInfo, attrs *lifecycle.PodAdmitAttributes) error
- func (h *HandlerImpl) Devices() map[string][]pluginapi.Device
- func (h *HandlerImpl) GetDeviceRunContainerOptions(pod *v1.Pod, container *v1.Container) *DeviceRunContainerOptions
- func (h *HandlerImpl) Start(activePods ActivePodsFunc) error
 
- type HandlerStub
- func (h *HandlerStub) Allocate(node *schedulercache.NodeInfo, attrs *lifecycle.PodAdmitAttributes) error
- func (h *HandlerStub) Devices() map[string][]pluginapi.Device
- func (h *HandlerStub) GetDeviceRunContainerOptions(pod *v1.Pod, container *v1.Container) *DeviceRunContainerOptions
- func (h *HandlerStub) Start(activePods ActivePodsFunc) error
 
- type Manager
- type ManagerImpl
- func (m *ManagerImpl) Allocate(resourceName string, devs []string) (*pluginapi.AllocateResponse, error)
- func (m *ManagerImpl) CheckpointFile() string
- func (m *ManagerImpl) Devices() map[string][]pluginapi.Device
- func (m *ManagerImpl) Register(ctx context.Context, r *pluginapi.RegisterRequest) (*pluginapi.Empty, error)
- func (m *ManagerImpl) Start() error
- func (m *ManagerImpl) Stop() error
 
- type MonitorCallback
- type Stub
- func (m *Stub) Allocate(ctx context.Context, r *pluginapi.AllocateRequest) (*pluginapi.AllocateResponse, error)
- func (m *Stub) ListAndWatch(e *pluginapi.Empty, s pluginapi.DevicePlugin_ListAndWatchServer) error
- func (m *Stub) Register(kubeletEndpoint, resourceName string) error
- func (m *Stub) Start() error
- func (m *Stub) Stop() error
- func (m *Stub) Update(devs []*pluginapi.Device)
 
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ActivePodsFunc ¶
ActivePodsFunc is a function that returns a list of pods to reconcile.
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(activePods ActivePodsFunc) error
	// Devices returns all of registered devices keyed by resourceName.
	Devices() map[string][]pluginapi.Device
	// Allocate scans through containers in the pod spec
	// If it finds the container requires device plugin resource, it:
	// 1. Checks whether it already has this information in its cached state.
	// 2. If not, it calls Allocate and populate its cached state afterwards.
	// 3. If there is no cached state and Allocate fails, it returns an error.
	// 4. Otherwise, it updates allocatableResource in nodeInfo if necessary,
	// to make sure it is at least equal to the pod's requested capacity for
	// any registered device plugin resource
	Allocate(node *schedulercache.NodeInfo, attrs *lifecycle.PodAdmitAttributes) 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(node *schedulercache.NodeInfo, attrs *lifecycle.PodAdmitAttributes) error
Allocate attempts to allocate all of required device plugin resources, and update Allocatable resources in nodeInfo if necessary
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(activePods ActivePodsFunc) error
Start initializes podDevices and allocatedDevices information from checkpoint-ed state and 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(node *schedulercache.NodeInfo, attrs *lifecycle.PodAdmitAttributes) 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(activePods ActivePodsFunc) 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 ¶
func (m *ManagerImpl) Register(ctx context.Context, r *pluginapi.RegisterRequest) (*pluginapi.Empty, error)
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 ¶
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 ¶
NewDevicePluginStub returns an initialized DevicePlugin Stub.
func (*Stub) Allocate ¶
func (m *Stub) Allocate(ctx context.Context, r *pluginapi.AllocateRequest) (*pluginapi.AllocateResponse, error)
Allocate does a mock allocation
func (*Stub) ListAndWatch ¶
ListAndWatch lists devices and update that list according to the Update call