disk

package
v2.713.0 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const MaxFdiskPartitionSize = uint64(2 * 1024 * 1024 * 1024 * 1024)

Variables

View Source
var ErrGPTPartitionEncountered = errors.New("sfdisk detected a GPT partition")

Functions

func ConvertFromBytesToMb

func ConvertFromBytesToMb(sizeInBytes uint64) uint64

func ConvertFromKbToBytes

func ConvertFromKbToBytes(sizeInKb uint64) uint64

func ConvertFromMbToBytes

func ConvertFromMbToBytes(sizeInMb uint64) uint64

func IsGPTError

func IsGPTError(err error) bool

func NewPartitionStrategy

func NewPartitionStrategy(
	retryable boshretry.Retryable,
	timeService clock.Clock,
	logger boshlog.Logger,
) boshretry.RetryStrategy

Types

type EphemeralDevicePartitioner

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

func NewEphemeralDevicePartitioner

func NewEphemeralDevicePartitioner(
	partedPartitioner Partitioner,
	logger boshlog.Logger,
	cmdRunner boshsys.CmdRunner,
) *EphemeralDevicePartitioner

func (*EphemeralDevicePartitioner) GetDeviceSizeInBytes

func (p *EphemeralDevicePartitioner) GetDeviceSizeInBytes(devicePath string) (uint64, error)

func (*EphemeralDevicePartitioner) GetPartitions

func (p *EphemeralDevicePartitioner) GetPartitions(devicePath string) (partitions []ExistingPartition, deviceFullSizeInBytes uint64, err error)

func (*EphemeralDevicePartitioner) Partition

func (p *EphemeralDevicePartitioner) Partition(devicePath string, partitions []Partition) error

func (EphemeralDevicePartitioner) RemovePartitions

func (p EphemeralDevicePartitioner) RemovePartitions(partitions []ExistingPartition, devicePath string) error

func (*EphemeralDevicePartitioner) ResizeSinglePartition

func (p *EphemeralDevicePartitioner) ResizeSinglePartition(devicePath string) (err error)

func (*EphemeralDevicePartitioner) SinglePartitionNeedsResize

func (p *EphemeralDevicePartitioner) SinglePartitionNeedsResize(devicePath string, expectedPartitionType PartitionType) (needsResize bool, err error)

type ExistingPartition

type ExistingPartition struct {
	Index        int
	SizeInBytes  uint64
	StartInBytes uint64
	EndInBytes   uint64
	Type         PartitionType
	Name         string
}

type FileSystemType

type FileSystemType string
const (
	FileSystemSwap    FileSystemType = "swap"
	FileSystemExt4    FileSystemType = "ext4"
	FileSystemXFS     FileSystemType = "xfs"
	FileSystemDefault FileSystemType = ""

	FileSystemExtResizeUtility = "resize2fs"
	FileSystemXFSResizeUtility = "xfs_growfs"
)

type Formatter

type Formatter interface {
	Format(partitionPath string, fsType FileSystemType) (err error)
	GetPartitionFormatType(string) (FileSystemType, error)
	GrowFilesystem(partitionPath string) error
}

func NewLinuxFormatter

func NewLinuxFormatter(runner boshsys.CmdRunner, fs boshsys.FileSystem) Formatter

type LinuxDiskManagerOpts

type LinuxDiskManagerOpts struct {
	BindMount       bool
	PartitionerType string
}

type Manager

type Manager interface {
	GetEphemeralDevicePartitioner() Partitioner
	GetFormatter() Formatter
	GetMounter() Mounter
	GetMountsSearcher() MountsSearcher
	GetPersistentDevicePartitioner(partitionerType string) (Partitioner, error)
	GetRootDevicePartitioner() Partitioner
	GetUtil() Util
}

func NewLinuxDiskManager

func NewLinuxDiskManager(
	logger boshlog.Logger,
	runner boshsys.CmdRunner,
	fs boshsys.FileSystem,
	opts LinuxDiskManagerOpts,
) Manager

type Mount

type Mount struct {
	PartitionPath string
	MountPoint    string
}

func (Mount) IsRoot

func (m Mount) IsRoot() bool

type Mounter

type Mounter interface {
	Mount(partitionPath, mountPoint string, mountOptions ...string) (err error)
	MountTmpfs(mountPoint string, size string) (err error)
	MountFilesystem(partitionPath, mountPoint, fstype string, mountOptions ...string) (err error)
	Unmount(partitionOrMountPoint string) (didUnmount bool, err error)

	RemountAsReadonly(mountPoint string) (err error)
	Remount(fromMountPoint, toMountPoint string, mountOptions ...string) (err error)
	RemountInPlace(mountPoint string, mountOptions ...string) (err error)

	SwapOn(partitionPath string) (err error)

	IsMountPoint(path string) (parititionPath string, result bool, err error)
	IsMounted(devicePathOrMountPoint string) (result bool, err error)
}

