From: Afreen Misbah Date: Tue, 6 May 2025 14:27:03 +0000 (+0530) Subject: mgr/dashboard: Fix delete listener X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=89cfda3d1e94d81669360a7d65f7f209545a49c9;p=ceph.git 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 (cherry picked from commit 87ff77183d84066378618939a0a357a80d773e34) --- 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 {