Skip to content
This repository has been archived by the owner on May 6, 2022. It is now read-only.

Commit

Permalink
No err during cleaning if controller isnt deployed (#2817)
Browse files Browse the repository at this point in the history
* No err during cleaning if controller isnt deployed

- Previously it would error if there were zero deployments, say if
deployment failed

* Change to check for not found error
  • Loading branch information
gmrodgers committed Jun 4, 2020
1 parent a204c0d commit 268fb9a
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 3 deletions.
13 changes: 10 additions & 3 deletions pkg/cleaner/cleaner.go
Expand Up @@ -19,15 +19,17 @@ package cleaner
import (
"context"
"fmt"
"log"
"time"

sc "github.com/kubernetes-sigs/service-catalog/pkg/client/clientset_generated/clientset"
"github.com/kubernetes-sigs/service-catalog/pkg/probe"
apiextensionsclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
apierrors "k8s.io/apimachinery/pkg/api/errors"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/kubernetes"
"k8s.io/klog"
"log"
"time"
)

// Cleaner provides functionality to remove all ServiceCatalog CRDs/CRs
Expand Down Expand Up @@ -89,7 +91,12 @@ func (c *Cleaner) RemoveCRDs(releaseNamespace, controllerManagerName string, web
func (c *Cleaner) scaleDownController(namespace, controllerName string) error {
klog.V(4).Infof("Fetching deployment %s/%s", namespace, controllerName)
deployment, err := c.client.AppsV1().Deployments(namespace).Get(context.Background(), controllerName, v1.GetOptions{})
if err != nil {
switch {
case err == nil:
case apierrors.IsNotFound(err):
klog.V(4).Info("Deployment not found. Skipping scale down to zero.")
return nil
default:
return fmt.Errorf("cannot get deployment %s/%s: %s", namespace, controllerName, err)
}

Expand Down
27 changes: 27 additions & 0 deletions pkg/cleaner/cleaner_test.go
Expand Up @@ -70,6 +70,33 @@ func TestCleaner_RemoveCRDs(t *testing.T) {
assert.Len(t, vwcList.Items, 1)
}

func TestCleaner_RemoveCRDsNoDeployment(t *testing.T) {
// Given
fakeClik8s := k8sfake.NewSimpleClientset(newTestMutatingWC(), newTestValidatingWC(), newTestWC())
fakeCliext := apiextfake.NewSimpleClientset(newTestCRDs()...)
fakeClisc := scfake.NewSimpleClientset()

clr := New(fakeClik8s, fakeClisc, fakeCliext)

// When
assert.NoError(t, clr.RemoveCRDs(cmNamespace, cmName, []string{mutatingWebhookConfiguration}))

// Then
list, err := fakeCliext.ApiextensionsV1beta1().CustomResourceDefinitions().List(context.Background(), v1.ListOptions{})
assert.NoError(t, err)
assert.Len(t, list.Items, 1)
assert.Equal(t, "NotServiceCatalogCRD", list.Items[0].Name)

mwcList, err := fakeClik8s.AdmissionregistrationV1beta1().MutatingWebhookConfigurations().List(context.Background(), v1.ListOptions{})
assert.NoError(t, err)
assert.Len(t, mwcList.Items, 1)
assert.Equal(t, "custom-mutating-webhook-configuration", mwcList.Items[0].Name)

vwcList, err := fakeClik8s.AdmissionregistrationV1beta1().ValidatingWebhookConfigurations().List(context.Background(), v1.ListOptions{})
assert.NoError(t, err)
assert.Len(t, vwcList.Items, 1)
}

func newTestDeployment() *appsv1.Deployment {
var rep int32 = 1
return &appsv1.Deployment{
Expand Down

0 comments on commit 268fb9a

Please sign in to comment.