1 import { HttpClient } from '@angular/common/http';
2 import { Injectable } from '@angular/core';
4 import _ from 'lodash';
5 import { Observable } from 'rxjs';
7 import { OrchestratorFeature } from '../models/orchestrator.enum';
8 import { OrchestratorStatus } from '../models/orchestrator.interface';
13 export class OrchestratorService {
14 private url = 'ui-api/orchestrator';
17 noOrchestrator: $localize`The feature is disabled because Orchestrator is not available.`,
18 missingFeature: $localize`The Orchestrator backend doesn't support this feature.`
21 constructor(private http: HttpClient) {}
23 status(): Observable<OrchestratorStatus> {
24 return this.http.get<OrchestratorStatus>(`${this.url}/status`);
27 hasFeature(status: OrchestratorStatus, features: OrchestratorFeature[]): boolean {
28 return _.every(features, (feature) => _.get(status.features, `${feature}.available`));
31 getTableActionDisableDesc(
32 status: OrchestratorStatus,
33 features: OrchestratorFeature[]
38 if (!status.available) {
39 return this.disableMessages.noOrchestrator;
41 if (!this.hasFeature(status, features)) {
42 return this.disableMessages.missingFeature;
48 return this.http.get(`${this.url}/get_name`);