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

Add more log entries on start up (#1955)

* Add more log entries on start up

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>

* And log entry about shell sync

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>

* Refactoring

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>

* Add new line

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>

* Apply suggestions from code review

Co-authored-by: Sebastian Malton <sebastian@malton.name>
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>

Co-authored-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
Co-authored-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Lauri Nevala 2021-02-04 19:19:11 +02:00 committed by GitHub
parent 0727456aa1
commit ad6de71826
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 64 additions and 2 deletions

View File

@ -1,3 +1,4 @@
import requestPromise from "request-promise-native";
import packageInfo from "../../../package.json";
export function getAppVersion(): string {
@ -11,3 +12,13 @@ export function getBundledKubectlVersion(): string {
export function getBundledExtensions(): string[] {
return packageInfo.lens?.extensions || [];
}
export async function getAppVersionFromProxyServer(proxyPort: number): Promise<string> {
const response = await requestPromise({
method: "GET",
uri: `http://localhost:${proxyPort}/version`,
resolveWithFullResponse: true
});
return JSON.parse(response.body).version;
}

View File

@ -1,9 +1,12 @@
import logger from "./logger";
/**
* Installs Electron developer tools in the development build.
* The dependency is not bundled to the production build.
*/
export const installDeveloperTools = async () => {
if (process.env.NODE_ENV === "development") {
logger.info("🤓 Installing developer tools");
const { default: devToolsInstaller, REACT_DEVELOPER_TOOLS } = await import("electron-devtools-installer");
return devToolsInstaller([REACT_DEVELOPER_TOOLS]);

View File

@ -26,6 +26,7 @@ import { InstalledExtension, extensionDiscovery } from "../extensions/extension-
import type { LensExtensionId } from "../extensions/lens-extension";
import { installDeveloperTools } from "./developer-tools";
import { filesystemProvisionerStore } from "./extension-filesystem";
import { getAppVersion, getAppVersionFromProxyServer } from "../common/utils";
import { bindBroadcastHandlers } from "../common/ipc";
const workingDir = path.join(app.getPath("appData"), appName);
@ -62,6 +63,7 @@ if (process.env.LENS_DISABLE_GPU) {
app.on("ready", async () => {
logger.info(`🚀 Starting Lens from "${workingDir}"`);
logger.info("🐚 Syncing shell environment");
await shellSync();
bindBroadcastHandlers();
@ -70,6 +72,7 @@ app.on("ready", async () => {
app.exit();
});
logger.info(`📡 Checking for app updates`);
const updater = new AppUpdater();
updater.start();
@ -78,6 +81,7 @@ app.on("ready", async () => {
await installDeveloperTools();
logger.info("💾 Loading stores");
// preload
await Promise.all([
userStore.load(),
@ -89,6 +93,7 @@ app.on("ready", async () => {
// find free port
try {
logger.info("🔑 Getting free port for LensProxy server");
proxyPort = await getFreePort();
} catch (error) {
logger.error(error);
@ -101,6 +106,7 @@ app.on("ready", async () => {
// run proxy
try {
logger.info("🔌 Starting LensProxy");
// eslint-disable-next-line unused-imports/no-unused-vars-ts
proxyServer = LensProxy.create(proxyPort, clusterManager);
} catch (error) {
@ -109,10 +115,27 @@ app.on("ready", async () => {
app.exit();
}
// test proxy connection
try {
logger.info("🔎 Testing LensProxy connection ...");
const versionFromProxy = await getAppVersionFromProxyServer(proxyPort);
if (getAppVersion() !== versionFromProxy) {
logger.error(`Proxy server responded with invalid response`);
}
logger.info("⚡ LensProxy connection OK");
} catch (error) {
logger.error("Checking proxy server connection failed", error);
}
extensionLoader.init();
extensionDiscovery.init();
logger.info("🖥️ Starting WindowManager");
windowManager = WindowManager.getInstance<WindowManager>(proxyPort);
logger.info("🧩 Initializing extensions");
// call after windowManager to see splash earlier
try {
const extensions = await extensionDiscovery.load();

View File

@ -29,7 +29,7 @@ export class LensProxy {
listen(port = this.port): this {
this.proxyServer = this.buildCustomProxy().listen(port);
logger.info(`LensProxy server has started at ${this.origin}`);
logger.info(`[LENS-PROXY]: Proxy server has started at ${this.origin}`);
return this;
}

View File

@ -5,7 +5,7 @@ import path from "path";
import { readFile } from "fs-extra";
import { Cluster } from "./cluster";
import { apiPrefix, appName, publicPath, isDevelopment, webpackDevServerPort } from "../common/vars";
import { helmRoute, kubeconfigRoute, metricsRoute, portForwardRoute, resourceApplierRoute, watchRoute } from "./routes";
import { helmRoute, kubeconfigRoute, metricsRoute, portForwardRoute, resourceApplierRoute, watchRoute, versionRoute } from "./routes";
import logger from "./logger";
export interface RouterRequestOpts {
@ -143,6 +143,7 @@ export class Router {
this.handleStaticFile(params.path, response, req);
});
this.router.add({ method: "get", path: "/version"}, versionRoute.getVersion.bind(versionRoute));
this.router.add({ method: "get", path: `${apiPrefix}/kubeconfig/service-account/{namespace}/{account}` }, kubeconfigRoute.routeServiceAccountRoute.bind(kubeconfigRoute));
// Watch API

View File

@ -4,3 +4,4 @@ export * from "./port-forward-route";
export * from "./watch-route";
export * from "./helm-route";
export * from "./resource-applier-route";
export * from "./version-route";

View File

@ -0,0 +1,13 @@
import { LensApiRequest } from "../router";
import { LensApi } from "../lens-api";
import { getAppVersion } from "../../common/utils";
class VersionRoute extends LensApi {
public async getVersion(request: LensApiRequest) {
const { response } = request;
this.respondJson(response, { version: getAppVersion()}, 200);
}
}
export const versionRoute = new VersionRoute();

View File

@ -8,6 +8,7 @@ import { initMenu } from "./menu";
import { initTray } from "./tray";
import { Singleton } from "../common/utils";
import { ClusterFrameInfo, clusterFrameMap } from "../common/cluster-frames";
import logger from "./logger";
export class WindowManager extends Singleton {
protected mainWindow: BrowserWindow;
@ -81,10 +82,19 @@ export class WindowManager extends Singleton {
this.splashWindow = null;
app.dock?.hide(); // hide icon in dock (mac-os)
});
this.mainWindow.webContents.on("did-fail-load", (_event, code, desc) => {
logger.error(`[WINDOW-MANAGER]: Failed to load Main window`, { code, desc });
});
this.mainWindow.webContents.on("did-finish-load", () => {
logger.info("[WINDOW-MANAGER]: Main window loaded");
});
}
try {
if (showSplash) await this.showSplash();
logger.info(`[WINDOW-MANAGER]: Loading Main window from url: ${this.mainUrl} ...`);
await this.mainWindow.loadURL(this.mainUrl);
this.mainWindow.show();
this.splashWindow?.close();