mirror of
https://github.com/letic/terraform-provider-proxmox.git
synced 2024-10-05 02:01:04 +00:00
71 lines
1.7 KiB
Go
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
|
|
} |