From 9587caac41eaeecb58a1709f1119eb3a6df886e9 Mon Sep 17 00:00:00 2001 From: Kiefer Chang Date: Wed, 11 Mar 2020 20:21:41 +0800 Subject: [PATCH] mgr/dashboard: hide daemon table when orchestrator is disabled The refresh time of services/daemons is also increased to 1 minute since they are not updated so frequently. Fixes: https://tracker.ceph.com/issues/44558 Signed-off-by: Kiefer Chang --- .../service-daemon-list.component.html | 7 ++- .../service-daemon-list.component.ts | 57 ++++++++++++++----- .../cluster/services/services.component.html | 1 + .../cluster/services/services.component.ts | 3 +- 4 files changed, 51 insertions(+), 17 deletions(-) diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.html b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.html index 69fdc85413a0..27daa57c3f64 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.html +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.html @@ -1,6 +1,9 @@ - + diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.ts index b18c7c4a2f76..82632e0607e7 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.ts @@ -1,10 +1,22 @@ -import { Component, Input, OnChanges, OnInit, TemplateRef, ViewChild } from '@angular/core'; - +import { + AfterViewInit, + Component, + Input, + OnChanges, + OnDestroy, + OnInit, + QueryList, + TemplateRef, + ViewChildren +} from '@angular/core'; import { I18n } from '@ngx-translate/i18n-polyfill'; -import { Observable } from 'rxjs'; +import * as _ from 'lodash'; + +import { Observable, Subscription } from 'rxjs'; import { CephServiceService } from '../../../../shared/api/ceph-service.service'; import { HostService } from '../../../../shared/api/host.service'; +import { OrchestratorService } from '../../../../shared/api/orchestrator.service'; import { TableComponent } from '../../../../shared/datatable/table/table.component'; import { CdTableColumn } from '../../../../shared/models/cd-table-column'; import { CdTableFetchDataContext } from '../../../../shared/models/cd-table-fetch-data-context'; @@ -15,11 +27,9 @@ import { Daemon } from '../../../../shared/models/daemon.interface'; templateUrl: './service-daemon-list.component.html', styleUrls: ['./service-daemon-list.component.scss'] }) -export class ServiceDaemonListComponent implements OnInit, OnChanges { - @ViewChild(TableComponent, { static: true }) - table: TableComponent; - @ViewChild('lastSeenTpl', { static: true }) - lastSeenTpl: TemplateRef; +export class ServiceDaemonListComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy { + @ViewChildren('daemonsTable') + daemonsTableTpls: QueryList>; @Input() serviceName?: string; @@ -30,10 +40,16 @@ export class ServiceDaemonListComponent implements OnInit, OnChanges { daemons: Daemon[] = []; columns: CdTableColumn[] = []; + hasOrchestrator = false; + + private daemonsTable: TableComponent; + private daemonsTableTplsSub: Subscription; + constructor( private i18n: I18n, private hostService: HostService, - private cephServiceService: CephServiceService + private cephServiceService: CephServiceService, + private orchService: OrchestratorService ) {} ngOnInit() { @@ -98,15 +114,30 @@ export class ServiceDaemonListComponent implements OnInit, OnChanges { flexGrow: 2 } ]; + + this.orchService.status().subscribe((data: { available: boolean }) => { + this.hasOrchestrator = data.available; + }); } ngOnChanges() { - this.daemons = []; - this.table.reloadData(); + if (!_.isUndefined(this.daemonsTable)) { + this.daemonsTable.reloadData(); + } } - updateData(daemons: Daemon[]) { - this.daemons = daemons; + ngAfterViewInit() { + this.daemonsTableTplsSub = this.daemonsTableTpls.changes.subscribe( + (tableRefs: QueryList) => { + this.daemonsTable = tableRefs.first; + } + ); + } + + ngOnDestroy() { + if (this.daemonsTableTplsSub) { + this.daemonsTableTplsSub.unsubscribe(); + } } getDaemons(context: CdTableFetchDataContext) { diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/services.component.html b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/services.component.html index 5749d89d065a..5e2bcc536033 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/services.component.html +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/services.component.html @@ -6,6 +6,7 @@ forceIdentifier="true" columnMode="flex" selectionType="single" + [autoReload]="60000" (fetchData)="getServices($event)" (updateSelection)="updateSelection($event)">