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:
parent
329f4706c0
commit
5a25c44de6
@ -43,8 +43,8 @@ export async function listReleases(pathToKubeconfig: string, namespace?: string)
|
|||||||
});
|
});
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
} catch ({ stderr }) {
|
} catch (error) {
|
||||||
throw stderr;
|
throw error?.stderr || error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,8 +72,8 @@ export async function installChart(chart: string, values: any, name: string | un
|
|||||||
namespace
|
namespace
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} catch ({ stderr }) {
|
} catch (error) {
|
||||||
throw stderr;
|
throw error?.stderr || error;
|
||||||
} finally {
|
} finally {
|
||||||
await fse.unlink(fileName);
|
await fse.unlink(fileName);
|
||||||
}
|
}
|
||||||
@ -93,8 +93,8 @@ export async function upgradeRelease(name: string, chart: string, values: any, n
|
|||||||
log: stdout,
|
log: stdout,
|
||||||
release: getRelease(name, namespace, cluster)
|
release: getRelease(name, namespace, cluster)
|
||||||
};
|
};
|
||||||
} catch ({ stderr }) {
|
} catch (error) {
|
||||||
throw stderr;
|
throw error?.stderr || error;
|
||||||
} finally {
|
} finally {
|
||||||
await fse.unlink(fileName);
|
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);
|
release.resources = await getResources(name, namespace, cluster);
|
||||||
|
|
||||||
return release;
|
return release;
|
||||||
} catch ({ stderr }) {
|
} catch (error) {
|
||||||
throw stderr;
|
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}`);
|
const { stdout } = await promiseExec(`"${helm}" delete ${name} --namespace ${namespace} --kubeconfig ${pathToKubeconfig}`);
|
||||||
|
|
||||||
return stdout;
|
return stdout;
|
||||||
} catch ({ stderr }) {
|
} catch (error) {
|
||||||
throw stderr;
|
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}`);
|
const { stdout } = await promiseExec(`"${helm}" get values ${name} ${all ? "--all" : ""} --output yaml --namespace ${namespace} --kubeconfig ${pathToKubeconfig}`);
|
||||||
|
|
||||||
return stdout;
|
return stdout;
|
||||||
} catch ({ stderr }) {
|
} catch (error) {
|
||||||
throw stderr;
|
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}`);
|
const { stdout } = await promiseExec(`"${helm}" history ${name} --output json --namespace ${namespace} --kubeconfig ${pathToKubeconfig}`);
|
||||||
|
|
||||||
return JSON.parse(stdout);
|
return JSON.parse(stdout);
|
||||||
} catch ({ stderr }) {
|
} catch (error) {
|
||||||
throw stderr;
|
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}`);
|
const { stdout } = await promiseExec(`"${helm}" rollback ${name} ${revision} --namespace ${namespace} --kubeconfig ${pathToKubeconfig}`);
|
||||||
|
|
||||||
return stdout;
|
return stdout;
|
||||||
} catch ({ stderr }) {
|
} catch (error) {
|
||||||
throw stderr;
|
throw error?.stderr || error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -41,7 +41,7 @@ export class HelmApiRoute {
|
|||||||
|
|
||||||
respondJson(response, chart);
|
respondJson(response, chart);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
respondText(response, error, 422);
|
respondText(response, error?.toString() || "Error getting chart", 422);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ export class HelmApiRoute {
|
|||||||
|
|
||||||
respondJson(response, values);
|
respondJson(response, values);
|
||||||
} catch (error) {
|
} 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);
|
respondJson(response, result, 201);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.debug(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);
|
respondJson(response, result);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.debug(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);
|
respondJson(response, result);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.debug(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);
|
respondJson(response, result);
|
||||||
} catch(error) {
|
} catch(error) {
|
||||||
logger.debug(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);
|
respondJson(response, result);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.debug(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);
|
respondText(response, result);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.debug(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);
|
respondJson(response, result);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.debug(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);
|
respondJson(response, result);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.debug(error);
|
logger.debug(error);
|
||||||
respondText(response, error, 422);
|
respondText(response, error?.toString() || "Error deleting release", 422);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,11 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.loading-error {
|
||||||
|
color: red;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
.status {
|
.status {
|
||||||
@include release-status-bgs;
|
@include release-status-bgs;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -56,12 +56,13 @@ interface Props {
|
|||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class ReleaseDetails extends Component<Props> {
|
export class ReleaseDetails extends Component<Props> {
|
||||||
@observable details: IReleaseDetails;
|
@observable details: IReleaseDetails | null = null;
|
||||||
@observable values = "";
|
@observable values = "";
|
||||||
@observable valuesLoading = false;
|
@observable valuesLoading = false;
|
||||||
@observable showOnlyUserSuppliedValues = true;
|
@observable showOnlyUserSuppliedValues = true;
|
||||||
@observable saving = false;
|
@observable saving = false;
|
||||||
@observable releaseSecret: Secret;
|
@observable releaseSecret: Secret;
|
||||||
|
@observable error?: string = undefined;
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
disposeOnUnmount(this, [
|
disposeOnUnmount(this, [
|
||||||
@ -96,9 +97,13 @@ export class ReleaseDetails extends Component<Props> {
|
|||||||
|
|
||||||
async loadDetails() {
|
async loadDetails() {
|
||||||
const { release } = this.props;
|
const { release } = this.props;
|
||||||
|
|
||||||
this.details = null;
|
try {
|
||||||
this.details = await getRelease(release.getName(), release.getNs());
|
this.details = null;
|
||||||
|
this.details = await getRelease(release.getName(), release.getNs());
|
||||||
|
} catch (error) {
|
||||||
|
this.error = `Failed to get release details: ${error}`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async loadValues() {
|
async loadValues() {
|
||||||
@ -237,11 +242,18 @@ export class ReleaseDetails extends Component<Props> {
|
|||||||
|
|
||||||
renderContent() {
|
renderContent() {
|
||||||
const { release } = this.props;
|
const { release } = this.props;
|
||||||
const { details } = this;
|
|
||||||
|
|
||||||
if (!release) return null;
|
if (!release) return null;
|
||||||
|
|
||||||
if (!details) {
|
if (this.error) {
|
||||||
|
return (
|
||||||
|
<div className="loading-error">
|
||||||
|
{this.error}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.details) {
|
||||||
return <Spinner center/>;
|
return <Spinner center/>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user