Skip to content

Commit

Permalink
Merge pull request #170 from mayankshah1607/mtsre-486
Browse files Browse the repository at this point in the history
MTSRE-486: Skip `.spec.install.config.env` while validating Addon immutability
  • Loading branch information
openshift-merge-robot authored Apr 1, 2022
2 parents c41718f + 346afa0 commit 352c643
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 1 deletion.
4 changes: 4 additions & 0 deletions internal/webhooks/validate.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,17 +64,21 @@ func validateAddonImmutability(addon, oldAddon *addonsv1alpha1.Addon) error {
oldSpecInstall := oldAddon.Spec.Install.DeepCopy()
if oldSpecInstall.OLMAllNamespaces != nil {
oldSpecInstall.OLMAllNamespaces.CatalogSourceImage = ""
oldSpecInstall.OLMAllNamespaces.Config = nil
}
if oldSpecInstall.OLMOwnNamespace != nil {
oldSpecInstall.OLMOwnNamespace.CatalogSourceImage = ""
oldSpecInstall.OLMOwnNamespace.Config = nil
}

specInstall := addon.Spec.Install.DeepCopy()
if specInstall.OLMAllNamespaces != nil {
specInstall.OLMAllNamespaces.CatalogSourceImage = ""
specInstall.OLMAllNamespaces.Config = nil
}
if specInstall.OLMOwnNamespace != nil {
specInstall.OLMOwnNamespace.CatalogSourceImage = ""
specInstall.OLMOwnNamespace.Config = nil
}

// Do semantic DeepEqual instead of reflect.DeepEqual
Expand Down
75 changes: 74 additions & 1 deletion internal/webhooks/webhook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,15 +78,38 @@ func TestValidateAddonInstallImmutability(t *testing.T) {
},
}, addonName)

baseAddon_withEnv := testutil.NewAddonWithInstallSpec(addonsv1alpha1.AddonInstallSpec{
Type: addonsv1alpha1.OLMAllNamespaces,
OLMAllNamespaces: &addonsv1alpha1.AddonInstallOLMAllNamespaces{
AddonInstallOLMCommon: addonsv1alpha1.AddonInstallOLMCommon{
Namespace: "reference-addon",
PackageName: addonName,
Channel: "alpha",
CatalogSourceImage: catalogSource,
Config: &addonsv1alpha1.SubscriptionConfig{
EnvironmentVariables: []addonsv1alpha1.EnvObject{
{
Name: "key-1",
Value: "value-1",
},
},
},
},
},
}, addonName)

testCases := []struct {
baseAddon *addonsv1alpha1.Addon
updatedAddon *addonsv1alpha1.Addon
expectedErr error
}{
{
baseAddon: baseAddon,
updatedAddon: baseAddon,
expectedErr: nil,
},
{
baseAddon: baseAddon,
updatedAddon: testutil.NewAddonWithInstallSpec(addonsv1alpha1.AddonInstallSpec{
Type: addonsv1alpha1.OLMAllNamespaces,
OLMAllNamespaces: &addonsv1alpha1.AddonInstallOLMAllNamespaces{
Expand All @@ -101,6 +124,7 @@ func TestValidateAddonInstallImmutability(t *testing.T) {
expectedErr: errInstallImmutable,
},
{
baseAddon: baseAddon,
updatedAddon: testutil.NewAddonWithInstallSpec(addonsv1alpha1.AddonInstallSpec{
Type: addonsv1alpha1.OLMAllNamespaces,
OLMAllNamespaces: &addonsv1alpha1.AddonInstallOLMAllNamespaces{
Expand All @@ -115,15 +139,64 @@ func TestValidateAddonInstallImmutability(t *testing.T) {
expectedErr: nil,
},
{
baseAddon: baseAddon,
updatedAddon: testutil.NewAddonWithInstallSpec(addonsv1alpha1.AddonInstallSpec{
Type: addonsv1alpha1.OLMOwnNamespace,
}, addonName),
expectedErr: errInstallTypeImmutable,
},
{
baseAddon: baseAddon,
updatedAddon: testutil.NewAddonWithInstallSpec(addonsv1alpha1.AddonInstallSpec{
Type: addonsv1alpha1.OLMAllNamespaces,
OLMAllNamespaces: &addonsv1alpha1.AddonInstallOLMAllNamespaces{
AddonInstallOLMCommon: addonsv1alpha1.AddonInstallOLMCommon{
Namespace: "reference-addon",
PackageName: addonName,
Channel: "alpha",
CatalogSourceImage: catalogSource,
// changed (added)
Config: &addonsv1alpha1.SubscriptionConfig{
EnvironmentVariables: []addonsv1alpha1.EnvObject{
{
Name: "key1",
Value: "value1",
},
},
},
},
},
}, addonName),
expectedErr: nil,
},
{
baseAddon: baseAddon_withEnv,
updatedAddon: testutil.NewAddonWithInstallSpec(addonsv1alpha1.AddonInstallSpec{
Type: addonsv1alpha1.OLMAllNamespaces,
OLMAllNamespaces: &addonsv1alpha1.AddonInstallOLMAllNamespaces{
AddonInstallOLMCommon: addonsv1alpha1.AddonInstallOLMCommon{
Namespace: "reference-addon",
PackageName: addonName,
Channel: "alpha",
CatalogSourceImage: catalogSource,
// changed
Config: &addonsv1alpha1.SubscriptionConfig{
EnvironmentVariables: []addonsv1alpha1.EnvObject{
{
Name: "key-2",
Value: "value-2",
},
},
},
},
},
}, addonName),
expectedErr: nil,
},
}

for _, tc := range testCases {
err := validateAddonImmutability(tc.updatedAddon, baseAddon)
err := validateAddonImmutability(tc.updatedAddon, tc.baseAddon)
assert.EqualValues(t, tc.expectedErr, err)
}
}

0 comments on commit 352c643

Please sign in to comment.