From 819cc9cc3d008aa02e63b139c3ad7878af30b94f Mon Sep 17 00:00:00 2001 From: Evan Cordell Date: Mon, 29 Apr 2019 16:30:02 -0400 Subject: [PATCH 1/3] test(e2e): wait for deployment to exist in csv replacement test --- test/e2e/csv_e2e_test.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/test/e2e/csv_e2e_test.go b/test/e2e/csv_e2e_test.go index 1a27005742..6aa9fcf14f 100644 --- a/test/e2e/csv_e2e_test.go +++ b/test/e2e/csv_e2e_test.go @@ -256,6 +256,19 @@ func awaitCSV(t *testing.T, c versioned.Interface, namespace, name string, check return fetched, err } +func waitForDeployment(t *testing.T, c operatorclient.ClientInterface, name string) error { + return wait.Poll(pollInterval, pollDuration, func() (bool, error) { + _, err := c.GetDeployment(testNamespace, name) + if err != nil { + if k8serrors.IsNotFound(err) { + return false, nil + } + return false, err + } + return true, nil + }) +} + func waitForDeploymentToDelete(t *testing.T, c operatorclient.ClientInterface, name string) error { return wait.Poll(pollInterval, pollDuration, func() (bool, error) { t.Logf("waiting for deployment %s to delete", name) @@ -2687,6 +2700,10 @@ func TestUpdateCSVModifyDeploymentName(t *testing.T) { _, err = crc.OperatorsV1alpha1().ClusterServiceVersions(testNamespace).Update(fetchedCSV) require.NoError(t, err) + // Wait for new deployment to exist + err = waitForDeployment(t, c, strategyNew.DeploymentSpecs[0].Name) + require.NoError(t, err) + // Wait for updated CSV to succeed _, err = fetchCSV(t, crc, csv.Name, testNamespace, csvSucceededChecker) require.NoError(t, err) From c334aaa5377383210d97cc3abbf75a5d5d0c4725 Mon Sep 17 00:00:00 2001 From: Evan Cordell Date: Tue, 30 Apr 2019 08:25:40 -0400 Subject: [PATCH 2/3] fix(olm): don't requeue operatorgroups for deleted copied csvs --- pkg/controller/operators/olm/operator.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/controller/operators/olm/operator.go b/pkg/controller/operators/olm/operator.go index 477abc2201..216dd1743d 100644 --- a/pkg/controller/operators/olm/operator.go +++ b/pkg/controller/operators/olm/operator.go @@ -396,7 +396,14 @@ func (a *Operator) handleClusterServiceVersionDeletion(obj interface{}) { defer func(csv v1alpha1.ClusterServiceVersion) { logger.Debug("removing csv from queue set") - a.csvQueueSet.Remove(csv.GetName(), csv.GetNamespace()) + if err := a.csvQueueSet.Remove(csv.GetName(), csv.GetNamespace()); err != nil { + logger.WithError(err).Debug("error removing from queue") + } + + if clusterServiceVersion.IsCopied() { + logger.Debug("deleted csv is copied. skipping operatorgroup requeue") + return + } // Requeue all OperatorGroups in the namespace logger.Debug("requeueing operatorgroups in namespace") From a6eb04b32bc3bf6023f7761a454664b275b0979b Mon Sep 17 00:00:00 2001 From: Evan Cordell Date: Tue, 30 Apr 2019 08:26:15 -0400 Subject: [PATCH 3/3] fix(permissions): the aggregated edit role should grant view access to operatorgroups --- .../templates/0000_50_olm_09-aggregated.clusterrole.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/deploy/chart/templates/0000_50_olm_09-aggregated.clusterrole.yaml b/deploy/chart/templates/0000_50_olm_09-aggregated.clusterrole.yaml index 5581c3721e..459092c391 100644 --- a/deploy/chart/templates/0000_50_olm_09-aggregated.clusterrole.yaml +++ b/deploy/chart/templates/0000_50_olm_09-aggregated.clusterrole.yaml @@ -25,5 +25,8 @@ metadata: rbac.authorization.k8s.io/aggregate-to-view: "true" rules: - apiGroups: ["operators.coreos.com"] - resources: ["clusterserviceversions", "catalogsources", "installplans", "subscriptions", "packagemanifests"] + resources: ["clusterserviceversions", "catalogsources", "installplans", "subscriptions", "operatorgroups"] + verbs: ["get", "list", "watch"] +- apiGroups: ["packages.operators.coreos.com"] + resources: ["packagemanifests"] verbs: ["get", "list", "watch"]