]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/block.module.ts
import 15.2.5
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / ceph / block / block.module.ts
1 import { CommonModule } from '@angular/common';
2 import { NgModule } from '@angular/core';
3 import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4 import { RouterModule, Routes } from '@angular/router';
5
6 import { TreeModule } from 'angular-tree-component';
7 import { NgBootstrapFormValidationModule } from 'ng-bootstrap-form-validation';
8 import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
9 import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
10 import { ModalModule } from 'ngx-bootstrap/modal';
11 import { ProgressbarModule } from 'ngx-bootstrap/progressbar';
12 import { TabsModule } from 'ngx-bootstrap/tabs';
13 import { TooltipModule } from 'ngx-bootstrap/tooltip';
14
15 import { ActionLabels, URLVerbs } from '../../shared/constants/app.constants';
16 import { FeatureTogglesGuardService } from '../../shared/services/feature-toggles-guard.service';
17 import { SharedModule } from '../../shared/shared.module';
18 import { IscsiSettingComponent } from './iscsi-setting/iscsi-setting.component';
19 import { IscsiTabsComponent } from './iscsi-tabs/iscsi-tabs.component';
20 import { IscsiTargetDetailsComponent } from './iscsi-target-details/iscsi-target-details.component';
21 import { IscsiTargetDiscoveryModalComponent } from './iscsi-target-discovery-modal/iscsi-target-discovery-modal.component';
22 import { IscsiTargetFormComponent } from './iscsi-target-form/iscsi-target-form.component';
23 import { IscsiTargetImageSettingsModalComponent } from './iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component';
24 import { IscsiTargetIqnSettingsModalComponent } from './iscsi-target-iqn-settings-modal/iscsi-target-iqn-settings-modal.component';
25 import { IscsiTargetListComponent } from './iscsi-target-list/iscsi-target-list.component';
26 import { IscsiComponent } from './iscsi/iscsi.component';
27 import { MirroringModule } from './mirroring/mirroring.module';
28 import { OverviewComponent as RbdMirroringComponent } from './mirroring/overview/overview.component';
29 import { RbdConfigurationFormComponent } from './rbd-configuration-form/rbd-configuration-form.component';
30 import { RbdConfigurationListComponent } from './rbd-configuration-list/rbd-configuration-list.component';
31 import { RbdDetailsComponent } from './rbd-details/rbd-details.component';
32 import { RbdFormComponent } from './rbd-form/rbd-form.component';
33 import { RbdListComponent } from './rbd-list/rbd-list.component';
34 import { RbdNamespaceFormModalComponent } from './rbd-namespace-form/rbd-namespace-form-modal.component';
35 import { RbdNamespaceListComponent } from './rbd-namespace-list/rbd-namespace-list.component';
36 import { RbdPerformanceComponent } from './rbd-performance/rbd-performance.component';
37 import { RbdSnapshotFormModalComponent } from './rbd-snapshot-form/rbd-snapshot-form-modal.component';
38 import { RbdSnapshotListComponent } from './rbd-snapshot-list/rbd-snapshot-list.component';
39 import { RbdTabsComponent } from './rbd-tabs/rbd-tabs.component';
40 import { RbdTrashListComponent } from './rbd-trash-list/rbd-trash-list.component';
41 import { RbdTrashMoveModalComponent } from './rbd-trash-move-modal/rbd-trash-move-modal.component';
42 import { RbdTrashPurgeModalComponent } from './rbd-trash-purge-modal/rbd-trash-purge-modal.component';
43 import { RbdTrashRestoreModalComponent } from './rbd-trash-restore-modal/rbd-trash-restore-modal.component';
44
45 @NgModule({
46 entryComponents: [
47 RbdDetailsComponent,
48 RbdNamespaceFormModalComponent,
49 RbdSnapshotFormModalComponent,
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,
71 NgBootstrapFormValidationModule,
72 TreeModule.forRoot()
73 ],
74 declarations: [
75 RbdListComponent,
76 IscsiComponent,
77 IscsiSettingComponent,
78 IscsiTabsComponent,
79 IscsiTargetListComponent,
80 RbdDetailsComponent,
81 RbdFormComponent,
82 RbdNamespaceFormModalComponent,
83 RbdNamespaceListComponent,
84 RbdSnapshotListComponent,
85 RbdSnapshotFormModalComponent,
86 RbdTrashListComponent,
87 RbdTrashMoveModalComponent,
88 RbdTrashRestoreModalComponent,
89 RbdTrashPurgeModalComponent,
90 IscsiTargetDetailsComponent,
91 IscsiTargetFormComponent,
92 IscsiTargetImageSettingsModalComponent,
93 IscsiTargetIqnSettingsModalComponent,
94 IscsiTargetDiscoveryModalComponent,
95 RbdConfigurationListComponent,
96 RbdConfigurationFormComponent,
97 RbdTabsComponent,
98 RbdPerformanceComponent
99 ],
100 exports: [RbdConfigurationListComponent, RbdConfigurationFormComponent]
101 })
102 export 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 */
108 const routes: Routes = [
109 { path: '', redirectTo: 'rbd', pathMatch: 'full' },
110 {
111 path: 'rbd',
112 canActivate: [FeatureTogglesGuardService],
113 data: { breadcrumbs: 'Images' },
114 children: [
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 },
131 {
132 path: URLVerbs.CREATE,
133 component: RbdFormComponent,
134 data: { breadcrumbs: ActionLabels.CREATE }
135 },
136 {
137 path: `${URLVerbs.EDIT}/:image_spec`,
138 component: RbdFormComponent,
139 data: { breadcrumbs: ActionLabels.EDIT }
140 },
141 {
142 path: `${URLVerbs.CLONE}/:image_spec/:snap`,
143 component: RbdFormComponent,
144 data: { breadcrumbs: ActionLabels.CLONE }
145 },
146 {
147 path: `${URLVerbs.COPY}/:image_spec`,
148 component: RbdFormComponent,
149 data: { breadcrumbs: ActionLabels.COPY }
150 },
151 {
152 path: `${URLVerbs.COPY}/:image_spec/:snap`,
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 {
178 path: URLVerbs.CREATE,
179 component: IscsiTargetFormComponent,
180 data: { breadcrumbs: ActionLabels.CREATE }
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 })
196 export class RoutedBlockModule {}