]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: Set max subsystem count to 512 rather than 4096 66273/head
authorAfreen Misbah <afreen@ibm.com>
Mon, 17 Nov 2025 05:01:45 +0000 (10:31 +0530)
committerAfreen Misbah <afreen@ibm.com>
Mon, 17 Nov 2025 05:31:19 +0000 (11:01 +0530)
Fixes https://tracker.ceph.com/issues/73867

- regression from https://github.com/ceph/ceph/pull/64477/files
- removing frontend valdations as this values are volatiel and require changes every release. Nvmeof is seeting these and validating as well.

Signed-off-by: Afreen Misbah <afreen@ibm.com>
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems-details/nvmeof-subsystems-details.component.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems-form/nvmeof-subsystems-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems-form/nvmeof-subsystems-form.component.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems-form/nvmeof-subsystems-form.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.ts

index 563ef314386fb6ff23f6f7956a4d31328f0ef401..12ba23ed7206822bed997d84feb2fbaab7027eef 100644 (file)
@@ -6,6 +6,7 @@ import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';
 import { Permissions } from '~/app/shared/models/permissions';
 import { SharedModule } from '~/app/shared/shared.module';
 import { NvmeofSubsystemsDetailsComponent } from './nvmeof-subsystems-details.component';
+import { DEFAULT_MAX_NAMESPACE_PER_SUBSYSTEM } from '~/app/shared/api/nvmeof.service';
 
 describe('NvmeofSubsystemsDetailsComponent', () => {
   let component: NvmeofSubsystemsDetailsComponent;
@@ -27,7 +28,7 @@ describe('NvmeofSubsystemsDetailsComponent', () => {
       subtype: 'NVMe',
       nqn: 'nqn.2001-07.com.ceph:1720603703820',
       namespace_count: 1,
-      max_namespaces: 4096
+      max_namespaces: DEFAULT_MAX_NAMESPACE_PER_SUBSYSTEM
     };
     component.permissions = new Permissions({
       grafana: ['read']
index 5ccc48eeeaef44ea99eb929b92bdc082f19acf7e..4bb762e9ea5f15c015948350bab073eb608e8027 100644 (file)
@@ -53,9 +53,6 @@
             <span class="invalid-feedback"
                   *ngIf="subsystemForm.showError('max_namespaces', formDir, 'min')"
                   i18n>The value must be at least 1.</span>
-            <span class="invalid-feedback"
-                  *ngIf="subsystemForm.showError('max_namespaces', formDir, 'max')"
-                  i18n>The value cannot be greater than {{defaultMaxNamespace}}.</span>
             <span class="invalid-feedback"
                   *ngIf="subsystemForm.showError('max_namespaces', formDir, 'pattern')"
                   i18n>The value must be a positive integer.</span>
index af178560b30caf0157dedee27f300b617037eaa8..45e5a59b9d7001359b41a99a75961dfee9cd7327 100644 (file)
@@ -11,7 +11,10 @@ import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
 import { SharedModule } from '~/app/shared/shared.module';
 import { NvmeofSubsystemsFormComponent } from './nvmeof-subsystems-form.component';
 import { FormHelper } from '~/testing/unit-test-helper';
-import { MAX_NAMESPACE, NvmeofService } from '~/app/shared/api/nvmeof.service';
+import {
+  DEFAULT_MAX_NAMESPACE_PER_SUBSYSTEM,
+  NvmeofService
+} from '~/app/shared/api/nvmeof.service';
 
 describe('NvmeofSubsystemsFormComponent', () => {
   let component: NvmeofSubsystemsFormComponent;
@@ -61,7 +64,7 @@ describe('NvmeofSubsystemsFormComponent', () => {
       component.onSubmit();
       expect(nvmeofService.createSubsystem).toHaveBeenCalledWith({
         nqn: expectedNqn,
-        max_namespaces: MAX_NAMESPACE,
+        max_namespaces: DEFAULT_MAX_NAMESPACE_PER_SUBSYSTEM,
         enable_ha: true,
         gw_group: mockGroupName
       });
@@ -79,10 +82,16 @@ describe('NvmeofSubsystemsFormComponent', () => {
       formHelper.expectError('max_namespaces', 'pattern');
     });
 
-    it(`should give error on max_namespaces greater than ${MAX_NAMESPACE}`, () => {
-      formHelper.setValue('max_namespaces', 6000);
+    it(`should not give error on max_namespaces greater than ${DEFAULT_MAX_NAMESPACE_PER_SUBSYSTEM}`, () => {
+      const expectedNqn = 'nqn.2001-07.com.ceph:' + mockTimestamp;
+      formHelper.setValue('max_namespaces', 600);
       component.onSubmit();
-      formHelper.expectError('max_namespaces', 'max');
+      expect(nvmeofService.createSubsystem).toHaveBeenCalledWith({
+        nqn: expectedNqn,
+        max_namespaces: DEFAULT_MAX_NAMESPACE_PER_SUBSYSTEM,
+        enable_ha: true,
+        gw_group: mockGroupName
+      });
     });
 
     it('should give error on max_namespaces lesser than 1', () => {
index 7e5b064f37929604320cd593ae4dbf45af4e3cf1..5de7f1b80d89b0bd2453cac029e1f64126b8dc48 100644 (file)
@@ -10,7 +10,10 @@ import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
 import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
 import { FinishedTask } from '~/app/shared/models/finished-task';
 import { ActivatedRoute, Router } from '@angular/router';
-import { MAX_NAMESPACE, NvmeofService } from '~/app/shared/api/nvmeof.service';
+import {
+  DEFAULT_MAX_NAMESPACE_PER_SUBSYSTEM,
+  NvmeofService
+} from '~/app/shared/api/nvmeof.service';
 
 @Component({
   selector: 'cd-nvmeof-subsystems-form',
@@ -23,7 +26,7 @@ export class NvmeofSubsystemsFormComponent implements OnInit {
   action: string;
   resource: string;
   pageURL: string;
-  defaultMaxNamespace: number = MAX_NAMESPACE;
+  defaultMaxNamespace: number = DEFAULT_MAX_NAMESPACE_PER_SUBSYSTEM;
   group: string;
 
   constructor(
@@ -81,11 +84,7 @@ export class NvmeofSubsystemsFormComponent implements OnInit {
         ]
       }),
       max_namespaces: new UntypedFormControl(this.defaultMaxNamespace, {
-        validators: [
-          CdValidators.number(false),
-          Validators.max(this.defaultMaxNamespace),
-          Validators.min(1)
-        ]
+        validators: [CdValidators.number(false), Validators.min(1)]
       })
     });
   }
index 02d0030d6cff56c980dd753afb6760eeecbd4162..af69d001a77d540cad0eda4368ad385cab933a12 100644 (file)
@@ -6,7 +6,7 @@ import { Observable, of as observableOf } from 'rxjs';
 import { catchError, mapTo } from 'rxjs/operators';
 import { CephServiceSpec } from '../models/service.interface';
 
-export const MAX_NAMESPACE = 4096;
+export const DEFAULT_MAX_NAMESPACE_PER_SUBSYSTEM = 512;
 
 export type GatewayGroup = CephServiceSpec;