From 6b26966b5cd7159e8145db4fa3dcfaa44ca381dd Mon Sep 17 00:00:00 2001 From: ty-dc Date: Wed, 21 Aug 2024 10:40:54 +0800 Subject: [PATCH] fix: cannot uninstall spiderpool when sriovOperatorConfig is installed Signed-off-by: ty-dc --- Makefile | 4 +- charts/spiderpool/templates/deleteHook.yaml | 6 +- charts/spiderpool/templates/role.yaml | 2 + cmd/spiderpool-controller/cmd/clean.go | 322 ++++++++++-------- pkg/constant/k8s.go | 14 + .../spiderpool.spidernet.io/v2beta1/rbac.go | 4 +- pkg/k8s/utils/utils.go | 4 - test/Makefile | 1 - 8 files changed, 210 insertions(+), 147 deletions(-) diff --git a/Makefile b/Makefile index 4e0f8a1da6..3aea034fa6 100644 --- a/Makefile +++ b/Makefile @@ -430,11 +430,11 @@ clean: clean_e2e .PHONY: clean_e2e_spiderpool clean_e2e_spiderpool: - -$(QUIET) make -C test uninstall_spiderpool + $(QUIET) make -C test uninstall_spiderpool .PHONY: upgrade_e2e_spiderpool upgrade_e2e_spiderpool: - -$(QUIET) make -C test upgrade_spiderpool + $(QUIET) make -C test upgrade_spiderpool .PHONY: codegen codegen: diff --git a/charts/spiderpool/templates/deleteHook.yaml b/charts/spiderpool/templates/deleteHook.yaml index 9f2e34fc53..ef6a0b924e 100644 --- a/charts/spiderpool/templates/deleteHook.yaml +++ b/charts/spiderpool/templates/deleteHook.yaml @@ -5,7 +5,7 @@ metadata: name: {{ .Values.spiderpoolController.name | trunc 48 | trimSuffix "-" }}-hook-pre-delete annotations: "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded,hook-failed + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded spec: template: spec: @@ -22,6 +22,10 @@ spec: - --mutating - {{ .Values.spiderpoolController.name | trunc 63 | trimSuffix "-" }} env: + - name: SPIDERPOOL_POD_NAMESPACE + value: {{ .Release.Namespace | quote }} + - name: SPIDERPOOL_INIT_NAME + value: {{ .Values.spiderpoolInit.name | trunc 63 | trimSuffix "-" | quote }} - name: SPIDERPOOL_POD_NAME valueFrom: fieldRef: diff --git a/charts/spiderpool/templates/role.yaml b/charts/spiderpool/templates/role.yaml index 65f8fba6d7..ca4ecec499 100644 --- a/charts/spiderpool/templates/role.yaml +++ b/charts/spiderpool/templates/role.yaml @@ -46,6 +46,7 @@ rules: - mutatingwebhookconfigurations - validatingwebhookconfigurations verbs: + - delete - get - list - watch @@ -88,6 +89,7 @@ rules: - cronjobs - jobs verbs: + - delete - get - list - update diff --git a/cmd/spiderpool-controller/cmd/clean.go b/cmd/spiderpool-controller/cmd/clean.go index 9c4de40430..992cf24664 100644 --- a/cmd/spiderpool-controller/cmd/clean.go +++ b/cmd/spiderpool-controller/cmd/clean.go @@ -6,6 +6,8 @@ package cmd import ( "context" "os" + "reflect" + "strings" "github.com/hashicorp/go-multierror" "github.com/spf13/cobra" @@ -13,7 +15,11 @@ import ( spiderpoolv2beta1 "github.com/spidernet-io/spiderpool/pkg/k8s/apis/spiderpool.spidernet.io/v2beta1" "github.com/spidernet-io/spiderpool/pkg/k8s/utils" webhook "k8s.io/api/admissionregistration/v1" + batchv1 "k8s.io/api/batch/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -49,6 +55,11 @@ var cleanCmd = &cobra.Command{ }, } +const ( + ENVNamespace = "SPIDERPOOL_POD_NAMESPACE" + ENVSpiderpoolInitName = "SPIDERPOOL_INIT_NAME" +) + type CoreClient struct { client.Client } @@ -69,190 +80,227 @@ func (c *CoreClient) clean(validate, mutating string) error { var jobResult *multierror.Error ctx := context.Background() - vObj := &webhook.ValidatingWebhookConfiguration{} - err := utils.DeleteWebhookConfiguration(ctx, c, validate, vObj) - if err != nil { - logger.Sugar().Errorf("failed to delete ValidatingWebhookConfiguration: %s , error: %v.", validate, err) + // Clean up MutatingWebhookConfiguration resources of spiderpool + if err := c.cleanWebhookResources(ctx, constant.MutatingWebhookConfiguration, mutating, &webhook.MutatingWebhookConfiguration{}); err != nil { jobResult = multierror.Append(jobResult, err) } - // Clean up ValidatingWebhookConfiguration of sriov-network-operator - var sriovOperatorWebhookValidate string = "sriov-operator-webhook-config" - err = utils.DeleteWebhookConfiguration(ctx, c, sriovOperatorWebhookValidate, vObj) - if err != nil { - logger.Sugar().Errorf("failed to delete ValidatingWebhookConfiguration: %s, error: %v.", sriovOperatorWebhookValidate, err) + // Clean up SriovNetworkResourcesInjectorMutating resources of sriov-network-operator + if err := c.cleanWebhookResources(ctx, constant.MutatingWebhookConfiguration, constant.SriovNetworkResourcesInjectorMutating, &webhook.MutatingWebhookConfiguration{}); err != nil { jobResult = multierror.Append(jobResult, err) } - mObj := &webhook.MutatingWebhookConfiguration{} - err = utils.DeleteWebhookConfiguration(ctx, c, mutating, mObj) - if err != nil { - logger.Sugar().Errorf("failed to delete MutatingWebhookConfiguration: %s , error: %v.", mutating, err) + // Clean up sriov-operator-webhook-config resources of sriov-network-operator + if err := c.cleanWebhookResources(ctx, constant.MutatingWebhookConfiguration, constant.SriovOperatorWebhookConfigMutatingOrValidate, &webhook.MutatingWebhookConfiguration{}); err != nil { jobResult = multierror.Append(jobResult, err) } - // Clean up MutatingWebhookConfiguration of sriov-network-operator - var sriovNetworkResourcesInjectorMutating string = "network-resources-injector-config" - var sriovOperatorWebhookMutating string = "sriov-operator-webhook-config" - err = utils.DeleteWebhookConfiguration(ctx, c, sriovNetworkResourcesInjectorMutating, mObj) - if err != nil { - logger.Sugar().Errorf("failed to delete MutatingWebhookConfiguration: %s, error: %v.", sriovNetworkResourcesInjectorMutating, err) + // Clean up ValidatingWebhookConfiguration resources of spiderpool + if err := c.cleanWebhookResources(ctx, constant.ValidatingWebhookConfiguration, validate, &webhook.ValidatingWebhookConfiguration{}); err != nil { jobResult = multierror.Append(jobResult, err) } - err = utils.DeleteWebhookConfiguration(ctx, c, sriovOperatorWebhookMutating, mObj) - if err != nil { - logger.Sugar().Errorf("failed to delete MutatingWebhookConfiguration: %s, error: %v.", sriovOperatorWebhookMutating, err) + + // Clean up sriov-operator-webhook-config resources of sriov-network-operator + if err := c.cleanWebhookResources(ctx, constant.ValidatingWebhookConfiguration, constant.SriovOperatorWebhookConfigMutatingOrValidate, &webhook.ValidatingWebhookConfiguration{}); err != nil { jobResult = multierror.Append(jobResult, err) } - ipPoolList := new(spiderpoolv2beta1.SpiderIPPoolList) - err = c.List(ctx, ipPoolList) - if err == nil { - for _, item := range ipPoolList.Items { - item.Finalizers = make([]string, 0) - err := c.Update(ctx, &item) - if err != nil { - logger.Sugar().Errorf("failed to clean the finalizers of ippool: %v, %v", item.Name, err) - jobResult = multierror.Append(jobResult, err) - continue - } - logger.Sugar().Infof("succeeded to clean the finalizers of ippool %v", item.Name) + // Clean up SpiderIPPool resources of spiderpool + if err := c.cleanSpiderpoolResources(ctx, &spiderpoolv2beta1.SpiderIPPoolList{}, constant.KindSpiderIPPool); err != nil { + jobResult = multierror.Append(jobResult, err) + } - err = c.Delete(ctx, &item) - if err != nil { - logger.Sugar().Errorf("failed to delete ippool: %v, %v ", item.Name, err) - jobResult = multierror.Append(jobResult, err) - continue - } - logger.Sugar().Infof("succeeded to delete ippool: %v", item.Name) - } + // Clean up SpiderSubnet resources of spiderpool + if err := c.cleanSpiderpoolResources(ctx, &spiderpoolv2beta1.SpiderSubnetList{}, constant.KindSpiderSubnet); err != nil { + jobResult = multierror.Append(jobResult, err) } - subnetList := new(spiderpoolv2beta1.SpiderSubnetList) - err = c.List(ctx, subnetList) - if err == nil { - for _, item := range subnetList.Items { - err = c.Delete(ctx, &item) - if err != nil { - logger.Sugar().Errorf("failed to delete subnet: %v, %v ", item.Name, err) - jobResult = multierror.Append(jobResult, err) - continue - } - logger.Sugar().Infof("succeeded to delete subnet: %v", item.Name) + // Clean up SpiderEndpoint resources of spiderpool + if err := c.cleanSpiderpoolResources(ctx, &spiderpoolv2beta1.SpiderEndpointList{}, constant.KindSpiderEndpoint); err != nil { + jobResult = multierror.Append(jobResult, err) + } + + // Clean up SpiderReservedIP resources of spiderpool + if err := c.cleanSpiderpoolResources(ctx, &spiderpoolv2beta1.SpiderReservedIPList{}, constant.KindSpiderReservedIP); err != nil { + jobResult = multierror.Append(jobResult, err) + } + + // Clean up SpiderMultusConfig resources of spiderpool + if err := c.cleanSpiderpoolResources(ctx, &spiderpoolv2beta1.SpiderMultusConfigList{}, constant.KindSpiderMultusConfig); err != nil { + jobResult = multierror.Append(jobResult, err) + } + + // Clean up SpiderCoordinator resources of spiderpool + if err := c.cleanSpiderpoolResources(ctx, &spiderpoolv2beta1.SpiderCoordinatorList{}, constant.KindSpiderCoordinator); err != nil { + jobResult = multierror.Append(jobResult, err) + } + + // Clean up SpiderClaimParameter resources of spiderpool + if err := c.cleanSpiderpoolResources(ctx, &spiderpoolv2beta1.SpiderClaimParameterList{}, constant.KindSpiderClaimParameter); err != nil { + jobResult = multierror.Append(jobResult, err) + } + + // Delete all crds of spiderpool or sriov-network-operator + if err := c.cleanCRDs(ctx); err != nil { + jobResult = multierror.Append(jobResult, err) + } + + // Delete Job of spiderpool-Init + spiderpoolInitNamespace := strings.ReplaceAll(os.Getenv(ENVNamespace), "\"", "") + if len(spiderpoolInitNamespace) == 0 { + logger.Sugar().Errorf("Tried to clean up spiderpool-init job, but ENV %s %w", ENVNamespace, constant.ErrMissingRequiredParam) + } + spiderpoolInitName := strings.ReplaceAll(os.Getenv(ENVSpiderpoolInitName), "\"", "") + if len(spiderpoolInitName) == 0 { + logger.Sugar().Errorf("Tried to clean up spiderpool-init job, but ENV %s %v", ENVSpiderpoolInitName, constant.ErrMissingRequiredParam) + } + + if len(spiderpoolInitName) != 0 && len(spiderpoolInitNamespace) != 0 { + err := c.cleanSpiderpoolInitJob(ctx, spiderpoolInitNamespace, spiderpoolInitName) + jobResult = multierror.Append(jobResult, err) + } + + return jobResult.ErrorOrNil() +} + +// cleanWebhookResources deletes a specific webhook configuration based on the provided resource type and name. +func (c *CoreClient) cleanWebhookResources(ctx context.Context, resourceType, resourceName string, obj client.Object) error { + err := utils.DeleteWebhookConfiguration(ctx, c, resourceName, obj) + if err != nil { + if apierrors.IsNotFound(err) { + logger.Sugar().Infof("%s: %s does not exist, error: %v", resourceType, resourceName, err) + return nil } + + logger.Sugar().Errorf("failed to delete %s: %s, error: %v", resourceType, resourceName, err) + return err } - spiderEndpointList := new(spiderpoolv2beta1.SpiderEndpointList) - err = c.List(ctx, spiderEndpointList) - if err == nil { - for _, item := range spiderEndpointList.Items { - item.Finalizers = make([]string, 0) - err := c.Update(ctx, &item) - if err != nil { - logger.Sugar().Errorf("failed to clean the finalizers of spiderEndpoint: %v, %v ", item.Name, err) - jobResult = multierror.Append(jobResult, err) - continue - } - logger.Sugar().Infof("succeeded to clean the finalizers of spiderEndpoint %v", item.Name) + logger.Sugar().Infof("succeeded to delete %s: %s", resourceType, resourceName) + return nil +} - err = c.Delete(ctx, &item) - if err != nil { - logger.Sugar().Errorf("failed to delete spiderEndpoint: %v, %v ", item.Name, err) - jobResult = multierror.Append(jobResult, err) - continue - } - logger.Sugar().Infof("succeeded to delete spiderEndpoint: %v", item.Name) +// cleanSpiderpoolResources lists and deletes specific Spiderpool resources, with an optional finalizer cleanup step. +func (c *CoreClient) cleanSpiderpoolResources(ctx context.Context, list client.ObjectList, resourceName string) error { + var jobResult *multierror.Error + err := c.List(ctx, list) + if err != nil { + if apierrors.IsNotFound(err) { + logger.Sugar().Infof("%s does not exist, error: %v", resourceName, err) + return nil } + logger.Sugar().Errorf("failed to list %s, error: %v", resourceName, err) + return err } - reservedIPList := new(spiderpoolv2beta1.SpiderReservedIPList) - err = c.List(ctx, reservedIPList) - if err == nil { - for _, item := range reservedIPList.Items { - err = c.Delete(ctx, &item) + items := reflect.ValueOf(list).Elem().FieldByName("Items") + for i := 0; i < items.Len(); i++ { + item := items.Index(i).Addr().Interface().(client.Object) + + cleanFinalizers := false + switch resourceName { + case constant.KindSpiderIPPool: + cleanFinalizers = true + case constant.KindSpiderEndpoint: + cleanFinalizers = true + case constant.KindSpiderCoordinator: + cleanFinalizers = true + default: + cleanFinalizers = false + } + + if cleanFinalizers { + item.SetFinalizers(nil) + err = c.Update(ctx, item) if err != nil { - logger.Sugar().Errorf("failed to delete spiderReservedIP: %v, %v ", item.Name, err) + logger.Sugar().Errorf("failed to clean the finalizers of %s: %v, %v", resourceName, item.GetName(), err) jobResult = multierror.Append(jobResult, err) continue } - logger.Sugar().Infof("succeeded to delete spiderReservedIP: %v", item.Name) + logger.Sugar().Infof("succeeded to clean the finalizers of %s %v", resourceName, item.GetName()) + } + err = c.Delete(ctx, item) + if err != nil { + logger.Sugar().Errorf("failed to delete %s: %v, %v", resourceName, item.GetName(), err) + jobResult = multierror.Append(jobResult, err) + continue } + logger.Sugar().Infof("succeeded to delete %s: %v", resourceName, item.GetName()) } - spiderMultusConfigList := new(spiderpoolv2beta1.SpiderMultusConfigList) - err = c.List(ctx, spiderMultusConfigList) - if err == nil { - for _, item := range spiderMultusConfigList.Items { - err = c.Delete(ctx, &item) - if err != nil { - logger.Sugar().Errorf("failed to delete spiderMultusConfig: %v, %v ", item.Name, err) - jobResult = multierror.Append(jobResult, err) - continue - } - logger.Sugar().Infof("succeeded to delete spiderMultusConfig: %v", item.Name) + return jobResult.ErrorOrNil() +} + +// cleanCRDs lists and deletes CustomResourceDefinitions (CRDs) related to Spiderpool and sriov-network-operator. +func (c *CoreClient) cleanCRDs(ctx context.Context) error { + var jobResult *multierror.Error + crdList := &apiextensionsv1.CustomResourceDefinitionList{} + err := c.List(ctx, crdList) + if err != nil { + if apierrors.IsNotFound(err) { + logger.Sugar().Infof("CustomResourceDefinitionList does not exist, error: %v", err) + return nil } + logger.Sugar().Errorf("failed to list CustomResourceDefinitionList, error: %v", err) + return err } - spiderCoordinatorList := new(spiderpoolv2beta1.SpiderCoordinatorList) - err = c.List(ctx, spiderCoordinatorList) - if err == nil { - for _, item := range spiderCoordinatorList.Items { - item.Finalizers = make([]string, 0) - err := c.Update(ctx, &item) - if err != nil { - logger.Sugar().Errorf("failed to clean the finalizers of spiderCoordinator: %v, %v ", item.Name, err) - jobResult = multierror.Append(jobResult, err) - continue + for _, item := range crdList.Items { + cleanCRD := false + switch item.Spec.Group { + case constant.SpiderpoolAPIGroup: + cleanCRD = true + // Delete all crds of sriov-network-operator + // After sriov-network-operator was uninstalled, sriov-network-operator did not delete its own CRD, + // and there were residual CRDs, which might bring some hidden dangers to the upgrade of sriov-network-operator; + // we tried to uninstall it through spiderpool. + case constant.SriovNetworkOperatorAPIGroup: + // After helm uninstall, sriov-operator will delete the resources under sriovoperatorconfigs.sriovnetwork.openshift.io. + // If we delete this CRD resource in advance, helm uninstall will report an error. + // We will skip it for now to allow other resources to be deleted. + if item.Name == constant.SriovNetworkOperatorConfigs { + cleanCRD = false + } else { + cleanCRD = true } - logger.Sugar().Infof("succeeded to clean the finalizers of spiderCoordinator %v", item.Name) + default: + cleanCRD = false + } + if cleanCRD { err = c.Delete(ctx, &item) if err != nil { - logger.Sugar().Errorf("failed to delete spiderCoordinator: %v, %v ", item.Name, err) + logger.Sugar().Errorf("failed to delete CRD: %v, %v", item.Name, err) jobResult = multierror.Append(jobResult, err) continue } - logger.Sugar().Infof("succeeded to delete spiderCoordinator: %v", item.Name) + logger.Sugar().Infof("succeeded to delete CRD: %v", item.Name) } } - // Delete all crds of spiderpool - customResourceDefinitionList := new(apiextensionsv1.CustomResourceDefinitionList) - err = c.List(ctx, customResourceDefinitionList) - if err == nil { - for _, item := range customResourceDefinitionList.Items { - if item.Spec.Group == constant.SpiderpoolAPIGroup { - err = c.Delete(ctx, &item) - if err != nil { - logger.Sugar().Errorf("failed to delete customResourceDefinitionList: %v, %v ", item.Name, err) - jobResult = multierror.Append(jobResult, err) - continue - } - logger.Sugar().Infof("succeeded to delete customResourceDefinitionList: %v", item.Name) - } + return jobResult.ErrorOrNil() +} + +// cleanSpiderpoolInitJob deletes the spiderpool-init Job, logs any errors or success. +func (c *CoreClient) cleanSpiderpoolInitJob(ctx context.Context, spiderpoolInitNamespace, spiderpoolInitName string) error { + spiderpoolInitJob := &batchv1.Job{} + err := c.Get(ctx, types.NamespacedName{Namespace: spiderpoolInitNamespace, Name: spiderpoolInitName}, spiderpoolInitJob) + if err != nil { + if apierrors.IsNotFound(err) { + logger.Sugar().Infof("spiderpool-init Job %s/%s does not exist, error: %v", spiderpoolInitNamespace, spiderpoolInitName, err) + return nil } + logger.Sugar().Errorf("failed to get spiderpool-init Job %s/%s, error: %v", spiderpoolInitNamespace, spiderpoolInitName, err) + return err } - // Delete all crds of sriov-network-operator - // After sriov-network-operator was uninstalled, sriov-network-operator did not delete its own CRD, - // and there were residual CRDs, which might bring some hidden dangers to the upgrade of sriov-network-operator; - // we tried to uninstall it through spiderpool. - sriovNetworkOperatorAPIGroup := "sriovnetwork.openshift.io" - customResourceDefinitionList = new(apiextensionsv1.CustomResourceDefinitionList) - err = c.List(ctx, customResourceDefinitionList) - if err == nil { - for _, item := range customResourceDefinitionList.Items { - if item.Spec.Group == sriovNetworkOperatorAPIGroup { - err = c.Delete(ctx, &item) - if err != nil { - logger.Sugar().Errorf("failed to delete customResourceDefinitionList: %v, %v ", item.Name, err) - jobResult = multierror.Append(jobResult, err) - continue - } - logger.Sugar().Infof("succeeded to delete customResourceDefinitionList: %v", item.Name) - } - } + propagationPolicy := metav1.DeletePropagationBackground + err = c.Delete(ctx, spiderpoolInitJob, &client.DeleteOptions{PropagationPolicy: &propagationPolicy}) + if err != nil { + logger.Sugar().Errorf("failed to delete spiderpool-init Job: %v/%v, %v", spiderpoolInitJob.Namespace, spiderpoolInitJob.Name, err) + return err } + logger.Sugar().Infof("succeeded to delete spiderpool-init Job: %v/%v", spiderpoolInitJob.Namespace, spiderpoolInitJob.Name) - return jobResult.ErrorOrNil() + return nil } diff --git a/pkg/constant/k8s.go b/pkg/constant/k8s.go index 941d4bd991..1e06cc774c 100644 --- a/pkg/constant/k8s.go +++ b/pkg/constant/k8s.go @@ -187,3 +187,17 @@ const ( DRADriverPluginPath = "/var/lib/kubelet/plugins/" + DRADriverName DRADriverPluginSocketPath = DRADriverPluginPath + "/plugin.sock" ) + +// spiderpool cleaning sriov +const ( + SriovNetworkOperatorAPIGroup = "sriovnetwork.openshift.io" + SriovOperatorWebhookConfigMutatingOrValidate = "sriov-operator-webhook-config" + SriovNetworkResourcesInjectorMutating = "network-resources-injector-config" + SriovNetworkOperatorConfigs = "sriovoperatorconfigs.sriovnetwork.openshift.io" +) + +// webhook Mutating or Validating Configuration +const ( + MutatingWebhookConfiguration = "MutatingWebhookConfiguration" + ValidatingWebhookConfiguration = "ValidatingWebhookConfiguration" +) diff --git a/pkg/k8s/apis/spiderpool.spidernet.io/v2beta1/rbac.go b/pkg/k8s/apis/spiderpool.spidernet.io/v2beta1/rbac.go index a45fb43198..dffe4b4535 100644 --- a/pkg/k8s/apis/spiderpool.spidernet.io/v2beta1/rbac.go +++ b/pkg/k8s/apis/spiderpool.spidernet.io/v2beta1/rbac.go @@ -10,12 +10,12 @@ // +kubebuilder:rbac:groups="apps",resources=statefulsets;deployments;replicasets;daemonsets,verbs=get;list;watch;update // +kubebuilder:rbac:groups="resource.k8s.io",resources=resourceclaims;resourceclaims/status;podschedulingcontexts/status;resourceclaimtemplates;resourceclasses;podschedulingcontexts,verbs=get;list;patch;watch;update // +kubebuilder:rbac:groups="networking.k8s.io",resources=servicecidrs,verbs=get;list;watch -// +kubebuilder:rbac:groups="batch",resources=jobs;cronjobs,verbs=get;list;watch;update +// +kubebuilder:rbac:groups="batch",resources=jobs;cronjobs,verbs=get;list;watch;update;delete // +kubebuilder:rbac:groups="",resources=nodes,verbs=get;list;watch // +kubebuilder:rbac:groups="",resources=namespaces;endpoints;pods;pods/status;configmaps,verbs=get;list;watch;update;patch;delete;deletecollection // +kubebuilder:rbac:groups=k8s.cni.cncf.io,resources=network-attachment-definitions,verbs=get;list;watch;create;update;patch;delete // +kubebuilder:rbac:groups=kubevirt.io,resources=virtualmachines;virtualmachineinstances,verbs=get;list -// +kubebuilder:rbac:groups=admissionregistration.k8s.io,resources=mutatingwebhookconfigurations;validatingwebhookconfigurations,verbs=get;list;watch +// +kubebuilder:rbac:groups=admissionregistration.k8s.io,resources=mutatingwebhookconfigurations;validatingwebhookconfigurations,verbs=get;list;watch;delete // +kubebuilder:rbac:groups=apiextensions.k8s.io,resources=customresourcedefinitions,verbs=get;list;watch;create;update;patch;delete // +kubebuilder:rbac:groups=apps.kruise.io,resources=clonesets;statefulsets,verbs=get;list;watch // +kubebuilder:rbac:groups=crd.projectcalico.org,resources=ippools,verbs=get;list;watch diff --git a/pkg/k8s/utils/utils.go b/pkg/k8s/utils/utils.go index 39f6c10bc0..602ed18f69 100644 --- a/pkg/k8s/utils/utils.go +++ b/pkg/k8s/utils/utils.go @@ -6,16 +6,12 @@ package utils import ( "context" - api_errors "k8s.io/apimachinery/pkg/api/errors" "sigs.k8s.io/controller-runtime/pkg/client" ) func DeleteWebhookConfiguration(ctx context.Context, c client.Client, name string, obj client.Object) error { err := c.Get(ctx, client.ObjectKey{Name: name}, obj) if err != nil { - if api_errors.IsNotFound(err) { - return nil - } return err } diff --git a/test/Makefile b/test/Makefile index fe03e0fbf5..867dcd122a 100644 --- a/test/Makefile +++ b/test/Makefile @@ -424,7 +424,6 @@ upgrade_spiderpool: .PHONY: helm_upgrade_spiderpool helm_upgrade_spiderpool: @echo -e "\033[35m [helm upgrade spiderpool] \033[0m" - kubectl delete po -n $(RELEASE_NAMESPACE) spiderpool-init --kubeconfig $(E2E_KUBECONFIG) || true ;\ HELM_OPTION="";\ HELM_OPTION+=" --set spiderpoolController.replicas=1 " ; \ if [ "$(INSTALL_OVERLAY_CNI)" == "true" ]; then \