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

Wait until cluster is ready before initializing cluster dashboard

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
This commit is contained in:
Lauri Nevala 2020-08-26 16:13:00 +03:00
parent 886fba136a
commit 9df01984d5
3 changed files with 15 additions and 9 deletions

View File

@ -1,6 +1,7 @@
import { Application } from "spectron"
import * as util from "../helpers/utils"
import { spawnSync } from "child_process"
import logger from "../../src/main/logger"
jest.setTimeout(20000)
@ -26,11 +27,9 @@ describe("app start", () => {
const waitForMinikubeDashboard = async (app: Application) => {
await app.client.waitUntilTextExists("pre.kube-auth-out", "Authentication proxy started")
let windowCount = await app.client.getWindowCount()
// wait for webview to appear on window count
while (windowCount == 1) {
windowCount = await app.client.getWindowCount()
}
await app.client.windowByIndex(windowCount - 1)
logger.info("Window count: "+windowCount)
await app.client.waitForExist(`iframe[name="minikube"]`)
await app.client.frame("minikube")
await app.client.waitUntilTextExists("span.link-text", "Cluster")
}
@ -39,10 +38,10 @@ describe("app start", () => {
await app.start()
await app.client.waitUntilWindowLoaded()
let windowCount = await app.client.getWindowCount()
while (windowCount > 1) {
while (windowCount > 1) { // Wait for splash screen to be closed
windowCount = await app.client.getWindowCount()
}
await app.client.windowByIndex(windowCount - 1)
await app.client.windowByIndex(0)
await app.client.waitUntilWindowLoaded()
}, 20000)
@ -72,6 +71,7 @@ describe("app start", () => {
await clickWhatsNew(app)
await addMinikubeCluster(app)
await waitForMinikubeDashboard(app)
await app.client.click('a[href="/nodes"]')
await app.client.click(".sidebar-nav #workloads span.link-text")
await app.client.waitUntilTextExists('a[href="/pods"]', "Pods")
await app.client.click('a[href="/pods"]')

View File

@ -27,6 +27,7 @@ export interface ClusterState extends ClusterModel {
online: boolean;
disconnected: boolean;
accessible: boolean;
ready: boolean;
failureReason: string;
nodes: number;
eventCount: number;
@ -47,6 +48,7 @@ export class Cluster implements ClusterModel {
protected eventDisposers: Function[] = [];
whenInitialized = when(() => this.initialized);
whenReady = when(() => this.ready);
@observable initialized = false;
@observable contextName: string;
@ -56,6 +58,7 @@ export class Cluster implements ClusterModel {
@observable kubeProxyUrl: string; // lens-proxy to kube-api url
@observable online: boolean;
@observable accessible: boolean;
@observable ready: boolean;
@observable disconnected: boolean;
@observable failureReason: string;
@observable nodes = 0;
@ -149,6 +152,7 @@ export class Cluster implements ClusterModel {
this.disconnected = true;
this.online = false;
this.accessible = false;
this.ready = false;
this.pushState();
}
@ -172,6 +176,7 @@ export class Cluster implements ClusterModel {
this.refreshEvents(),
this.refreshAllowedResources(),
]);
this.ready = true
}
}
@ -370,6 +375,7 @@ export class Cluster implements ClusterModel {
initialized: this.initialized,
apiUrl: this.apiUrl,
online: this.online,
ready: this.ready,
disconnected: this.disconnected,
accessible: this.accessible,
failureReason: this.failureReason,

View File

@ -21,10 +21,10 @@ export async function initView(clusterId: ClusterId) {
}
logger.info(`[LENS-VIEW]: init dashboard, clusterId=${clusterId}`)
const cluster = clusterStore.getById(clusterId);
await cluster.whenInitialized;
await cluster.whenReady;
const parentElem = document.getElementById("lens-views");
const iframe = document.createElement("iframe");
iframe.name = cluster.preferences.clusterName;
iframe.name = cluster.contextName;
iframe.setAttribute("src", `//${clusterId}.${location.host}`)
iframe.addEventListener("load", async () => {
logger.info(`[LENS-VIEW]: loaded from ${iframe.src}`)