mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
tweaks and bug fix
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
This commit is contained in:
parent
5e27dd7bbb
commit
22a32adc49
@ -16,7 +16,7 @@ export class LensMainExtension extends LensExtension {
|
||||
appMenus: MenuRegistration[] = [];
|
||||
trayMenus: TrayMenuRegistration[] = [];
|
||||
|
||||
shellEnvModifier?: ShellEnvModifier;
|
||||
terminalShellEnvModifier?: ShellEnvModifier;
|
||||
|
||||
async navigate(pageId?: string, params?: Record<string, any>, frameId?: number) {
|
||||
return WindowManager.getInstance().navigateExtension(this.id, pageId, params, frameId);
|
||||
|
||||
@ -7,7 +7,7 @@ import { LocalShellSession } from "./local-shell-session";
|
||||
import type { Cluster } from "../../../common/cluster/cluster";
|
||||
import type WebSocket from "ws";
|
||||
import createKubectlInjectable from "../../kubectl/create-kubectl.injectable";
|
||||
import shellEnvModifiersInjectable from "../shell-env-modifier/shell-env-modifier.injectable";
|
||||
import terminalShellEnvModifiersInjectable from "../shell-env-modifier/terminal-shell-env-modifier.injectable";
|
||||
import { catalogEntityRegistry } from "../../catalog";
|
||||
|
||||
interface InstantiationParameter {
|
||||
@ -19,12 +19,12 @@ interface InstantiationParameter {
|
||||
const localShellSessionInjectable = getInjectable({
|
||||
instantiate: (di, { cluster, tabId, webSocket }: InstantiationParameter) => {
|
||||
const createKubectl = di.inject(createKubectlInjectable);
|
||||
const shellEnvModifiers = di.inject(shellEnvModifiersInjectable);
|
||||
const localShellEnvModifiers = di.inject(terminalShellEnvModifiersInjectable);
|
||||
|
||||
const kubectl = createKubectl(cluster.version);
|
||||
const entity = catalogEntityRegistry.getById(cluster.id);
|
||||
|
||||
return new LocalShellSession(kubectl, shellEnvModifiers.get(), entity, webSocket, cluster, tabId);
|
||||
return new LocalShellSession(kubectl, localShellEnvModifiers.get(), entity, webSocket, cluster, tabId);
|
||||
},
|
||||
|
||||
lifecycle: lifecycleEnum.transient,
|
||||
|
||||
@ -5,15 +5,15 @@
|
||||
|
||||
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||
import mainExtensionsInjectable from "../../../extensions/main-extensions.injectable";
|
||||
import { shellEnvModifiers } from "./shell-env-modifiers";
|
||||
import { terminalShellEnvModifiers } from "./terminal-shell-env-modifiers";
|
||||
|
||||
const shellEnvModifiersInjectable = getInjectable({
|
||||
const terminalShellEnvModifiersInjectable = getInjectable({
|
||||
instantiate: (di) =>
|
||||
shellEnvModifiers({
|
||||
terminalShellEnvModifiers({
|
||||
extensions: di.inject(mainExtensionsInjectable),
|
||||
}),
|
||||
|
||||
lifecycle: lifecycleEnum.singleton,
|
||||
});
|
||||
|
||||
export default shellEnvModifiersInjectable;
|
||||
export default terminalShellEnvModifiersInjectable;
|
||||
@ -10,10 +10,10 @@ interface Dependencies {
|
||||
extensions: IComputedValue<LensMainExtension[]>;
|
||||
}
|
||||
|
||||
export const shellEnvModifiers = ({ extensions }: Dependencies) => {
|
||||
export const terminalShellEnvModifiers = ({ extensions }: Dependencies) => {
|
||||
return computed(() => (
|
||||
extensions.get()
|
||||
.map((extension) => extension.shellEnvModifier)
|
||||
.map((extension) => extension.terminalShellEnvModifier)
|
||||
.filter(Boolean)
|
||||
));
|
||||
};
|
||||
@ -106,10 +106,12 @@ export enum WebSocketCloseEvent {
|
||||
TlsHandshake = 1015,
|
||||
}
|
||||
|
||||
type ShellEnvId = { clusterId: string, ShellType: string };
|
||||
|
||||
export abstract class ShellSession {
|
||||
abstract ShellType: string;
|
||||
|
||||
private static shellEnvs = new Map<string, Record<string, string>>();
|
||||
private static shellEnvs = new Map<ShellEnvId, Record<string, string>>();
|
||||
private static processes = new Map<string, pty.IPty>();
|
||||
|
||||
/**
|
||||
@ -296,16 +298,17 @@ export abstract class ShellSession {
|
||||
|
||||
protected async getCachedShellEnv() {
|
||||
const { id: clusterId } = this.cluster;
|
||||
const { ShellType } = this;
|
||||
|
||||
let env = ShellSession.shellEnvs.get(clusterId);
|
||||
let env = ShellSession.shellEnvs.get({ clusterId, ShellType });
|
||||
|
||||
if (!env) {
|
||||
env = await this.getShellEnv();
|
||||
ShellSession.shellEnvs.set(clusterId, env);
|
||||
ShellSession.shellEnvs.set({ clusterId, ShellType }, env);
|
||||
} else {
|
||||
// refresh env in the background
|
||||
this.getShellEnv().then((shellEnv: any) => {
|
||||
ShellSession.shellEnvs.set(clusterId, shellEnv);
|
||||
ShellSession.shellEnvs.set({ clusterId, ShellType }, shellEnv);
|
||||
});
|
||||
}
|
||||
|
||||
@ -343,10 +346,8 @@ export abstract class ShellSession {
|
||||
env.DISABLE_AUTO_UPDATE = "true";
|
||||
}
|
||||
|
||||
const kubeconfigPath = await this.kubeconfigPathP;
|
||||
|
||||
env.PTYPID = process.pid.toString();
|
||||
env.KUBECONFIG = kubeconfigPath;
|
||||
env.KUBECONFIG = await this.kubeconfigPathP;
|
||||
env.TERM_PROGRAM = app.getName();
|
||||
env.TERM_PROGRAM_VERSION = app.getVersion();
|
||||
|
||||
@ -362,15 +363,14 @@ export abstract class ShellSession {
|
||||
.filter(Boolean)
|
||||
.join();
|
||||
|
||||
console.log("entity in shell-session", this.entity);
|
||||
console.log(this.entity.spec.kubeconfigPath);
|
||||
console.log(this.entity.spec.kubeconfigContext);
|
||||
console.log(this.entity.getId());
|
||||
if (this.entity) {
|
||||
const ctx = { catalogEntity: this.entity };
|
||||
const modifiedEnv = this.shellEnvModifiers.reduce((env, modifier) => modifier(ctx, env), env);
|
||||
|
||||
const ctx = { catalogEntity: this.entity };
|
||||
const modifiedEnv = this.shellEnvModifiers.reduce((env, modifier) => modifier(ctx, env), env);
|
||||
return modifiedEnv;
|
||||
}
|
||||
|
||||
return modifiedEnv;
|
||||
return env;
|
||||
}
|
||||
|
||||
protected exit(code = WebSocketCloseEvent.NormalClosure) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user