From 646429e40f905e62c6656c9f75b7ea7d994cc77c Mon Sep 17 00:00:00 2001 From: Janos Bonic <86970079+janosdebugs@users.noreply.github.com> Date: Tue, 24 May 2022 17:51:01 +0200 Subject: [PATCH] Adding ballooning support --- vm.go | 29 +++++++++++++++++++++++++++++ vm_create.go | 12 ++++++++++++ 2 files changed, 41 insertions(+) diff --git a/vm.go b/vm.go index 86d7daf..6d2b46c 100644 --- a/vm.go +++ b/vm.go @@ -1120,6 +1120,7 @@ func (v vmPlacementPolicyParameters) MustWithHostIDs(hostIDs []HostID) Buildable type MemoryPolicyParameters interface { Guaranteed() *int64 Max() *int64 + Ballooning() *bool } // BuildableMemoryPolicyParameters is a buildable version of MemoryPolicyParameters. @@ -1131,6 +1132,9 @@ type BuildableMemoryPolicyParameters interface { WithMax(max int64) (BuildableMemoryPolicyParameters, error) MustWithMax(max int64) BuildableMemoryPolicyParameters + + WithBallooning(ballooning bool) (BuildableMemoryPolicyParameters, error) + MustWithBallooning(ballooning bool) BuildableMemoryPolicyParameters } // NewMemoryPolicyParameters creates a new instance of BuildableMemoryPolicyParameters. @@ -1141,6 +1145,24 @@ func NewMemoryPolicyParameters() BuildableMemoryPolicyParameters { type memoryPolicyParameters struct { guaranteed *int64 max *int64 + ballooning *bool +} + +func (m *memoryPolicyParameters) Ballooning() *bool { + return m.ballooning +} + +func (m *memoryPolicyParameters) WithBallooning(ballooning bool) (BuildableMemoryPolicyParameters, error) { + m.ballooning = &ballooning + return m, nil +} + +func (m *memoryPolicyParameters) MustWithBallooning(ballooning bool) BuildableMemoryPolicyParameters { + builder, err := m.WithBallooning(ballooning) + if err != nil { + panic(err) + } + return builder } func (m *memoryPolicyParameters) MustWithGuaranteed(guaranteed int64) BuildableMemoryPolicyParameters { @@ -1188,6 +1210,7 @@ type MemoryPolicy interface { type memoryPolicy struct { guaranteed *int64 max *int64 + ballooning *bool } func (m memoryPolicy) Max() *int64 { @@ -2093,6 +2116,12 @@ func vmMemoryPolicyConverter(object *ovirtsdk.Vm, v *vm) error { } resultMemPolicy.guaranteed = &guaranteed } + if max, ok := memPolicy.Max(); ok { + resultMemPolicy.max = &max + } + if ballooning, ok := memPolicy.Ballooning(); ok { + resultMemPolicy.ballooning = &ballooning + } v.memoryPolicy = resultMemPolicy } return nil diff --git a/vm_create.go b/vm_create.go index 78f2675..b0bc9dc 100644 --- a/vm_create.go +++ b/vm_create.go @@ -226,6 +226,9 @@ func vmBuilderMemoryPolicy(params OptionalVMParameters, builder *ovirtsdk.VmBuil if max := (*memPolicyParams).Max(); max != nil { memoryPolicyBuilder.Max(*max) } + if ballooning := (*memPolicyParams).Ballooning(); ballooning != nil { + memoryPolicyBuilder.Ballooning(*ballooning) + } builder.MemoryPolicyBuilder(memoryPolicyBuilder) } } @@ -418,14 +421,23 @@ func (m *mockClient) createVMMemoryPolicy(params OptionalVMParameters) *memoryPo if guaranteedMemory := (*memoryPolicyParams).Guaranteed(); guaranteedMemory != nil { guaranteed = guaranteedMemory } + var max *int64 if maxMemory := (*memoryPolicyParams).Max(); maxMemory != nil { max = maxMemory } + + var ballooning *bool + if memBallooning := (*memoryPolicyParams).Ballooning(); memBallooning != nil { + ballooning = memBallooning + } + memPolicy = &memoryPolicy{ guaranteed, max, + ballooning, } + } return memPolicy }