1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

React only prometeheus preference changes to re-initialise prometheus connection

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
This commit is contained in:
Lauri Nevala 2020-11-19 15:36:51 +02:00
parent f60a1b03cd
commit 50396ca269
3 changed files with 19 additions and 9 deletions

View File

@ -52,9 +52,15 @@ export interface ClusterModel {
kubeConfig?: string; // yaml
}
export interface ClusterPreferences {
export interface ClusterPreferences extends ClusterPrometheusPreferences{
terminalCWD?: string;
clusterName?: string;
iconOrder?: number;
icon?: string;
httpsProxy?: string;
}
export interface ClusterPrometheusPreferences {
prometheus?: {
namespace: string;
service: string;
@ -64,9 +70,6 @@ export interface ClusterPreferences {
prometheusProvider?: {
type: string;
};
iconOrder?: number;
icon?: string;
httpsProxy?: string;
}
export class ClusterStore extends BaseStore<ClusterStoreModel> {

View File

@ -1,8 +1,8 @@
import { ipcMain } from "electron"
import type { ClusterId, ClusterMetadata, ClusterModel, ClusterPreferences } from "../common/cluster-store"
import type { ClusterId, ClusterMetadata, ClusterModel, ClusterPreferences, ClusterPrometheusPreferences } from "../common/cluster-store"
import type { IMetricsReqParams } from "../renderer/api/endpoints/metrics.api";
import type { WorkspaceId } from "../common/workspace-store";
import { action, computed, observable, reaction, toJS, when } from "mobx";
import { action, comparer, computed, observable, reaction, toJS, when } from "mobx";
import { apiKubePrefix } from "../common/vars";
import { broadcastMessage } from "../common/ipc";
import { ContextHandler } from "./context-handler"
@ -90,6 +90,13 @@ export class Cluster implements ClusterModel, ClusterState {
return this.preferences.clusterName || this.contextName
}
@computed get prometheusPreferences(): ClusterPrometheusPreferences {
const { prometheus, prometheusProvider } = this.preferences;
return toJS({ prometheus, prometheusProvider }, {
recurseEverything: true,
})
}
get version(): string {
return String(this.metadata?.version) || ""
}
@ -139,7 +146,7 @@ export class Cluster implements ClusterModel, ClusterState {
if (ipcMain) {
this.eventDisposers.push(
reaction(() => this.getState(), () => this.pushState()),
reaction(() => this.preferences, () => this.contextHandler.setupPrometheus(this.preferences)),
reaction(() => this.prometheusPreferences, (prefs) => this.contextHandler.setupPrometheus(prefs), { equals: comparer.structural, }),
() => {
clearInterval(refreshTimer)
clearInterval(refreshMetadataTimer)

View File

@ -1,5 +1,5 @@
import type { PrometheusProvider, PrometheusService } from "./prometheus/provider-registry"
import type { ClusterPreferences } from "../common/cluster-store";
import type { ClusterPrometheusPreferences } from "../common/cluster-store";
import type { Cluster } from "./cluster"
import type httpProxy from "http-proxy"
import url, { UrlWithStringQuery } from "url";
@ -22,7 +22,7 @@ export class ContextHandler {
this.setupPrometheus(cluster.preferences);
}
public setupPrometheus(preferences: ClusterPreferences = {}) {
public setupPrometheus(preferences: ClusterPrometheusPreferences = {}) {
this.prometheusProvider = preferences.prometheusProvider?.type;
this.prometheusPath = null;
if (preferences.prometheus) {