]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/dashboard: Add group field in nvmeof service form
authorAfreen Misbah <afreen23.git@gmail.com>
Tue, 20 Aug 2024 09:17:47 +0000 (14:47 +0530)
committerAfreen Misbah <afreen23.git@gmail.com>
Tue, 27 Aug 2024 01:48:29 +0000 (07:18 +0530)
Fixes https://tracker.ceph.com/issues/67223

Signed-off-by: Afreen Misbah <afreen23.git@gmail.com>
(cherry picked from commit c90cf8460e02000197b52ca1e7ffaa206c5fd997)

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
src/pybind/mgr/dashboard/frontend/src/app/shared/models/service.interface.ts

index 7a439e23dfe70ab4c1547b1a0c532f1245a1a885..bd8b12564eb66920654f0c2b5c5cdce3497b7d6e 100644 (file)
           </div>
         </div>
 
+        <!-- Group Name -->
+        <div class="form-group row"
+             *ngIf="serviceForm.controls.service_type.value === 'nvmeof'">
+          <label class="cd-col-form-label required"
+                 for="group">
+            <span i18n>Group Name</span>
+          </label>
+          <div class="cd-col-form-input">
+            <div class="input-group">
+              <input id="group"
+                     class="form-control"
+                     type="text"
+                     formControlName="group"
+                     (change)="onNvmeofGroupChange($event.target.value)">
+            </div>
+            <cd-help-text i18n>
+              The name of the gateway group.
+            </cd-help-text>
+            <span class="invalid-feedback"
+                  *ngIf="serviceForm.showError('service_id', frm, 'required')"
+                  i18n>This field is required.</span>
+          </div>
+        </div>
+
         <!-- Service id -->
         <div class="form-group row"
              *ngIf="serviceForm.controls.service_type.value !== 'snmp-gateway'">
index db1e7851c2e4adc44b12f82db6d1498f9f45e1b9..7d3a57fad2337502509bb054f9be54113fc4fb71 100644 (file)
@@ -392,6 +392,7 @@ x4Ea7kGVgx9kWh5XjWz9wjZvY49UKIT5ppIAWPMbLl3UpfckiuNhTA==
         formHelper.setValue('service_type', 'nvmeof');
         formHelper.setValue('service_id', 'svc');
         formHelper.setValue('pool', 'xyz');
+        formHelper.setValue('group', 'abc');
       });
 
       it('should submit nvmeof', () => {
@@ -401,7 +402,8 @@ x4Ea7kGVgx9kWh5XjWz9wjZvY49UKIT5ppIAWPMbLl3UpfckiuNhTA==
           service_id: 'svc',
           placement: {},
           unmanaged: false,
-          pool: 'xyz'
+          pool: 'xyz',
+          group: 'abc'
         });
       });
 
@@ -412,6 +414,10 @@ x4Ea7kGVgx9kWh5XjWz9wjZvY49UKIT5ppIAWPMbLl3UpfckiuNhTA==
       it('should throw error when there is no pool', () => {
         formHelper.expectErrorChange('pool', '', 'required');
       });
+
+      it('should throw error when there is no group', () => {
+        formHelper.expectErrorChange('group', '', 'required');
+      });
     });
 
     describe('should test service smb', () => {
index da7fca61bc24bcb29a85b24af52a3a4eb336d22f..a37cca340142b806733945d9e981483a1a728843 100644 (file)
@@ -195,6 +195,7 @@ export class ServiceFormComponent extends CdForm implements OnInit {
           })
         ]
       ],
+      group: [null, Validators.required],
       // RGW
       rgw_frontend_port: [null, [CdValidators.number(false)]],
       realm_name: [null],
@@ -522,6 +523,7 @@ export class ServiceFormComponent extends CdForm implements OnInit {
               break;
             case 'nvmeof':
               this.serviceForm.get('pool').setValue(response[0].spec.pool);
+              this.serviceForm.get('group').setValue(response[0].spec.group);
               break;
             case 'rgw':
               this.serviceForm
@@ -778,10 +780,13 @@ export class ServiceFormComponent extends CdForm implements OnInit {
       ?.pool_name;
     if (defaultRbdPool) {
       this.serviceForm.get('pool').setValue(defaultRbdPool);
-      this.serviceForm.get('service_id').setValue(defaultRbdPool);
     }
   }
 
+  onNvmeofGroupChange(groupName: string) {
+    this.serviceForm.get('service_id').setValue(groupName);
+  }
+
   requiresServiceId(serviceType: string) {
     return ['mds', 'rgw', 'nfs', 'iscsi', 'nvmeof', 'smb', 'ingress'].includes(serviceType);
   }
@@ -837,6 +842,7 @@ export class ServiceFormComponent extends CdForm implements OnInit {
         break;
       case 'nvmeof':
         this.serviceForm.get('pool').disable();
+        this.serviceForm.get('group').disable();
         break;
     }
   }
@@ -920,6 +926,9 @@ export class ServiceFormComponent extends CdForm implements OnInit {
         break;
 
       case 'nvmeof':
+        serviceSpec['pool'] = values['pool'];
+        serviceSpec['group'] = values['group'];
+        break;
       case 'iscsi':
         serviceSpec['pool'] = values['pool'];
         break;
index 77b2dfde591e741b72b8682719d4ce7e405403d1..8f2d3faca7191f149556ed1403985d4d9b563c01 100644 (file)
@@ -31,6 +31,7 @@ export interface CephServiceAdditionalSpec {
   monitor_port: number;
   virtual_interface_networks: string[];
   pool: string;
+  group: string;
   rgw_frontend_ssl_certificate: string;
   ssl: boolean;
   ssl_cert: string;