From 87ff77183d84066378618939a0a357a80d773e34 Mon Sep 17 00:00:00 2001 From: Afreen Misbah Date: Tue, 6 May 2025 19:57:03 +0530 Subject: [PATCH] mgr/dashboard: Fix delete listener - pass gw_group to delete API in frontend - when more than one gw groups present delete listener failing with error message: Multiple NVMe-oF gateway groups are configured. Please specify the 'gw_group' parameter in the request. - added missing types, i18n Fixes https://tracker.ceph.com/issues/71236 Signed-off-by: Afreen Misbah --- .../nvmeof-listeners-list.component.ts | 7 +++++-- .../frontend/src/app/shared/api/nvmeof.service.spec.ts | 4 ++-- .../frontend/src/app/shared/api/nvmeof.service.ts | 9 ++++++++- .../dashboard/frontend/src/app/shared/models/nvmeof.ts | 1 + 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-listeners-list/nvmeof-listeners-list.component.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-listeners-list/nvmeof-listeners-list.component.ts index 5190b9022760c..b79dc51a88fcc 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-listeners-list/nvmeof-listeners-list.component.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-listeners-list/nvmeof-listeners-list.component.ts @@ -100,9 +100,11 @@ export class NvmeofListenersListComponent implements OnInit { deleteListenerModal() { const listener = this.selection.first(); this.modalService.show(DeleteConfirmationModalComponent, { - itemDescription: 'Listener', + itemDescription: $localize`Listener`, actionDescription: 'delete', - itemNames: [`listener ${listener.host_name} (${listener.traddr}:${listener.trsvcid})`], + itemNames: [ + $localize`listener` + ' ' + `${listener.host_name} (${listener.traddr}:${listener.trsvcid})` + ], submitActionObservable: () => this.taskWrapper.wrapTaskAroundCall({ task: new FinishedTask('nvmeof/listener/delete', { @@ -111,6 +113,7 @@ export class NvmeofListenersListComponent implements OnInit { }), call: this.nvmeofService.deleteListener( this.subsystemNQN, + this.group, listener.host_name, listener.traddr, listener.trsvcid diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.spec.ts index c9268ee5545d8..6eaff6509e25e 100755 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.spec.ts @@ -130,10 +130,10 @@ describe('NvmeofService', () => { it('should call deleteListener', () => { const request = { host_name: 'ceph-node-02', traddr: '192.168.100.102', trsvcid: '4421' }; service - .deleteListener(mockNQN, request.host_name, request.traddr, request.trsvcid) + .deleteListener(mockNQN, mockGroupName, request.host_name, request.traddr, request.trsvcid) .subscribe(); const req = httpTesting.expectOne( - `${API_PATH}/subsystem/${mockNQN}/listener/${request.host_name}/${request.traddr}?trsvcid=${request.trsvcid}` + `${API_PATH}/subsystem/${mockNQN}/listener/${request.host_name}/${request.traddr}?gw_group=${mockGroupName}&trsvcid=${request.trsvcid}` ); expect(req.request.method).toBe('DELETE'); }); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.ts index 4a3148eb752d7..9fba80ae135c8 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.ts @@ -115,12 +115,19 @@ export class NvmeofService { }); } - deleteListener(subsystemNQN: string, hostName: string, traddr: string, trsvcid: string) { + deleteListener( + subsystemNQN: string, + group: string, + hostName: string, + traddr: string, + trsvcid: string + ) { return this.http.delete( `${API_PATH}/subsystem/${subsystemNQN}/listener/${hostName}/${traddr}`, { observe: 'response', params: { + gw_group: group, trsvcid } } diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/models/nvmeof.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/models/nvmeof.ts index 5d60923d00448..66357e4136240 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/models/nvmeof.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/models/nvmeof.ts @@ -31,6 +31,7 @@ export interface NvmeofListener { adrfam: number; // 0: IPv4, 1: IPv6 trsvcid: number; // 4420 id?: number; // for table + full_addr?: string; // for table } export interface NvmeofSubsystemNamespace { -- 2.39.5