mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix crash when upgrading release (#6626)
* Fix crash when upgrading release Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix crash when upgrading helm releases - Fixes not being able to upgrade helm releases as well. Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix tests Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix test failures Signed-off-by: Sebastian Malton <sebastian@malton.name> Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
1 parent
1354fa66a5
commit
573cd83bfb
16 files changed
+146
-68
No files matched your search
@@ -14,10 +14,7 @@ const helmChartVersionsInjectable = getInjectable({
|
||||
|
||||
instantiate: (di, release) => {
|
||||
const helmCharts = di.inject(helmChartsInjectable);
|
||||
|
||||
const requestVersionsOfHelmChart = di.inject(
|
||||
requestVersionsOfHelmChartInjectable,
|
||||
);
|
||||
const requestVersionsOfHelmChart = di.inject(requestVersionsOfHelmChartInjectable);
|
||||
|
||||
return asyncComputed({
|
||||
getValueFromObservedPromise: async () => {
|
||||
@@ -25,8 +22,6 @@ const helmChartVersionsInjectable = getInjectable({
|
||||
|
||||
return requestVersionsOfHelmChart(release, helmCharts.value.get());
|
||||
},
|
||||
|
||||
valueWhenPending: [],
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
+1
-1
@@ -128,7 +128,7 @@ export class ReleaseDetailsModel {
|
||||
this.configuration.isSaving.set(false);
|
||||
});
|
||||
|
||||
if (!result.updateWasSuccessful) {
|
||||
if (!result.callWasSuccessful) {
|
||||
this.dependencies.showCheckedErrorNotification(
|
||||
result.error,
|
||||
"Unknown error occured while updating release",
|
||||
|
||||
@@ -12,14 +12,14 @@ const updateReleaseInjectable = getInjectable({
|
||||
|
||||
instantiate: (di): RequestHelmReleaseUpdate => {
|
||||
const releases = di.inject(releasesInjectable);
|
||||
const callForHelmReleaseUpdate = di.inject(requestHelmReleaseUpdateInjectable);
|
||||
const requestHelmReleaseUpdate = di.inject(requestHelmReleaseUpdateInjectable);
|
||||
|
||||
return async (
|
||||
name,
|
||||
namespace,
|
||||
payload,
|
||||
) => {
|
||||
const result = await callForHelmReleaseUpdate(name, namespace, payload);
|
||||
const result = await requestHelmReleaseUpdate(name, namespace, payload);
|
||||
|
||||
releases.invalidate();
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import releasesInjectable from "../../+helm-releases/releases.injectable";
|
||||
import updateReleaseInjectable from "../../+helm-releases/update-release/update-release.injectable";
|
||||
import type { HelmRelease } from "../../../../common/k8s-api/endpoints/helm-releases.api";
|
||||
import requestHelmReleaseConfigurationInjectable from "../../../../common/k8s-api/endpoints/helm-releases.api/request-configuration.injectable";
|
||||
import type { AsyncResult } from "../../../../common/utils/async-result";
|
||||
import { waitUntilDefined } from "../../../utils";
|
||||
import type { SelectOption } from "../../select";
|
||||
import type { DockTab } from "../dock/store";
|
||||
@@ -31,11 +32,7 @@ export interface UpgradeChartModel {
|
||||
readonly value: IComputedValue<HelmChartVersion | undefined>;
|
||||
set: (value: SingleValue<SelectOption<HelmChartVersion>>) => void;
|
||||
};
|
||||
submit: () => Promise<UpgradeChartSubmitResult>;
|
||||
}
|
||||
|
||||
export interface UpgradeChartSubmitResult {
|
||||
completedSuccessfully: boolean;
|
||||
submit: () => Promise<AsyncResult<void, string>>;
|
||||
}
|
||||
|
||||
const upgradeChartModelInjectable = getInjectable({
|
||||
@@ -105,13 +102,23 @@ const upgradeChartModelInjectable = getInjectable({
|
||||
submit: async () => {
|
||||
const selectedVersion = version.value.get();
|
||||
|
||||
if (!selectedVersion || configrationEditError.get()) {
|
||||
if (!selectedVersion) {
|
||||
return {
|
||||
completedSuccessfully: false,
|
||||
callWasSuccessful: false,
|
||||
error: "No selected version",
|
||||
};
|
||||
}
|
||||
|
||||
await updateRelease(
|
||||
const editError = configrationEditError.get();
|
||||
|
||||
if (editError) {
|
||||
return {
|
||||
callWasSuccessful: false,
|
||||
error: editError,
|
||||
};
|
||||
}
|
||||
|
||||
const result = await updateRelease(
|
||||
release.getName(),
|
||||
release.getNs(),
|
||||
{
|
||||
@@ -120,10 +127,16 @@ const upgradeChartModelInjectable = getInjectable({
|
||||
...selectedVersion,
|
||||
},
|
||||
);
|
||||
storedConfiguration.invalidate();
|
||||
|
||||
if (result.callWasSuccessful === true) {
|
||||
storedConfiguration.invalidate();
|
||||
|
||||
return { callWasSuccessful: true };
|
||||
}
|
||||
|
||||
return {
|
||||
completedSuccessfully: true,
|
||||
callWasSuccessful: false,
|
||||
error: String(result.error),
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -33,20 +33,20 @@ interface Dependencies {
|
||||
export class NonInjectedUpgradeChart extends React.Component<UpgradeChartProps & Dependencies> {
|
||||
upgrade = async () => {
|
||||
const { model } = this.props;
|
||||
const { completedSuccessfully } = await model.submit();
|
||||
const result = await model.submit();
|
||||
|
||||
if (completedSuccessfully) {
|
||||
if (result.callWasSuccessful) {
|
||||
return (
|
||||
<p>
|
||||
{"Release "}
|
||||
<b>{model.release.getName()}</b>
|
||||
{" successfully upgraded to version "}
|
||||
<b>{model.version.value.get()}</b>
|
||||
<b>{model.version.value.get()?.version}</b>
|
||||
</p>
|
||||
);
|
||||
}
|
||||
|
||||
return null;
|
||||
throw result.error;
|
||||
};
|
||||
|
||||
render() {
|
||||
|
||||
Reference in new issue
Block a user