Help us shape the future of Go! Take the 2026 Go Developer Survey

blockdevice

package
v0.1.2 Latest Latest
Warning

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

Go to latest
Published: Sep 29, 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

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.BlockDeviceClient
	BlockdeviceCache ctldiskv1.BlockDeviceCache
	BlockInfo        block.Info
	Filters          []*filter.Filter

	AutoGPTGenerate bool
}

func (*Controller) ApplyFilter

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

ApplyFilter check the status of every register filters if the disk meets the filter criteria it will return true else it will return false

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) (*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