penguin/monok8s

k8s image for Mono Gateway Dev Kit

clitools/pkg/controller/osimage/verify_safe.go

raw ยท 687 bytes

//go:build !dev

package osimage

import (
	"fmt"
	"os"
	"strings"
)

func CheckTargetSafe(targetPath string, expectedRawSize int64) error {

	if !strings.HasPrefix(targetPath, "/dev/") {
		return fmt.Errorf("target must be a device path under /dev")
	}

	st, err := os.Stat(targetPath)
	if err != nil {
		return fmt.Errorf("stat target: %w", err)
	}

	mode := st.Mode()
	if mode&os.ModeDevice == 0 {
		return fmt.Errorf("target is not a device")
	}

	// TODO: Add stronger checks
	// - EnsureNotMounted(targetPath)
	// - EnsureNotCurrentRoot(targetPath)
	// - EnsurePartitionNotWholeDisk(targetPath)
	// - EnsureCapacity(targetPath, expectedRawSize)

	_ = expectedRawSize
	return nil
}