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:
parent
f60a1b03cd
commit
50396ca269
@ -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> {
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user