Skip to content

Commit ae19246

Browse files
committed
test(upgrade): remove finalizers using kubectl from all objects in the namespace
1 parent 3e0d61f commit ae19246

File tree

2 files changed

+8
-57
lines changed

2 files changed

+8
-57
lines changed

test/e2e/upgrade/upgrade_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ var _ = Describe("operator upgrade", Label("upgrade"), func() {
5555
Eventually(func() bool {
5656
err := k8sClient.Get(ctx, types.NamespacedName{Name: namespace}, &corev1.Namespace{})
5757
return k8serrors.IsNotFound(err)
58-
}, 60*time.Second, 2*time.Second).Should(BeTrue())
58+
}, 5*time.Minute, 5*time.Second).Should(BeTrue())
5959
err := k8sClient.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: namespace}})
6060
Expect(err).ToNot(HaveOccurred())
6161
deployOldOperator(ctx, k8sClient, tc.operatorVersion, namespace)
@@ -162,7 +162,7 @@ var _ = Describe("operator upgrade", Label("upgrade"), func() {
162162
Eventually(func() bool {
163163
err := k8sClient.Get(ctx, types.NamespacedName{Name: namespace}, &corev1.Namespace{})
164164
return k8serrors.IsNotFound(err)
165-
}, 60*time.Second, 2*time.Second).Should(BeTrue())
165+
}, 5*time.Minute, 5*time.Second).Should(BeTrue())
166166
err := k8sClient.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: namespace}})
167167
Expect(err).ToNot(HaveOccurred())
168168
deployOldOperator(ctx, k8sClient, tc.operatorVersion, namespace)

test/e2e/upgrade/utils.go

Lines changed: 6 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"os"
7+
"os/exec"
78
"time"
89

910
. "github.com/onsi/ginkgo/v2" //nolint:staticcheck
@@ -19,7 +20,6 @@ import (
1920
"k8s.io/utils/ptr"
2021
"sigs.k8s.io/controller-runtime/pkg/client"
2122

22-
vmv1beta1 "github.com/VictoriaMetrics/operator/api/operator/v1beta1"
2323
"github.com/VictoriaMetrics/operator/internal/manager"
2424
)
2525

@@ -249,60 +249,11 @@ func startNewOperator(ctx context.Context) (context.CancelFunc, chan struct{}) {
249249
func cleanupNamespace(ctx context.Context, k8sClient client.Client, watchNamespace string) {
250250
GinkgoHelper()
251251

252-
// Clear finalizers from VMAgent objects to ensure namespace doesn't block
253-
var agents vmv1beta1.VMAgentList
254-
if err := k8sClient.List(ctx, &agents, client.InNamespace(watchNamespace)); err == nil {
255-
for i := range agents.Items {
256-
agent := &agents.Items[i]
257-
agent.Finalizers = nil
258-
_ = k8sClient.Update(ctx, agent)
259-
_ = k8sClient.Delete(ctx, agent)
260-
}
261-
}
262-
263-
// Clear finalizers from VMSingle objects
264-
var singles vmv1beta1.VMSingleList
265-
if err := k8sClient.List(ctx, &singles, client.InNamespace(watchNamespace)); err == nil {
266-
for i := range singles.Items {
267-
single := &singles.Items[i]
268-
single.Finalizers = nil
269-
_ = k8sClient.Update(ctx, single)
270-
_ = k8sClient.Delete(ctx, single)
271-
}
272-
}
273-
274-
// Clear finalizers from VMCluster objects
275-
var clusters vmv1beta1.VMClusterList
276-
if err := k8sClient.List(ctx, &clusters, client.InNamespace(watchNamespace)); err == nil {
277-
for i := range clusters.Items {
278-
cluster := &clusters.Items[i]
279-
cluster.Finalizers = nil
280-
_ = k8sClient.Update(ctx, cluster)
281-
_ = k8sClient.Delete(ctx, cluster)
282-
}
283-
}
284-
285-
// Clear finalizers from Roles
286-
var roles rbacv1.RoleList
287-
if err := k8sClient.List(ctx, &roles, client.InNamespace(watchNamespace)); err == nil {
288-
for i := range roles.Items {
289-
role := &roles.Items[i]
290-
role.Finalizers = nil
291-
_ = k8sClient.Update(ctx, role)
292-
_ = k8sClient.Delete(ctx, role)
293-
}
294-
}
295-
296-
// Clear finalizers from RoleBindings
297-
var roleBindings rbacv1.RoleBindingList
298-
if err := k8sClient.List(ctx, &roleBindings, client.InNamespace(watchNamespace)); err == nil {
299-
for i := range roleBindings.Items {
300-
rb := &roleBindings.Items[i]
301-
rb.Finalizers = nil
302-
_ = k8sClient.Update(ctx, rb)
303-
_ = k8sClient.Delete(ctx, rb)
304-
}
305-
}
252+
// Clear finalizers from all namespaced objects using kubectl.
253+
exec.Command("sh", "-c", fmt.Sprintf(
254+
"kubectl get $(kubectl api-resources --namespaced=true --verbs=list -o name | tr \"\n\" \",\" | sed -e 's/,$//') -n %s -o name | xargs -I {} kubectl patch {} -n %s -p '{\"metadata\":{\"finalizers\":[]}}' --type=merge",
255+
watchNamespace, watchNamespace,
256+
)).Run()
306257

307258
// Delete namespace
308259
nsObj := &corev1.Namespace{

0 commit comments

Comments
 (0)