return 1
return 0
- def check_token_status_array(self, clusters_token_array):
+ def check_token_status_array(self):
token_status_map = {}
+ multi_cluster_config = self.load_multi_cluster_config()
- for item in clusters_token_array:
- cluster_name = item['name']
- token = item['token']
- user = item['user']
- status = self.check_token_status_expiration(token)
- time_left = self.get_time_left(token)
- token_status_map[cluster_name] = {'status': status, 'user': user,
- 'time_left': time_left}
+ if 'config' in multi_cluster_config:
+ for _, config in multi_cluster_config['config'].items():
+ cluster_name = config[0]['name']
+ token = config[0]['token']
+ user = config[0]['user']
+ status = self.check_token_status_expiration(token)
+ time_left = self.get_time_left(token)
+ token_status_map[cluster_name] = {
+ 'status': status,
+ 'user': user,
+ 'time_left': time_left
+ }
return token_status_map
@Endpoint()
@ReadPermission
- def check_token_status(self, clustersTokenMap=None):
- clusters_token_map = json.loads(clustersTokenMap)
- return self.check_token_status_array(clusters_token_map)
+ def check_token_status(self):
+ return self.check_token_status_array()
@Endpoint()
@ReadPermission
-import { HttpClient, HttpParams } from '@angular/common/http';
+import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { BehaviorSubject, Observable, Subscription } from 'rxjs';
import { TimerService } from '../services/timer.service';
.subscribe(this.getClusterObserver());
}
- getTempMap(clustersConfig: any) {
- const tempMap = new Map<string, { token: string; user: string }>();
- Object.keys(clustersConfig).forEach((clusterKey: string) => {
- const clusterDetailsList = clustersConfig[clusterKey];
- clusterDetailsList.forEach((clusterDetails: any) => {
- if (clusterDetails['token'] && clusterDetails['name'] && clusterDetails['user']) {
- tempMap.set(clusterDetails['name'], {
- token: clusterDetails['token'],
- user: clusterDetails['user']
- });
- }
- });
- });
- return tempMap;
- }
-
startClusterTokenStatusPolling() {
- let clustersTokenMap = new Map<string, { token: string; user: string }>();
- const dataSubscription = this.subscribeOnce((resp: any) => {
- const clustersConfig = resp['config'];
- let tempMap = new Map<string, { token: string; user: string }>();
- if (clustersConfig) {
- tempMap = this.getTempMap(clustersConfig);
- Object.keys(clustersConfig).forEach((clusterKey: string) => {
- const clusterDetailsList = clustersConfig[clusterKey];
- clusterDetailsList.forEach((clusterDetails: any) => {
- if (clusterDetails['token'] && clusterDetails['name'] && clusterDetails['user']) {
- tempMap.set(clusterDetails['name'], {
- token: clusterDetails['token'],
- user: clusterDetails['user']
- });
- }
- });
- });
-
- if (tempMap.size > 0) {
- clustersTokenMap = tempMap;
- if (dataSubscription) {
- dataSubscription.unsubscribe();
- }
- this.checkAndStartTimer(clustersTokenMap);
- }
- }
- });
+ this.checkAndStartTimer();
}
- private checkAndStartTimer(clustersTokenMap: Map<string, { token: string; user: string }>) {
- this.checkTokenStatus(clustersTokenMap).subscribe(this.getClusterTokenStatusObserver());
+ private checkAndStartTimer() {
+ this.checkTokenStatus().subscribe(this.getClusterTokenStatusObserver());
this.timerService
- .get(() => this.checkTokenStatus(clustersTokenMap), this.TOKEN_CHECK_INTERVAL)
+ .get(() => this.checkTokenStatus(), this.TOKEN_CHECK_INTERVAL)
.subscribe(this.getClusterTokenStatusObserver());
}
}
refreshTokenStatus() {
- this.subscribeOnce((resp: any) => {
- const clustersConfig = resp['config'];
- let tempMap = this.getTempMap(clustersConfig);
- return this.checkTokenStatus(tempMap).subscribe(this.getClusterTokenStatusObserver());
- });
+ return this.checkTokenStatus().subscribe(this.getClusterTokenStatusObserver());
}
subscribeOnce(next: (data: any) => void, error?: (error: any) => void) {
};
}
- checkTokenStatus(
- clustersTokenMap: Map<string, { token: string; user: string }>
- ): Observable<object> {
- let data = [...clustersTokenMap].map(([key, { token, user }]) => ({ name: key, token, user }));
-
- let params = new HttpParams();
- params = params.set('clustersTokenMap', JSON.stringify(data));
-
- return this.http.get<object>('api/multi-cluster/check_token_status', { params });
+ checkTokenStatus(): Observable<object> {
+ return this.http.get<object>('api/multi-cluster/check_token_status');
}
showPrometheusDelayMessage(showDeletionMessage?: boolean) {