From fcbb9c8788437a2800e346a7297286dca690d656 Mon Sep 17 00:00:00 2001 From: Sagar Gopale Date: Fri, 6 Feb 2026 16:13:31 +0530 Subject: [PATCH] mgr/dashboard: create-namespace Fixes: https://tracker.ceph.com/issues/74826 Signed-off-by: Sagar Gopale --- .../src/app/ceph/block/block.module.ts | 9 +- .../nvmeof-gateway.component.spec.ts | 11 +- .../nvmeof-initiators-form.component.ts | 2 +- .../nvmeof-namespaces-form.component.html | 467 ++++++++++++++---- .../nvmeof-namespaces-form.component.spec.ts | 141 ++++-- .../nvmeof-namespaces-form.component.ts | 443 +++++++++++++---- .../nvmeof-namespaces-list.component.ts | 39 +- .../src/app/shared/api/nvmeof.service.spec.ts | 6 +- .../src/app/shared/api/nvmeof.service.ts | 9 +- .../frontend/src/app/shared/models/nvmeof.ts | 27 + 10 files changed, 904 insertions(+), 250 deletions(-) diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/block.module.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/block.module.ts index 92ed9d76872..8dd4c8e5295 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/block.module.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/block.module.ts @@ -356,6 +356,11 @@ const routes: Routes = [ } ] }, + { + path: `namespaces/${URLVerbs.CREATE}`, + component: NvmeofNamespacesFormComponent, + data: { breadcrumbs: ActionLabels.CREATE + ' ' + $localize`Namespace` } + }, { path: 'subsystems', component: NvmeofSubsystemsComponent, @@ -378,12 +383,12 @@ const routes: Routes = [ { path: `${URLVerbs.CREATE}/:subsystem_nqn/namespace`, component: NvmeofNamespacesFormComponent, - outlet: 'modal' + data: { breadcrumbs: ActionLabels.CREATE + ' ' + $localize`Namespace` } }, { path: `${URLVerbs.EDIT}/:subsystem_nqn/namespace/:nsid`, component: NvmeofNamespacesFormComponent, - outlet: 'modal' + data: { breadcrumbs: ActionLabels.EDIT + ' ' + $localize`Namespace` } }, // initiators { diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-gateway/nvmeof-gateway.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-gateway/nvmeof-gateway.component.spec.ts index d1c9b9eeaf4..cd8a3718a62 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-gateway/nvmeof-gateway.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-gateway/nvmeof-gateway.component.spec.ts @@ -1,4 +1,5 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ActivatedRoute } from '@angular/router'; import { NvmeofGatewayComponent } from './nvmeof-gateway.component'; @@ -6,6 +7,7 @@ import { HttpClientModule } from '@angular/common/http'; import { RouterTestingModule } from '@angular/router/testing'; import { SharedModule } from '~/app/shared/shared.module'; import { ComboBoxModule, GridModule, TabsModule } from 'carbon-components-angular'; +import { of } from 'rxjs'; describe('NvmeofGatewayComponent', () => { let component: NvmeofGatewayComponent; @@ -22,7 +24,14 @@ describe('NvmeofGatewayComponent', () => { GridModule, TabsModule ], - providers: [] + providers: [ + { + provide: ActivatedRoute, + useValue: { + queryParams: of({}) + } + } + ] }).compileComponents(); fixture = TestBed.createComponent(NvmeofGatewayComponent); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-initiators-form/nvmeof-initiators-form.component.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-initiators-form/nvmeof-initiators-form.component.ts index 6f6b8f8896f..fd221fef2fe 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-initiators-form/nvmeof-initiators-form.component.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-initiators-form/nvmeof-initiators-form.component.ts @@ -3,9 +3,9 @@ import { UntypedFormArray, UntypedFormControl, Validators } from '@angular/forms import { CdFormBuilder } from '~/app/shared/forms/cd-form-builder'; import { ActionLabelsI18n, URLVerbs } from '~/app/shared/constants/app.constants'; +import { Icons } from '~/app/shared/enum/icons.enum'; import { CdFormGroup } from '~/app/shared/forms/cd-form-group'; import { CdValidators } from '~/app/shared/forms/cd-validators'; -import { Icons } from '~/app/shared/enum/icons.enum'; import { Permission } from '~/app/shared/models/permissions'; import { AuthStorageService } from '~/app/shared/services/auth-storage.service'; import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service'; diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-form/nvmeof-namespaces-form.component.html b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-form/nvmeof-namespaces-form.component.html index bdd3830ffea..4200fd73622 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-form/nvmeof-namespaces-form.component.html +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-form/nvmeof-namespaces-form.component.html @@ -1,115 +1,370 @@ - - {{ action | titlecase }} {{ resource | upperFirst }} - -
-