]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: mgr/dashboard: Rename namespace block size field and reorder namespace... 67995/head
authorSagar Gopale <sagar.gopale@ibm.com>
Wed, 25 Mar 2026 13:28:52 +0000 (18:58 +0530)
committerSagar Gopale <sagar.gopale@ibm.com>
Wed, 22 Apr 2026 05:42:39 +0000 (11:12 +0530)
Fixes: https://tracker.ceph.com/issues/75707
Signed-off-by: Sagar Gopale <sagar.gopale@ibm.com>
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-form/nvmeof-namespaces-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-form/nvmeof-namespaces-form.component.ts

index 370db1c726d6dd0fe72e5eca1ff98a43891e6407..77c6700f7243bb1ec312a12def934d121da6cd1c 100644 (file)
@@ -62,9 +62,9 @@
            class="form-item">
         <div cdsCol>
           <cds-number
-            formControlName="nsCount"
             cdValidate
             #nsCountRef="cdValidate"
+            formControlName="nsCount"
             label="Number of namespaces"
             helperText="No. of namespaces to generate. Value must be between 1 and 5."
             [min]="MIN_NAMESPACE_CREATE"
         </div>
       </div>
 
-      <!-- Namespace Size (UI only) -->
+      <!-- Image Size -->
       <div cdsRow
            class="form-item">
-        <div cdsCol>
-          <cds-number
-            formControlName="namespace_size"
-            cdValidate
-            #namespaceSizeRef="cdValidate"
-            label="Namespace size (GiB)"
-            helperText="Specify the size to expose to hosts. Leave blank for full device/file."
-            placeholder="e.g. 100"
-            [min]="0"
-            [invalid]="namespaceSizeRef.isInvalid"
-            [invalidText]="namespaceSizeError"
+        <div
+          cdsCol
+          [columnNumbers]="{md: 4}">
+          <cds-text-label
+            label="Image size (GiB)"
+            helperText="The size of the namespace image."
+            [invalid]="imageSize.isInvalid"
+            [invalidText]="sizeError"
+            cdRequiredField="Image Size"
             i18n-label
             i18n-helperText>
-          </cds-number>
-          <ng-template #namespaceSizeError>
-            @if (nsForm.controls['namespace_size'].hasError('blockSizeMultiple')) {
+            <input cdsText
+                   cdValidate
+                   #imageSize="cdValidate"
+                   type="text"
+                   placeholder="e.g. 100 GiB"
+                   id="image_size"
+                   formControlName="image_size"
+                   defaultUnit="GiB"
+                   [min]="0"
+                   [invalid]="imageSize.isInvalid"
+                   cdDimlessBinary>
+          </cds-text-label>
+          <ng-template #sizeError>
             <span
-              i18n>Size must be a multiple of the block size (typically 512 or 4096 bytes).</span>
-            }
+              i18n>Enter a valid size (e.g., 10GiB).</span>
           </ng-template>
         </div>
       </div>
               i18n>Image name (optional)</label>
             <cds-text-label
               helperText="Provide a name for the images. For bulk creation, this will be used as the base prefix with numeric suffixes (e.g., img-1, img-2). Leave blank to auto-generate."
-              [invalid]="rbdImageNameRef.isInvalid"
+              [invalid]="rbdImageName.isInvalid"
               [invalidText]="nsForm.getError('rbdImageName', 'rbd_image_name') ? 'Image name contains invalid characters' : ''"
               i18n-helperText
               i18n-invalidText>
               <input cdsText
                      cdValidate
-                     #rbdImageNameRef="cdValidate"
+                     #rbdImageName="cdValidate"
                      placeholder="Enter a name"
-                     formControlName="rbd_image_name" />
+                     formControlName="rbd_image_name"
+                     [invalid]="rbdImageName.isInvalid" />
             </cds-text-label>
           </div>
         </div>
       </div>
       }
 
-      <!-- Image Size -->
+      <!-- Namespace Block Size (bytes) -->
       <div cdsRow
            class="form-item">
-        <div
-          cdsCol
-          [columnNumbers]="{md: 4}">
-          <cds-text-label
-            label="Image size (GiB)"
-            helperText="The size of the namespace image."
-            [invalid]="imageSizeRef.isInvalid"
-            [invalidText]="sizeError"
-            cdRequiredField="Image Size"
+        <div cdsCol>
+          <cds-number
+            cdValidate
+            #namespaceSize="cdValidate"
+            formControlName="namespace_size"
+            label="Namespace block size (bytes)"
+            helperText="Specify the block size to expose to the hosts. Leave blank for the default block size of 512 bytes."
+            [min]="0"
+            [invalid]="namespaceSize.isInvalid"
             i18n-label
             i18n-helperText>
-            <input cdsText
-                   cdValidate
-                   #imageSizeRef="cdValidate"
-                   type="text"
-                   placeholder="e.g. 100 GiB"
-                   id="image_size"
-                   formControlName="image_size"
-                   defaultUnit="GiB"
-                   [min]="0"
-                   [invalid]="imageSizeRef.isInvalid"
-                   cdDimlessBinary>
-          </cds-text-label>
-          <ng-template #sizeError>
-            <span
-              i18n>Enter a valid size (e.g., 10GiB).</span>
-          </ng-template>
+          </cds-number>
         </div>
       </div>
 
index c6b6dfc7415e5799013647821e828b6288b64612..57c3aaa913c7cd13cea49bfbc4e320484a510827 100644 (file)
@@ -249,7 +249,7 @@ export class NvmeofNamespacesFormComponent implements OnInit {
           return /^[^@/]+$/.test(value) ? null : { rbdImageName: true };
         })
       ]),
-      namespace_size: new UntypedFormControl(null), // UI only - not sent to backend
+      namespace_size: new UntypedFormControl(512), // Block size in bytes; default 512
       host_access: new UntypedFormControl('all'), // UI only - determines visibility
       initiators: new UntypedFormControl([]) // UI only - selected hosts
     });