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, diskConfMap pxapi.QemuDevices,
) error { ) error {
clonedConfig, err := pxapi.NewConfigQemuFromApi(vmr, client) clonedConfig, err := pxapi.NewConfigQemuFromApi(vmr, client)
if err != nil {
return err
}
//log.Printf("%s", clonedConfig) //log.Printf("%s", clonedConfig)
for diskID, diskConf := range diskConfMap { for diskID, diskConf := range diskConfMap {
diskName := fmt.Sprintf("%v%v", diskConf["type"], diskID) diskName := fmt.Sprintf("%v%v", diskConf["type"], diskID)
//diskSizeGB := diskConf["size"].(string) diskSize := diskSizeGB(diskConf["size"])
//diskSize, _ := strconv.ParseFloat(strings.Trim(diskSizeGB, "G"), 64)
diskSize := diskConf["size"].(float64)
// if err != nil {
// return err
// }
if _, diskExists := clonedConfig.QemuDisks[diskID]; !diskExists { if _, diskExists := clonedConfig.QemuDisks[diskID]; !diskExists {
return err 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 { if err != nil {
return err return err
@ -661,6 +659,19 @@ func prepareDiskSize(
return nil 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, // Converting from schema.TypeSet to map of id and conf for each device,
// which will be sent to Proxmox API. // which will be sent to Proxmox API.
func devicesSetToMap(devicesSet *schema.Set) pxapi.QemuDevices { func devicesSetToMap(devicesSet *schema.Set) pxapi.QemuDevices {