Skip to content

Commit ae457b3

Browse files
author
Jeff Peeler
committed
fix(olm): set event handler functions correctly
also gets rid of stale code
1 parent 22a29b3 commit ae457b3

File tree

3 files changed

+25
-136
lines changed

3 files changed

+25
-136
lines changed

pkg/controller/operators/olm/operatorgroup.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ func (a *Operator) syncOperatorGroups(obj interface{}) error {
4141
}
4242
nsListJoined := strings.Join(nsList, ",")
4343

44-
//if err := a.annotateDeployments(op.GetNamespace(), nsListJoined); err != nil {
45-
// log.Errorf("annotateDeployments error: %v", err)
46-
// return err
47-
//}
48-
//log.Debug("Deployment annotation completed")
44+
if err := a.annotateDeployments(op.GetNamespace(), nsListJoined); err != nil {
45+
log.Errorf("annotateDeployments error: %v", err)
46+
return err
47+
}
48+
log.Debug("Deployment annotation completed")
4949

5050
// annotate csvs
5151
csvsInNamespace := a.csvsInNamespace(op.Namespace)

pkg/lib/queueinformer/queueinformer.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,8 @@ func NewInformer(queue workqueue.RateLimitingInterface, informer cache.SharedInd
111111
name: name,
112112
MetricsProvider: metrics,
113113
}
114-
if funcs == nil {
115-
queueInformer.resourceEventHandlerFuncs = queueInformer.defaultResourceEventHandlerFuncs()
116-
} else {
117-
queueInformer.resourceEventHandlerFuncs = &cache.ResourceEventHandlerFuncs{}
114+
queueInformer.resourceEventHandlerFuncs = queueInformer.defaultResourceEventHandlerFuncs()
115+
if funcs != nil {
118116
if funcs.AddFunc != nil {
119117
queueInformer.resourceEventHandlerFuncs.AddFunc = func(obj interface{}) {
120118
funcs.AddFunc(obj)

test/e2e/operator_groups_e2e_test.go

Lines changed: 18 additions & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func checkOperatorGroupAnnotations(obj metav1.Object, op *v1alpha2.OperatorGroup
7777
return nil
7878
}
7979

80-
func TestCreateOperatorGroupWithMatchingNamespace(t *testing.T) {
80+
func TestOperatorGroup(t *testing.T) {
8181
// Create namespace with specific label
8282
// Create CSV in operator namespace
8383
// Create operator group that watches namespace and uses specific label
@@ -89,7 +89,7 @@ func TestCreateOperatorGroupWithMatchingNamespace(t *testing.T) {
8989
log.SetLevel(log.DebugLevel)
9090
c := newKubeClient(t)
9191
crc := newCRClient(t)
92-
csvName := "another-csv"
92+
csvName := "another-csv" // must be lowercase for DNS-1123 validation
9393

9494
matchingLabel := map[string]string{"matchLabel": testNamespace}
9595
otherNamespaceName := testNamespace + "-namespace-two"
@@ -107,45 +107,9 @@ func TestCreateOperatorGroupWithMatchingNamespace(t *testing.T) {
107107

108108
log.Debug("Creating CSV")
109109
aCSV := newCSV(csvName, testNamespace, "", *semver.New("0.0.0"), nil, nil, newNginxInstallStrategy("operator-deployment", nil, nil))
110-
_, err = crc.OperatorsV1alpha1().ClusterServiceVersions(testNamespace).Create(&aCSV)
110+
createdCSV, err := crc.OperatorsV1alpha1().ClusterServiceVersions(testNamespace).Create(&aCSV)
111111
require.NoError(t, err)
112112

113-
// var one = int32(1)
114-
// deployment := appsv1.Deployment{
115-
// ObjectMeta: metav1.ObjectMeta{
116-
// Name: "operator-deployment",
117-
// Namespace: testNamespace,
118-
// },
119-
// Spec: appsv1.DeploymentSpec{
120-
// Selector: &metav1.LabelSelector{
121-
// MatchLabels: matchingLabel,
122-
// },
123-
// Replicas: &one,
124-
// Template: corev1.PodTemplateSpec{
125-
// ObjectMeta: metav1.ObjectMeta{
126-
// Labels: matchingLabel,
127-
// },
128-
// Spec: corev1.PodSpec{Containers: []corev1.Container{
129-
// {
130-
// Name: genName("nginx"),
131-
// Image: "nginx:1.7.9",
132-
// Ports: []corev1.ContainerPort{{ContainerPort: 80}},
133-
// },
134-
// }},
135-
// },
136-
// },
137-
// }
138-
// deployment.SetOwnerReferences([]metav1.OwnerReference{
139-
// {
140-
// Kind: "ClusterServiceVersion",
141-
// Name: "fake-csv",
142-
// },
143-
// })
144-
145-
// log.Debug("Creating deployment")
146-
// createdDeployment, err := c.CreateDeployment(&deployment)
147-
// require.NoError(t, err)
148-
149113
log.Debug("Creating operator group")
150114
operatorGroup := v1alpha2.OperatorGroup{
151115
ObjectMeta: metav1.ObjectMeta{
@@ -205,112 +169,38 @@ func TestCreateOperatorGroupWithMatchingNamespace(t *testing.T) {
205169
return false, nil
206170
})
207171
// since annotations are set along with status, no reason to poll for this check as done above
208-
log.Debug("Checking status on CSV in target namespace")
172+
log.Debug("Checking status on csv in target namespace")
209173
fetchedCSV, err := crc.OperatorsV1alpha1().ClusterServiceVersions(otherNamespaceName).Get(csvName, metav1.GetOptions{})
210174
require.NoError(t, err)
211175
require.EqualValues(t, v1alpha1.CSVReasonCopied, fetchedCSV.Status.Reason)
176+
// also check name and spec
177+
require.Equal(t, createdCSV.Name, fetchedCSV.Name)
178+
require.Equal(t, createdCSV.Spec, fetchedCSV.Spec)
212179

213-
//log.Debug("Waiting on deployment to have correct annotation")
214-
//err = wait.Poll(pollInterval, pollDuration, func() (bool, error) {
215-
// createdDeployment, err := c.GetDeployment(testNamespace, "operator-deployment")
216-
// if err != nil {
217-
// if errors.IsNotFound(err) {
218-
// return false, nil
219-
// }
220-
// return false, err
221-
// }
222-
// // TODO: verify operatorNamespace annotation, operatorGroup annotation
223-
// if createdDeployment.Spec.Template.Annotations["olm.targetNamespaces"] == otherNamespaceName {
224-
// return true, nil
225-
// }
226-
// return false, nil
227-
//})
228-
229-
// clean up
230-
// TODO: unpatch function
231-
runningDeploy, err := c.GetDeployment(testNamespace, "olm-operator")
232-
require.NoError(t, err)
233-
runningDeploy.Spec.Template.Spec.Containers[0].Command = oldCommand
234-
_, updated, err := c.UpdateDeployment(runningDeploy)
235-
if err != nil || updated == false {
236-
t.Fatalf("Deployment update failed: (updated %v) %v\n", updated, err)
237-
}
238-
require.NoError(t, err)
239-
240-
err = c.KubernetesInterface().CoreV1().Namespaces().Delete(otherNamespaceName, &metav1.DeleteOptions{})
241-
require.NoError(t, err)
242-
err = crc.OperatorsV1alpha2().OperatorGroups(testNamespace).Delete(operatorGroup.Name, &metav1.DeleteOptions{})
243-
require.NoError(t, err)
244-
}
245-
246-
func TestCreateOperatorGroupCSVCopy(t *testing.T) {
247-
// create target namespace
248-
// create operator group in OLM namespace, which serves as operator namespace
249-
// create CSV in OLM namespace
250-
// verify CSV is copied to target namespace
251-
252-
log.SetLevel(log.DebugLevel)
253-
c := newKubeClient(t)
254-
crc := newCRClient(t)
255-
targetNamespaceName := testNamespace + "-target"
256-
csvName := "acsv-that-is-unique" // must be lowercase for DNS-1123 validation
257-
matchingLabel := map[string]string{"matchLabel": testNamespace}
258-
259-
log.Debug("Creating operator namespace")
260-
targetNamespace := corev1.Namespace{
261-
ObjectMeta: metav1.ObjectMeta{
262-
Name: targetNamespaceName,
263-
Labels: matchingLabel,
264-
},
265-
}
266-
_, err := c.KubernetesInterface().CoreV1().Namespaces().Create(&targetNamespace)
267-
require.NoError(t, err)
268-
269-
oldCommand := patchOlmDeployment(t, c, targetNamespaceName)
270-
271-
log.Debug("Creating operator group")
272-
operatorGroup := v1alpha2.OperatorGroup{
273-
ObjectMeta: metav1.ObjectMeta{
274-
Name: "e2e-operator-group",
275-
Namespace: testNamespace,
276-
},
277-
Spec: v1alpha2.OperatorGroupSpec{
278-
Selector: metav1.LabelSelector{
279-
MatchLabels: matchingLabel,
280-
},
281-
},
282-
}
283-
_, err = crc.OperatorsV1alpha2().OperatorGroups(testNamespace).Create(&operatorGroup)
284-
require.NoError(t, err)
285-
286-
log.Debug("Creating CSV")
287-
aCSV := newCSV(csvName, testNamespace, "", *semver.New("0.0.0"), nil, nil, newNginxInstallStrategy("aspec", nil, nil))
288-
createdCSV, err := crc.OperatorsV1alpha1().ClusterServiceVersions(testNamespace).Create(&aCSV)
289-
require.NoError(t, err)
290-
291-
log.Debug("Waiting for CSV copy to have correct properties")
292-
var csvCopy *v1alpha1.ClusterServiceVersion
180+
log.Debug("Waiting on deployment to have correct annotation")
293181
err = wait.Poll(pollInterval, pollDuration, func() (bool, error) {
294-
csvCopy, err = crc.OperatorsV1alpha1().ClusterServiceVersions(targetNamespaceName).Get(csvName, metav1.GetOptions{})
182+
createdDeployment, err := c.GetDeployment(testNamespace, "operator-deployment")
295183
if err != nil {
296184
if errors.IsNotFound(err) {
297185
return false, nil
298186
}
299187
return false, err
300188
}
301-
return true, nil
189+
// TODO: verify operatorNamespace annotation, operatorGroup annotation
190+
if createdDeployment.Spec.Template.Annotations["olm.targetNamespaces"] == otherNamespaceName {
191+
return true, nil
192+
}
193+
return false, nil
302194
})
303-
require.Equal(t, createdCSV.Name, csvCopy.Name)
304-
require.Equal(t, createdCSV.Spec, csvCopy.Spec)
305195

306-
// part 2 - ensure deletion cleans up copied CSV
196+
// ensure deletion cleans up copied CSV
307197
log.Debug("Deleting CSV")
308198
err = crc.OperatorsV1alpha1().ClusterServiceVersions(testNamespace).Delete(csvName, &metav1.DeleteOptions{})
309199
require.NoError(t, err)
310200

311201
log.Debug("Waiting for orphaned CSV to be deleted")
312202
err = wait.Poll(pollInterval, pollDuration, func() (bool, error) {
313-
csvCopy, err = crc.OperatorsV1alpha1().ClusterServiceVersions(targetNamespaceName).Get(csvName, metav1.GetOptions{})
203+
_, err = crc.OperatorsV1alpha1().ClusterServiceVersions(otherNamespaceName).Get(csvName, metav1.GetOptions{})
314204
if err != nil {
315205
if errors.IsNotFound(err) {
316206
return true, nil
@@ -322,6 +212,7 @@ func TestCreateOperatorGroupCSVCopy(t *testing.T) {
322212
require.NoError(t, err)
323213

324214
// clean up
215+
// TODO: unpatch function
325216
runningDeploy, err := c.GetDeployment(testNamespace, "olm-operator")
326217
require.NoError(t, err)
327218
runningDeploy.Spec.Template.Spec.Containers[0].Command = oldCommand
@@ -331,7 +222,7 @@ func TestCreateOperatorGroupCSVCopy(t *testing.T) {
331222
}
332223
require.NoError(t, err)
333224

334-
err = c.KubernetesInterface().CoreV1().Namespaces().Delete(targetNamespaceName, &metav1.DeleteOptions{})
225+
err = c.KubernetesInterface().CoreV1().Namespaces().Delete(otherNamespaceName, &metav1.DeleteOptions{})
335226
require.NoError(t, err)
336227
err = crc.OperatorsV1alpha2().OperatorGroups(testNamespace).Delete(operatorGroup.Name, &metav1.DeleteOptions{})
337228
require.NoError(t, err)

0 commit comments

Comments
 (0)