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