]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: Fix delete listener 63246/head
authorAfreen Misbah <afreen@ibm.com>
Tue, 6 May 2025 14:27:03 +0000 (19:57 +0530)
committerAfreen Misbah <afreen@ibm.com>
Mon, 12 May 2025 19:16:35 +0000 (00:46 +0530)
- 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 <afreen@ibm.com>
(cherry picked from commit 87ff77183d84066378618939a0a357a80d773e34)

src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-listeners-list/nvmeof-listeners-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/models/nvmeof.ts

index 5190b9022760c572c6233a900c662fc50eedad94..b79dc51a88fccfefb9d1d88bb942367be93fdb3a 100644 (file)
@@ -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
index c9268ee5545d8de6850ee96a4dc6b120638eea1f..6eaff6509e25ecb3bf37acea151453a96f17a005 100755 (executable)
@@ -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');
     });
index 4a3148eb752d7c94b0aa74e29cb2d3627a349866..9fba80ae135c84d800ac04b050a6aeaafeb5ea80 100644 (file)
@@ -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
         }
       }
index 5d60923d00448fad3fa74626091fa70ed70ee230..66357e413624047152293819eb0a21cb00965e87 100644 (file)
@@ -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 {