Files
kairos-sdk/ghw/disk_partition_handler.go
Aidan Leuck b93c718b21 fix linter errors
Signed-off-by: Aidan Leuck <aidan_leuck@selinc.com>
2025-08-27 09:01:33 +02:00

59 lines
1.6 KiB
Go

package ghw
import (
"os"
"path/filepath"
"strings"
"github.com/kairos-io/kairos-sdk/types"
)
type DiskPartitionHandler struct {
DiskName string
}
// Validate that DiskPartitionHandler implements PartitionHandler interface.
var _ PartitionHandler = &DiskPartitionHandler{}
func NewDiskPartitionHandler(diskName string) *DiskPartitionHandler {
return &DiskPartitionHandler{DiskName: diskName}
}
func (d *DiskPartitionHandler) GetPartitions(paths *Paths, logger *types.KairosLogger) types.PartitionList {
out := make(types.PartitionList, 0)
path := filepath.Join(paths.SysBlock, d.DiskName)
logger.Logger.Debug().Str("file", path).Msg("Reading disk file")
files, err := os.ReadDir(path)
if err != nil {
logger.Logger.Error().Err(err).Msg("failed to read disk partitions")
return out
}
for _, file := range files {
fname := file.Name()
if !strings.HasPrefix(fname, d.DiskName) {
continue
}
logger.Logger.Debug().Str("file", fname).Msg("Reading partition file")
partitionPath := filepath.Join(d.DiskName, fname)
size := partitionSizeBytes(paths, partitionPath, logger)
mp, pt := partitionInfo(paths, fname, logger)
du := diskPartUUID(paths, partitionPath, logger)
if pt == "" {
pt = diskPartTypeUdev(paths, partitionPath, logger)
}
fsLabel := diskFSLabel(paths, partitionPath, logger)
p := &types.Partition{
Name: fname,
Size: uint(size / (1024 * 1024)),
MountPoint: mp,
UUID: du,
FilesystemLabel: fsLabel,
FS: pt,
Path: filepath.Join("/dev", fname),
Disk: filepath.Join("/dev", d.DiskName),
}
out = append(out, p)
}
return out
}