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

chore: Fixup lint of @k8slens/core after rebase

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2023-05-09 16:22:46 -04:00
parent d4cba62218
commit 1ae2a99eaf
11 changed files with 76 additions and 97 deletions

View File

@ -71,7 +71,7 @@ describe("installing helm chart from new tab", () => {
);
});
builder.beforeApplicationStart(({ mainDi }) => {
await builder.beforeApplicationStart(({ mainDi }) => {
listClusterHelmReleasesMock = asyncFn();
mainDi.override(listClusterHelmReleasesInjectable, () => listClusterHelmReleasesMock);
});
@ -403,8 +403,8 @@ describe("installing helm chart from new tab", () => {
await flushPromises();
await listClusterHelmReleasesMock.resolve({
callWasSuccessful: true,
response: [],
isOk: true,
value: [],
});
});

View File

@ -49,7 +49,7 @@ describe("New Upgrade Helm Chart Dock Tab", () => {
navigateToHelmReleases = windowDi.inject(navigateToHelmReleasesInjectable);
});
builder.beforeApplicationStart(({ mainDi }) => {
await builder.beforeApplicationStart(({ mainDi }) => {
listClusterHelmReleasesMock = asyncFn();
mainDi.override(listClusterHelmReleasesInjectable, () => listClusterHelmReleasesMock);
});
@ -88,8 +88,8 @@ describe("New Upgrade Helm Chart Dock Tab", () => {
describe("when helm releases resolves", () => {
beforeEach(async () => {
await listClusterHelmReleasesMock.resolve({
callWasSuccessful: true,
response: [
isOk: true,
value: [
{
app_version: "some-app-version",
name: "some-name",

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getRequestChannelListenerInjectable } from "@k8slens/messaging";
import { result } from "@k8slens/utilities";
import getHelmReleaseInjectable from "../../../main/helm/helm-service/get-helm-release.injectable";
import getClusterByIdInjectable from "../../cluster/storage/common/get-by-id.injectable";
import { getHelmReleaseChannel } from "../common/channels";
@ -17,16 +18,19 @@ const handleGetHelmReleaseInjectable = getRequestChannelListenerInjectable({
const cluster = getClusterById(clusterId);
if (!cluster) {
return {
callWasSuccessful: false,
error: `Cluster with id "${clusterId}" not found`,
};
return result.error(`Cluster with id "${clusterId}" not found`);
}
return getHelmRelease({
const helmResult = await getHelmRelease({
cluster,
...args,
});
if (helmResult.isOk) {
return helmResult;
}
return result.error(helmResult.error.message);
};
},
id: "handle-get-helm-release",

View File

@ -4,6 +4,7 @@
*/
import { getRequestChannelListenerInjectable } from "@k8slens/messaging";
import { result } from "@k8slens/utilities";
import listClusterHelmReleasesInjectable from "../../../main/helm/helm-service/list-helm-releases.injectable";
import getClusterByIdInjectable from "../../cluster/storage/common/get-by-id.injectable";
import { listHelmReleasesChannel } from "../common/channels";
@ -19,10 +20,7 @@ const handleListHelmReleasesInjectable = getRequestChannelListenerInjectable({
const cluster = getClusterById(clusterId);
if (!cluster) {
return {
callWasSuccessful: false,
error: `Cluster with id "${clusterId}" not found`,
};
return result.error(`Cluster with id "${clusterId}" not found`);
}
return listClusterHelmReleases(cluster, namespace);

View File

@ -77,7 +77,7 @@ describe("showing details for helm release", () => {
windowDi.override(requestHelmChartValuesInjectable, () => requestHelmChartValuesMock);
});
builder.beforeApplicationStart(({ mainDi }) => {
await builder.beforeApplicationStart(({ mainDi }) => {
listClusterHelmReleasesMock = asyncFn();
mainDi.override(listClusterHelmReleasesInjectable, () => listClusterHelmReleasesMock);
});
@ -128,12 +128,12 @@ describe("showing details for helm release", () => {
it("when releases resolve but there is none, renders", async () => {
await listClusterHelmReleasesMock.resolve({
callWasSuccessful: true,
response: [],
isOk: true,
value: [],
});
await listClusterHelmReleasesMock.resolve({
callWasSuccessful: true,
response: [],
isOk: true,
value: [],
});
expect(rendered.baseElement).toMatchSnapshot();
@ -144,8 +144,8 @@ describe("showing details for helm release", () => {
await listClusterHelmReleasesMock.resolveSpecific(
([, namespace]) => namespace === "some-namespace",
{
callWasSuccessful: true,
response: [
isOk: true,
value: [
{
app_version: "some-app-version",
name: "some-name",
@ -162,8 +162,8 @@ describe("showing details for helm release", () => {
await listClusterHelmReleasesMock.resolveSpecific(
([, namespace]) => namespace === "some-other-namespace",
{
callWasSuccessful: true,
response: [
isOk: true,
value: [
{
app_version: "some-other-app-version",
name: "some-other-name",

View File

@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { AsyncResult } from "@k8slens/utilities";
import { isObject, json } from "@k8slens/utilities";
import { result, isObject, json } from "@k8slens/utilities";
import { getInjectable } from "@ogre-tools/injectable";
import type { HelmReleaseData } from "../../../features/helm-releases/common/channels";
import execHelmInjectable from "../exec-helm/exec-helm.injectable";
@ -12,7 +12,7 @@ export type GetHelmReleaseData = (
name: string,
namespace: string,
kubeconfigPath: string,
) => AsyncResult<HelmReleaseData, string>;
) => AsyncResult<HelmReleaseData, Error>;
const getHelmReleaseDataInjectable = getInjectable({
id: "get-helm-release-data",
@ -20,7 +20,7 @@ const getHelmReleaseDataInjectable = getInjectable({
const execHelm = di.inject(execHelmInjectable);
return async (releaseName, namespace, proxyKubeconfigPath) => {
const result = await execHelm([
const helmResult = await execHelm([
"status",
releaseName,
"--namespace",
@ -31,35 +31,23 @@ const getHelmReleaseDataInjectable = getInjectable({
"json",
]);
if (!result.callWasSuccessful) {
return {
callWasSuccessful: false,
error: `Failed to execute helm: ${result.error}`,
};
if (!helmResult.isOk) {
return result.wrapError("Failed to execute 'helm status'", helmResult);
}
const parseResult = json.parse(result.response);
const parseResult = json.parse(helmResult.value);
if (!parseResult.callWasSuccessful) {
return {
callWasSuccessful: false,
error: `Failed to parse helm response: ${parseResult.error}`,
};
if (!parseResult.isOk) {
return result.wrapError("Failed to parse result from 'helm status'", parseResult);
}
const release = parseResult.response;
const release = parseResult.value;
if (!isObject(release) || Array.isArray(release)) {
return {
callWasSuccessful: false,
error: `Helm response is not an object: ${JSON.stringify(release)}`,
};
return result.error(new Error(`Result from 'helm status' is not an object: ${JSON.stringify(release)}`));
}
return {
callWasSuccessful: true,
response: release as unknown as HelmReleaseData,
};
return result.ok(release as unknown as HelmReleaseData);
};
},
});

View File

@ -6,6 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
import type { Cluster } from "../../../common/cluster/cluster";
import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable";
import type { AsyncResult } from "@k8slens/utilities";
import { result } from "@k8slens/utilities";
import getHelmReleaseResourcesInjectable from "./get-helm-release-resources/get-helm-release-resources.injectable";
import type { HelmReleaseDataWithResources } from "../../../features/helm-releases/common/channels";
import getHelmReleaseDataInjectable from "./get-helm-release-data.injectable";
@ -16,7 +17,7 @@ export interface GetHelmReleaseArgs {
namespace: string;
}
export type GetHelmRelease = (args: GetHelmReleaseArgs) => AsyncResult<HelmReleaseDataWithResources, string>;
export type GetHelmRelease = (args: GetHelmReleaseArgs) => AsyncResult<HelmReleaseDataWithResources, Error>;
const getHelmReleaseInjectable = getInjectable({
id: "get-helm-release",
@ -36,10 +37,7 @@ const getHelmReleaseInjectable = getInjectable({
);
if (!releaseResult.isOk) {
return {
isOk: false,
error: `Failed to get helm release data: ${releaseResult.error}`,
};
return result.wrapError("Failed to get helm release data", releaseResult);
}
const resourcesResult = await getHelmReleaseResources(
@ -49,19 +47,13 @@ const getHelmReleaseInjectable = getInjectable({
);
if (!resourcesResult.isOk) {
return {
isOk: false,
error: `Failed to get helm release resources: ${resourcesResult.error}`,
};
return result.wrapError("Failed to get helm release resources", resourcesResult);
}
return {
isOk: true,
value: {
...releaseResult.value,
resources: resourcesResult.value,
},
};
return result.ok({
...releaseResult.value,
resources: resourcesResult.value,
});
};
},

View File

@ -55,7 +55,7 @@ const updateHelmReleaseInjectable = getInjectable({
const releaseResult = await getHelmRelease({ cluster, releaseName, namespace });
if (!releaseResult.isOk) {
throw releaseResult.error; // keep the same interface
throw releaseResult.error.message; // keep the same interface
}
return {

View File

@ -5,10 +5,10 @@
import { getInjectable } from "@ogre-tools/injectable";
import execHelmInjectable from "./exec-helm/exec-helm.injectable";
import type { AsyncResult } from "@k8slens/utilities";
import { isObject } from "@k8slens/utilities";
import { json, result, isObject } from "@k8slens/utilities";
import type { ListedHelmRelease } from "../../features/helm-releases/common/channels";
export type ListHelmReleases = (pathToKubeconfig: string, namespace?: string) => AsyncResult<ListedHelmRelease[], string>;
export type ListHelmReleases = (pathToKubeconfig: string, namespace?: string) => AsyncResult<ListedHelmRelease[], Error>;
const listHelmReleasesInjectable = getInjectable({
id: "list-helm-releases",
@ -32,18 +32,20 @@ const listHelmReleasesInjectable = getInjectable({
args.push("--kubeconfig", pathToKubeconfig);
const result = await execHelm(args);
const helmResult = await execHelm(args);
if (!result.isOk) {
return {
isOk: false,
error: `Failed to list helm releases: ${result.error}`,
};
if (!helmResult.isOk) {
return result.wrapError("Failed to list helm releases", helmResult);
}
const rawOutput = JSON.parse(result.value);
const output = Array.isArray(rawOutput)
? rawOutput.filter(isObject)
const parseResult = json.parse(helmResult.value);
if (!parseResult.isOk) {
return result.wrapError("Failed to parse response from 'helm ls --all'", parseResult);
}
const output = Array.isArray(parseResult.value)
? parseResult.value.filter(isObject)
: [];
return {

View File

@ -4,6 +4,7 @@
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { AsyncResult } from "@k8slens/utilities";
import { result } from "@k8slens/utilities";
import requestHelmReleaseInjectable from "../../../../../features/helm-releases/renderer/requesthelm-release.injectable";
import type { GetHelmReleaseArgs, HelmReleaseDataWithResources } from "../../../../../features/helm-releases/common/channels";
import requestListHelmReleasesInjectable from "../../../../../features/helm-releases/renderer/request-list-helm-releases.injectable";
@ -15,7 +16,7 @@ export interface DetailedHelmRelease {
details: HelmReleaseDataWithResources;
}
export type RequestDetailedHelmRelease = (args: GetHelmReleaseArgs) => AsyncResult<DetailedHelmRelease>;
export type RequestDetailedHelmRelease = (args: GetHelmReleaseArgs) => AsyncResult<DetailedHelmRelease, string>;
const requestDetailedHelmReleaseInjectable = getInjectable({
id: "request-detailed-helm-release",
@ -26,34 +27,28 @@ const requestDetailedHelmReleaseInjectable = getInjectable({
return async ({ clusterId, namespace, releaseName }) => {
const listReleasesResult = await requestListHelmReleases({ clusterId, namespace });
const detailsResult = await requestHelmRelease({ clusterId, releaseName, namespace });
if (!listReleasesResult.callWasSuccessful) {
if (!listReleasesResult.isOk) {
return listReleasesResult;
}
const release = listReleasesResult.response.find(
(rel) => rel.name === releaseName && rel.namespace === namespace,
);
if (!release) {
return {
isOk: false,
error: `Release ${releaseName} didn't exist in ${namespace} namespace.`,
};
}
const detailsResult = await requestHelmRelease({ clusterId, releaseName, namespace });
if (!detailsResult.isOk) {
return detailsResult;
}
return {
isOk: true,
value: {
release: toHelmRelease(release),
details: detailsResult.value,
},
};
const release = listReleasesResult.value
.find((rel) => rel.name === releaseName && rel.namespace === namespace);
if (!release) {
return result.error(`Release ${releaseName} didn't exist in ${namespace} namespace.`);
}
return result.ok({
release: toHelmRelease(release),
details: detailsResult.value,
});
};
},
});

View File

@ -37,8 +37,8 @@ const releasesInjectable = getInjectable({
return iter.chain([releaseResults].flat().values())
.filterMap((result) => {
if (result.callWasSuccessful) {
return result.response;
if (result.isOk) {
return result.value;
}
logger.warn("Failed to list helm releases", { error: result.error });