mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
* Fix cluster frame display issue - Add some defensive code to prevent this sort of infinite loop - Add some unit tests Signed-off-by: Sebastian Malton <sebastian@malton.name> * fix unit tests Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix build Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix lint Signed-off-by: Sebastian Malton <sebastian@malton.name> * Factor out injectable for getting of cluster config data Signed-off-by: Sebastian Malton <sebastian@malton.name>
32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
/**
|
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
*/
|
|
import { getInjectable } from "@ogre-tools/injectable";
|
|
import type { ClusterConfigData, ClusterModel } from "../cluster-types";
|
|
import readFileSyncInjectable from "../fs/read-file-sync.injectable";
|
|
import { loadConfigFromString, validateKubeConfig } from "../kube-helpers";
|
|
|
|
export type ReadClusterConfigSync = (model: ClusterModel) => ClusterConfigData;
|
|
|
|
const readClusterConfigSyncInjectable = getInjectable({
|
|
id: "read-cluster-config-sync",
|
|
instantiate: (di): ReadClusterConfigSync => {
|
|
const readFileSync = di.inject(readFileSyncInjectable);
|
|
|
|
return ({ kubeConfigPath, contextName }) => {
|
|
const kubeConfigData = readFileSync(kubeConfigPath);
|
|
const { config } = loadConfigFromString(kubeConfigData);
|
|
const result = validateKubeConfig(config, contextName);
|
|
|
|
if (result.error) {
|
|
throw result.error;
|
|
}
|
|
|
|
return { clusterServerUrl: result.cluster.server };
|
|
};
|
|
},
|
|
});
|
|
|
|
export default readClusterConfigSyncInjectable;
|