add disk type (prefix) to instance volume model

This commit is contained in:
2025-04-08 23:41:33 +00:00
parent 6a65ca2021
commit 4ef3f76589
3 changed files with 27 additions and 1 deletions

View File

@@ -190,6 +190,9 @@ func (instance *Instance) RebuildVolume(host *Node, volid string) error {
return err
}
voltype := AnyPrefixes(volid, VolumeTypes)
volume.Type = voltype
instance.Volumes[VolumeID(volid)] = volume
return nil

View File

@@ -48,8 +48,18 @@ type Instance struct {
configHostPCIs map[string]string
}
var VolumeTypes = []string{
"sata",
"scsi",
"ide",
"rootfs",
"mp",
"unused",
}
type VolumeID string
type Volume struct {
Type string `json:"type"`
Storage string `json:"storage"`
Format string `json:"format"`
Size uint64 `json:"size"`

View File

@@ -36,7 +36,7 @@ func GetConfig(configPath string) Config {
return config
}
// returns if a device pcie bus id is a super device or subsystem device
// checks if a device pcie bus id is a super device or subsystem device
//
// subsystem devices always has the format xxxx:yy.z, whereas super devices have the format xxxx:yy
//
@@ -44,3 +44,16 @@ func GetConfig(configPath string) Config {
func DeviceBusIDIsSuperDevice(BusID DeviceID) bool {
return !strings.ContainsRune(string(BusID), '.')
}
// checks if string s has one of any prefixes, and returns the prefix or "" if there was no match
//
// matches the first prefix match in array order
func AnyPrefixes(s string, prefixes []string) string {
for _, prefix := range prefixes {
if strings.HasPrefix(s, prefix) {
return prefix
}
}
return ""
}