func NewLinuxBindMounter

func NewLinuxBindMounter(delegateMounter Mounter) Mounter

func NewLinuxMounter

func NewLinuxMounter(
	runner boshsys.CmdRunner,
	mountsSearcher MountsSearcher,
	unmountRetrySleep time.Duration,
) Mounter

type MountsSearcher

type MountsSearcher interface {
	SearchMounts() ([]Mount, error)
}

func NewCmdMountsSearcher

func NewCmdMountsSearcher(runner boshsys.CmdRunner) MountsSearcher

func NewProcMountsSearcher

func NewProcMountsSearcher(fs boshsys.FileSystem) MountsSearcher

type Partition

type Partition struct {
	NamePrefix  string
	SizeInBytes uint64
	Type        PartitionType
}

func (Partition) String

func (p Partition) String() string

type PartitionType

type PartitionType string
const (
	PartitionTypeSwap    PartitionType = "swap"
	PartitionTypeEFI     PartitionType = "efi"
	PartitionTypeLinux   PartitionType = "linux"
	PartitionTypeEmpty   PartitionType = "empty"
	PartitionTypeUnknown PartitionType = "unknown"
	PartitionTypeGPT     PartitionType = "gpt"
)

type Partitioner

type Partitioner interface {
	Partition(devicePath string, partitions []Partition) (err error)
	GetDeviceSizeInBytes(devicePath string) (size uint64, err error)
	SinglePartitionNeedsResize(devicePath string, expectedPartitionType PartitionType) (needsResize bool, err error)
	ResizeSinglePartition(devicePath string) (err error)
	GetPartitions(devicePath string) (partitions []ExistingPartition, deviceFullSizeInBytes uint64, err error)
	RemovePartitions(partitions []ExistingPartition, devicePath string) error
}

func NewPartedPartitioner

func NewPartedPartitioner(logger boshlog.Logger, cmdRunner boshsys.CmdRunner, timeService clock.Clock) Partitioner

func NewRootDevicePartitioner

func NewRootDevicePartitioner(logger boshlog.Logger, cmdRunner boshsys.CmdRunner, deltaInBytes uint64) Partitioner

func NewSfdiskPartitioner

func NewSfdiskPartitioner(logger boshlog.Logger, cmdRunner boshsys.CmdRunner, timeService clock.Clock) Partitioner

type PersistentDevicePartitioner

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

func NewPersistentDevicePartitioner

func NewPersistentDevicePartitioner(
	sfDiskPartitioner Partitioner,
	partedPartitioner Partitioner,
	deviceUtil Util,
	logger logger.Logger,
) *PersistentDevicePartitioner

func (*PersistentDevicePartitioner) GetDeviceSizeInBytes

func (p *PersistentDevicePartitioner) GetDeviceSizeInBytes(devicePath string) (uint64, error)

func (*PersistentDevicePartitioner) GetPartitions

func (p *PersistentDevicePartitioner) GetPartitions(devicePath string) (partitions []ExistingPartition, deviceFullSizeInBytes uint64, err error)

func (*PersistentDevicePartitioner) Partition

func (p *PersistentDevicePartitioner) Partition(devicePath string, partitions []Partition) error

func (*PersistentDevicePartitioner) RemovePartitions

func (p *PersistentDevicePartitioner) RemovePartitions(partitions []ExistingPartition, devicePath string) error

func (*PersistentDevicePartitioner) ResizeSinglePartition

func (p *PersistentDevicePartitioner) ResizeSinglePartition(devicePath string) (err error)

func (*PersistentDevicePartitioner) SinglePartitionNeedsResize

func (p *PersistentDevicePartitioner) SinglePartitionNeedsResize(devicePath string, expectedPartitionType PartitionType) (needsResize bool, err error)

type Settings

type Settings struct {
	AgentID string `json:"agent_id"`
}

type Util

type Util interface {
	GetFilesContents(diskPath string, fileNames []string) (contents [][]byte, err error)
	GetBlockDeviceSize(diskPath string) (size uint64, err error)
}

func NewUtil

func NewUtil(runner boshsys.CmdRunner, mounter Mounter, fs boshsys.FileSystem, logger boshlog.Logger) Util

Directories

Path Synopsis
Code generated by counterfeiter.
Code generated by counterfeiter.

Jump to

Keyboard shortcuts

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