Skip to content

Commit

Permalink
Allow non user-configurable properties in VM deployment
Browse files Browse the repository at this point in the history
Currently, VM operator ignores any vApp properties that are not user
configurable when patching with values specified in the bootstrap
resources (VM metadata ConfigMap/Secret). There are some valid
use-cases where users might want to patch hidden properties defined in
an image. This change fixes this behavior.

Fixes #181.
  • Loading branch information
aruneshpa committed Sep 7, 2023
1 parent a95f788 commit cdeec0c
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 17 deletions.
5 changes: 1 addition & 4 deletions pkg/vmprovider/providers/vsphere/session/session_util.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,8 @@ func MergeExtraConfig(extraConfig []vimTypes.BaseOptionValue, newMap map[string]
func GetMergedvAppConfigSpec(inProps map[string]string, vmProps []vimTypes.VAppPropertyInfo) *vimTypes.VmConfigSpec {
outProps := make([]vimTypes.VAppPropertySpec, 0)

// Update any vApp properties if they have been specified in VM metadata.
for _, vmProp := range vmProps {
if vmProp.UserConfigurable == nil || !*vmProp.UserConfigurable {
continue
}

inPropValue, found := inProps[vmProp.Id]
if !found || vmProp.Value == inPropValue {
continue
Expand Down
18 changes: 5 additions & 13 deletions pkg/vmprovider/providers/vsphere/session/session_util_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,26 +41,16 @@ var _ = Describe("Test Session Utils", func() {
[]vimTypes.VAppPropertyInfo{},
nil,
),
Entry("return nil for non UserConfigurable vm props",
map[string]string{
"one-id": "one-override-value",
"two-id": "two-override-value",
},
[]vimTypes.VAppPropertyInfo{
{Key: 1, Id: "one-id", Value: "one-value"},
{Key: 2, Id: "two-id", Value: "two-value", UserConfigurable: &falseVar},
},
nil,
),
Entry("return nil for UserConfigurable vm props but no input props",
Entry("return nil for vm props but no input props",
map[string]string{},
[]vimTypes.VAppPropertyInfo{
{Key: 1, Id: "one-id", Value: "one-value"},
{Key: 2, Id: "two-id", Value: "two-value", UserConfigurable: &trueVar},
{Key: 2, Id: "three-id", Value: "three-value", UserConfigurable: &falseVar},
},
nil,
),
Entry("return valid vAppConfigSpec for setting mixed UserConfigurable props",
Entry("return valid vAppConfigSpec for setting mixed props",
map[string]string{
"one-id": "one-override-value",
"two-id": "two-override-value",
Expand All @@ -73,7 +63,9 @@ var _ = Describe("Test Session Utils", func() {
},
&vimTypes.VmConfigSpec{
Property: []vimTypes.VAppPropertySpec{
{Info: &vimTypes.VAppPropertyInfo{Key: 1, Id: "one-id", Value: "one-override-value"}},
{Info: &vimTypes.VAppPropertyInfo{Key: 2, Id: "two-id", Value: "two-override-value"}},
{Info: &vimTypes.VAppPropertyInfo{Key: 3, Id: "three-id", Value: "three-override-value"}},
},
},
),
Expand Down

0 comments on commit cdeec0c

Please sign in to comment.