Skip to content

Commit a476dc0

Browse files
test/e2e: add management label to internal resources in tests
Signed-off-by: Steve Kuznetsov <[email protected]>
1 parent 69d0fa3 commit a476dc0

File tree

2 files changed

+63
-16
lines changed

2 files changed

+63
-16
lines changed

test/e2e/operator_groups_e2e_test.go

+30-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package e2e
33
import (
44
"context"
55
"fmt"
6+
"os"
67
"strings"
78
"time"
89

@@ -1420,19 +1421,31 @@ var _ = Describe("Operator Group", func() {
14201421
Name: role.GetName(),
14211422
},
14221423
}
1423-
_, err = c.CreateServiceAccount(serviceAccount)
1424+
serviceAccount, err = c.CreateServiceAccount(serviceAccount)
14241425
require.NoError(GinkgoT(), err)
14251426
defer func() {
1427+
if env := os.Getenv("SKIP_CLEANUP"); env != "" {
1428+
fmt.Printf("Skipping cleanup of serviceaccount %s/%s...\n", serviceAccount.GetNamespace(), serviceAccount.GetName())
1429+
return
1430+
}
14261431
c.DeleteServiceAccount(serviceAccount.GetNamespace(), serviceAccount.GetName(), metav1.NewDeleteOptions(0))
14271432
}()
14281433
createdRole, err := c.CreateRole(role)
14291434
require.NoError(GinkgoT(), err)
14301435
defer func() {
1436+
if env := os.Getenv("SKIP_CLEANUP"); env != "" {
1437+
fmt.Printf("Skipping cleanup of role %s/%s...\n", role.GetNamespace(), role.GetName())
1438+
return
1439+
}
14311440
c.DeleteRole(role.GetNamespace(), role.GetName(), metav1.NewDeleteOptions(0))
14321441
}()
14331442
createdRoleBinding, err := c.CreateRoleBinding(roleBinding)
14341443
require.NoError(GinkgoT(), err)
14351444
defer func() {
1445+
if env := os.Getenv("SKIP_CLEANUP"); env != "" {
1446+
fmt.Printf("Skipping cleanup of role binding %s/%s...\n", roleBinding.GetNamespace(), roleBinding.GetName())
1447+
return
1448+
}
14361449
c.DeleteRoleBinding(roleBinding.GetNamespace(), roleBinding.GetName(), metav1.NewDeleteOptions(0))
14371450
}()
14381451
// Create a new NamedInstallStrategy
@@ -1448,11 +1461,13 @@ var _ = Describe("Operator Group", func() {
14481461

14491462
err = ownerutil.AddOwnerLabels(createdRole, createdCSV)
14501463
require.NoError(GinkgoT(), err)
1464+
createdRole.Labels[install.OLMManagedLabelKey] = install.OLMManagedLabelValue
14511465
_, err = c.UpdateRole(createdRole)
14521466
require.NoError(GinkgoT(), err)
14531467

14541468
err = ownerutil.AddOwnerLabels(createdRoleBinding, createdCSV)
14551469
require.NoError(GinkgoT(), err)
1470+
createdRoleBinding.Labels[install.OLMManagedLabelKey] = install.OLMManagedLabelValue
14561471
_, err = c.UpdateRoleBinding(createdRoleBinding)
14571472
require.NoError(GinkgoT(), err)
14581473
GinkgoT().Log("wait for CSV to succeed")
@@ -1903,16 +1918,28 @@ var _ = Describe("Operator Group", func() {
19031918
_, err = c.CreateServiceAccount(serviceAccount)
19041919
require.NoError(GinkgoT(), err)
19051920
defer func() {
1921+
if env := os.Getenv("SKIP_CLEANUP"); env != "" {
1922+
fmt.Printf("Skipping cleanup of serviceaccount %s/%s...\n", serviceAccount.GetNamespace(), serviceAccount.GetName())
1923+
return
1924+
}
19061925
c.DeleteServiceAccount(serviceAccount.GetNamespace(), serviceAccount.GetName(), metav1.NewDeleteOptions(0))
19071926
}()
19081927
createdRole, err := c.CreateRole(role)
19091928
require.NoError(GinkgoT(), err)
19101929
defer func() {
1930+
if env := os.Getenv("SKIP_CLEANUP"); env != "" {
1931+
fmt.Printf("Skipping cleanup of role %s/%s...\n", role.GetNamespace(), role.GetName())
1932+
return
1933+
}
19111934
c.DeleteRole(role.GetNamespace(), role.GetName(), metav1.NewDeleteOptions(0))
19121935
}()
19131936
createdRoleBinding, err := c.CreateRoleBinding(roleBinding)
19141937
require.NoError(GinkgoT(), err)
19151938
defer func() {
1939+
if env := os.Getenv("SKIP_CLEANUP"); env != "" {
1940+
fmt.Printf("Skipping cleanup of role binding %s/%s...\n", roleBinding.GetNamespace(), roleBinding.GetName())
1941+
return
1942+
}
19161943
c.DeleteRoleBinding(roleBinding.GetNamespace(), roleBinding.GetName(), metav1.NewDeleteOptions(0))
19171944
}()
19181945
// Create a new NamedInstallStrategy
@@ -1928,11 +1955,13 @@ var _ = Describe("Operator Group", func() {
19281955

19291956
err = ownerutil.AddOwnerLabels(createdRole, createdCSV)
19301957
require.NoError(GinkgoT(), err)
1958+
createdRole.Labels[install.OLMManagedLabelKey] = install.OLMManagedLabelValue
19311959
_, err = c.UpdateRole(createdRole)
19321960
require.NoError(GinkgoT(), err)
19331961

19341962
err = ownerutil.AddOwnerLabels(createdRoleBinding, createdCSV)
19351963
require.NoError(GinkgoT(), err)
1964+
createdRoleBinding.Labels[install.OLMManagedLabelKey] = install.OLMManagedLabelValue
19361965
_, err = c.UpdateRoleBinding(createdRoleBinding)
19371966
require.NoError(GinkgoT(), err)
19381967
GinkgoT().Log("wait for CSV to succeed")

test/e2e/operator_test.go

+33-15
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ package e2e
33
import (
44
"context"
55
"fmt"
6+
"os"
67
"time"
78

89
. "github.com/onsi/ginkgo/v2"
910
. "github.com/onsi/gomega"
1011
"github.com/onsi/gomega/format"
1112
gomegatypes "github.com/onsi/gomega/types"
13+
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/install"
1214
corev1 "k8s.io/api/core/v1"
1315
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
1416
apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -74,6 +76,7 @@ var _ = Describe("Operator API", func() {
7476
It("should surface components in its status", func() {
7577
o := &operatorsv1.Operator{}
7678
o.SetName(genName("o-"))
79+
By(fmt.Sprintf("Creating an Operator resource %s", o.GetName()))
7780

7881
Consistently(o).ShouldNot(ContainCopiedCSVReferences())
7982

@@ -83,6 +86,10 @@ var _ = Describe("Operator API", func() {
8386

8487
defer func() {
8588
Eventually(func() error {
89+
if env := os.Getenv("SKIP_CLEANUP"); env != "" {
90+
fmt.Printf("Skipping cleanup of operator %s...\n", o.GetName())
91+
return nil
92+
}
8693
err := client.Delete(clientCtx, o)
8794
if apierrors.IsNotFound(err) {
8895
return nil
@@ -116,18 +123,22 @@ var _ = Describe("Operator API", func() {
116123
}))
117124
defer w.Stop()
118125

119-
// Create namespaces ns-a and ns-b
120126
nsA := &corev1.Namespace{}
121127
nsA.SetName(genName("ns-a-"))
122128
nsB := &corev1.Namespace{}
123129
nsB.SetName(genName("ns-b-"))
130+
By(fmt.Sprintf("Create namespaces ns-a: (%s) and ns-b: (%s)", nsA.GetName(), nsB.GetName()))
124131

125132
for _, ns := range []*corev1.Namespace{nsA, nsB} {
126133
Eventually(func() error {
127134
return client.Create(clientCtx, ns)
128135
}).Should(Succeed())
129136

130137
defer func(n *corev1.Namespace) {
138+
if env := os.Getenv("SKIP_CLEANUP"); env != "" {
139+
fmt.Printf("Skipping cleanup of namespace %s...\n", n.GetName())
140+
return
141+
}
131142
Eventually(func() error {
132143
err := client.Delete(clientCtx, n)
133144
if apierrors.IsNotFound(err) {
@@ -138,31 +149,38 @@ var _ = Describe("Operator API", func() {
138149
}(ns)
139150
}
140151

141-
// Label ns-a with o's component label
152+
By(fmt.Sprintf("Label ns-a (%s) with o's (%s) component label (%s)", nsA.GetName(), o.GetName(), expectedKey))
142153
setComponentLabel := func(m metav1.Object) error {
143-
m.SetLabels(map[string]string{expectedKey: ""})
154+
m.SetLabels(map[string]string{
155+
install.OLMManagedLabelKey: install.OLMManagedLabelValue,
156+
expectedKey: "",
157+
})
144158
return nil
145159
}
146160
Eventually(Apply(nsA, setComponentLabel)).Should(Succeed())
147161

148-
// Ensure o's status.components.refs field eventually contains a reference to ns-a
162+
By("Ensure o's status.components.refs field eventually contains a reference to ns-a")
149163
By("eventually listing a single component reference")
150164
componentRefEventuallyExists(w, true, getReference(scheme, nsA))
151165

152-
// Create ServiceAccounts sa-a and sa-b in namespaces ns-a and ns-b respectively
153166
saA := &corev1.ServiceAccount{}
154167
saA.SetName(genName("sa-a-"))
155168
saA.SetNamespace(nsA.GetName())
156169
saB := &corev1.ServiceAccount{}
157170
saB.SetName(genName("sa-b-"))
158171
saB.SetNamespace(nsB.GetName())
172+
By(fmt.Sprintf("Create ServiceAccounts sa-a (%s/%s) and sa-b (%s/%s) in namespaces ns-a and ns-b respectively", saA.GetNamespace(), saA.GetName(), saB.GetNamespace(), saB.GetName()))
159173

160174
for _, sa := range []*corev1.ServiceAccount{saA, saB} {
161175
Eventually(func() error {
162176
return client.Create(clientCtx, sa)
163177
}).Should(Succeed())
164178
defer func(sa *corev1.ServiceAccount) {
165179
Eventually(func() error {
180+
if env := os.Getenv("SKIP_CLEANUP"); env != "" {
181+
fmt.Printf("Skipping cleanup of serviceaccount %s/%s...\n", sa.GetNamespace(), sa.GetName())
182+
return nil
183+
}
166184
err := client.Delete(clientCtx, sa)
167185
if apierrors.IsNotFound(err) {
168186
return nil
@@ -172,26 +190,26 @@ var _ = Describe("Operator API", func() {
172190
}(sa)
173191
}
174192

175-
// Label sa-a and sa-b with o's component label
193+
By("Label sa-a and sa-b with o's component label")
176194
Eventually(Apply(saA, setComponentLabel)).Should(Succeed())
177195
Eventually(Apply(saB, setComponentLabel)).Should(Succeed())
178196

179-
// Ensure o's status.components.refs field eventually contains references to sa-a and sa-b
197+
By("Ensure o's status.components.refs field eventually contains references to sa-a and sa-b")
180198
By("eventually listing multiple component references")
181199
componentRefEventuallyExists(w, true, getReference(scheme, saA))
182200
componentRefEventuallyExists(w, true, getReference(scheme, saB))
183201

184-
// Remove the component label from sa-b
202+
By("Remove the component label from sa-b")
185203
Eventually(Apply(saB, func(m metav1.Object) error {
186204
m.SetLabels(nil)
187205
return nil
188206
})).Should(Succeed())
189207

190-
// Ensure the reference to sa-b is eventually removed from o's status.components.refs field
208+
By("Ensure the reference to sa-b is eventually removed from o's status.components.refs field")
191209
By("removing a component's reference when it no longer bears the component label")
192210
componentRefEventuallyExists(w, false, getReference(scheme, saB))
193211

194-
// Delete o
212+
By("Delete o")
195213
Eventually(func() error {
196214
err := client.Delete(clientCtx, o)
197215
if err != nil && !apierrors.IsNotFound(err) {
@@ -200,13 +218,13 @@ var _ = Describe("Operator API", func() {
200218
return nil
201219
}).Should(Succeed())
202220

203-
// Ensure that o is eventually recreated (because some of its components still exist).
221+
By("Ensure that o is eventually recreated (because some of its components still exist).")
204222
By("recreating the Operator when any components still exist")
205223
Eventually(func() error {
206224
return client.Get(clientCtx, types.NamespacedName{Name: o.GetName()}, o)
207225
}).Should(Succeed())
208226

209-
// Delete ns-a
227+
By("Delete ns-a")
210228
Eventually(func() error {
211229
err := client.Delete(clientCtx, nsA)
212230
if apierrors.IsNotFound(err) {
@@ -215,11 +233,11 @@ var _ = Describe("Operator API", func() {
215233
return err
216234
}).Should(Succeed())
217235

218-
// Ensure the reference to ns-a is eventually removed from o's status.components.refs field
236+
By("Ensure the reference to ns-a is eventually removed from o's status.components.refs field")
219237
By("removing a component's reference when it no longer exists")
220238
componentRefEventuallyExists(w, false, getReference(scheme, nsA))
221239

222-
// Delete o
240+
By("Delete o")
223241
Eventually(func() error {
224242
err := client.Delete(clientCtx, o)
225243
if apierrors.IsNotFound(err) {
@@ -228,7 +246,7 @@ var _ = Describe("Operator API", func() {
228246
return err
229247
}).Should(Succeed())
230248

231-
// Ensure that o is consistently not found
249+
By("Ensure that o is consistently not found")
232250
By("verifying the Operator is permanently deleted if it has no components")
233251
Consistently(func() error {
234252
err := client.Get(clientCtx, types.NamespacedName{Name: o.GetName()}, o)

0 commit comments

Comments
 (0)