terraform-provider-proxmox/proxmox/util.go
2019-10-14 08:49:52 +02:00

71 lines
1.7 KiB
Go

package proxmox
import (
"strconv"
pxapi "github.com/Telmate/proxmox-api-go/proxmox"
"github.com/hashicorp/terraform/helper/schema"
)
func UpdateDeviceConfDefaults(
activeDeviceConf pxapi.QemuDevice,
defaultDeviceConf *schema.Set,
) *schema.Set {
defaultDeviceConfMap := defaultDeviceConf.List()[0].(map[string]interface{})
for key, _ := range defaultDeviceConfMap {
if deviceConfigValue, ok := activeDeviceConf[key]; ok {
defaultDeviceConfMap[key] = deviceConfigValue
switch deviceConfigValue.(type) {
case int:
sValue := strconv.Itoa(deviceConfigValue.(int))
bValue, err := strconv.ParseBool(sValue)
if err == nil {
defaultDeviceConfMap[key] = bValue
}
default:
defaultDeviceConfMap[key] = deviceConfigValue
}
}
}
defaultDeviceConf.Remove(defaultDeviceConf.List()[0])
defaultDeviceConf.Add(defaultDeviceConfMap)
return defaultDeviceConf
}
func DevicesSetToMapWithoutId(devicesSet *schema.Set) pxapi.QemuDevices {
devicesMap := pxapi.QemuDevices{}
i := 1
for _, set := range devicesSet.List() {
setMap, isMap := set.(map[string]interface{})
if isMap {
// setMap["id"] = i
devicesMap[i] = setMap
i += 1
}
}
return devicesMap
}
func AddIds(configSet *schema.Set) *schema.Set {
// add device config ids
var i = 1
for _, setConf := range configSet.List() {
configSet.Remove(setConf)
setConfMap := setConf.(map[string]interface{})
setConfMap["id"] = i
i += 1
configSet.Add(setConfMap)
}
return configSet
}
func RemoveIds(configSet *schema.Set) *schema.Set {
// remove device config ids
for _, setConf := range configSet.List() {
configSet.Remove(setConf)
setConfMap := setConf.(map[string]interface{})
delete(setConfMap, "id")
configSet.Add(setConfMap)
}
return configSet
}