blockdevice

package
v0.3.2 Latest Latest
Warning

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

Go to latest
Published: Dec 1, 2021 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ParentDeviceLabel stores the parent device name of a device
	ParentDeviceLabel = "ndm.harvesterhci.io/parent-device"
	// DeviceTypeLabel indicates whether the device is a disk or a partition
	DeviceTypeLabel = "ndm.harvesterhci.io/device-type"
)

Variables

This section is empty.

Functions

func ConvertBlockDevicesToMap

func ConvertBlockDevicesToMap(bds []*diskv1.BlockDevice) map[string]*diskv1.BlockDevice

ConvertBlockDevicesToMap converts a BlockDeviceList to a map with GUID (Name) as keys.

func GetDiskBlockDevice

func GetDiskBlockDevice(disk *block.Disk, nodeName, namespace string) *diskv1.BlockDevice

GetDiskBlockDevice gets a blockdevice from a given disk.

func GetPartitionBlockDevice

func GetPartitionBlockDevice(part *block.Partition, nodeName, namespace string) *diskv1.BlockDevice

GetPartitionBlockDevice gets a blockdevice from a given partition.

func Register

func Register(
	ctx context.Context,
	nodes ctllonghornv1.NodeController,
	bds ctldiskv1.BlockDeviceController,
	block block.Info,
	opt *option.Option,
	excludeFilters []*filter.Filter,
	autoProvisionFilters []*filter.Filter,
) error

Register register the block device CRD controller

Types

type Controller

type Controller struct {
	Namespace string
	NodeName  string

	NodeCache ctllonghornv1.NodeCache
	Nodes     ctllonghornv1.NodeClient

	Blockdevices     ctldiskv1.BlockDeviceController
	BlockdeviceCache ctldiskv1.BlockDeviceCache
	BlockInfo        block.Info
	ExcludeFilters   []*filter.Filter

	AutoGPTGenerate      bool
	AutoProvisionFilters []*filter.Filter
}

func (*Controller) ApplyAutoProvisionFiltersForDisk added in v0.3.0

func (c *Controller) ApplyAutoProvisionFiltersForDisk(disk *block.Disk) bool

ApplyAutoProvisionFiltersForDisk check the status of disk for every registered auto-provision filters. If the disk meets one of the criteria, it returns true.

func (*Controller) ApplyExcludeFiltersForDisk added in v0.3.0

func (c *Controller) ApplyExcludeFiltersForDisk(disk *block.Disk) bool

ApplyExcludeFiltersForPartition check the status of disk for every registered exclude filters. If the disk meets one of the criteria, it returns true.

func (*Controller) ApplyExcludeFiltersForPartition added in v0.3.0

func (c *Controller) ApplyExcludeFiltersForPartition(part *block.Partition) bool

ApplyExcludeFiltersForPartition check the status of partition for every registered exclude filters. If the partition meets one of the criteria, it returns true.

func (*Controller) MakeGPTPartitionIfNeeded

func (c *Controller) MakeGPTPartitionIfNeeded(device *diskv1.BlockDevice) (*diskv1.BlockDevice, error)

MakeGPTPartitionIfNeeded makes GPT partition on given device if needed.

Currently only making GPT partition on devices without a name (GUID).

func (*Controller) OnBlockDeviceChange

func (c *Controller) OnBlockDeviceChange(key string, device *diskv1.BlockDevice) (*diskv1.BlockDevice, error)

OnBlockDeviceChange watch the block device CR on change and performing disk operations like mounting the disks to a desired path via ext4

func (*Controller) OnBlockDeviceDelete

func (c *Controller) OnBlockDeviceDelete(key string, device *diskv1.BlockDevice) (*diskv1.BlockDevice, error)

OnBlockDeviceDelete will delete the block devices that belongs to the same parent device

func (*Controller) SaveBlockDevice

func (c *Controller) SaveBlockDevice(
	bd *diskv1.BlockDevice,
	oldBds map[string]*diskv1.BlockDevice,
	autoProvisioned bool,
) (*diskv1.BlockDevice, error)

SaveBlockDevice persists the blockedevice information. If oldBds contains a blockedevice under the same name (GUID), it will only do an update, otherwise create a new one.

Note that this method also activate the device if it's previously inactive.

func (*Controller) ScanBlockDevicesOnNode

func (c *Controller) ScanBlockDevicesOnNode() error

ScanBlockDevicesOnNode scans block devices on the node, and it will either create or update them.

Jump to

Keyboard shortcuts

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