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 (#748)

* 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-27 08:43:17 +03:00 committed by GitHub
parent c31004e677
commit 659d8bd0ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 9 deletions

View File

@ -26,11 +26,8 @@ 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)
await app.client.waitForExist(`iframe[name="minikube"]`)
await app.client.frame("minikube")
await app.client.waitUntilTextExists("span.link-text", "Cluster")
}
@ -39,10 +36,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)

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}`)