mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Cleanup and show error message
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
dde628b027
commit
2a7788bcf9
@ -16,8 +16,7 @@ const navigateToHelmReleasesInjectable = getInjectable({
|
||||
const navigateToRoute = di.inject(navigateToRouteInjectionToken);
|
||||
const route = di.inject(helmReleasesRouteInjectable);
|
||||
|
||||
return (parameters) =>
|
||||
navigateToRoute(route, { parameters });
|
||||
return (parameters) => navigateToRoute(route, { parameters });
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@ -5388,8 +5388,7 @@ exports[`showing details for helm release given application is started when navi
|
||||
<span
|
||||
class="value"
|
||||
>
|
||||
NaNy
|
||||
ago (some-updated)
|
||||
NaNy ago (some-updated)
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
@ -6613,8 +6612,7 @@ exports[`showing details for helm release given application is started when navi
|
||||
<span
|
||||
class="value"
|
||||
>
|
||||
NaNy
|
||||
ago (some-updated)
|
||||
NaNy ago (some-updated)
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
@ -7838,8 +7836,7 @@ exports[`showing details for helm release given application is started when navi
|
||||
<span
|
||||
class="value"
|
||||
>
|
||||
NaNy
|
||||
ago (some-updated)
|
||||
NaNy ago (some-updated)
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
@ -8890,8 +8887,7 @@ exports[`showing details for helm release given application is started when navi
|
||||
<span
|
||||
class="value"
|
||||
>
|
||||
NaNy
|
||||
ago (some-updated)
|
||||
NaNy ago (some-updated)
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
@ -9942,8 +9938,7 @@ exports[`showing details for helm release given application is started when navi
|
||||
<span
|
||||
class="value"
|
||||
>
|
||||
NaNy
|
||||
ago (some-updated)
|
||||
NaNy ago (some-updated)
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
@ -11169,8 +11164,7 @@ exports[`showing details for helm release given application is started when navi
|
||||
<span
|
||||
class="value"
|
||||
>
|
||||
NaNy
|
||||
ago (some-updated)
|
||||
NaNy ago (some-updated)
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
@ -13273,7 +13267,9 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
data-testid="helm-release-detail-error"
|
||||
>
|
||||
Failed to load release
|
||||
Failed to load release:
|
||||
|
||||
some-error
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -6,12 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
|
||||
import type { AsyncResult } from "../../../../../common/utils/async-result";
|
||||
import execHelmInjectable from "../../../exec-helm/exec-helm.injectable";
|
||||
import yaml from "js-yaml";
|
||||
|
||||
export interface HelmResourceManifest {
|
||||
metadata: {
|
||||
namespace: string;
|
||||
};
|
||||
}
|
||||
import type { KubeJsonApiData } from "../../../../../common/k8s-api/kube-json-api";
|
||||
|
||||
const callForHelmManifestInjectable = getInjectable({
|
||||
id: "call-for-helm-manifest",
|
||||
@ -23,7 +18,7 @@ const callForHelmManifestInjectable = getInjectable({
|
||||
name: string,
|
||||
namespace: string,
|
||||
kubeconfigPath: string,
|
||||
): Promise<AsyncResult<HelmResourceManifest[]>> => {
|
||||
): Promise<AsyncResult<KubeJsonApiData[]>> => {
|
||||
const result = await execHelm(
|
||||
"get",
|
||||
"manifest",
|
||||
@ -42,7 +37,7 @@ const callForHelmManifestInjectable = getInjectable({
|
||||
callWasSuccessful: true,
|
||||
response: yaml
|
||||
.loadAll(result.response)
|
||||
.filter((manifest) => !!manifest) as HelmResourceManifest[],
|
||||
.filter((manifest) => !!manifest) as KubeJsonApiData[],
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@ -10,13 +10,13 @@ import execFileWithInputInjectable from "./exec-file-with-input/exec-file-with-i
|
||||
import { getErrorMessage } from "../../../../../common/utils/get-error-message";
|
||||
import { map } from "lodash/fp";
|
||||
import { pipeline } from "@ogre-tools/fp";
|
||||
import type { HelmResourceManifest } from "../call-for-helm-manifest/call-for-helm-manifest.injectable";
|
||||
import type { KubeJsonApiData } from "../../../../../common/k8s-api/kube-json-api";
|
||||
|
||||
export type CallForKubeResourcesByManifest = (
|
||||
namespace: string,
|
||||
kubeconfigPath: string,
|
||||
kubectlPath: string,
|
||||
resourceManifests: HelmResourceManifest[]
|
||||
resourceManifests: KubeJsonApiData[]
|
||||
) => Promise<JsonObject[]>;
|
||||
|
||||
const callForKubeResourcesByManifestInjectable = getInjectable({
|
||||
|
||||
@ -34,10 +34,16 @@ interface Dependencies {
|
||||
}
|
||||
|
||||
const NonInjectedReleaseDetailsContent = observer(({ model }: Dependencies & ReleaseDetailsContentProps) => {
|
||||
const failedToLoad = model.failedToLoad.get();
|
||||
const loadingError = model.loadingError.get();
|
||||
|
||||
if (failedToLoad) {
|
||||
return <div data-testid="helm-release-detail-error">Failed to load release</div>;
|
||||
if (loadingError) {
|
||||
return (
|
||||
<div data-testid="helm-release-detail-error">
|
||||
Failed to load release:
|
||||
{" "}
|
||||
{loadingError}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -58,8 +64,7 @@ const NonInjectedReleaseDetailsContent = observer(({ model }: Dependencies & Rel
|
||||
</DrawerItem>
|
||||
|
||||
<DrawerItem name="Updated">
|
||||
{model.release.getUpdated()}
|
||||
{` ago (${model.release.updated})`}
|
||||
{`${model.release.getUpdated()} ago (${model.release.updated})`}
|
||||
</DrawerItem>
|
||||
|
||||
<DrawerItem name="Namespace">{model.release.getNs()}</DrawerItem>
|
||||
|
||||
@ -21,19 +21,23 @@ interface ReleaseDetailsDrawerProps {
|
||||
|
||||
interface Dependencies {
|
||||
model: ReleaseDetailsModel;
|
||||
closeDrawer: () => void;
|
||||
navigateToHelmReleases: () => void;
|
||||
}
|
||||
|
||||
const NonInjectedReleaseDetailsDrawerToolbar = observer(
|
||||
({ model, closeDrawer }: Dependencies & ReleaseDetailsDrawerProps) =>
|
||||
model.failedToLoad.get() ? null : (
|
||||
const NonInjectedReleaseDetailsDrawerToolbar = observer(({
|
||||
model,
|
||||
navigateToHelmReleases,
|
||||
}: Dependencies & ReleaseDetailsDrawerProps) => (
|
||||
model.loadingError.get()
|
||||
? null
|
||||
: (
|
||||
<HelmReleaseMenu
|
||||
release={model.release}
|
||||
toolbar
|
||||
hideDetails={closeDrawer}
|
||||
hideDetails={navigateToHelmReleases}
|
||||
/>
|
||||
),
|
||||
);
|
||||
)
|
||||
));
|
||||
|
||||
export const ReleaseDetailsDrawerToolbar = withInjectables<
|
||||
Dependencies,
|
||||
@ -43,7 +47,7 @@ export const ReleaseDetailsDrawerToolbar = withInjectables<
|
||||
|
||||
getProps: async (di, props) => ({
|
||||
model: await di.inject(releaseDetailsModelInjectable, props.targetRelease),
|
||||
closeDrawer: di.inject(navigateToHelmReleasesInjectable),
|
||||
navigateToHelmReleases: di.inject(navigateToHelmReleasesInjectable),
|
||||
...props,
|
||||
}),
|
||||
});
|
||||
|
||||
@ -54,7 +54,7 @@ const releaseDetailsModelInjectable = getInjectable({
|
||||
showCheckedErrorNotification,
|
||||
showSuccessNotification,
|
||||
createUpgradeChartTab,
|
||||
closeDrawer: navigateToHelmReleases,
|
||||
navigateToHelmReleases,
|
||||
});
|
||||
|
||||
await model.load();
|
||||
@ -63,47 +63,46 @@ const releaseDetailsModelInjectable = getInjectable({
|
||||
},
|
||||
|
||||
lifecycle: lifecycleEnum.keyedSingleton({
|
||||
getInstanceKey: (di, release: TargetHelmRelease) =>
|
||||
`${release.namespace}/${release.name}`,
|
||||
getInstanceKey: (di, release: TargetHelmRelease) => `${release.namespace}/${release.name}`,
|
||||
}),
|
||||
});
|
||||
|
||||
export default releaseDetailsModelInjectable;
|
||||
|
||||
export interface OnlyUserSuppliedValuesAreShownToggle {
|
||||
value: IObservableValue<boolean>;
|
||||
readonly value: IObservableValue<boolean>;
|
||||
toggle: () => Promise<void>;
|
||||
}
|
||||
|
||||
export interface ConfigurationInput {
|
||||
nonSavedValue: IObservableValue<string>;
|
||||
isLoading: IObservableValue<boolean>;
|
||||
isSaving: IObservableValue<boolean>;
|
||||
readonly nonSavedValue: IObservableValue<string>;
|
||||
readonly isLoading: IObservableValue<boolean>;
|
||||
readonly isSaving: IObservableValue<boolean>;
|
||||
onChange: (value: string) => void;
|
||||
save: () => Promise<void>;
|
||||
}
|
||||
|
||||
interface Dependencies {
|
||||
readonly targetRelease: TargetHelmRelease;
|
||||
readonly activeTheme: IComputedValue<LensTheme>;
|
||||
callForHelmRelease: CallForHelmRelease;
|
||||
targetRelease: TargetHelmRelease;
|
||||
activeTheme: IComputedValue<LensTheme>;
|
||||
callForHelmReleaseConfiguration: CallForHelmReleaseConfiguration;
|
||||
getResourceDetailsUrl: GetResourceDetailsUrl;
|
||||
updateRelease: CallForHelmReleaseUpdate;
|
||||
showCheckedErrorNotification: ShowCheckedErrorNotification;
|
||||
showSuccessNotification: ShowNotification;
|
||||
createUpgradeChartTab: (release: HelmRelease) => string;
|
||||
closeDrawer: () => void;
|
||||
navigateToHelmReleases: () => void;
|
||||
}
|
||||
|
||||
export class ReleaseDetailsModel {
|
||||
id = `${this.dependencies.targetRelease.namespace}/${this.dependencies.targetRelease.name}`;
|
||||
readonly id = `${this.dependencies.targetRelease.namespace}/${this.dependencies.targetRelease.name}`;
|
||||
|
||||
constructor(private dependencies: Dependencies) {}
|
||||
constructor(private readonly dependencies: Dependencies) {}
|
||||
|
||||
private detailedRelease = observable.box<DetailedHelmRelease | undefined>();
|
||||
private readonly detailedRelease = observable.box<DetailedHelmRelease | undefined>();
|
||||
|
||||
readonly failedToLoad = observable.box(false);
|
||||
readonly loadingError = observable.box<string>();
|
||||
|
||||
readonly configuration: ConfigurationInput = {
|
||||
nonSavedValue: observable.box(""),
|
||||
@ -179,7 +178,7 @@ export class ReleaseDetailsModel {
|
||||
|
||||
if (!result.callWasSuccessful) {
|
||||
runInAction(() => {
|
||||
this.failedToLoad.set(true);
|
||||
this.loadingError.set(result.error);
|
||||
});
|
||||
|
||||
return;
|
||||
@ -257,13 +256,13 @@ export class ReleaseDetailsModel {
|
||||
}
|
||||
|
||||
close = () => {
|
||||
this.dependencies.closeDrawer();
|
||||
this.dependencies.navigateToHelmReleases();
|
||||
};
|
||||
|
||||
startUpgradeProcess = () => {
|
||||
this.dependencies.createUpgradeChartTab(this.release);
|
||||
|
||||
this.dependencies.closeDrawer();
|
||||
this.dependencies.navigateToHelmReleases();
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user