11 } from '@angular/core';
12 import { I18n } from '@ngx-translate/i18n-polyfill';
14 import * as _ from 'lodash';
16 import { Observable, Subscription } from 'rxjs';
17 import { CephServiceService } from '../../../../shared/api/ceph-service.service';
18 import { HostService } from '../../../../shared/api/host.service';
19 import { OrchestratorService } from '../../../../shared/api/orchestrator.service';
20 import { TableComponent } from '../../../../shared/datatable/table/table.component';
21 import { CdTableColumn } from '../../../../shared/models/cd-table-column';
22 import { CdTableFetchDataContext } from '../../../../shared/models/cd-table-fetch-data-context';
23 import { Daemon } from '../../../../shared/models/daemon.interface';
26 selector: 'cd-service-daemon-list',
27 templateUrl: './service-daemon-list.component.html',
28 styleUrls: ['./service-daemon-list.component.scss']
30 export class ServiceDaemonListComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {
31 @ViewChildren('daemonsTable')
32 daemonsTableTpls: QueryList<TemplateRef<TableComponent>>;
40 daemons: Daemon[] = [];
41 columns: CdTableColumn[] = [];
43 hasOrchestrator = false;
45 private daemonsTable: TableComponent;
46 private daemonsTableTplsSub: Subscription;
50 private hostService: HostService,
51 private cephServiceService: CephServiceService,
52 private orchService: OrchestratorService
58 name: this.i18n('Hostname'),
64 name: this.i18n('Daemon type'),
70 name: this.i18n('Daemon ID'),
76 name: this.i18n('Container ID'),
82 name: this.i18n('Container Image name'),
83 prop: 'container_image_name',
88 name: this.i18n('Container Image ID'),
89 prop: 'container_image_id',
94 name: this.i18n('Version'),
100 name: this.i18n('Status'),
106 name: this.i18n('Status Description'),
112 name: this.i18n('Last Refreshed'),
113 prop: 'last_refresh',
118 this.orchService.status().subscribe((data: { available: boolean }) => {
119 this.hasOrchestrator = data.available;
124 if (!_.isUndefined(this.daemonsTable)) {
125 this.daemonsTable.reloadData();
130 this.daemonsTableTplsSub = this.daemonsTableTpls.changes.subscribe(
131 (tableRefs: QueryList<TableComponent>) => {
132 this.daemonsTable = tableRefs.first;
138 if (this.daemonsTableTplsSub) {
139 this.daemonsTableTplsSub.unsubscribe();
143 getDaemons(context: CdTableFetchDataContext) {
144 let observable: Observable<Daemon[]>;
146 observable = this.hostService.getDaemons(this.hostname);
147 } else if (this.serviceName) {
148 observable = this.cephServiceService.getDaemons(this.serviceName);
153 observable.subscribe(
154 (daemons: Daemon[]) => {
155 this.daemons = daemons;