0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-06-30 18:42:58 +00:00

fix(provider): maxint for storage and vms (#694)

* fix(provider): use int64 for vm and disk storage

Signed-off-by: DanielHabenicht <daniel-habenicht@outlook.de>

* revert changes for memory

Signed-off-by: DanielHabenicht <daniel-habenicht@outlook.de>

* revert changes for memory

Signed-off-by: DanielHabenicht <daniel-habenicht@outlook.de>

* fix test

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>

* fix int -> int64 conversion for disk size

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>

---------

Signed-off-by: DanielHabenicht <daniel-habenicht@outlook.de>
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
This commit is contained in:
DanielHabenicht 2023-11-12 18:17:35 +01:00 committed by GitHub
parent 74ddd82550
commit 5fe6892724
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 17 additions and 21 deletions

View File

@ -37,13 +37,13 @@ type ResourcesListResponseData struct {
CgroupMode int `json:"cgroup-mode,omitempty"` CgroupMode int `json:"cgroup-mode,omitempty"`
Content int `json:"content,omitempty"` Content int `json:"content,omitempty"`
CPU float64 `json:"cpu,omitempty"` CPU float64 `json:"cpu,omitempty"`
Disk int `json:"disk,omitempty"` Disk int64 `json:"disk,omitempty"`
HaState string `json:"hastate,omitempty"` HaState string `json:"hastate,omitempty"`
Level string `json:"level,omitempty"` Level string `json:"level,omitempty"`
MaxCPU float64 `json:"maxcpu,omitempty"` MaxCPU float64 `json:"maxcpu,omitempty"`
MaxDisk int `json:"maxdisk,omitempty"` MaxDisk int64 `json:"maxdisk,omitempty"`
MaxMem int `json:"maxmem,omitempty"` MaxMem int64 `json:"maxmem,omitempty"`
Mem int `json:"mem,omitempty"` Mem int64 `json:"mem,omitempty"`
Name string `json:"name,omitempty"` Name string `json:"name,omitempty"`
NodeName string `json:"node,omitempty"` NodeName string `json:"node,omitempty"`
PluginType string `json:"plugintype,omitempty"` PluginType string `json:"plugintype,omitempty"`

View File

@ -184,7 +184,6 @@ type CustomStorageDevice struct {
Interface *string Interface *string
ID *string ID *string
FileID *string FileID *string
SizeInt *int
} }
// PathInDatastore returns path part of FileVolume or nil if it is not yet allocated. // PathInDatastore returns path part of FileVolume or nil if it is not yet allocated.
@ -433,11 +432,11 @@ type GetResponseData struct {
CPULimit *types.CustomInt `json:"cpulimit,omitempty"` CPULimit *types.CustomInt `json:"cpulimit,omitempty"`
CPUSockets *int `json:"sockets,omitempty"` CPUSockets *int `json:"sockets,omitempty"`
CPUUnits *int `json:"cpuunits,omitempty"` CPUUnits *int `json:"cpuunits,omitempty"`
DedicatedMemory *int `json:"memory,omitempty"` DedicatedMemory *int64 `json:"memory,omitempty"`
DeletionProtection *types.CustomBool `json:"protection,omitempty"` DeletionProtection *types.CustomBool `json:"protection,omitempty"`
Description *string `json:"description,omitempty"` Description *string `json:"description,omitempty"`
EFIDisk *CustomEFIDisk `json:"efidisk0,omitempty"` EFIDisk *CustomEFIDisk `json:"efidisk0,omitempty"`
FloatingMemory *int `json:"balloon,omitempty"` FloatingMemory *int64 `json:"balloon,omitempty"`
FloatingMemoryShares *int `json:"shares,omitempty"` FloatingMemoryShares *int `json:"shares,omitempty"`
Freeze *types.CustomBool `json:"freeze,omitempty"` Freeze *types.CustomBool `json:"freeze,omitempty"`
HookScript *string `json:"hookscript,omitempty"` HookScript *string `json:"hookscript,omitempty"`
@ -555,11 +554,11 @@ type GetStatusResponseData struct {
AgentEnabled *types.CustomBool `json:"agent,omitempty"` AgentEnabled *types.CustomBool `json:"agent,omitempty"`
CPUCount *float64 `json:"cpus,omitempty"` CPUCount *float64 `json:"cpus,omitempty"`
Lock *string `json:"lock,omitempty"` Lock *string `json:"lock,omitempty"`
MemoryAllocation *int `json:"maxmem,omitempty"` MemoryAllocation *int64 `json:"maxmem,omitempty"`
Name *string `json:"name,omitempty"` Name *string `json:"name,omitempty"`
PID *int `json:"pid,omitempty"` PID *int `json:"pid,omitempty"`
QMPStatus *string `json:"qmpstatus,omitempty"` QMPStatus *string `json:"qmpstatus,omitempty"`
RootDiskSize *int `json:"maxdisk,omitempty"` RootDiskSize *int64 `json:"maxdisk,omitempty"`
SpiceSupport *types.CustomBool `json:"spice,omitempty"` SpiceSupport *types.CustomBool `json:"spice,omitempty"`
Status string `json:"status,omitempty"` Status string `json:"status,omitempty"`
Tags *string `json:"tags,omitempty"` Tags *string `json:"tags,omitempty"`

View File

@ -28,17 +28,17 @@ func (r DiskSize) String() string {
} }
// InMegabytes returns the disk size in megabytes. // InMegabytes returns the disk size in megabytes.
func (r DiskSize) InMegabytes() int { func (r DiskSize) InMegabytes() int64 {
return int(int64(r) / 1024 / 1024) return int64(r) / 1024 / 1024
} }
// InGigabytes returns the disk size in gigabytes. // InGigabytes returns the disk size in gigabytes.
func (r DiskSize) InGigabytes() int { func (r DiskSize) InGigabytes() int64 {
return int(int64(r) / 1024 / 1024 / 1024) return int64(r) / 1024 / 1024 / 1024
} }
// DiskSizeFromGigabytes creates a DiskSize from gigabytes. // DiskSizeFromGigabytes creates a DiskSize from gigabytes.
func DiskSizeFromGigabytes(size int) DiskSize { func DiskSizeFromGigabytes(size int64) DiskSize {
return DiskSize(size * 1024 * 1024 * 1024) return DiskSize(size * 1024 * 1024 * 1024)
} }

View File

@ -84,7 +84,7 @@ func TestToFromGigabytes(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
size int size int64
want string want string
}{ }{
{"handle 0 size", 0, "0"}, {"handle 0 size", 0, "0"},

View File

@ -2154,7 +2154,7 @@ func vmCreateClone(ctx context.Context, d *schema.ResourceData, m interface{}) d
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)
diskSize := diskBlock[mkResourceVirtualEnvironmentVMDiskSize].(int) diskSize := int64(diskBlock[mkResourceVirtualEnvironmentVMDiskSize].(int))
prefix := diskDigitPrefix(diskInterface) prefix := diskDigitPrefix(diskInterface)
currentDiskInfo := allDiskInfo[diskInterface] currentDiskInfo := allDiskInfo[diskInterface]
@ -3120,9 +3120,8 @@ func vmGetDiskDeviceObjects(
diskDevice.Interface = &diskInterface diskDevice.Interface = &diskInterface
diskDevice.Format = &fileFormat diskDevice.Format = &fileFormat
diskDevice.FileID = &fileID diskDevice.FileID = &fileID
diskSize := types.DiskSizeFromGigabytes(size) diskSize := types.DiskSizeFromGigabytes(int64(size))
diskDevice.Size = &diskSize diskDevice.Size = &diskSize
diskDevice.SizeInt = &size
diskDevice.IOThread = &ioThread diskDevice.IOThread = &ioThread
diskDevice.Discard = &discard diskDevice.Discard = &discard
diskDevice.Cache = &cache diskDevice.Cache = &cache
@ -3229,9 +3228,7 @@ func vmGetEfiDiskAsStorageDevice(d *schema.ResourceData, disk []interface{}) (*v
return nil, fmt.Errorf("invalid efi disk type: %s", err.Error()) return nil, fmt.Errorf("invalid efi disk type: %s", err.Error())
} }
sizeInt := ds.InMegabytes()
storageDevice.Size = &ds storageDevice.Size = &ds
storageDevice.SizeInt = &sizeInt
} }
} }
@ -5790,7 +5787,7 @@ func vmUpdateDiskLocationAndSize(
} }
} }
if *oldDisk.SizeInt < *diskNewEntries[prefix][oldKey].SizeInt { if *oldDisk.Size < *diskNewEntries[prefix][oldKey].Size {
if oldDisk.IsOwnedBy(vmID) { if oldDisk.IsOwnedBy(vmID) {
diskResizeBodies = append( diskResizeBodies = append(
diskResizeBodies, diskResizeBodies,