Skip to content

Commit 5978553

Browse files
authored
Fix Bug Deleting Tenant PVCs (#977)
Signed-off-by: Daniel Valdivia <18384552+dvaldivia@users.noreply.github.com>
1 parent 4306d0f commit 5978553

File tree

3 files changed

+88
-59
lines changed

3 files changed

+88
-59
lines changed

operatorapi/operator_tenants.go

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,14 @@ func getDeleteTenantResponse(session *models.Principal, params operator_api.Dele
264264
if params.Body != nil {
265265
deleteTenantPVCs = params.Body.DeletePvcs
266266
}
267-
if err = deleteTenantAction(context.Background(), opClient, clientset.CoreV1(), params.Namespace, params.Tenant, deleteTenantPVCs); err != nil {
267+
268+
tenant, err := opClient.TenantGet(params.HTTPRequest.Context(), params.Namespace, params.Tenant, metav1.GetOptions{})
269+
if err != nil {
270+
return prepareError(err)
271+
}
272+
tenant.EnsureDefaults()
273+
274+
if err = deleteTenantAction(params.HTTPRequest.Context(), opClient, clientset.CoreV1(), tenant, deleteTenantPVCs); err != nil {
268275
return prepareError(err)
269276
}
270277
return nil
@@ -277,10 +284,10 @@ func deleteTenantAction(
277284
ctx context.Context,
278285
operatorClient OperatorClientI,
279286
clientset v1.CoreV1Interface,
280-
namespace, tenantName string,
287+
tenant *miniov2.Tenant,
281288
deletePvcs bool) error {
282289

283-
err := operatorClient.TenantDelete(ctx, namespace, tenantName, metav1.DeleteOptions{})
290+
err := operatorClient.TenantDelete(ctx, tenant.Namespace, tenant.Name, metav1.DeleteOptions{})
284291
if err != nil {
285292
// try to delete pvc even if the tenant doesn't exist anymore but only if deletePvcs is set to true,
286293
// else, we return the error
@@ -290,39 +297,35 @@ func deleteTenantAction(
290297
}
291298

292299
if deletePvcs {
293-
tenant, err := operatorClient.TenantGet(ctx, namespace, tenantName, metav1.GetOptions{})
294-
if err != nil {
295-
return err
296-
}
297-
tenant.EnsureDefaults()
300+
298301
// delete MinIO PVCs
299302
opts := metav1.ListOptions{
300-
LabelSelector: fmt.Sprintf("%s=%s", miniov2.TenantLabel, tenantName),
303+
LabelSelector: fmt.Sprintf("%s=%s", miniov2.TenantLabel, tenant.Name),
301304
}
302305
err = clientset.PersistentVolumeClaims(tenant.Namespace).DeleteCollection(ctx, metav1.DeleteOptions{}, opts)
303306
if err != nil {
304307
return err
305308
}
306309
// delete postgres PVCs
307-
if tenant.HasLogEnabled() {
308-
opts := metav1.ListOptions{
309-
LabelSelector: fmt.Sprintf("%s=%s", miniov2.LogDBInstanceLabel, tenant.LogStatefulsetName()),
310-
}
311-
err := clientset.PersistentVolumeClaims(tenant.Namespace).DeleteCollection(ctx, metav1.DeleteOptions{}, opts)
312-
if err != nil {
313-
return err
314-
}
310+
311+
logOpts := metav1.ListOptions{
312+
LabelSelector: fmt.Sprintf("%s=%s", miniov2.LogDBInstanceLabel, tenant.LogStatefulsetName()),
315313
}
314+
err := clientset.PersistentVolumeClaims(tenant.Namespace).DeleteCollection(ctx, metav1.DeleteOptions{}, logOpts)
315+
if err != nil {
316+
return err
317+
}
318+
316319
// delete prometheus PVCs
317-
if tenant.HasPrometheusEnabled() {
318-
opts := metav1.ListOptions{
319-
LabelSelector: fmt.Sprintf("%s=%s", miniov2.PrometheusInstanceLabel, tenant.PrometheusStatefulsetName()),
320-
}
321-
err := clientset.PersistentVolumeClaims(tenant.Namespace).DeleteCollection(ctx, metav1.DeleteOptions{}, opts)
322-
if err != nil {
323-
return err
324-
}
320+
321+
promOpts := metav1.ListOptions{
322+
LabelSelector: fmt.Sprintf("%s=%s", miniov2.PrometheusInstanceLabel, tenant.PrometheusStatefulsetName()),
323+
}
324+
325+
if err := clientset.PersistentVolumeClaims(tenant.Namespace).DeleteCollection(ctx, metav1.DeleteOptions{}, promOpts); err != nil {
326+
return err
325327
}
328+
326329
// delete all tenant's secrets only if deletePvcs = true
327330
return clientset.Secrets(tenant.Namespace).DeleteCollection(ctx, metav1.DeleteOptions{}, opts)
328331
}

operatorapi/operator_tenants_test.go

Lines changed: 51 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -501,8 +501,7 @@ func Test_deleteTenantAction(t *testing.T) {
501501
type args struct {
502502
ctx context.Context
503503
operatorClient OperatorClientI
504-
nameSpace string
505-
tenantName string
504+
tenant *miniov2.Tenant
506505
deletePvcs bool
507506
objs []runtime.Object
508507
mockTenantDelete func(ctx context.Context, namespace string, tenantName string, options metav1.DeleteOptions) error
@@ -517,9 +516,13 @@ func Test_deleteTenantAction(t *testing.T) {
517516
args: args{
518517
ctx: context.Background(),
519518
operatorClient: opClient,
520-
nameSpace: "default",
521-
tenantName: "minio-tenant",
522-
deletePvcs: false,
519+
tenant: &miniov2.Tenant{
520+
ObjectMeta: metav1.ObjectMeta{
521+
Name: "default",
522+
Namespace: "minio-tenant",
523+
},
524+
},
525+
deletePvcs: false,
523526
mockTenantDelete: func(ctx context.Context, namespace string, tenantName string, options metav1.DeleteOptions) error {
524527
return nil
525528
},
@@ -531,9 +534,13 @@ func Test_deleteTenantAction(t *testing.T) {
531534
args: args{
532535
ctx: context.Background(),
533536
operatorClient: opClient,
534-
nameSpace: "default",
535-
tenantName: "minio-tenant",
536-
deletePvcs: false,
537+
tenant: &miniov2.Tenant{
538+
ObjectMeta: metav1.ObjectMeta{
539+
Name: "default",
540+
Namespace: "minio-tenant",
541+
},
542+
},
543+
deletePvcs: false,
537544
mockTenantDelete: func(ctx context.Context, namespace string, tenantName string, options metav1.DeleteOptions) error {
538545
return errors.New("something happened")
539546
},
@@ -546,9 +553,13 @@ func Test_deleteTenantAction(t *testing.T) {
546553
args: args{
547554
ctx: context.Background(),
548555
operatorClient: opClient,
549-
nameSpace: "minio-tenant",
550-
tenantName: "tenant1",
551-
deletePvcs: true,
556+
tenant: &miniov2.Tenant{
557+
ObjectMeta: metav1.ObjectMeta{
558+
Name: "tenant1",
559+
Namespace: "minio-tenant",
560+
},
561+
},
562+
deletePvcs: true,
552563
objs: []runtime.Object{
553564
&corev1.PersistentVolumeClaim{
554565
ObjectMeta: metav1.ObjectMeta{
@@ -573,9 +584,13 @@ func Test_deleteTenantAction(t *testing.T) {
573584
args: args{
574585
ctx: context.Background(),
575586
operatorClient: opClient,
576-
nameSpace: "minio-tenant",
577-
tenantName: "tenant1",
578-
deletePvcs: false,
587+
tenant: &miniov2.Tenant{
588+
ObjectMeta: metav1.ObjectMeta{
589+
Name: "tenant1",
590+
Namespace: "minio-tenant",
591+
},
592+
},
593+
deletePvcs: false,
579594
objs: []runtime.Object{
580595
&corev1.PersistentVolumeClaim{
581596
ObjectMeta: metav1.ObjectMeta{
@@ -600,9 +615,13 @@ func Test_deleteTenantAction(t *testing.T) {
600615
args: args{
601616
ctx: context.Background(),
602617
operatorClient: opClient,
603-
nameSpace: "minio-tenant",
604-
tenantName: "tenant1",
605-
deletePvcs: true,
618+
tenant: &miniov2.Tenant{
619+
ObjectMeta: metav1.ObjectMeta{
620+
Name: "tenant1",
621+
Namespace: "minio-tenant",
622+
},
623+
},
624+
deletePvcs: true,
606625
objs: []runtime.Object{
607626
&corev1.PersistentVolumeClaim{
608627
ObjectMeta: metav1.ObjectMeta{
@@ -627,9 +646,13 @@ func Test_deleteTenantAction(t *testing.T) {
627646
args: args{
628647
ctx: context.Background(),
629648
operatorClient: opClient,
630-
nameSpace: "minio-tenant",
631-
tenantName: "tenant1",
632-
deletePvcs: true,
649+
tenant: &miniov2.Tenant{
650+
ObjectMeta: metav1.ObjectMeta{
651+
Name: "tenant1",
652+
Namespace: "minio-tenant",
653+
},
654+
},
655+
deletePvcs: true,
633656
objs: []runtime.Object{
634657
&corev1.PersistentVolumeClaim{
635658
ObjectMeta: metav1.ObjectMeta{
@@ -655,9 +678,13 @@ func Test_deleteTenantAction(t *testing.T) {
655678
args: args{
656679
ctx: context.Background(),
657680
operatorClient: opClient,
658-
nameSpace: "minio-tenant",
659-
tenantName: "tenant1",
660-
deletePvcs: false,
681+
tenant: &miniov2.Tenant{
682+
ObjectMeta: metav1.ObjectMeta{
683+
Name: "tenant1",
684+
Namespace: "minio-tenant",
685+
},
686+
},
687+
deletePvcs: false,
661688
objs: []runtime.Object{
662689
&corev1.PersistentVolumeClaim{
663690
ObjectMeta: metav1.ObjectMeta{
@@ -681,7 +708,7 @@ func Test_deleteTenantAction(t *testing.T) {
681708
opClientTenantDeleteMock = tt.args.mockTenantDelete
682709
kubeClient := fake.NewSimpleClientset(tt.args.objs...)
683710
t.Run(tt.name, func(t *testing.T) {
684-
if err := deleteTenantAction(tt.args.ctx, tt.args.operatorClient, kubeClient.CoreV1(), tt.args.nameSpace, tt.args.tenantName, tt.args.deletePvcs); (err != nil) != tt.wantErr {
711+
if err := deleteTenantAction(tt.args.ctx, tt.args.operatorClient, kubeClient.CoreV1(), tt.args.tenant, tt.args.deletePvcs); (err != nil) != tt.wantErr {
685712
t.Errorf("deleteTenantAction() error = %v, wantErr %v", err, tt.wantErr)
686713
}
687714
})

portal-ui/src/screens/Console/Dashboard/BasicDashboard/BasicDashboard.tsx

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -145,20 +145,19 @@ const BasicDashboard = ({ classes, usage }: IDashboardProps) => {
145145

146146
const makeServerArray = (usage: Usage | null) => {
147147
if (usage != null) {
148-
usage.servers.forEach(s => s.uptime = niceDays(s.uptime))
149-
return usage.servers.sort(function (a, b) {
150-
var nameA = a.endpoint.toUpperCase();
148+
usage.servers.forEach((s) => (s.uptime = niceDays(s.uptime)));
149+
return usage.servers.sort(function (a, b) {
150+
var nameA = a.endpoint.toUpperCase();
151151
var nameB = b.endpoint.toUpperCase();
152152
if (nameA < nameB) {
153153
return -1;
154-
}
155-
if (nameA > nameB) {
156-
return 1;
157-
}
154+
}
155+
if (nameA > nameB) {
156+
return 1;
157+
}
158158
return 0;
159-
});
160-
}
161-
else return [];
159+
});
160+
} else return [];
162161
};
163162

164163
const serverArray = makeServerArray(usage);

0 commit comments

Comments
 (0)