From 13b99afa21f7cf7a6f3fc83cb22b3b3ff1935963 Mon Sep 17 00:00:00 2001 From: Lauri Nevala Date: Fri, 25 Sep 2020 15:13:20 +0300 Subject: [PATCH] Add migration to fix kubeconfig paths that point to snap config dir (#972) * Add migration to fix kubeconfig paths that point to snap config dir Signed-off-by: Lauri Nevala --- src/migrations/cluster-store/index.ts | 2 ++ src/migrations/cluster-store/snap.ts | 33 +++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/migrations/cluster-store/snap.ts diff --git a/src/migrations/cluster-store/index.ts b/src/migrations/cluster-store/index.ts index d178d7106b1a..f35e8f6c9cad 100644 --- a/src/migrations/cluster-store/index.ts +++ b/src/migrations/cluster-store/index.ts @@ -7,6 +7,7 @@ import version260Beta3 from "./2.6.0-beta.3" import version270Beta0 from "./2.7.0-beta.0" import version270Beta1 from "./2.7.0-beta.1" import version360Beta1 from "./3.6.0-beta.1" +import snap from "./snap" export default { ...version200Beta2, @@ -16,4 +17,5 @@ export default { ...version270Beta0, ...version270Beta1, ...version360Beta1, + ...snap } \ No newline at end of file diff --git a/src/migrations/cluster-store/snap.ts b/src/migrations/cluster-store/snap.ts new file mode 100644 index 000000000000..a377ba42687c --- /dev/null +++ b/src/migrations/cluster-store/snap.ts @@ -0,0 +1,33 @@ +// Fix embedded kubeconfig paths under snap config + +import { migration } from "../migration-wrapper"; +import { ClusterModel, ClusterStore } from "../../common/cluster-store"; +import { getAppVersion } from "../../common/utils/app-version"; +import fs from "fs" + +export default migration({ + version: getAppVersion(), // Run always after upgrade + run(store, printLog) { + if (!process.env["SNAP"]) return; + + printLog("Migrating embedded kubeconfig paths") + const storedClusters: ClusterModel[] = store.get("clusters") || []; + if (!storedClusters.length) return; + + printLog("Number of clusters to migrate: ", storedClusters.length) + const migratedClusters = storedClusters + .map(cluster => { + /** + * replace snap version with 'current' in kubeconfig path + */ + if (!fs.existsSync(cluster.kubeConfigPath)) { + const kubeconfigPath = cluster.kubeConfigPath.replace(/\/snap\/kontena-lens\/[0-9]*\//, "/snap/kontena-lens/current/") + cluster.kubeConfigPath = kubeconfigPath + } + return cluster; + }) + + + store.set("clusters", migratedClusters) + } +})