1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Catch and display errors for release details (#3905)

This commit is contained in:
Sebastian Malton 2021-10-12 08:28:32 -04:00 committed by GitHub
parent 329f4706c0
commit 5a25c44de6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 32 deletions

View File

@ -43,8 +43,8 @@ export async function listReleases(pathToKubeconfig: string, namespace?: string)
});
return output;
} catch ({ stderr }) {
throw stderr;
} catch (error) {
throw error?.stderr || error;
}
}
@ -72,8 +72,8 @@ export async function installChart(chart: string, values: any, name: string | un
namespace
}
};
} catch ({ stderr }) {
throw stderr;
} catch (error) {
throw error?.stderr || error;
} finally {
await fse.unlink(fileName);
}
@ -93,8 +93,8 @@ export async function upgradeRelease(name: string, chart: string, values: any, n
log: stdout,
release: getRelease(name, namespace, cluster)
};
} catch ({ stderr }) {
throw stderr;
} catch (error) {
throw error?.stderr || error;
} finally {
await fse.unlink(fileName);
}
@ -111,8 +111,8 @@ export async function getRelease(name: string, namespace: string, cluster: Clust
release.resources = await getResources(name, namespace, cluster);
return release;
} catch ({ stderr }) {
throw stderr;
} catch (error) {
throw error?.stderr || error;
}
}
@ -122,8 +122,8 @@ export async function deleteRelease(name: string, namespace: string, pathToKubec
const { stdout } = await promiseExec(`"${helm}" delete ${name} --namespace ${namespace} --kubeconfig ${pathToKubeconfig}`);
return stdout;
} catch ({ stderr }) {
throw stderr;
} catch (error) {
throw error?.stderr || error;
}
}
@ -139,8 +139,8 @@ export async function getValues(name: string, { namespace, all = false, pathToKu
const { stdout } = await promiseExec(`"${helm}" get values ${name} ${all ? "--all" : ""} --output yaml --namespace ${namespace} --kubeconfig ${pathToKubeconfig}`);
return stdout;
} catch ({ stderr }) {
throw stderr;
} catch (error) {
throw error?.stderr || error;
}
}
@ -150,8 +150,8 @@ export async function getHistory(name: string, namespace: string, pathToKubeconf
const { stdout } = await promiseExec(`"${helm}" history ${name} --output json --namespace ${namespace} --kubeconfig ${pathToKubeconfig}`);
return JSON.parse(stdout);
} catch ({ stderr }) {
throw stderr;
} catch (error) {
throw error?.stderr || error;
}
}
@ -161,8 +161,8 @@ export async function rollback(name: string, namespace: string, revision: number
const { stdout } = await promiseExec(`"${helm}" rollback ${name} ${revision} --namespace ${namespace} --kubeconfig ${pathToKubeconfig}`);
return stdout;
} catch ({ stderr }) {
throw stderr;
} catch (error) {
throw error?.stderr || error;
}
}

View File

@ -41,7 +41,7 @@ export class HelmApiRoute {
respondJson(response, chart);
} catch (error) {
respondText(response, error, 422);
respondText(response, error?.toString() || "Error getting chart", 422);
}
}
@ -53,7 +53,7 @@ export class HelmApiRoute {
respondJson(response, values);
} catch (error) {
respondText(response, error, 422);
respondText(response, error?.toString() || "Error getting chart values", 422);
}
}
@ -66,7 +66,7 @@ export class HelmApiRoute {
respondJson(response, result, 201);
} catch (error) {
logger.debug(error);
respondText(response, error, 422);
respondText(response, error?.toString() || "Error installing chart", 422);
}
}
@ -79,7 +79,7 @@ export class HelmApiRoute {
respondJson(response, result);
} catch (error) {
logger.debug(error);
respondText(response, error, 422);
respondText(response, error?.toString() || "Error updating chart", 422);
}
}
@ -92,7 +92,7 @@ export class HelmApiRoute {
respondJson(response, result);
} catch (error) {
logger.debug(error);
respondText(response, error, 422);
respondText(response, error?.toString() || "Error rolling back chart", 422);
}
}
@ -105,7 +105,7 @@ export class HelmApiRoute {
respondJson(response, result);
} catch(error) {
logger.debug(error);
respondText(response, error, 422);
respondText(response, error?.toString() || "Error listing release", 422);
}
}
@ -118,7 +118,7 @@ export class HelmApiRoute {
respondJson(response, result);
} catch (error) {
logger.debug(error);
respondText(response, error, 422);
respondText(response, error?.toString() || "Error getting release", 422);
}
}
@ -132,7 +132,7 @@ export class HelmApiRoute {
respondText(response, result);
} catch (error) {
logger.debug(error);
respondText(response, error, 422);
respondText(response, error?.toString() || "Error getting release values", 422);
}
}
@ -145,7 +145,7 @@ export class HelmApiRoute {
respondJson(response, result);
} catch (error) {
logger.debug(error);
respondText(response, error, 422);
respondText(response, error?.toString() || "Error getting release history", 422);
}
}
@ -158,7 +158,7 @@ export class HelmApiRoute {
respondJson(response, result);
} catch (error) {
logger.debug(error);
respondText(response, error, 422);
respondText(response, error?.toString() || "Error deleting release", 422);
}
}
}

View File

@ -26,6 +26,11 @@
align-items: center;
}
.loading-error {
color: red;
text-align: center;
}
.status {
@include release-status-bgs;
}

View File

@ -56,12 +56,13 @@ interface Props {
@observer
export class ReleaseDetails extends Component<Props> {
@observable details: IReleaseDetails;
@observable details: IReleaseDetails | null = null;
@observable values = "";
@observable valuesLoading = false;
@observable showOnlyUserSuppliedValues = true;
@observable saving = false;
@observable releaseSecret: Secret;
@observable error?: string = undefined;
componentDidMount() {
disposeOnUnmount(this, [
@ -97,8 +98,12 @@ export class ReleaseDetails extends Component<Props> {
async loadDetails() {
const { release } = this.props;
this.details = null;
this.details = await getRelease(release.getName(), release.getNs());
try {
this.details = null;
this.details = await getRelease(release.getName(), release.getNs());
} catch (error) {
this.error = `Failed to get release details: ${error}`;
}
}
async loadValues() {
@ -237,11 +242,18 @@ export class ReleaseDetails extends Component<Props> {
renderContent() {
const { release } = this.props;
const { details } = this;
if (!release) return null;
if (!details) {
if (this.error) {
return (
<div className="loading-error">
{this.error}
</div>
);
}
if (!this.details) {
return <Spinner center/>;
}