mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-07-03 20:12:59 +00:00
fix: state diff issue
This commit is contained in:
parent
fec2a7c9e1
commit
781d83535b
@ -1,4 +1,8 @@
|
|||||||
## v0.4.2 (UNRELEASED)
|
## v0.4.2
|
||||||
|
|
||||||
|
BUG FIXES:
|
||||||
|
|
||||||
|
* resource/virtual_environment_vm: Fix `disk.file_id` diff issue
|
||||||
|
|
||||||
OTHER:
|
OTHER:
|
||||||
|
|
||||||
@ -47,7 +51,7 @@ BUG FIXES:
|
|||||||
* resource/virtual_environment_container: Fix VM ID collision when `vm_id` is not specified
|
* resource/virtual_environment_container: Fix VM ID collision when `vm_id` is not specified
|
||||||
* resource/virtual_environment_vm: Fix VM ID collision when `vm_id` is not specified
|
* resource/virtual_environment_vm: Fix VM ID collision when `vm_id` is not specified
|
||||||
* resource/virtual_environment_vm: Fix disk import issue when importing from directory-based datastores
|
* resource/virtual_environment_vm: Fix disk import issue when importing from directory-based datastores
|
||||||
* resource/virtual/environment/vm: Fix handling of storage name - correct handling of `-`
|
* resource/virtual_environment/vm: Fix handling of storage name - correct handling of `-`
|
||||||
|
|
||||||
WORKAROUNDS:
|
WORKAROUNDS:
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// CreateAlias create an alias
|
// CreateAlias create an alias
|
||||||
func (c *VirtualEnvironmentClient) CreateAlias(d *VirtualEnvironmentClusterAliasCreateRequestBody) error {
|
func (c *VirtualEnvironmentClient) CreateAlias(d *VirtualEnvironmentClusterAliasCreateRequestBody) error {
|
||||||
return c.DoRequest(hmPOST, "cluster/firewall/aliases", d, nil)
|
return c.DoRequest(hmPOST, "cluster/firewall/aliases", d, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,4 +60,4 @@ func (c *VirtualEnvironmentClient) ListAliases() ([]*VirtualEnvironmentClusterAl
|
|||||||
// UpdateAlias updates an alias.
|
// UpdateAlias updates an alias.
|
||||||
func (c *VirtualEnvironmentClient) UpdateAlias(id string, d *VirtualEnvironmentClusterAliasUpdateRequestBody) error {
|
func (c *VirtualEnvironmentClient) UpdateAlias(id string, d *VirtualEnvironmentClusterAliasUpdateRequestBody) error {
|
||||||
return c.DoRequest(hmPUT, fmt.Sprintf("cluster/firewall/aliases/%s", url.PathEscape(id)), d, nil)
|
return c.DoRequest(hmPUT, fmt.Sprintf("cluster/firewall/aliases/%s", url.PathEscape(id)), d, nil)
|
||||||
}
|
}
|
||||||
|
@ -18,11 +18,11 @@ type VirtualEnvironmentClusterAliasGetResponseBody struct {
|
|||||||
|
|
||||||
// VirtualEnvironmentClusterAliasGetResponseData contains the data from an alias get response.
|
// VirtualEnvironmentClusterAliasGetResponseData contains the data from an alias get response.
|
||||||
type VirtualEnvironmentClusterAliasGetResponseData struct {
|
type VirtualEnvironmentClusterAliasGetResponseData struct {
|
||||||
Comment *string `json:"comment,omitempty" url:"comment,omitempty"`
|
Comment *string `json:"comment,omitempty" url:"comment,omitempty"`
|
||||||
Name string `json:"name" url:"name"`
|
Name string `json:"name" url:"name"`
|
||||||
CIDR string `json:"cidr" url:"cidr"`
|
CIDR string `json:"cidr" url:"cidr"`
|
||||||
Digest *string `json:"digest" url:"digest"`
|
Digest *string `json:"digest" url:"digest"`
|
||||||
IPVersion int `json:"ipversion" url:"ipversion"`
|
IPVersion int `json:"ipversion" url:"ipversion"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// VirtualEnvironmentClusterAliasListResponseBody contains the data from an alias get response.
|
// VirtualEnvironmentClusterAliasListResponseBody contains the data from an alias get response.
|
||||||
@ -33,7 +33,6 @@ type VirtualEnvironmentClusterAliasListResponseBody struct {
|
|||||||
// VirtualEnvironmentClusterAliasUpdateRequestBody contains the data for an alias update request.
|
// VirtualEnvironmentClusterAliasUpdateRequestBody contains the data for an alias update request.
|
||||||
type VirtualEnvironmentClusterAliasUpdateRequestBody struct {
|
type VirtualEnvironmentClusterAliasUpdateRequestBody struct {
|
||||||
Comment *string `json:"comment,omitempty" url:"comment,omitempty"`
|
Comment *string `json:"comment,omitempty" url:"comment,omitempty"`
|
||||||
ReName string `json:"rename" url:"rename"`
|
ReName string `json:"rename" url:"rename"`
|
||||||
CIDR string `json:"cidr" url:"cidr"`
|
CIDR string `json:"cidr" url:"cidr"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// CreateIPSet create an IPSet
|
// CreateIPSet create an IPSet
|
||||||
func (c *VirtualEnvironmentClient) CreateIPSet(d *VirtualEnvironmentClusterIPSetCreateRequestBody) error {
|
func (c *VirtualEnvironmentClient) CreateIPSet(d *VirtualEnvironmentClusterIPSetCreateRequestBody) error {
|
||||||
return c.DoRequest(hmPOST, "cluster/firewall/ipset", d, nil)
|
return c.DoRequest(hmPOST, "cluster/firewall/ipset", d, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,4 +70,4 @@ func (c *VirtualEnvironmentClient) GetListIPSets() (*VirtualEnvironmentClusterIP
|
|||||||
})
|
})
|
||||||
|
|
||||||
return resBody, nil
|
return resBody, nil
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ type VirtualEnvironmentClusterIPSetListResponseBody struct {
|
|||||||
// VirtualEnvironmentClusterIPSetCreateRequestBody contains the data for an IPSet create request
|
// VirtualEnvironmentClusterIPSetCreateRequestBody contains the data for an IPSet create request
|
||||||
type VirtualEnvironmentClusterIPSetCreateRequestBody struct {
|
type VirtualEnvironmentClusterIPSetCreateRequestBody struct {
|
||||||
Comment string `json:"comment,omitempty" url:"comment,omitempty"`
|
Comment string `json:"comment,omitempty" url:"comment,omitempty"`
|
||||||
Name string `json:"name" url:"name"`
|
Name string `json:"name" url:"name"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// VirtualEnvironmentClusterIPSetGetResponseBody contains the body from an IPSet get response.
|
// VirtualEnvironmentClusterIPSetGetResponseBody contains the body from an IPSet get response.
|
||||||
@ -26,22 +26,22 @@ type VirtualEnvironmentClusterIPSetGetResponseBody struct {
|
|||||||
|
|
||||||
// VirtualEnvironmentClusterIPSetGetResponseData contains the data from an IPSet get response.
|
// VirtualEnvironmentClusterIPSetGetResponseData contains the data from an IPSet get response.
|
||||||
type VirtualEnvironmentClusterIPSetGetResponseData struct {
|
type VirtualEnvironmentClusterIPSetGetResponseData struct {
|
||||||
CIDR string `json:"cidr" url:"cidr"`
|
CIDR string `json:"cidr" url:"cidr"`
|
||||||
NoMatch *CustomBool `json:"nomatch,omitempty" url:"nomatch,omitempty,int"`
|
NoMatch *CustomBool `json:"nomatch,omitempty" url:"nomatch,omitempty,int"`
|
||||||
Comment string `json:"comment,omitempty" url:"comment,omitempty"`
|
Comment string `json:"comment,omitempty" url:"comment,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// VirtualEnvironmentClusterIPSetUpdateRequestBody contains the data for an IPSet update request.
|
// VirtualEnvironmentClusterIPSetUpdateRequestBody contains the data for an IPSet update request.
|
||||||
type VirtualEnvironmentClusterIPSetUpdateRequestBody struct {
|
type VirtualEnvironmentClusterIPSetUpdateRequestBody struct {
|
||||||
ReName string `json:"rename,omitempty" url:"rename,omitempty"`
|
ReName string `json:"rename,omitempty" url:"rename,omitempty"`
|
||||||
Comment *string `json:"comment,omitempty" url:"comment,omitempty"`
|
Comment *string `json:"comment,omitempty" url:"comment,omitempty"`
|
||||||
Name string `json:"name" url:"name"`
|
Name string `json:"name" url:"name"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// VirtualEnvironmentClusterIPSetGetResponseData contains list of IPSets from
|
// VirtualEnvironmentClusterIPSetGetResponseData contains list of IPSets from
|
||||||
type VirtualEnvironmentClusterIPSetListResponseData struct {
|
type VirtualEnvironmentClusterIPSetListResponseData struct {
|
||||||
Comment *string `json:"comment,omitempty" url:"comment,omitempty"`
|
Comment *string `json:"comment,omitempty" url:"comment,omitempty"`
|
||||||
Name string `json:"name" url:"name"`
|
Name string `json:"name" url:"name"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// VirtualEnvironmentClusterIPSetContent is an array of VirtualEnvironmentClusterIPSetGetResponseData.
|
// VirtualEnvironmentClusterIPSetContent is an array of VirtualEnvironmentClusterIPSetGetResponseData.
|
||||||
|
@ -6,6 +6,7 @@ package proxmoxtf
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"sort"
|
||||||
|
|
||||||
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
|
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
|
||||||
)
|
)
|
||||||
@ -126,7 +127,9 @@ func dataSourceVirtualEnvironmentDatastoresRead(d *schema.ResourceData, m interf
|
|||||||
}
|
}
|
||||||
|
|
||||||
if v.ContentTypes != nil {
|
if v.ContentTypes != nil {
|
||||||
contentTypes[i] = []string(*v.ContentTypes)
|
contentTypeList := []string(*v.ContentTypes)
|
||||||
|
sort.Strings(contentTypeList)
|
||||||
|
contentTypes[i] = contentTypeList
|
||||||
} else {
|
} else {
|
||||||
contentTypes[i] = []string{}
|
contentTypes[i] = []string{}
|
||||||
}
|
}
|
||||||
|
@ -177,7 +177,7 @@ func resourceVirtualEnvironmentClusterIPSetRead(d *schema.ResourceData, m interf
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
for key, _ := range IPSet {
|
for key := range IPSet {
|
||||||
d.Set(mkResourceVirtualEnvironmentClusterIPSetCIDR, IPSet[key])
|
d.Set(mkResourceVirtualEnvironmentClusterIPSetCIDR, IPSet[key])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1395,8 +1395,7 @@ func resourceVirtualEnvironmentVMCreateClone(d *schema.ResourceData, m interface
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
allDiskInfo := getDiskInfo(vmConfig)
|
allDiskInfo := getDiskInfo(vmConfig, d)
|
||||||
|
|
||||||
diskDeviceObjects, err := resourceVirtualEnvironmentVMGetDiskDeviceObjects(d, m, nil)
|
diskDeviceObjects, err := resourceVirtualEnvironmentVMGetDiskDeviceObjects(d, m, nil)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -1404,7 +1403,6 @@ func resourceVirtualEnvironmentVMCreateClone(d *schema.ResourceData, m interface
|
|||||||
}
|
}
|
||||||
|
|
||||||
for i := range disk {
|
for i := range disk {
|
||||||
|
|
||||||
diskBlock := disk[i].(map[string]interface{})
|
diskBlock := disk[i].(map[string]interface{})
|
||||||
diskInterface := diskBlock[mkResourcevirtualEnvironmentVMDiskInterface].(string)
|
diskInterface := diskBlock[mkResourcevirtualEnvironmentVMDiskInterface].(string)
|
||||||
dataStoreID := diskBlock[mkResourceVirtualEnvironmentVMDiskDatastoreID].(string)
|
dataStoreID := diskBlock[mkResourceVirtualEnvironmentVMDiskDatastoreID].(string)
|
||||||
@ -1418,17 +1416,17 @@ func resourceVirtualEnvironmentVMCreateClone(d *schema.ResourceData, m interface
|
|||||||
switch prefix {
|
switch prefix {
|
||||||
case "virtio":
|
case "virtio":
|
||||||
if diskUpdateBody.VirtualIODevices == nil {
|
if diskUpdateBody.VirtualIODevices == nil {
|
||||||
diskUpdateBody.VirtualIODevices = make(proxmox.CustomStorageDevices)
|
diskUpdateBody.VirtualIODevices = proxmox.CustomStorageDevices{}
|
||||||
}
|
}
|
||||||
diskUpdateBody.VirtualIODevices[diskInterface] = diskDeviceObjects[prefix][diskInterface]
|
diskUpdateBody.VirtualIODevices[diskInterface] = diskDeviceObjects[prefix][diskInterface]
|
||||||
case "sata":
|
case "sata":
|
||||||
if diskUpdateBody.SATADevices == nil {
|
if diskUpdateBody.SATADevices == nil {
|
||||||
diskUpdateBody.SATADevices = make(proxmox.CustomStorageDevices)
|
diskUpdateBody.SATADevices = proxmox.CustomStorageDevices{}
|
||||||
}
|
}
|
||||||
diskUpdateBody.SATADevices[diskInterface] = diskDeviceObjects[prefix][diskInterface]
|
diskUpdateBody.SATADevices[diskInterface] = diskDeviceObjects[prefix][diskInterface]
|
||||||
case "scsi":
|
case "scsi":
|
||||||
if diskUpdateBody.SCSIDevices == nil {
|
if diskUpdateBody.SCSIDevices == nil {
|
||||||
diskUpdateBody.SCSIDevices = make(proxmox.CustomStorageDevices)
|
diskUpdateBody.SCSIDevices = proxmox.CustomStorageDevices{}
|
||||||
}
|
}
|
||||||
diskUpdateBody.SCSIDevices[diskInterface] = diskDeviceObjects[prefix][diskInterface]
|
diskUpdateBody.SCSIDevices[diskInterface] = diskDeviceObjects[prefix][diskInterface]
|
||||||
}
|
}
|
||||||
@ -1798,7 +1796,7 @@ func resourceVirtualEnvironmentVMCreateCustomDisks(d *schema.ResourceData, m int
|
|||||||
fileFormat, _ := block[mkResourceVirtualEnvironmentVMDiskFileFormat].(string)
|
fileFormat, _ := block[mkResourceVirtualEnvironmentVMDiskFileFormat].(string)
|
||||||
size, _ := block[mkResourceVirtualEnvironmentVMDiskSize].(int)
|
size, _ := block[mkResourceVirtualEnvironmentVMDiskSize].(int)
|
||||||
speed := block[mkResourceVirtualEnvironmentVMDiskSpeed].([]interface{})
|
speed := block[mkResourceVirtualEnvironmentVMDiskSpeed].([]interface{})
|
||||||
diskInterface,_ := block[mkResourcevirtualEnvironmentVMDiskInterface].(string)
|
diskInterface, _ := block[mkResourcevirtualEnvironmentVMDiskInterface].(string)
|
||||||
|
|
||||||
if len(speed) == 0 {
|
if len(speed) == 0 {
|
||||||
diskSpeedDefault, err := diskSpeedResource.DefaultValue()
|
diskSpeedDefault, err := diskSpeedResource.DefaultValue()
|
||||||
@ -2087,12 +2085,14 @@ func resourceVirtualEnvironmentVMGetCPUArchitectureValidator() schema.SchemaVali
|
|||||||
|
|
||||||
func resourceVirtualEnvironmentVMGetDiskDeviceObjects(d *schema.ResourceData, m interface{}, disks []interface{}) (map[string]map[string]proxmox.CustomStorageDevice, error) {
|
func resourceVirtualEnvironmentVMGetDiskDeviceObjects(d *schema.ResourceData, m interface{}, disks []interface{}) (map[string]map[string]proxmox.CustomStorageDevice, error) {
|
||||||
var diskDevice []interface{}
|
var diskDevice []interface{}
|
||||||
|
|
||||||
if disks != nil {
|
if disks != nil {
|
||||||
diskDevice = disks
|
diskDevice = disks
|
||||||
} else {
|
} else {
|
||||||
diskDevice = d.Get(mkResourceVirtualEnvironmentVMDisk).([]interface{})
|
diskDevice = d.Get(mkResourceVirtualEnvironmentVMDisk).([]interface{})
|
||||||
}
|
}
|
||||||
diskDeviceObjects := make(map[string]map[string]proxmox.CustomStorageDevice)
|
|
||||||
|
diskDeviceObjects := map[string]map[string]proxmox.CustomStorageDevice{}
|
||||||
resource := resourceVirtualEnvironmentVM()
|
resource := resourceVirtualEnvironmentVM()
|
||||||
|
|
||||||
for _, diskEntry := range diskDevice {
|
for _, diskEntry := range diskDevice {
|
||||||
@ -2156,7 +2156,7 @@ func resourceVirtualEnvironmentVMGetDiskDeviceObjects(d *schema.ResourceData, m
|
|||||||
}
|
}
|
||||||
|
|
||||||
if _, present := diskDeviceObjects[baseDiskInterface]; !present {
|
if _, present := diskDeviceObjects[baseDiskInterface]; !present {
|
||||||
diskDeviceObjects[baseDiskInterface] = make(map[string]proxmox.CustomStorageDevice)
|
diskDeviceObjects[baseDiskInterface] = map[string]proxmox.CustomStorageDevice{}
|
||||||
}
|
}
|
||||||
|
|
||||||
diskDeviceObjects[baseDiskInterface][diskInterface] = diskDevice
|
diskDeviceObjects[baseDiskInterface][diskInterface] = diskDevice
|
||||||
@ -2439,7 +2439,6 @@ func resourceVirtualEnvironmentVMReadCustom(d *schema.ResourceData, m interface{
|
|||||||
|
|
||||||
// Compare the IDE devices to the CDROM and cloud-init configurations stored in the state.
|
// Compare the IDE devices to the CDROM and cloud-init configurations stored in the state.
|
||||||
if vmConfig.IDEDevice3 != nil {
|
if vmConfig.IDEDevice3 != nil {
|
||||||
|
|
||||||
cdrom := make([]interface{}, 1)
|
cdrom := make([]interface{}, 1)
|
||||||
cdromBlock := map[string]interface{}{}
|
cdromBlock := map[string]interface{}{}
|
||||||
currentCDROM := d.Get(mkResourceVirtualEnvironmentVMCDROM).([]interface{})
|
currentCDROM := d.Get(mkResourceVirtualEnvironmentVMCDROM).([]interface{})
|
||||||
@ -2549,9 +2548,10 @@ func resourceVirtualEnvironmentVMReadCustom(d *schema.ResourceData, m interface{
|
|||||||
d.Set(mkResourceVirtualEnvironmentVMCPU, []interface{}{cpu})
|
d.Set(mkResourceVirtualEnvironmentVMCPU, []interface{}{cpu})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
currentDiskList := d.Get(mkResourceVirtualEnvironmentVMDisk).([]interface{})
|
||||||
diskMap := map[string]interface{}{}
|
diskMap := map[string]interface{}{}
|
||||||
|
diskObjects := getDiskInfo(vmConfig, d)
|
||||||
orderedDiskList := []interface{}{}
|
orderedDiskList := []interface{}{}
|
||||||
diskObjects := getDiskInfo(vmConfig)
|
|
||||||
|
|
||||||
for di, dd := range diskObjects {
|
for di, dd := range diskObjects {
|
||||||
disk := map[string]interface{}{}
|
disk := map[string]interface{}{}
|
||||||
@ -2564,12 +2564,16 @@ func resourceVirtualEnvironmentVMReadCustom(d *schema.ResourceData, m interface{
|
|||||||
|
|
||||||
disk[mkResourceVirtualEnvironmentVMDiskDatastoreID] = fileIDParts[0]
|
disk[mkResourceVirtualEnvironmentVMDiskDatastoreID] = fileIDParts[0]
|
||||||
|
|
||||||
disk[mkResourceVirtualEnvironmentVMDiskFileID] = dd.FileID
|
|
||||||
if dd.Format == nil {
|
if dd.Format == nil {
|
||||||
disk[mkResourceVirtualEnvironmentVMDiskFileFormat] = "qcow2"
|
disk[mkResourceVirtualEnvironmentVMDiskFileFormat] = "qcow2"
|
||||||
} else {
|
} else {
|
||||||
disk[mkResourceVirtualEnvironmentVMDiskFileFormat] = dd.Format
|
disk[mkResourceVirtualEnvironmentVMDiskFileFormat] = dd.Format
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if dd.FileID != nil {
|
||||||
|
disk[mkResourceVirtualEnvironmentVMDiskFileID] = dd.FileID
|
||||||
|
}
|
||||||
|
|
||||||
disk[mkResourcevirtualEnvironmentVMDiskInterface] = di
|
disk[mkResourcevirtualEnvironmentVMDiskInterface] = di
|
||||||
|
|
||||||
diskSize := 0
|
diskSize := 0
|
||||||
@ -2622,18 +2626,22 @@ func resourceVirtualEnvironmentVMReadCustom(d *schema.ResourceData, m interface{
|
|||||||
}
|
}
|
||||||
|
|
||||||
keyList := []string{}
|
keyList := []string{}
|
||||||
|
|
||||||
for key := range diskMap {
|
for key := range diskMap {
|
||||||
keyList = append(keyList, key)
|
keyList = append(keyList, key)
|
||||||
}
|
}
|
||||||
|
|
||||||
sort.Strings(keyList)
|
sort.Strings(keyList)
|
||||||
|
|
||||||
for _, k := range keyList {
|
for _, k := range keyList {
|
||||||
orderedDiskList = append(orderedDiskList, diskMap[k])
|
orderedDiskList = append(orderedDiskList, diskMap[k])
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(clone) > 0 {
|
if len(clone) > 0 {
|
||||||
if len(orderedDiskList) > 0 {
|
if len(currentDiskList) > 0 {
|
||||||
d.Set(mkResourceVirtualEnvironmentVMDisk, orderedDiskList)
|
d.Set(mkResourceVirtualEnvironmentVMDisk, orderedDiskList)
|
||||||
}
|
}
|
||||||
} else if len(orderedDiskList) > 0 {
|
} else if len(currentDiskList) > 0 {
|
||||||
d.Set(mkResourceVirtualEnvironmentVMDisk, orderedDiskList)
|
d.Set(mkResourceVirtualEnvironmentVMDisk, orderedDiskList)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3378,7 +3386,7 @@ func resourceVirtualEnvironmentVMUpdate(d *schema.ResourceData, m interface{}) e
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
diskDeviceInfo := getDiskInfo(vmConfig)
|
diskDeviceInfo := getDiskInfo(vmConfig, d)
|
||||||
|
|
||||||
for prefix, diskMap := range diskDeviceObjects {
|
for prefix, diskMap := range diskDeviceObjects {
|
||||||
if diskMap == nil {
|
if diskMap == nil {
|
||||||
@ -3400,27 +3408,30 @@ func resourceVirtualEnvironmentVMUpdate(d *schema.ResourceData, m interface{}) e
|
|||||||
case "virtio":
|
case "virtio":
|
||||||
{
|
{
|
||||||
if updateBody.VirtualIODevices == nil {
|
if updateBody.VirtualIODevices == nil {
|
||||||
updateBody.VirtualIODevices = make(proxmox.CustomStorageDevices)
|
updateBody.VirtualIODevices = proxmox.CustomStorageDevices{}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateBody.VirtualIODevices[key] = tmp
|
updateBody.VirtualIODevices[key] = tmp
|
||||||
}
|
}
|
||||||
case "sata":
|
case "sata":
|
||||||
{
|
{
|
||||||
if updateBody.SATADevices == nil {
|
if updateBody.SATADevices == nil {
|
||||||
updateBody.SATADevices = make(proxmox.CustomStorageDevices)
|
updateBody.SATADevices = proxmox.CustomStorageDevices{}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateBody.SATADevices[key] = tmp
|
updateBody.SATADevices[key] = tmp
|
||||||
}
|
}
|
||||||
case "scsi":
|
case "scsi":
|
||||||
{
|
{
|
||||||
if updateBody.SCSIDevices == nil {
|
if updateBody.SCSIDevices == nil {
|
||||||
updateBody.SCSIDevices = make(proxmox.CustomStorageDevices)
|
updateBody.SCSIDevices = proxmox.CustomStorageDevices{}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateBody.SCSIDevices[key] = tmp
|
updateBody.SCSIDevices[key] = tmp
|
||||||
}
|
}
|
||||||
case "ide":
|
case "ide":
|
||||||
{
|
{
|
||||||
//not sure right now
|
// Investigate whether to support IDE mapping.
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("Device prefix %s not supported", prefix)
|
return fmt.Errorf("Device prefix %s not supported", prefix)
|
||||||
@ -3618,11 +3629,13 @@ func resourceVirtualEnvironmentVMUpdateDiskLocationAndSize(d *schema.ResourceDat
|
|||||||
diskOld, diskNew := d.GetChange(mkResourceVirtualEnvironmentVMDisk)
|
diskOld, diskNew := d.GetChange(mkResourceVirtualEnvironmentVMDisk)
|
||||||
|
|
||||||
diskOldEntries, err := resourceVirtualEnvironmentVMGetDiskDeviceObjects(d, m, diskOld.([]interface{}))
|
diskOldEntries, err := resourceVirtualEnvironmentVMGetDiskDeviceObjects(d, m, diskOld.([]interface{}))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
diskNewEntries, err := resourceVirtualEnvironmentVMGetDiskDeviceObjects(d, m, diskNew.([]interface{}))
|
diskNewEntries, err := resourceVirtualEnvironmentVMGetDiskDeviceObjects(d, m, diskNew.([]interface{}))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -384,55 +384,74 @@ func getVMIDValidator() schema.SchemaValidateFunc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getDiskInfo(data *proxmox.VirtualEnvironmentVMGetResponseData) map[string]*proxmox.CustomStorageDevice {
|
func getDiskInfo(vm *proxmox.VirtualEnvironmentVMGetResponseData, d *schema.ResourceData) map[string]*proxmox.CustomStorageDevice {
|
||||||
storageDevices := make(map[string]*proxmox.CustomStorageDevice)
|
currentDisk := d.Get(mkResourceVirtualEnvironmentVMDisk)
|
||||||
storageDevices["ide0"] = data.IDEDevice0
|
|
||||||
storageDevices["ide1"] = data.IDEDevice1
|
|
||||||
storageDevices["ide2"] = data.IDEDevice2
|
|
||||||
|
|
||||||
storageDevices["sata0"] = data.SATADevice0
|
currentDiskList := currentDisk.([]interface{})
|
||||||
storageDevices["sata1"] = data.SATADevice1
|
currentDiskMap := map[string]map[string]interface{}{}
|
||||||
storageDevices["sata2"] = data.SATADevice2
|
|
||||||
storageDevices["sata3"] = data.SATADevice3
|
|
||||||
storageDevices["sata4"] = data.SATADevice4
|
|
||||||
storageDevices["sata5"] = data.SATADevice5
|
|
||||||
|
|
||||||
storageDevices["scsi0"] = data.SCSIDevice0
|
for _, v := range currentDiskList {
|
||||||
storageDevices["scsi1"] = data.SCSIDevice1
|
diskMap := v.(map[string]interface{})
|
||||||
storageDevices["scsi2"] = data.SCSIDevice2
|
diskInterface := diskMap[mkResourcevirtualEnvironmentVMDiskInterface].(string)
|
||||||
storageDevices["scsi3"] = data.SCSIDevice3
|
|
||||||
storageDevices["scsi4"] = data.SCSIDevice4
|
|
||||||
storageDevices["scsi5"] = data.SCSIDevice5
|
|
||||||
storageDevices["scsi6"] = data.SCSIDevice6
|
|
||||||
storageDevices["scsi7"] = data.SCSIDevice7
|
|
||||||
storageDevices["scsi8"] = data.SCSIDevice8
|
|
||||||
storageDevices["scsi9"] = data.SCSIDevice9
|
|
||||||
storageDevices["scsi10"] = data.SCSIDevice10
|
|
||||||
storageDevices["scsi11"] = data.SCSIDevice11
|
|
||||||
storageDevices["scsi12"] = data.SCSIDevice12
|
|
||||||
storageDevices["scsi13"] = data.SCSIDevice13
|
|
||||||
|
|
||||||
storageDevices["virtio0"] = data.VirtualIODevice0
|
currentDiskMap[diskInterface] = diskMap
|
||||||
storageDevices["virtio1"] = data.VirtualIODevice1
|
}
|
||||||
storageDevices["virtio2"] = data.VirtualIODevice2
|
|
||||||
storageDevices["virtio3"] = data.VirtualIODevice3
|
|
||||||
storageDevices["virtio4"] = data.VirtualIODevice4
|
|
||||||
storageDevices["virtio5"] = data.VirtualIODevice5
|
|
||||||
storageDevices["virtio6"] = data.VirtualIODevice6
|
|
||||||
storageDevices["virtio7"] = data.VirtualIODevice7
|
|
||||||
storageDevices["virtio8"] = data.VirtualIODevice8
|
|
||||||
storageDevices["virtio9"] = data.VirtualIODevice9
|
|
||||||
storageDevices["virtio10"] = data.VirtualIODevice10
|
|
||||||
storageDevices["virtio11"] = data.VirtualIODevice11
|
|
||||||
storageDevices["virtio12"] = data.VirtualIODevice12
|
|
||||||
storageDevices["virtio13"] = data.VirtualIODevice13
|
|
||||||
storageDevices["virtio14"] = data.VirtualIODevice14
|
|
||||||
storageDevices["virtio15"] = data.VirtualIODevice15
|
|
||||||
|
|
||||||
for key, value := range storageDevices {
|
storageDevices := map[string]*proxmox.CustomStorageDevice{}
|
||||||
if value != nil {
|
|
||||||
tmpKey := key
|
storageDevices["ide0"] = vm.IDEDevice0
|
||||||
value.Interface = &tmpKey
|
storageDevices["ide1"] = vm.IDEDevice1
|
||||||
|
storageDevices["ide2"] = vm.IDEDevice2
|
||||||
|
|
||||||
|
storageDevices["sata0"] = vm.SATADevice0
|
||||||
|
storageDevices["sata1"] = vm.SATADevice1
|
||||||
|
storageDevices["sata2"] = vm.SATADevice2
|
||||||
|
storageDevices["sata3"] = vm.SATADevice3
|
||||||
|
storageDevices["sata4"] = vm.SATADevice4
|
||||||
|
storageDevices["sata5"] = vm.SATADevice5
|
||||||
|
|
||||||
|
storageDevices["scsi0"] = vm.SCSIDevice0
|
||||||
|
storageDevices["scsi1"] = vm.SCSIDevice1
|
||||||
|
storageDevices["scsi2"] = vm.SCSIDevice2
|
||||||
|
storageDevices["scsi3"] = vm.SCSIDevice3
|
||||||
|
storageDevices["scsi4"] = vm.SCSIDevice4
|
||||||
|
storageDevices["scsi5"] = vm.SCSIDevice5
|
||||||
|
storageDevices["scsi6"] = vm.SCSIDevice6
|
||||||
|
storageDevices["scsi7"] = vm.SCSIDevice7
|
||||||
|
storageDevices["scsi8"] = vm.SCSIDevice8
|
||||||
|
storageDevices["scsi9"] = vm.SCSIDevice9
|
||||||
|
storageDevices["scsi10"] = vm.SCSIDevice10
|
||||||
|
storageDevices["scsi11"] = vm.SCSIDevice11
|
||||||
|
storageDevices["scsi12"] = vm.SCSIDevice12
|
||||||
|
storageDevices["scsi13"] = vm.SCSIDevice13
|
||||||
|
|
||||||
|
storageDevices["virtio0"] = vm.VirtualIODevice0
|
||||||
|
storageDevices["virtio1"] = vm.VirtualIODevice1
|
||||||
|
storageDevices["virtio2"] = vm.VirtualIODevice2
|
||||||
|
storageDevices["virtio3"] = vm.VirtualIODevice3
|
||||||
|
storageDevices["virtio4"] = vm.VirtualIODevice4
|
||||||
|
storageDevices["virtio5"] = vm.VirtualIODevice5
|
||||||
|
storageDevices["virtio6"] = vm.VirtualIODevice6
|
||||||
|
storageDevices["virtio7"] = vm.VirtualIODevice7
|
||||||
|
storageDevices["virtio8"] = vm.VirtualIODevice8
|
||||||
|
storageDevices["virtio9"] = vm.VirtualIODevice9
|
||||||
|
storageDevices["virtio10"] = vm.VirtualIODevice10
|
||||||
|
storageDevices["virtio11"] = vm.VirtualIODevice11
|
||||||
|
storageDevices["virtio12"] = vm.VirtualIODevice12
|
||||||
|
storageDevices["virtio13"] = vm.VirtualIODevice13
|
||||||
|
storageDevices["virtio14"] = vm.VirtualIODevice14
|
||||||
|
storageDevices["virtio15"] = vm.VirtualIODevice15
|
||||||
|
|
||||||
|
for k, v := range storageDevices {
|
||||||
|
if v != nil {
|
||||||
|
if currentDiskMap[k] != nil {
|
||||||
|
if currentDiskMap[k][mkResourceVirtualEnvironmentVMDiskFileID] != nil {
|
||||||
|
fileID := currentDiskMap[k][mkResourceVirtualEnvironmentVMDiskFileID].(string)
|
||||||
|
v.FileID = &fileID
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
v.Interface = &k
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user