import { RbdConfigurationListComponent } from './rbd-configuration-list/rbd-configuration-list.component';
import { RbdDetailsComponent } from './rbd-details/rbd-details.component';
import { RbdFormComponent } from './rbd-form/rbd-form.component';
-import { RbdImagesComponent } from './rbd-images/rbd-images.component';
import { RbdListComponent } from './rbd-list/rbd-list.component';
import { RbdNamespaceFormModalComponent } from './rbd-namespace-form/rbd-namespace-form-modal.component';
import { RbdNamespaceListComponent } from './rbd-namespace-list/rbd-namespace-list.component';
+import { RbdPerformanceComponent } from './rbd-performance/rbd-performance.component';
import { RbdSnapshotFormModalComponent } from './rbd-snapshot-form/rbd-snapshot-form-modal.component';
import { RbdSnapshotListComponent } from './rbd-snapshot-list/rbd-snapshot-list.component';
+import { RbdTabsComponent } from './rbd-tabs/rbd-tabs.component';
import { RbdTrashListComponent } from './rbd-trash-list/rbd-trash-list.component';
import { RbdTrashMoveModalComponent } from './rbd-trash-move-modal/rbd-trash-move-modal.component';
import { RbdTrashPurgeModalComponent } from './rbd-trash-purge-modal/rbd-trash-purge-modal.component';
RbdSnapshotFormModalComponent,
RbdTrashListComponent,
RbdTrashMoveModalComponent,
- RbdImagesComponent,
RbdTrashRestoreModalComponent,
RbdTrashPurgeModalComponent,
IscsiTargetDetailsComponent,
IscsiTargetIqnSettingsModalComponent,
IscsiTargetDiscoveryModalComponent,
RbdConfigurationListComponent,
- RbdConfigurationFormComponent
+ RbdConfigurationFormComponent,
+ RbdTabsComponent,
+ RbdPerformanceComponent
],
exports: [RbdConfigurationListComponent, RbdConfigurationFormComponent]
})
canActivate: [FeatureTogglesGuardService],
data: { breadcrumbs: 'Images' },
children: [
- { path: '', component: RbdImagesComponent },
+ { path: '', component: RbdListComponent },
+ {
+ path: 'namespaces',
+ component: RbdNamespaceListComponent,
+ data: { breadcrumbs: 'Namespaces' }
+ },
+ {
+ path: 'trash',
+ component: RbdTrashListComponent,
+ data: { breadcrumbs: 'Trash' }
+ },
+ {
+ path: 'performance',
+ component: RbdPerformanceComponent,
+ data: { breadcrumbs: 'Overall Performance' }
+ },
{
path: URLVerbs.CREATE,
component: RbdFormComponent,
+++ /dev/null
-<div>
- <tabset>
- <tab heading="Images"
- i18n-heading
- id="tab1">
- <cd-rbd-list></cd-rbd-list>
- </tab>
- <tab heading="Namespaces"
- i18n-heading>
- <cd-rbd-namespace-list></cd-rbd-namespace-list>
- </tab>
- <tab heading="Trash"
- i18n-heading>
- <cd-rbd-trash-list></cd-rbd-trash-list>
- </tab>
- <tab heading="Overall Performance"
- *ngIf="grafanaPermission.read"
- i18n-heading>
- <cd-grafana [grafanaPath]="'rbd-overview?'"
- uid="41FrpeUiz"
- grafanaStyle="two">
- </cd-grafana>
- </tab>
- </tabset>
-</div>
+++ /dev/null
-import { HttpClientTestingModule } from '@angular/common/http/testing';
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { RouterTestingModule } from '@angular/router/testing';
-
-import { TabsModule } from 'ngx-bootstrap/tabs';
-import { TooltipModule } from 'ngx-bootstrap/tooltip';
-import { ToastrModule } from 'ngx-toastr';
-
-import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
-import { TaskListService } from '../../../shared/services/task-list.service';
-import { SharedModule } from '../../../shared/shared.module';
-import { RbdConfigurationListComponent } from '../rbd-configuration-list/rbd-configuration-list.component';
-import { RbdDetailsComponent } from '../rbd-details/rbd-details.component';
-import { RbdListComponent } from '../rbd-list/rbd-list.component';
-import { RbdNamespaceListComponent } from '../rbd-namespace-list/rbd-namespace-list.component';
-import { RbdSnapshotListComponent } from '../rbd-snapshot-list/rbd-snapshot-list.component';
-import { RbdTrashListComponent } from '../rbd-trash-list/rbd-trash-list.component';
-import { RbdImagesComponent } from './rbd-images.component';
-
-describe('RbdImagesComponent', () => {
- let component: RbdImagesComponent;
- let fixture: ComponentFixture<RbdImagesComponent>;
-
- configureTestBed({
- declarations: [
- RbdDetailsComponent,
- RbdImagesComponent,
- RbdListComponent,
- RbdNamespaceListComponent,
- RbdSnapshotListComponent,
- RbdTrashListComponent,
- RbdConfigurationListComponent
- ],
- imports: [
- HttpClientTestingModule,
- RouterTestingModule,
- SharedModule,
- TabsModule.forRoot(),
- ToastrModule.forRoot(),
- TooltipModule.forRoot()
- ],
- providers: [TaskListService, i18nProviders]
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(RbdImagesComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
+++ /dev/null
-import { Component, OnInit } from '@angular/core';
-
-import { Permission } from '../../../shared/models/permissions';
-import { AuthStorageService } from '../../../shared/services/auth-storage.service';
-
-@Component({
- selector: 'cd-rbd-images',
- templateUrl: './rbd-images.component.html',
- styleUrls: ['./rbd-images.component.scss']
-})
-export class RbdImagesComponent implements OnInit {
- grafanaPermission: Permission;
-
- constructor(private authStorageService: AuthStorageService) {
- this.grafanaPermission = this.authStorageService.getPermissions().grafana;
- }
-
- ngOnInit() {}
-}
+<cd-rbd-tabs></cd-rbd-tabs>
+
<cd-view-cache *ngFor="let viewCacheStatus of viewCacheStatusList"
[status]="viewCacheStatus.status"
[statusFor]="viewCacheStatus.statusFor"></cd-view-cache>
import { RbdConfigurationListComponent } from '../rbd-configuration-list/rbd-configuration-list.component';
import { RbdDetailsComponent } from '../rbd-details/rbd-details.component';
import { RbdSnapshotListComponent } from '../rbd-snapshot-list/rbd-snapshot-list.component';
+import { RbdTabsComponent } from '../rbd-tabs/rbd-tabs.component';
import { RbdListComponent } from './rbd-list.component';
import { RbdModel } from './rbd-model';
RbdListComponent,
RbdDetailsComponent,
RbdSnapshotListComponent,
- RbdConfigurationListComponent
+ RbdConfigurationListComponent,
+ RbdTabsComponent
],
providers: [TaskListService, i18nProviders]
});
+<cd-rbd-tabs></cd-rbd-tabs>
+
<cd-table [data]="namespaces"
(fetchData)="refresh()"
columnMode="flex"
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
+import { TabsModule } from 'ngx-bootstrap/tabs';
import { ToastrModule } from 'ngx-toastr';
import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
import { TaskListService } from '../../../shared/services/task-list.service';
import { SharedModule } from '../../../shared/shared.module';
+import { RbdTabsComponent } from '../rbd-tabs/rbd-tabs.component';
import { RbdNamespaceListComponent } from './rbd-namespace-list.component';
describe('RbdNamespaceListComponent', () => {
let fixture: ComponentFixture<RbdNamespaceListComponent>;
configureTestBed({
- declarations: [RbdNamespaceListComponent],
- imports: [SharedModule, HttpClientTestingModule, RouterTestingModule, ToastrModule.forRoot()],
+ declarations: [RbdNamespaceListComponent, RbdTabsComponent],
+ imports: [
+ SharedModule,
+ HttpClientTestingModule,
+ RouterTestingModule,
+ ToastrModule.forRoot(),
+ TabsModule.forRoot()
+ ],
providers: [TaskListService, i18nProviders]
});
--- /dev/null
+<cd-rbd-tabs></cd-rbd-tabs>
+
+<cd-grafana [grafanaPath]="'rbd-overview?'"
+ uid="41FrpeUiz"
+ grafanaStyle="two">
+</cd-grafana>
--- /dev/null
+import { HttpClientTestingModule } from '@angular/common/http/testing';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { RouterTestingModule } from '@angular/router/testing';
+
+import { TabsModule } from 'ngx-bootstrap/tabs';
+
+import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
+import { SharedModule } from '../../../shared/shared.module';
+import { RbdTabsComponent } from '../rbd-tabs/rbd-tabs.component';
+import { RbdPerformanceComponent } from './rbd-performance.component';
+
+describe('RbdPerformanceComponent', () => {
+ let component: RbdPerformanceComponent;
+ let fixture: ComponentFixture<RbdPerformanceComponent>;
+
+ configureTestBed({
+ imports: [HttpClientTestingModule, RouterTestingModule, SharedModule, TabsModule.forRoot()],
+ declarations: [RbdPerformanceComponent, RbdTabsComponent],
+ providers: i18nProviders
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(RbdPerformanceComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
--- /dev/null
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'cd-rbd-performance',
+ templateUrl: './rbd-performance.component.html',
+ styleUrls: ['./rbd-performance.component.scss']
+})
+export class RbdPerformanceComponent {
+ constructor() {}
+}
import { I18n } from '@ngx-translate/i18n-polyfill';
import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';
+import { TabsModule } from 'ngx-bootstrap/tabs';
import { ToastrModule } from 'ngx-toastr';
import { Subject, throwError as observableThrowError } from 'rxjs';
import { SummaryService } from '../../../shared/services/summary.service';
import { TaskListService } from '../../../shared/services/task-list.service';
import { RbdSnapshotFormModalComponent } from '../rbd-snapshot-form/rbd-snapshot-form-modal.component';
+import { RbdTabsComponent } from '../rbd-tabs/rbd-tabs.component';
import { RbdSnapshotListComponent } from './rbd-snapshot-list.component';
import { RbdSnapshotModel } from './rbd-snapshot.model';
};
configureTestBed({
- declarations: [RbdSnapshotListComponent],
+ declarations: [RbdSnapshotListComponent, RbdTabsComponent],
imports: [
- DataTableModule,
- ComponentsModule,
- ToastrModule.forRoot(),
ApiModule,
+ ComponentsModule,
+ DataTableModule,
HttpClientTestingModule,
+ PipesModule,
RouterTestingModule,
- PipesModule
+ TabsModule.forRoot(),
+ ToastrModule.forRoot()
],
providers: [
{ provide: AuthStorageService, useValue: fakeAuthStorageService },
--- /dev/null
+<tabset>
+ <tab heading="Images"
+ i18n-heading
+ [active]="url === '/block/rbd'"
+ (selectTab)="navigateTo('/block/rbd')">
+ </tab>
+ <tab heading="Namespaces"
+ i18n-heading
+ [active]="url === '/block/rbd/namespaces'"
+ (selectTab)="navigateTo('/block/rbd/namespaces')">
+ </tab>
+ <tab heading="Trash"
+ i18n-heading
+ [active]="url === '/block/rbd/trash'"
+ (selectTab)="navigateTo('/block/rbd/trash')">
+ </tab>
+ <tab heading="Overall Performance"
+ i18n-heading
+ *ngIf="grafanaPermission.read"
+ [active]="url === '/block/rbd/performance'"
+ (selectTab)="navigateTo('/block/rbd/performance')">
+ </tab>
+</tabset>
--- /dev/null
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { RouterTestingModule } from '@angular/router/testing';
+
+import { TabsModule } from 'ngx-bootstrap/tabs';
+
+import { configureTestBed } from '../../../../testing/unit-test-helper';
+import { RbdTabsComponent } from './rbd-tabs.component';
+
+describe('RbdTabsComponent', () => {
+ let component: RbdTabsComponent;
+ let fixture: ComponentFixture<RbdTabsComponent>;
+
+ configureTestBed({
+ imports: [TabsModule.forRoot(), RouterTestingModule],
+ declarations: [RbdTabsComponent]
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(RbdTabsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
--- /dev/null
+import { Component, OnInit } from '@angular/core';
+import { Router } from '@angular/router';
+
+import { Permission } from '../../../shared/models/permissions';
+import { AuthStorageService } from '../../../shared/services/auth-storage.service';
+
+@Component({
+ selector: 'cd-rbd-tabs',
+ templateUrl: './rbd-tabs.component.html',
+ styleUrls: ['./rbd-tabs.component.scss']
+})
+export class RbdTabsComponent implements OnInit {
+ grafanaPermission: Permission;
+ url: string;
+
+ constructor(private authStorageService: AuthStorageService, private router: Router) {
+ this.grafanaPermission = this.authStorageService.getPermissions().grafana;
+ }
+
+ ngOnInit() {
+ this.url = this.router.url;
+ }
+
+ navigateTo(url: string) {
+ this.router.navigate([url]);
+ }
+}
+<cd-rbd-tabs></cd-rbd-tabs>
+
<cd-view-cache *ngFor="let viewCacheStatus of viewCacheStatusList"
[status]="viewCacheStatus.status"
[statusFor]="viewCacheStatus.statusFor"></cd-view-cache>
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
+import { TabsModule } from 'ngx-bootstrap/tabs';
import { ToastrModule } from 'ngx-toastr';
import { of } from 'rxjs';
import { SummaryService } from '../../../shared/services/summary.service';
import { TaskListService } from '../../../shared/services/task-list.service';
import { SharedModule } from '../../../shared/shared.module';
+import { RbdTabsComponent } from '../rbd-tabs/rbd-tabs.component';
import { RbdTrashListComponent } from './rbd-trash-list.component';
describe('RbdTrashListComponent', () => {
let rbdService: RbdService;
configureTestBed({
- declarations: [RbdTrashListComponent],
- imports: [SharedModule, HttpClientTestingModule, RouterTestingModule, ToastrModule.forRoot()],
+ declarations: [RbdTrashListComponent, RbdTabsComponent],
+ imports: [
+ HttpClientTestingModule,
+ RouterTestingModule,
+ SharedModule,
+ TabsModule.forRoot(),
+ ToastrModule.forRoot()
+ ],
providers: [TaskListService, i18nProviders]
});