]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: adapt service creation form to support nvmeof creation 63304/head
authorAfreen Misbah <afreen@ibm.com>
Thu, 15 May 2025 16:10:21 +0000 (21:40 +0530)
committerAfreen Misbah <afreen@ibm.com>
Thu, 15 May 2025 16:23:19 +0000 (21:53 +0530)
Fixes https://tracker.ceph.com/issues/71340

- nvmeof form failing due to absence of pool field in req
- backport of https://github.com/ceph/ceph/pull/57801

Signed-off-by: Afreen Misbah <afreen@ibm.com>
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-form/service-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-form/service-form.component.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-form/service-form.component.ts

index b95f9353db35207b13719b6f52b3c91bf903972f..fa01d95d3616298da153ab2d29279bbe6f8b4199 100644 (file)
         </ng-container>
 
         <!-- iSCSI -->
+        <!-- NVMe/TCP -->
         <!-- pool -->
         <div class="form-group row"
-             *ngIf="serviceForm.controls.service_type.value === 'iscsi'">
+             *ngIf="serviceForm.controls.service_type.value === 'iscsi' || serviceForm.controls.service_type.value === 'nvmeof'">
           <label i18n
                  class="cd-col-form-label required"
                  for="pool">Pool</label>
index ebecec5cc3854e31fc36f5b1f61df1b509e01159..c73b6208deef8a37f57a81d6e0748eca757e8926 100644 (file)
@@ -297,6 +297,27 @@ x4Ea7kGVgx9kWh5XjWz9wjZvY49UKIT5ppIAWPMbLl3UpfckiuNhTA==
       });
     });
 
+    describe('should test service nvmeof', () => {
+      beforeEach(() => {
+        formHelper.setValue('service_type', 'nvmeof');
+        formHelper.setValue('pool', 'xyz');
+      });
+
+      it('should submit iscsi', () => {
+        component.onSubmit();
+        expect(cephServiceService.create).toHaveBeenCalledWith({
+          service_type: 'nvmeof',
+          placement: {},
+          unmanaged: false,
+          pool: 'xyz'
+        });
+      });
+
+      it('should throw error when there is no pool', () => {
+        formHelper.expectErrorChange('pool', '', 'required');
+      });
+    });
+
     describe('should test service iscsi', () => {
       beforeEach(() => {
         formHelper.setValue('service_type', 'iscsi');
index d6eea1711ffc793dcef809036789a6262b0ce4e8..1faf1aa611b28b0791d4b3a5aca989601b4555ee 100644 (file)
@@ -142,6 +142,9 @@ export class ServiceFormComponent extends CdForm implements OnInit {
           CdValidators.requiredIf({
             service_type: 'iscsi'
           }),
+          CdValidators.requiredIf({
+            service_type: 'nvmeof'
+          }),
           CdValidators.requiredIf({
             service_type: 'ingress'
           }),
@@ -170,11 +173,15 @@ export class ServiceFormComponent extends CdForm implements OnInit {
       count: [null, [CdValidators.number(false)]],
       unmanaged: [false],
       // iSCSI
+      // NVMe/TCP
       pool: [
         null,
         [
           CdValidators.requiredIf({
             service_type: 'iscsi'
+          }),
+          CdValidators.requiredIf({
+            service_type: 'nvmeof'
           })
         ]
       ],
@@ -748,6 +755,7 @@ export class ServiceFormComponent extends CdForm implements OnInit {
         break;
 
       case 'iscsi':
+      case 'nvmeof':
         serviceSpec['pool'] = values['pool'];
         break;