mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
fixes / responding to comments
Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
parent
e966c1149d
commit
bfacb86438
@ -363,11 +363,7 @@ utils.describeIf(minikubeReady(TEST_NAMESPACE))("Minikube based tests", () => {
|
|||||||
|
|
||||||
await kubeApiServerRow.click();
|
await kubeApiServerRow.click();
|
||||||
await frame.waitForSelector(".Drawer", { state: "visible" });
|
await frame.waitForSelector(".Drawer", { state: "visible" });
|
||||||
|
await frame.waitForSelector(".Drawer .drawer-title .Icon >> text=subject").then(button => button.click());
|
||||||
const podLogsIcon = await frame.waitForSelector(".Drawer .drawer-title .Icon >> text=subject");
|
|
||||||
|
|
||||||
await podLogsIcon.click();
|
|
||||||
|
|
||||||
await frame.waitForSelector(".Dock.isOpen");
|
await frame.waitForSelector(".Dock.isOpen");
|
||||||
|
|
||||||
// Check if controls are available
|
// Check if controls are available
|
||||||
|
|||||||
@ -319,4 +319,5 @@ export const DESCRIPTORS = {
|
|||||||
export const CONSTANTS = {
|
export const CONSTANTS = {
|
||||||
defaultUpdateChannel,
|
defaultUpdateChannel,
|
||||||
updateChannels,
|
updateChannels,
|
||||||
|
defaultEditorConfig,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -29,7 +29,7 @@ import { kubeConfigDefaultPath } from "../kube-helpers";
|
|||||||
import { appEventBus } from "../event-bus";
|
import { appEventBus } from "../event-bus";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import { ObservableToggleSet, toJS } from "../../renderer/utils";
|
import { ObservableToggleSet, toJS } from "../../renderer/utils";
|
||||||
import { defaultEditorConfig, DESCRIPTORS, EditorConfiguration, KubeconfigSyncValue, UserPreferencesModel, CONSTANTS } from "./preferences-helpers";
|
import { CONSTANTS, DESCRIPTORS, EditorConfiguration, KubeconfigSyncValue, UserPreferencesModel } from "./preferences-helpers";
|
||||||
import logger from "../../main/logger";
|
import logger from "../../main/logger";
|
||||||
import { getPath } from "../utils/getPath";
|
import { getPath } from "../utils/getPath";
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ export class UserStore extends BaseStore<UserStoreModel> /* implements UserStore
|
|||||||
/**
|
/**
|
||||||
* Monaco editor configs
|
* Monaco editor configs
|
||||||
*/
|
*/
|
||||||
@observable editorConfiguration: EditorConfiguration = defaultEditorConfig;
|
@observable editorConfiguration: EditorConfiguration = CONSTANTS.defaultEditorConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The set of file/folder paths to be synced
|
* The set of file/folder paths to be synced
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
export * from "./dock";
|
export * from "./dock";
|
||||||
|
|
||||||
// registered dock-tab view components
|
// Registered React components to handle contents per {DockTab.kind}
|
||||||
export * from "./terminal-window";
|
export * from "./terminal-window";
|
||||||
export * from "./create-resource";
|
export * from "./create-resource";
|
||||||
export * from "./edit-resource";
|
export * from "./edit-resource";
|
||||||
@ -33,5 +33,13 @@
|
|||||||
|
|
||||||
.InstallChartDone {
|
.InstallChartDone {
|
||||||
--flex-gap: #{$padding * 1.5};
|
--flex-gap: #{$padding * 1.5};
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
z-index: 1;
|
||||||
|
background: black;
|
||||||
padding: $padding * 2;
|
padding: $padding * 2;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,7 +51,7 @@ export class TerminalWindow extends React.Component<Props> {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
activate(tabId: TabId = dockStore.selectedTabId) {
|
activate(tabId: TabId) {
|
||||||
if (this.terminal) this.terminal.detach(); // detach previous
|
if (this.terminal) this.terminal.detach(); // detach previous
|
||||||
this.terminal = TerminalStore.getInstance().getTerminal(tabId);
|
this.terminal = TerminalStore.getInstance().getTerminal(tabId);
|
||||||
this.terminal.attachTo(this.elem);
|
this.terminal.attachTo(this.elem);
|
||||||
|
|||||||
@ -43,7 +43,6 @@ export class UpgradeChartStore extends DockTabStore<IChartUpgradeData> {
|
|||||||
|
|
||||||
async init() {
|
async init() {
|
||||||
super.init();
|
super.init();
|
||||||
await releaseStore.loadFromContextNamespaces();
|
|
||||||
|
|
||||||
this.dispose.push(
|
this.dispose.push(
|
||||||
dockStore.onTabChange(({ tabId }) => this.loadData(tabId), {
|
dockStore.onTabChange(({ tabId }) => this.loadData(tabId), {
|
||||||
@ -53,20 +52,17 @@ export class UpgradeChartStore extends DockTabStore<IChartUpgradeData> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
hasValues(tabId: TabId) {
|
|
||||||
return this.values.has(tabId);
|
|
||||||
}
|
|
||||||
|
|
||||||
async loadData(tabId: TabId) {
|
async loadData(tabId: TabId) {
|
||||||
await this.whenReady;
|
await this.whenReady;
|
||||||
|
|
||||||
await Promise.all([
|
return Promise.all([
|
||||||
|
!releaseStore.isLoaded && releaseStore.loadFromContextNamespaces(),
|
||||||
this.loadValues(tabId),
|
this.loadValues(tabId),
|
||||||
this.loadVersions(tabId),
|
this.loadVersions(tabId),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
getRelease(tabId: TabId) {
|
getRelease(tabId: TabId): HelmRelease | null {
|
||||||
const releaseName = this.getData(tabId)?.releaseName;
|
const releaseName = this.getData(tabId)?.releaseName;
|
||||||
|
|
||||||
if (!releaseName) return null;
|
if (!releaseName) return null;
|
||||||
@ -75,34 +71,44 @@ export class UpgradeChartStore extends DockTabStore<IChartUpgradeData> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
private async loadVersions(tabId: TabId) {
|
private async loadVersions(tabId: TabId): Promise<IChartVersion[]> {
|
||||||
try {
|
try {
|
||||||
const { releaseName } = this.getData(tabId);
|
const { releaseName } = this.getData(tabId);
|
||||||
|
|
||||||
this.versions.clear();
|
console.info(`[UPGRADE-CHART]: loading versions for release "${releaseName}"`);
|
||||||
const versions = await helmChartStore.getVersions(releaseName);
|
const versions = await helmChartStore.getVersions(releaseName);
|
||||||
|
|
||||||
this.versions.replace(versions);
|
this.versions.replace(versions);
|
||||||
|
|
||||||
|
return versions;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`[UPGRADE-CHART]: loading versions has failed: ${error}`);
|
console.error(`[UPGRADE-CHART]: loading versions has failed: ${error}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
private async loadValues(tabId: TabId, { forceReload = false } = {}) {
|
private async loadValues(tabId: TabId): Promise<string> {
|
||||||
if (this.hasValues(tabId) && !forceReload) {
|
if (this.values.has(tabId)) {
|
||||||
return;
|
return this.values.get(tabId); // use cached values
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.values.delete(tabId);
|
|
||||||
const { releaseName, releaseNamespace } = this.getData(tabId);
|
const { releaseName, releaseNamespace } = this.getData(tabId);
|
||||||
|
|
||||||
|
console.info(`[UPGRADE-CHART]: loading values for release "${releaseName}"`);
|
||||||
|
|
||||||
const values = await getReleaseValues(releaseName, releaseNamespace, true);
|
const values = await getReleaseValues(releaseName, releaseNamespace, true);
|
||||||
|
|
||||||
this.values.set(tabId, values);
|
this.values.set(tabId, values);
|
||||||
|
|
||||||
|
return values;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`[UPGRADE-CHART]: loading values has failed: ${error}`);
|
console.error(`[UPGRADE-CHART]: loading values has failed: ${error}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
getTabByRelease(releaseName: string): DockTab | null {
|
getTabByRelease(releaseName: string): DockTab | null {
|
||||||
|
|||||||
@ -42,8 +42,6 @@ export class UpgradeChart extends React.Component<Props> {
|
|||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@observable selectedVersion: IChartVersion;
|
|
||||||
|
|
||||||
get tabId() {
|
get tabId() {
|
||||||
return this.props.tabId;
|
return this.props.tabId;
|
||||||
}
|
}
|
||||||
@ -52,22 +50,45 @@ export class UpgradeChart extends React.Component<Props> {
|
|||||||
return upgradeChartStore.getRelease(this.tabId);
|
return upgradeChartStore.getRelease(this.tabId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@computed get versions(): SelectOption<IChartVersion>[] {
|
@observable selectedVersion: IChartVersion | undefined;
|
||||||
return upgradeChartStore.versions.map(version => ({ value: version }));
|
|
||||||
|
@computed get releaseVersion(): IChartVersion {
|
||||||
|
return this.getChartVersionByRelease(this.release);
|
||||||
}
|
}
|
||||||
|
|
||||||
get value() {
|
@computed get chartVersionOptions(): SelectOption<IChartVersion>[] {
|
||||||
|
return upgradeChartStore.versions.map(version => ({
|
||||||
|
value: version,
|
||||||
|
disabled: this.selectedVersion == this.releaseVersion,
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
@computed get chartValues(): string {
|
||||||
return upgradeChartStore.values.get(this.tabId);
|
return upgradeChartStore.values.get(this.tabId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getChartVersionByRelease(release: HelmRelease): IChartVersion | undefined {
|
||||||
|
return upgradeChartStore.versions.find(({ version, repo }) => (
|
||||||
|
release?.getChart() == repo &&
|
||||||
|
release?.getVersion() === version
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
upgrade = async () => {
|
upgrade = async () => {
|
||||||
const { version, repo } = this.selectedVersion;
|
const { releaseVersion, selectedVersion, release, chartValues } = this;
|
||||||
const releaseName = this.release.getName();
|
const newVersionNotSelected = !selectedVersion || selectedVersion == releaseVersion;
|
||||||
const releaseNs = this.release.getNs();
|
|
||||||
|
if (!release || newVersionNotSelected) {
|
||||||
|
throw new Error(`You have not selected new version for "${releaseVersion}"`); // skip: nothing to upgrade
|
||||||
|
}
|
||||||
|
|
||||||
|
const { version, repo } = selectedVersion;
|
||||||
|
const releaseName = release.getName();
|
||||||
|
const releaseNs = release.getNs();
|
||||||
|
|
||||||
await releaseStore.update(releaseName, releaseNs, {
|
await releaseStore.update(releaseName, releaseNs, {
|
||||||
chart: this.release.getChart(),
|
chart: release.getChart(),
|
||||||
values: this.value,
|
values: chartValues,
|
||||||
repo, version,
|
repo, version,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -86,8 +107,7 @@ export class UpgradeChart extends React.Component<Props> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { release, versions, selectedVersion } = this;
|
const { release, chartVersionOptions } = this;
|
||||||
const currentVersion = release.getVersion();
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<InfoPanel
|
<InfoPanel
|
||||||
@ -97,16 +117,16 @@ export class UpgradeChart extends React.Component<Props> {
|
|||||||
submittingMessage="Updating.."
|
submittingMessage="Updating.."
|
||||||
controls={
|
controls={
|
||||||
<div className="upgrade flex gaps align-center">
|
<div className="upgrade flex gaps align-center">
|
||||||
<span>Release</span> <Badge label={release.getName()}/>
|
<span>Release</span> <Badge label={release?.getName()}/>
|
||||||
<span>Namespace</span> <Badge label={release.getNs()}/>
|
<span>Namespace</span> <Badge label={release?.getNs()}/>
|
||||||
<span>Version</span> <Badge label={currentVersion}/>
|
<span>Version</span> <Badge label={release?.getVersion()}/>
|
||||||
<span>Upgrade version</span>
|
<span>Upgrade version</span>
|
||||||
<Select
|
<Select
|
||||||
className="chart-version"
|
className="chart-version"
|
||||||
menuPlacement="top"
|
menuPlacement="top"
|
||||||
themeName="outlined"
|
themeName="outlined"
|
||||||
value={selectedVersion ?? versions[0]}
|
value={this.selectedVersion ?? this.releaseVersion}
|
||||||
options={versions}
|
options={chartVersionOptions}
|
||||||
formatOptionLabel={this.formatVersionLabel}
|
formatOptionLabel={this.formatVersionLabel}
|
||||||
onChange={({ value }: SelectOption<IChartVersion>) => this.selectedVersion = value}
|
onChange={({ value }: SelectOption<IChartVersion>) => this.selectedVersion = value}
|
||||||
/>
|
/>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user