Documentation ¶
Index ¶
Constants ¶
View Source
const ( // DeviceTypeLoop is the device type for loop devices in lsblk output DeviceTypeLoop = "loop" // DeviceTypeROM is the device type for ROM devices in lsblk output DeviceTypeROM = "rom" // DeviceTypeLVM is the device type for lvm devices in lsblk output DeviceTypeLVM = "lvm" )
View Source
const LSBLK_COLUMNS = "NAME,ROTA,TYPE,SIZE,MODEL,VENDOR,RO,STATE,KNAME,SERIAL,PARTLABEL,FSTYPE"
Variables ¶
View Source
var ( DefaultLosetup = "/usr/sbin/losetup" DefaultLsblk = "/usr/bin/lsblk" )
Functions ¶
func FlattenedBlockDevices ¶
func FlattenedBlockDevices(bs []BlockDevice) map[string]BlockDevice
Types ¶
type BlockDevice ¶
type BlockDevice struct { Name string `json:"name"` KName string `json:"kname"` Type string `json:"type"` Model string `json:"model,omitempty"` Vendor string `json:"vendor,omitempty"` State string `json:"state,omitempty"` FSType string `json:"fstype"` Size string `json:"size"` Children []BlockDevice `json:"children,omitempty"` ReadOnly bool `json:"ro,omitempty"` Serial string `json:"serial,omitempty"` PartLabel string `json:"partLabel,omitempty"` }
BlockDevice is the block device as output by lsblk. All the fields are lsblk columns.
func (BlockDevice) HasChildren ¶
func (b BlockDevice) HasChildren() bool
HasChildren checks if the disk has partitions
type BlockDeviceInfo ¶
type BlockDeviceInfo struct {
IsUsableLoopDev bool
}
type BlockDeviceInfos ¶
type BlockDeviceInfos map[string]BlockDeviceInfo
type HostLSBLK ¶
func NewDefaultHostLSBLK ¶
func NewDefaultHostLSBLK() *HostLSBLK
func (*HostLSBLK) BlockDeviceInfos ¶
func (lsblk *HostLSBLK) BlockDeviceInfos(ctx context.Context, bs []BlockDevice) (BlockDeviceInfos, error)
func (*HostLSBLK) IsUsableLoopDev ¶
IsUsableLoopDev returns true if the loop device isn't in use by Kubernetes by matching the back file path against a standard string used to mount devices from host into pods
func (*HostLSBLK) ListBlockDevices ¶
func (lsblk *HostLSBLK) ListBlockDevices(ctx context.Context) ([]BlockDevice, error)
ListBlockDevices lists the block devices using the lsblk command
type LSBLK ¶
type LSBLK interface { ListBlockDevices(ctx context.Context) ([]BlockDevice, error) IsUsableLoopDev(ctx context.Context, b BlockDevice) (bool, error) BlockDeviceInfos(ctx context.Context, bs []BlockDevice) (BlockDeviceInfos, error) }
Click to show internal directories.
Click to hide internal directories.