mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-07-04 04:22:59 +00:00
fix(vm): fix index out of range when unmarshalling custompcidevice (#496)
* fix(vm): fix index out of range when unmarshalling custompcidevice * fix: linter errors --------- Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
This commit is contained in:
parent
404ac66628
commit
78d668377f
@ -1606,7 +1606,7 @@ func (r *CustomPCIDevice) UnmarshalJSON(b []byte) error {
|
|||||||
for _, p := range pairs {
|
for _, p := range pairs {
|
||||||
v := strings.Split(strings.TrimSpace(p), "=")
|
v := strings.Split(strings.TrimSpace(p), "=")
|
||||||
if len(v) == 1 {
|
if len(v) == 1 {
|
||||||
r.DeviceIDs = strings.Split(v[1], ";")
|
r.DeviceIDs = strings.Split(v[0], ";")
|
||||||
} else if len(v) == 2 {
|
} else if len(v) == 2 {
|
||||||
switch v[0] {
|
switch v[0] {
|
||||||
case "host":
|
case "host":
|
||||||
|
@ -15,6 +15,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestCustomStorageDevice_UnmarshalJSON(t *testing.T) {
|
func TestCustomStorageDevice_UnmarshalJSON(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
ds8gig := types.DiskSizeFromGigabytes(8)
|
ds8gig := types.DiskSizeFromGigabytes(8)
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
@ -49,8 +51,11 @@ func TestCustomStorageDevice_UnmarshalJSON(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
|
tt := tt
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
r := &CustomStorageDevice{}
|
r := &CustomStorageDevice{}
|
||||||
if err := r.UnmarshalJSON([]byte(tt.line)); (err != nil) != tt.wantErr {
|
if err := r.UnmarshalJSON([]byte(tt.line)); (err != nil) != tt.wantErr {
|
||||||
t.Errorf("UnmarshalJSON() error = %v, wantErr %v", err, tt.wantErr)
|
t.Errorf("UnmarshalJSON() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
@ -59,3 +64,50 @@ func TestCustomStorageDevice_UnmarshalJSON(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCustomPCIDevice_UnmarshalJSON(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
line string
|
||||||
|
want *CustomPCIDevice
|
||||||
|
wantErr bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "id only pci device",
|
||||||
|
line: `"0000:81:00.2"`,
|
||||||
|
want: &CustomPCIDevice{
|
||||||
|
DeviceIDs: []string{"0000:81:00.2"},
|
||||||
|
MDev: nil,
|
||||||
|
PCIExpress: types.BoolPtr(false),
|
||||||
|
ROMBAR: types.BoolPtr(true),
|
||||||
|
ROMFile: nil,
|
||||||
|
XVGA: types.BoolPtr(false),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "pci device with more details",
|
||||||
|
line: `"host=81:00.4,pcie=0,rombar=1,x-vga=0"`,
|
||||||
|
want: &CustomPCIDevice{
|
||||||
|
DeviceIDs: []string{"81:00.4"},
|
||||||
|
MDev: nil,
|
||||||
|
PCIExpress: types.BoolPtr(false),
|
||||||
|
ROMBAR: types.BoolPtr(true),
|
||||||
|
ROMFile: nil,
|
||||||
|
XVGA: types.BoolPtr(false),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
tt := tt
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
r := &CustomPCIDevice{}
|
||||||
|
if err := r.UnmarshalJSON([]byte(tt.line)); (err != nil) != tt.wantErr {
|
||||||
|
t.Errorf("UnmarshalJSON() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user