Cleanup 'Cluster' to remove environment specific details (#6951)

- requestNamespaceListPermissions is infallable so no need to have the extra try/catch

- Refactor isMetricHidden method away from Cluster

- Refactor shouldShowResource out of Cluster

- Refactor isInLocalKubeconfig out of Cluster

- Remove depecrated and unused workspace from Cluster

- Refactor out kubectl as a dependency of Cluster

- Remove from cluster getter used only once

- Split out ClusterConnection from Cluster

- Also split out KubeAuthProxyServer from ContextHandler

- Rename ContextHandler to PrometheusHandler

- Cleanup onNetworkOffline/Online impls within ClusterManager

- Remove annotations from ClusterConnection

- Remove mobx annotations from Cluster

- Rename loadConfigFromFileInjectable

- Remove all uses of dead createClusterInjectionToken

- Fix type errors related to broadcastConnectionUpdate

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton authored and GitHub committed 2023-03-10 09:37:39 +02:00
1 parent e6d6d1d8f7
commit ad9bafe2a5
133 files changed
+2544 -1961

No files matched your search

@@ -5,6 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable";
import type { Cluster } from "../../../common/cluster/cluster";
import loggerInjectable from "../../../common/logger.injectable";
import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable";
import type { DeleteHelmReleaseData } from "../delete-helm-release.injectable";
import deleteHelmReleaseInjectable from "../delete-helm-release.injectable";
@@ -16,11 +17,12 @@ const deleteClusterHelmReleaseInjectable = getInjectable({
const deleteHelmRelease = di.inject(deleteHelmReleaseInjectable);
return async (cluster: Cluster, data: DeleteHelmReleaseData) => {
const proxyKubeconfig = await cluster.getProxyKubeconfigPath();
const proxyKubeconfigManager = di.inject(kubeconfigManagerInjectable, cluster);
const proxyKubeconfigPath = await proxyKubeconfigManager.ensurePath();
logger.debug(`[CLUSTER]: Delete helm release`, data);
return deleteHelmRelease(proxyKubeconfig, data);
return deleteHelmRelease(proxyKubeconfigPath, data);
};
},
});
@@ -5,6 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable";
import type { Cluster } from "../../../common/cluster/cluster";
import loggerInjectable from "../../../common/logger.injectable";
import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable";
import type { GetHelmReleaseHistoryData } from "../get-helm-release-history.injectable";
import getHelmReleaseHistoryInjectable from "../get-helm-release-history.injectable";
@@ -16,11 +17,12 @@ const getClusterHelmReleaseHistoryInjectable = getInjectable({
const getHelmReleaseHistory = di.inject(getHelmReleaseHistoryInjectable);
return async (cluster: Cluster, data: GetHelmReleaseHistoryData) => {
const proxyKubeconfig = await cluster.getProxyKubeconfigPath();
const proxyKubeconfigManager = di.inject(kubeconfigManagerInjectable, cluster);
const proxyKubeconfigPath = await proxyKubeconfigManager.ensurePath();
logger.debug(`[CLUSTER]: Fetch release history for clusterId=${cluster.id}`, data);
return getHelmReleaseHistory(proxyKubeconfig, data);
return getHelmReleaseHistory(proxyKubeconfigPath, data);
};
},
});
@@ -7,6 +7,7 @@ import loggerInjectable from "../../../common/logger.injectable";
import type { Cluster } from "../../../common/cluster/cluster";
import type { GetHelmReleaseValuesData } from "../get-helm-release-values.injectable";
import getHelmReleaseValuesInjectable from "../get-helm-release-values.injectable";
import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable";
const getClusterHelmReleaseValuesInjectable = getInjectable({
id: "get-cluster-helm-release-values",
@@ -16,11 +17,12 @@ const getClusterHelmReleaseValuesInjectable = getInjectable({
const getHelmReleaseValues = di.inject(getHelmReleaseValuesInjectable);
return async (cluster: Cluster, data: GetHelmReleaseValuesData) => {
const pathToKubeconfig = await cluster.getProxyKubeconfigPath();
const proxyKubeconfigManager = di.inject(kubeconfigManagerInjectable, cluster);
const proxyKubeconfigPath = await proxyKubeconfigManager.ensurePath();
logger.debug(`[CLUSTER]: getting helm release values`, data);
return getHelmReleaseValues(pathToKubeconfig, data);
return getHelmReleaseValues(proxyKubeconfigPath, data);
};
},
});
@@ -6,6 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
import type { Cluster } from "../../../common/cluster/cluster";
import loggerInjectable from "../../../common/logger.injectable";
import { isObject, json } from "../../../common/utils";
import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable";
import execHelmInjectable from "../exec-helm/exec-helm.injectable";
import getHelmReleaseResourcesInjectable from "./get-helm-release-resources/get-helm-release-resources.injectable";
@@ -18,7 +19,8 @@ const getHelmReleaseInjectable = getInjectable({
const getHelmReleaseResources = di.inject(getHelmReleaseResourcesInjectable);
return async (cluster: Cluster, releaseName: string, namespace: string) => {
const kubeconfigPath = await cluster.getProxyKubeconfigPath();
const proxyKubeconfigManager = di.inject(kubeconfigManagerInjectable, cluster);
const proxyKubeconfigPath = await proxyKubeconfigManager.ensurePath();
logger.debug("Fetch release");
@@ -28,7 +30,7 @@ const getHelmReleaseInjectable = getInjectable({
"--namespace",
namespace,
"--kubeconfig",
kubeconfigPath,
proxyKubeconfigPath,
"--output",
"json",
]);
@@ -48,7 +50,7 @@ const getHelmReleaseInjectable = getInjectable({
const resourcesResult = await getHelmReleaseResources(
releaseName,
namespace,
kubeconfigPath,
proxyKubeconfigPath,
);
if (!resourcesResult.callWasSuccessful) {
@@ -5,6 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable";
import type { JsonObject } from "type-fest";
import type { Cluster } from "../../../common/cluster/cluster";
import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable";
import installHelmChartInjectable from "../install-helm-chart.injectable";
export interface InstallChartArgs {
@@ -22,11 +23,12 @@ const installClusterHelmChartInjectable = getInjectable({
const installHelmChart = di.inject(installHelmChartInjectable);
return async (cluster: Cluster, data: InstallChartArgs) => {
const proxyKubeconfig = await cluster.getProxyKubeconfigPath();
const proxyKubeconfigManager = di.inject(kubeconfigManagerInjectable, cluster);
const proxyKubeconfigPath = await proxyKubeconfigManager.ensurePath();
return installHelmChart({
...data,
kubeconfigPath: proxyKubeconfig,
kubeconfigPath: proxyKubeconfigPath,
});
};
},
@@ -5,6 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable";
import type { Cluster } from "../../../common/cluster/cluster";
import loggerInjectable from "../../../common/logger.injectable";
import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable";
import listHelmReleasesInjectable from "../list-helm-releases.injectable";
const listClusterHelmReleasesInjectable = getInjectable({
@@ -15,11 +16,12 @@ const listClusterHelmReleasesInjectable = getInjectable({
const listHelmReleases = di.inject(listHelmReleasesInjectable);
return async (cluster: Cluster, namespace?: string) => {
const proxyKubeconfig = await cluster.getProxyKubeconfigPath();
const proxyKubeconfigManager = di.inject(kubeconfigManagerInjectable, cluster);
const proxyKubeconfigPath = await proxyKubeconfigManager.ensurePath();
logger.debug(`[CLUSTER]: listing helm releases for clusterId=${cluster.id}`, { namespace });
return listHelmReleases(proxyKubeconfig, namespace);
return listHelmReleases(proxyKubeconfigPath, namespace);
};
},
});
@@ -5,6 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable";
import type { Cluster } from "../../../common/cluster/cluster";
import loggerInjectable from "../../../common/logger.injectable";
import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable";
import type { RollbackHelmReleaseData } from "../rollback-helm-release.injectable";
import rollbackHelmReleaseInjectable from "../rollback-helm-release.injectable";
@@ -16,11 +17,12 @@ const rollbackClusterHelmReleaseInjectable = getInjectable({
const rollbackHelmRelease = di.inject(rollbackHelmReleaseInjectable);
return async (cluster: Cluster, data: RollbackHelmReleaseData) => {
const proxyKubeconfig = await cluster.getProxyKubeconfigPath();
const proxyKubeconfigManager = di.inject(kubeconfigManagerInjectable, cluster);
const proxyKubeconfigPath = await proxyKubeconfigManager.ensurePath();
logger.debug(`[CLUSTER]: rolling back helm release for clusterId=${cluster.id}`, data);
await rollbackHelmRelease(proxyKubeconfig, data);
await rollbackHelmRelease(proxyKubeconfigPath, data);
};
},
});
@@ -10,6 +10,7 @@ import getHelmReleaseInjectable from "./get-helm-release.injectable";
import writeFileInjectable from "../../../common/fs/write-file.injectable";
import removePathInjectable from "../../../common/fs/remove.injectable";
import execHelmInjectable from "../exec-helm/exec-helm.injectable";
import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable";
export interface UpdateChartArgs {
chart: string;
@@ -28,7 +29,8 @@ const updateHelmReleaseInjectable = getInjectable({
const execHelm = di.inject(execHelmInjectable);
return async (cluster: Cluster, releaseName: string, namespace: string, data: UpdateChartArgs) => {
const proxyKubeconfig = await cluster.getProxyKubeconfigPath();
const proxyKubeconfigManager = di.inject(kubeconfigManagerInjectable, cluster);
const proxyKubeconfigPath = await proxyKubeconfigManager.ensurePath();
const valuesFilePath = tempy.file({ name: "values.yaml" });
logger.debug(`[HELM]: upgrading "${releaseName}" in "${namespace}" to ${data.version}`);
@@ -43,7 +45,7 @@ const updateHelmReleaseInjectable = getInjectable({
"--version", data.version,
"--values", valuesFilePath,
"--namespace", namespace,
"--kubeconfig", proxyKubeconfig,
"--kubeconfig", proxyKubeconfigPath,
]);
if (result.callWasSuccessful === false) {