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';
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';
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';
48 RbdNamespaceFormModalComponent,
49 RbdSnapshotFormModalComponent,
50 RbdTrashMoveModalComponent,
51 RbdTrashRestoreModalComponent,
52 RbdTrashPurgeModalComponent,
53 IscsiTargetDetailsComponent,
54 IscsiTargetImageSettingsModalComponent,
55 IscsiTargetIqnSettingsModalComponent,
56 IscsiTargetDiscoveryModalComponent
64 ProgressbarModule.forRoot(),
65 BsDropdownModule.forRoot(),
66 BsDatepickerModule.forRoot(),
67 TooltipModule.forRoot(),
68 ModalModule.forRoot(),
71 NgBootstrapFormValidationModule,
77 IscsiSettingComponent,
79 IscsiTargetListComponent,
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,
98 RbdPerformanceComponent
100 exports: [RbdConfigurationListComponent, RbdConfigurationFormComponent]
102 export class BlockModule {}
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
108 const routes: Routes = [
109 { path: '', redirectTo: 'rbd', pathMatch: 'full' },
112 canActivate: [FeatureTogglesGuardService],
113 data: { breadcrumbs: 'Images' },
115 { path: '', component: RbdListComponent },
118 component: RbdNamespaceListComponent,
119 data: { breadcrumbs: 'Namespaces' }
123 component: RbdTrashListComponent,
124 data: { breadcrumbs: 'Trash' }
128 component: RbdPerformanceComponent,
129 data: { breadcrumbs: 'Overall Performance' }
132 path: URLVerbs.CREATE,
133 component: RbdFormComponent,
134 data: { breadcrumbs: ActionLabels.CREATE }
137 path: `${URLVerbs.EDIT}/:image_spec`,
138 component: RbdFormComponent,
139 data: { breadcrumbs: ActionLabels.EDIT }
142 path: `${URLVerbs.CLONE}/:image_spec/:snap`,
143 component: RbdFormComponent,
144 data: { breadcrumbs: ActionLabels.CLONE }
147 path: `${URLVerbs.COPY}/:image_spec`,
148 component: RbdFormComponent,
149 data: { breadcrumbs: ActionLabels.COPY }
152 path: `${URLVerbs.COPY}/:image_spec/:snap`,
153 component: RbdFormComponent,
154 data: { breadcrumbs: ActionLabels.COPY }
160 component: RbdMirroringComponent,
161 canActivate: [FeatureTogglesGuardService],
162 data: { breadcrumbs: 'Mirroring' }
167 canActivate: [FeatureTogglesGuardService],
168 data: { breadcrumbs: 'iSCSI' },
170 { path: '', redirectTo: 'overview', pathMatch: 'full' },
171 { path: 'overview', component: IscsiComponent, data: { breadcrumbs: 'Overview' } },
174 data: { breadcrumbs: 'Targets' },
176 { path: '', component: IscsiTargetListComponent },
178 path: URLVerbs.CREATE,
179 component: IscsiTargetFormComponent,
180 data: { breadcrumbs: ActionLabels.CREATE }
183 path: `${URLVerbs.EDIT}/:target_iqn`,
184 component: IscsiTargetFormComponent,
185 data: { breadcrumbs: ActionLabels.EDIT }
194 imports: [BlockModule, RouterModule.forChild(routes)]
196 export class RoutedBlockModule {}