]> git.proxmox.com Git - ceph.git/blame - ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/block.module.ts
Import ceph 15.2.8
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / ceph / block / block.module.ts
CommitLineData
11fdf7f2
TL
1import { CommonModule } from '@angular/common';
2import { NgModule } from '@angular/core';
3import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4import { RouterModule, Routes } from '@angular/router';
5
9f95a23c
TL
6import { TreeModule } from 'angular-tree-component';
7import { NgBootstrapFormValidationModule } from 'ng-bootstrap-form-validation';
11fdf7f2
TL
8import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
9import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
10import { ModalModule } from 'ngx-bootstrap/modal';
11import { ProgressbarModule } from 'ngx-bootstrap/progressbar';
12import { TabsModule } from 'ngx-bootstrap/tabs';
13import { TooltipModule } from 'ngx-bootstrap/tooltip';
14
15import { ActionLabels, URLVerbs } from '../../shared/constants/app.constants';
16import { FeatureTogglesGuardService } from '../../shared/services/feature-toggles-guard.service';
17import { SharedModule } from '../../shared/shared.module';
eafe8130 18import { IscsiSettingComponent } from './iscsi-setting/iscsi-setting.component';
11fdf7f2
TL
19import { IscsiTabsComponent } from './iscsi-tabs/iscsi-tabs.component';
20import { IscsiTargetDetailsComponent } from './iscsi-target-details/iscsi-target-details.component';
21import { IscsiTargetDiscoveryModalComponent } from './iscsi-target-discovery-modal/iscsi-target-discovery-modal.component';
22import { IscsiTargetFormComponent } from './iscsi-target-form/iscsi-target-form.component';
23import { IscsiTargetImageSettingsModalComponent } from './iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component';
24import { IscsiTargetIqnSettingsModalComponent } from './iscsi-target-iqn-settings-modal/iscsi-target-iqn-settings-modal.component';
25import { IscsiTargetListComponent } from './iscsi-target-list/iscsi-target-list.component';
26import { IscsiComponent } from './iscsi/iscsi.component';
27import { MirroringModule } from './mirroring/mirroring.module';
28import { OverviewComponent as RbdMirroringComponent } from './mirroring/overview/overview.component';
29import { RbdConfigurationFormComponent } from './rbd-configuration-form/rbd-configuration-form.component';
30import { RbdConfigurationListComponent } from './rbd-configuration-list/rbd-configuration-list.component';
31import { RbdDetailsComponent } from './rbd-details/rbd-details.component';
32import { RbdFormComponent } from './rbd-form/rbd-form.component';
11fdf7f2 33import { RbdListComponent } from './rbd-list/rbd-list.component';
9f95a23c
TL
34import { RbdNamespaceFormModalComponent } from './rbd-namespace-form/rbd-namespace-form-modal.component';
35import { RbdNamespaceListComponent } from './rbd-namespace-list/rbd-namespace-list.component';
36import { RbdPerformanceComponent } from './rbd-performance/rbd-performance.component';
37import { RbdSnapshotFormModalComponent } from './rbd-snapshot-form/rbd-snapshot-form-modal.component';
11fdf7f2 38import { RbdSnapshotListComponent } from './rbd-snapshot-list/rbd-snapshot-list.component';
9f95a23c 39import { RbdTabsComponent } from './rbd-tabs/rbd-tabs.component';
11fdf7f2
TL
40import { RbdTrashListComponent } from './rbd-trash-list/rbd-trash-list.component';
41import { RbdTrashMoveModalComponent } from './rbd-trash-move-modal/rbd-trash-move-modal.component';
42import { RbdTrashPurgeModalComponent } from './rbd-trash-purge-modal/rbd-trash-purge-modal.component';
43import { RbdTrashRestoreModalComponent } from './rbd-trash-restore-modal/rbd-trash-restore-modal.component';
44
45@NgModule({
46 entryComponents: [
47 RbdDetailsComponent,
9f95a23c
TL
48 RbdNamespaceFormModalComponent,
49 RbdSnapshotFormModalComponent,
11fdf7f2
TL
50 RbdTrashMoveModalComponent,
51 RbdTrashRestoreModalComponent,
52 RbdTrashPurgeModalComponent,
53 IscsiTargetDetailsComponent,
54 IscsiTargetImageSettingsModalComponent,
55 IscsiTargetIqnSettingsModalComponent,
56 IscsiTargetDiscoveryModalComponent
57 ],
58 imports: [
59 CommonModule,
60 MirroringModule,
61 FormsModule,
62 ReactiveFormsModule,
63 TabsModule.forRoot(),
64 ProgressbarModule.forRoot(),
65 BsDropdownModule.forRoot(),
66 BsDatepickerModule.forRoot(),
67 TooltipModule.forRoot(),
68 ModalModule.forRoot(),
69 SharedModule,
70 RouterModule,
9f95a23c
TL
71 NgBootstrapFormValidationModule,
72 TreeModule.forRoot()
11fdf7f2
TL
73 ],
74 declarations: [
75 RbdListComponent,
76 IscsiComponent,
eafe8130 77 IscsiSettingComponent,
11fdf7f2
TL
78 IscsiTabsComponent,
79 IscsiTargetListComponent,
80 RbdDetailsComponent,
81 RbdFormComponent,
9f95a23c
TL
82 RbdNamespaceFormModalComponent,
83 RbdNamespaceListComponent,
11fdf7f2 84 RbdSnapshotListComponent,
9f95a23c 85 RbdSnapshotFormModalComponent,
11fdf7f2
TL
86 RbdTrashListComponent,
87 RbdTrashMoveModalComponent,
11fdf7f2
TL
88 RbdTrashRestoreModalComponent,
89 RbdTrashPurgeModalComponent,
90 IscsiTargetDetailsComponent,
91 IscsiTargetFormComponent,
92 IscsiTargetImageSettingsModalComponent,
93 IscsiTargetIqnSettingsModalComponent,
94 IscsiTargetDiscoveryModalComponent,
95 RbdConfigurationListComponent,
9f95a23c
TL
96 RbdConfigurationFormComponent,
97 RbdTabsComponent,
98 RbdPerformanceComponent
11fdf7f2
TL
99 ],
100 exports: [RbdConfigurationListComponent, RbdConfigurationFormComponent]
101})
102export class BlockModule {}
103
104/* The following breakdown is needed to allow importing block.module without
105 the routes (e.g.: this module is imported by pool.module for RBD QoS
106 components)
107*/
108const routes: Routes = [
109 { path: '', redirectTo: 'rbd', pathMatch: 'full' },
110 {
111 path: 'rbd',
112 canActivate: [FeatureTogglesGuardService],
113 data: { breadcrumbs: 'Images' },
114 children: [
9f95a23c
TL
115 { path: '', component: RbdListComponent },
116 {
117 path: 'namespaces',
118 component: RbdNamespaceListComponent,
119 data: { breadcrumbs: 'Namespaces' }
120 },
121 {
122 path: 'trash',
123 component: RbdTrashListComponent,
124 data: { breadcrumbs: 'Trash' }
125 },
126 {
127 path: 'performance',
128 component: RbdPerformanceComponent,
129 data: { breadcrumbs: 'Overall Performance' }
130 },
11fdf7f2
TL
131 {
132 path: URLVerbs.CREATE,
133 component: RbdFormComponent,
134 data: { breadcrumbs: ActionLabels.CREATE }
135 },
136 {
9f95a23c 137 path: `${URLVerbs.EDIT}/:image_spec`,
11fdf7f2
TL
138 component: RbdFormComponent,
139 data: { breadcrumbs: ActionLabels.EDIT }
140 },
141 {
9f95a23c 142 path: `${URLVerbs.CLONE}/:image_spec/:snap`,
11fdf7f2
TL
143 component: RbdFormComponent,
144 data: { breadcrumbs: ActionLabels.CLONE }
145 },
146 {
9f95a23c 147 path: `${URLVerbs.COPY}/:image_spec`,
11fdf7f2
TL
148 component: RbdFormComponent,
149 data: { breadcrumbs: ActionLabels.COPY }
150 },
151 {
9f95a23c 152 path: `${URLVerbs.COPY}/:image_spec/:snap`,
11fdf7f2
TL
153 component: RbdFormComponent,
154 data: { breadcrumbs: ActionLabels.COPY }
155 }
156 ]
157 },
158 {
159 path: 'mirroring',
160 component: RbdMirroringComponent,
161 canActivate: [FeatureTogglesGuardService],
162 data: { breadcrumbs: 'Mirroring' }
163 },
164 // iSCSI
165 {
166 path: 'iscsi',
167 canActivate: [FeatureTogglesGuardService],
168 data: { breadcrumbs: 'iSCSI' },
169 children: [
170 { path: '', redirectTo: 'overview', pathMatch: 'full' },
171 { path: 'overview', component: IscsiComponent, data: { breadcrumbs: 'Overview' } },
172 {
173 path: 'targets',
174 data: { breadcrumbs: 'Targets' },
175 children: [
176 { path: '', component: IscsiTargetListComponent },
177 {
eafe8130 178 path: URLVerbs.CREATE,
11fdf7f2 179 component: IscsiTargetFormComponent,
eafe8130 180 data: { breadcrumbs: ActionLabels.CREATE }
11fdf7f2
TL
181 },
182 {
183 path: `${URLVerbs.EDIT}/:target_iqn`,
184 component: IscsiTargetFormComponent,
185 data: { breadcrumbs: ActionLabels.EDIT }
186 }
187 ]
188 }
189 ]
190 }
191];
192
193@NgModule({
194 imports: [BlockModule, RouterModule.forChild(routes)]
195})
196export class RoutedBlockModule {}