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:
parent
d4cba62218
commit
1ae2a99eaf
@ -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: [],
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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);
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
@ -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,
|
||||
});
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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/request–helm-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,
|
||||
});
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
@ -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 });
|
||||
|
||||
Loading…
Reference in New Issue
Block a user