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

Convet DirectoryForKubeConfigs to LazyInitializableState

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-09-14 12:42:45 -04:00
parent 1c4e620e38
commit a7b928d467
11 changed files with 22 additions and 19 deletions

View File

@ -2,9 +2,9 @@
* Copyright (c) OpenLens Authors. All rights reserved. * Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import directoryForUserDataInjectable from "../directory-for-user-data.injectable"; import directoryForUserDataInjectable from "./directory-for-user-data.injectable";
import joinPathsInjectable from "../../path/join-paths.injectable"; import joinPathsInjectable from "../path/join-paths.injectable";
import { createLazyInitializableState } from "../../initializable-state/create-lazy"; import { createLazyInitializableState } from "../initializable-state/create-lazy";
const directoryForKubeConfigsInjectable = createLazyInitializableState({ const directoryForKubeConfigsInjectable = createLazyInitializableState({
id: "directory-for-kube-configs", id: "directory-for-kube-configs",

View File

@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import directoryForKubeConfigsInjectable from "../directory-for-kube-configs/directory-for-kube-configs.injectable"; import directoryForKubeConfigsInjectable from "../directory-for-kube-configs.injectable";
import joinPathsInjectable from "../../path/join-paths.injectable"; import joinPathsInjectable from "../../path/join-paths.injectable";
const getCustomKubeConfigDirectoryInjectable = getInjectable({ const getCustomKubeConfigDirectoryInjectable = getInjectable({
@ -13,7 +13,7 @@ const getCustomKubeConfigDirectoryInjectable = getInjectable({
const directoryForKubeConfigs = di.inject(directoryForKubeConfigsInjectable); const directoryForKubeConfigs = di.inject(directoryForKubeConfigsInjectable);
const joinPaths = di.inject(joinPathsInjectable); const joinPaths = di.inject(joinPathsInjectable);
return (directoryName: string) => joinPaths(directoryForKubeConfigs, directoryName); return (directoryName: string) => joinPaths(directoryForKubeConfigs.get(), directoryName);
}, },
}); });

View File

@ -25,9 +25,10 @@ import assert from "assert";
import type { Logger } from "../logger"; import type { Logger } from "../logger";
import type { BroadcastMessage } from "../ipc/broadcast-message.injectable"; import type { BroadcastMessage } from "../ipc/broadcast-message.injectable";
import type { LoadConfigfromFile } from "../kube-helpers/load-config-from-file.injectable"; import type { LoadConfigfromFile } from "../kube-helpers/load-config-from-file.injectable";
import type { LazyInitializableState } from "../initializable-state/create-lazy";
export interface ClusterDependencies { export interface ClusterDependencies {
readonly directoryForKubeConfigs: string; readonly directoryForKubeConfigs: LazyInitializableState<string>;
readonly logger: Logger; readonly logger: Logger;
readonly detectorRegistry: DetectorRegistry; readonly detectorRegistry: DetectorRegistry;
createKubeconfigManager: (cluster: Cluster) => KubeconfigManager; createKubeconfigManager: (cluster: Cluster) => KubeconfigManager;
@ -729,6 +730,6 @@ export class Cluster implements ClusterModel, ClusterState {
} }
isInLocalKubeconfig() { isInLocalKubeconfig() {
return this.kubeConfigPath.startsWith(this.dependencies.directoryForKubeConfigs); return this.kubeConfigPath.startsWith(this.dependencies.directoryForKubeConfigs.get());
} }
} }

View File

@ -3,9 +3,10 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import type { EnsureOptions } from "fs-extra";
import fsInjectable from "./fs.injectable"; import fsInjectable from "./fs.injectable";
export type EnsureDirectory = (dirPath: string) => Promise<void>; export type EnsureDirectory = (path: string, options?: number | EnsureOptions | undefined) => Promise<void>;
const ensureDirInjectable = getInjectable({ const ensureDirInjectable = getInjectable({
id: "ensure-dir", id: "ensure-dir",

View File

@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import directoryForKubeConfigsInjectable from "../../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; import directoryForKubeConfigsInjectable from "../../../common/app-paths/directory-for-kube-configs.injectable";
import { KubeconfigSyncManager } from "./manager"; import { KubeconfigSyncManager } from "./manager";
import kubeconfigSyncLoggerInjectable from "./logger.injectable"; import kubeconfigSyncLoggerInjectable from "./logger.injectable";
import watchKubeconfigFileChangesInjectable from "./watch-file-changes.injectable"; import watchKubeconfigFileChangesInjectable from "./watch-file-changes.injectable";

View File

@ -11,9 +11,10 @@ import { iter } from "../../../common/utils";
import type { KubeconfigSyncValue } from "../../../common/user-store"; import type { KubeconfigSyncValue } from "../../../common/user-store";
import type { Logger } from "../../../common/logger"; import type { Logger } from "../../../common/logger";
import type { WatchKubeconfigFileChanges } from "./watch-file-changes.injectable"; import type { WatchKubeconfigFileChanges } from "./watch-file-changes.injectable";
import type { LazyInitializableState } from "../../../common/initializable-state/create-lazy";
interface KubeconfigSyncManagerDependencies { interface KubeconfigSyncManagerDependencies {
readonly directoryForKubeConfigs: string; readonly directoryForKubeConfigs: LazyInitializableState<string>;
readonly logger: Logger; readonly logger: Logger;
readonly kubeconfigSyncs: ObservableMap<string, KubeconfigSyncValue>; readonly kubeconfigSyncs: ObservableMap<string, KubeconfigSyncValue>;
watchKubeconfigFileChanges: WatchKubeconfigFileChanges; watchKubeconfigFileChanges: WatchKubeconfigFileChanges;
@ -52,7 +53,7 @@ export class KubeconfigSyncManager {
this.dependencies.logger.info(`starting requested syncs`); this.dependencies.logger.info(`starting requested syncs`);
// This must be done so that c&p-ed clusters are visible // This must be done so that c&p-ed clusters are visible
this.startNewSync(this.dependencies.directoryForKubeConfigs); this.startNewSync(this.dependencies.directoryForKubeConfigs.get());
for (const filePath of this.dependencies.kubeconfigSyncs.keys()) { for (const filePath of this.dependencies.kubeconfigSyncs.keys()) {
this.startNewSync(filePath); this.startNewSync(filePath);

View File

@ -5,7 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import type { ClusterDependencies } from "../../common/cluster/cluster"; import type { ClusterDependencies } from "../../common/cluster/cluster";
import { Cluster } from "../../common/cluster/cluster"; import { Cluster } from "../../common/cluster/cluster";
import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs.injectable";
import createKubeconfigManagerInjectable from "../kubeconfig-manager/create-kubeconfig-manager.injectable"; import createKubeconfigManagerInjectable from "../kubeconfig-manager/create-kubeconfig-manager.injectable";
import createKubectlInjectable from "../kubectl/create-kubectl.injectable"; import createKubectlInjectable from "../kubectl/create-kubectl.injectable";
import createContextHandlerInjectable from "../context-handler/create-context-handler.injectable"; import createContextHandlerInjectable from "../context-handler/create-context-handler.injectable";

View File

@ -4,7 +4,7 @@
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { afterApplicationIsLoadedInjectionToken } from "../../runnable-tokens/after-application-is-loaded-injection-token"; import { afterApplicationIsLoadedInjectionToken } from "../../runnable-tokens/after-application-is-loaded-injection-token";
import directoryForKubeConfigsInjectable from "../../../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; import directoryForKubeConfigsInjectable from "../../../../common/app-paths/directory-for-kube-configs.injectable";
import ensureDirInjectable from "../../../../common/fs/ensure-dir.injectable"; import ensureDirInjectable from "../../../../common/fs/ensure-dir.injectable";
import kubeconfigSyncManagerInjectable from "../../../catalog-sources/kubeconfig-sync/manager.injectable"; import kubeconfigSyncManagerInjectable from "../../../catalog-sources/kubeconfig-sync/manager.injectable";
import addKubeconfigSyncAsEntitySourceInjectable from "./add-source.injectable"; import addKubeconfigSyncAsEntitySourceInjectable from "./add-source.injectable";
@ -20,7 +20,7 @@ const startKubeConfigSyncInjectable = getInjectable({
return { return {
id: "start-kubeconfig-sync", id: "start-kubeconfig-sync",
run: async () => { run: async () => {
await ensureDir(directoryForKubeConfigs); await ensureDir(directoryForKubeConfigs.get());
kubeConfigSyncManager.startSync(); kubeConfigSyncManager.startSync();
}, },

View File

@ -13,7 +13,7 @@ import { migrationLog } from "../helpers";
import type { ClusterModel } from "../../common/cluster-types"; import type { ClusterModel } from "../../common/cluster-types";
import { getLegacyGlobalDiForExtensionApi } from "../../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; import { getLegacyGlobalDiForExtensionApi } from "../../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data.injectable"; import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data.injectable";
import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs.injectable";
import getCustomKubeConfigDirectoryInjectable from "../../common/app-paths/get-custom-kube-config-directory/get-custom-kube-config-directory.injectable"; import getCustomKubeConfigDirectoryInjectable from "../../common/app-paths/get-custom-kube-config-directory/get-custom-kube-config-directory.injectable";
import readFileSyncInjectable from "../../common/fs/read-file-sync.injectable"; import readFileSyncInjectable from "../../common/fs/read-file-sync.injectable";
import joinPathsInjectable from "../../common/path/join-paths.injectable"; import joinPathsInjectable from "../../common/path/join-paths.injectable";
@ -36,7 +36,7 @@ export default {
const storedClusters: Pre360ClusterModel[] = store.get("clusters") ?? []; const storedClusters: Pre360ClusterModel[] = store.get("clusters") ?? [];
const migratedClusters: ClusterModel[] = []; const migratedClusters: ClusterModel[] = [];
fse.ensureDirSync(kubeConfigsPath); fse.ensureDirSync(kubeConfigsPath.get());
migrationLog("Number of clusters to migrate: ", storedClusters.length); migrationLog("Number of clusters to migrate: ", storedClusters.length);

View File

@ -12,7 +12,7 @@ import { migrationLog } from "../helpers";
import { isErrnoException } from "../../common/utils"; import { isErrnoException } from "../../common/utils";
import { getLegacyGlobalDiForExtensionApi } from "../../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; import { getLegacyGlobalDiForExtensionApi } from "../../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data.injectable"; import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data.injectable";
import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs.injectable";
import joinPathsInjectable from "../../common/path/join-paths.injectable"; import joinPathsInjectable from "../../common/path/join-paths.injectable";
import isLogicalChildPathInjectable from "../../common/path/is-logical-child-path.injectable"; import isLogicalChildPathInjectable from "../../common/path/is-logical-child-path.injectable";
import getDirnameOfPathInjectable from "../../common/path/get-dirname.injectable"; import getDirnameOfPathInjectable from "../../common/path/get-dirname.injectable";
@ -26,7 +26,7 @@ export default {
const di = getLegacyGlobalDiForExtensionApi(); const di = getLegacyGlobalDiForExtensionApi();
const userDataPath = di.inject(directoryForUserDataInjectable).get(); const userDataPath = di.inject(directoryForUserDataInjectable).get();
const kubeConfigsPath = di.inject(directoryForKubeConfigsInjectable); const kubeConfigsPath = di.inject(directoryForKubeConfigsInjectable).get();
const joinPaths = di.inject(joinPathsInjectable); const joinPaths = di.inject(joinPathsInjectable);
const isLogicalChildPath = di.inject(isLogicalChildPathInjectable); const isLogicalChildPath = di.inject(isLogicalChildPathInjectable);
const getDirnameOfPath = di.inject(getDirnameOfPathInjectable); const getDirnameOfPath = di.inject(getDirnameOfPathInjectable);

View File

@ -5,7 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import type { ClusterDependencies } from "../../common/cluster/cluster"; import type { ClusterDependencies } from "../../common/cluster/cluster";
import { Cluster } from "../../common/cluster/cluster"; import { Cluster } from "../../common/cluster/cluster";
import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs.injectable";
import { createClusterInjectionToken } from "../../common/cluster/create-cluster-injection-token"; import { createClusterInjectionToken } from "../../common/cluster/create-cluster-injection-token";
import loggerInjectable from "../../common/logger.injectable"; import loggerInjectable from "../../common/logger.injectable";
import broadcastMessageInjectable from "../../common/ipc/broadcast-message.injectable"; import broadcastMessageInjectable from "../../common/ipc/broadcast-message.injectable";