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:
Sebastian Malton authored and GitHub committed 2022-11-23 03:38:37 -08:00
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: [],
});
},
@@ -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() {