support different types for disk size

This commit is contained in:
Grant Gongaware 2019-01-09 08:46:14 -08:00
parent 7eacef9df5
commit 414c2fc749

View File

@ -628,22 +628,20 @@ func prepareDiskSize(
diskConfMap pxapi.QemuDevices,
) error {
clonedConfig, err := pxapi.NewConfigQemuFromApi(vmr, client)
if err != nil {
return err
}
//log.Printf("%s", clonedConfig)
for diskID, diskConf := range diskConfMap {
diskName := fmt.Sprintf("%v%v", diskConf["type"], diskID)
//diskSizeGB := diskConf["size"].(string)
//diskSize, _ := strconv.ParseFloat(strings.Trim(diskSizeGB, "G"), 64)
diskSize := diskConf["size"].(float64)
// if err != nil {
// return err
// }
diskSize := diskSizeGB(diskConf["size"])
if _, diskExists := clonedConfig.QemuDisks[diskID]; !diskExists {
return err
}
clonedDiskSizeGB := clonedConfig.QemuDisks[diskID]["size"].(string)
clonedDiskSize, _ := strconv.ParseFloat(strings.Trim(clonedDiskSizeGB, "G"), 64)
clonedDiskSize := diskSizeGB(clonedConfig.QemuDisks[diskID]["size"])
if err != nil {
return err
@ -661,6 +659,19 @@ func prepareDiskSize(
return nil
}
func diskSizeGB(dcSize interface{}) float64 {
var diskSize float64
// TODO support other units M/G/K
switch dcSize.(type) {
case string:
diskSizeGB := dcSize.(string)
diskSize, _ = strconv.ParseFloat(strings.Trim(diskSizeGB, "G"), 64)
case float64:
diskSize = dcSize.(float64)
}
return diskSize
}
// Converting from schema.TypeSet to map of id and conf for each device,
// which will be sent to Proxmox API.
func devicesSetToMap(devicesSet *schema.Set) pxapi.QemuDevices {