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

View File

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

View File

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