mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Handle error about no helm repositories when updating repositories
Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com> Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
parent
88fd267988
commit
484aadb920
File diff suppressed because it is too large
Load Diff
@ -218,7 +218,7 @@ describe("listing active helm repositories in preferences", () => {
|
|||||||
expect(readYamlFileMock).not.toHaveBeenCalled();
|
expect(readYamlFileMock).not.toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("when updating repositories reject", () => {
|
describe("when updating repositories reject with any other error", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await execFileMock.reject("Some error");
|
await execFileMock.reject("Some error");
|
||||||
});
|
});
|
||||||
@ -246,6 +246,134 @@ describe("listing active helm repositories in preferences", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("when updating repositories reject with error about no existing repositories", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
execFileMock.mockClear();
|
||||||
|
|
||||||
|
await execFileMock.reject(
|
||||||
|
"Error: no repositories found. You must add one before updating",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("renders", () => {
|
||||||
|
expect(rendered.baseElement).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("still shows the loader for repositories", () => {
|
||||||
|
expect(
|
||||||
|
rendered.queryByTestId("helm-repositories-are-loading"),
|
||||||
|
).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('adds "bitnami" as default repository', () => {
|
||||||
|
expect(execFileMock).toHaveBeenCalledWith(
|
||||||
|
"some-helm-binary-path",
|
||||||
|
["repo", "add", "bitnami", "https://charts.bitnami.com/bitnami"],
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when adding default repository reject", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
await execFileMock.reject("Some error");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("shows error notification", () => {
|
||||||
|
expect(showErrorNotificationMock).toHaveBeenCalledWith(
|
||||||
|
"Error when adding default Helm repository: Some error",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("removes all helm controls", () => {
|
||||||
|
expect(
|
||||||
|
rendered.queryByTestId("helm-controls"),
|
||||||
|
).not.toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does not show loader for repositories anymore", () => {
|
||||||
|
expect(
|
||||||
|
rendered.queryByTestId("helm-repositories-are-loading"),
|
||||||
|
).not.toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("renders", () => {
|
||||||
|
expect(rendered.baseElement).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when adding of default repository resolves", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
readYamlFileMock.mockClear();
|
||||||
|
|
||||||
|
await execFileMock.resolveSpecific(
|
||||||
|
[
|
||||||
|
"some-helm-binary-path",
|
||||||
|
|
||||||
|
[
|
||||||
|
"repo",
|
||||||
|
"add",
|
||||||
|
"bitnami",
|
||||||
|
"https://charts.bitnami.com/bitnami",
|
||||||
|
],
|
||||||
|
],
|
||||||
|
|
||||||
|
"",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("renders", () => {
|
||||||
|
expect(rendered.baseElement).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("still shows the loader for repositories", () => {
|
||||||
|
expect(
|
||||||
|
rendered.queryByTestId("helm-repositories-are-loading"),
|
||||||
|
).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("calls for repositories again", () => {
|
||||||
|
expect(readYamlFileMock).toHaveBeenCalledWith(
|
||||||
|
"some-helm-repository-config-file.yaml",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when another call for repositories resolve", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
await readYamlFileMock.resolveSpecific(
|
||||||
|
["some-helm-repository-config-file.yaml"],
|
||||||
|
|
||||||
|
{
|
||||||
|
repositories: [
|
||||||
|
{
|
||||||
|
name: "bitnami",
|
||||||
|
url: "https://charts.bitnami.com/bitnami",
|
||||||
|
caFile: "irrelevant",
|
||||||
|
certFile: "irrelevant",
|
||||||
|
insecure_skip_tls_verify: false,
|
||||||
|
keyFile: "irrelevant",
|
||||||
|
pass_credentials_all: false,
|
||||||
|
password: "irrelevant",
|
||||||
|
username: "irrelevant",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does not show loader for repositories anymore", () => {
|
||||||
|
expect(
|
||||||
|
rendered.queryByTestId("helm-repositories-are-loading"),
|
||||||
|
).not.toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("shows the added repository", () => {
|
||||||
|
const actual = rendered.getByTestId("helm-repository-bitnami");
|
||||||
|
|
||||||
|
expect(actual).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe("when updating repositories resolve", () => {
|
describe("when updating repositories resolve", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
execFileMock.mockClear();
|
execFileMock.mockClear();
|
||||||
@ -262,7 +390,7 @@ describe("listing active helm repositories in preferences", () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("when loading repositories resolves with existing repositories", () => {
|
describe("when repositories resolves", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
execFileMock.mockClear();
|
execFileMock.mockClear();
|
||||||
|
|
||||||
@ -297,135 +425,6 @@ describe("listing active helm repositories in preferences", () => {
|
|||||||
expect(actual).toHaveLength(2);
|
expect(actual).toHaveLength(2);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("when loading repositories resolves with no existing repositories", () => {
|
|
||||||
beforeEach(async () => {
|
|
||||||
execFileMock.mockClear();
|
|
||||||
|
|
||||||
await readYamlFileMock.resolveSpecific(
|
|
||||||
["some-helm-repository-config-file.yaml"],
|
|
||||||
{ repositories: [] },
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("renders", () => {
|
|
||||||
expect(rendered.baseElement).toMatchSnapshot();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("still shows the loader for repositories", () => {
|
|
||||||
expect(
|
|
||||||
rendered.queryByTestId("helm-repositories-are-loading"),
|
|
||||||
).toBeInTheDocument();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('adds "bitnami" as default repository', () => {
|
|
||||||
expect(execFileMock).toHaveBeenCalledWith(
|
|
||||||
"some-helm-binary-path",
|
|
||||||
["repo", "add", "bitnami", "https://charts.bitnami.com/bitnami"],
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("when adding default repository reject", () => {
|
|
||||||
beforeEach(async () => {
|
|
||||||
await execFileMock.reject("Some error");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("shows error notification", () => {
|
|
||||||
expect(showErrorNotificationMock).toHaveBeenCalledWith(
|
|
||||||
"Error when adding default Helm repository: Some error",
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("removes all helm controls", () => {
|
|
||||||
expect(
|
|
||||||
rendered.queryByTestId("helm-controls"),
|
|
||||||
).not.toBeInTheDocument();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("does not show loader for repositories anymore", () => {
|
|
||||||
expect(
|
|
||||||
rendered.queryByTestId("helm-repositories-are-loading"),
|
|
||||||
).not.toBeInTheDocument();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("renders", () => {
|
|
||||||
expect(rendered.baseElement).toMatchSnapshot();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("when adding of default repository resolves", () => {
|
|
||||||
beforeEach(async () => {
|
|
||||||
readYamlFileMock.mockClear();
|
|
||||||
|
|
||||||
await execFileMock.resolveSpecific(
|
|
||||||
[
|
|
||||||
"some-helm-binary-path",
|
|
||||||
|
|
||||||
[
|
|
||||||
"repo",
|
|
||||||
"add",
|
|
||||||
"bitnami",
|
|
||||||
"https://charts.bitnami.com/bitnami",
|
|
||||||
],
|
|
||||||
],
|
|
||||||
|
|
||||||
"",
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("renders", () => {
|
|
||||||
expect(rendered.baseElement).toMatchSnapshot();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("still shows the loader for repositories", () => {
|
|
||||||
expect(
|
|
||||||
rendered.queryByTestId("helm-repositories-are-loading"),
|
|
||||||
).toBeInTheDocument();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("calls for repositories again", () => {
|
|
||||||
expect(readYamlFileMock).toHaveBeenCalledWith(
|
|
||||||
"some-helm-repository-config-file.yaml",
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("when another call for repositories resolve", () => {
|
|
||||||
beforeEach(async () => {
|
|
||||||
await readYamlFileMock.resolveSpecific(
|
|
||||||
["some-helm-repository-config-file.yaml"],
|
|
||||||
|
|
||||||
{
|
|
||||||
repositories: [
|
|
||||||
{
|
|
||||||
name: "bitnami",
|
|
||||||
url: "https://charts.bitnami.com/bitnami",
|
|
||||||
caFile: "irrelevant",
|
|
||||||
certFile: "irrelevant",
|
|
||||||
insecure_skip_tls_verify: false,
|
|
||||||
keyFile: "irrelevant",
|
|
||||||
pass_credentials_all: false,
|
|
||||||
password: "irrelevant",
|
|
||||||
username: "irrelevant",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("does not show loader for repositories anymore", () => {
|
|
||||||
expect(
|
|
||||||
rendered.queryByTestId("helm-repositories-are-loading"),
|
|
||||||
).not.toBeInTheDocument();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("shows the added repository", () => {
|
|
||||||
const actual = rendered.getByTestId("helm-repository-bitnami");
|
|
||||||
|
|
||||||
expect(actual).toBeInTheDocument();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import type { ReadYamlFile } from "../../../../common/fs/read-yaml-file.injectab
|
|||||||
import readYamlFileInjectable from "../../../../common/fs/read-yaml-file.injectable";
|
import readYamlFileInjectable from "../../../../common/fs/read-yaml-file.injectable";
|
||||||
import getHelmEnvInjectable from "../../get-helm-env/get-helm-env.injectable";
|
import getHelmEnvInjectable from "../../get-helm-env/get-helm-env.injectable";
|
||||||
import execHelmInjectable from "../../exec-helm/exec-helm.injectable";
|
import execHelmInjectable from "../../exec-helm/exec-helm.injectable";
|
||||||
import { isEmpty } from "lodash/fp";
|
|
||||||
import loggerInjectable from "../../../../common/logger.injectable";
|
import loggerInjectable from "../../../../common/logger.injectable";
|
||||||
import type { AsyncResult } from "../../../../common/utils/async-result";
|
import type { AsyncResult } from "../../../../common/utils/async-result";
|
||||||
|
|
||||||
@ -84,15 +83,13 @@ const getActiveHelmRepositoriesInjectable = getInjectable({
|
|||||||
const updateResult = await execHelm("repo", "update");
|
const updateResult = await execHelm("repo", "update");
|
||||||
|
|
||||||
if (!updateResult.callWasSuccessful) {
|
if (!updateResult.callWasSuccessful) {
|
||||||
return {
|
if (!updateResult.error.includes(internalHelmErrorForNoRepositoriesFound)) {
|
||||||
callWasSuccessful: false,
|
return {
|
||||||
error: `Error updating Helm repositories: ${updateResult.error}`,
|
callWasSuccessful: false,
|
||||||
};
|
error: `Error updating Helm repositories: ${updateResult.error}`,
|
||||||
}
|
};
|
||||||
|
}
|
||||||
|
|
||||||
const repositories = await getRepositories();
|
|
||||||
|
|
||||||
if (isEmpty(repositories)) {
|
|
||||||
const resultOfAddingDefaultRepository = await execHelm("repo", "add", "bitnami", "https://charts.bitnami.com/bitnami");
|
const resultOfAddingDefaultRepository = await execHelm("repo", "add", "bitnami", "https://charts.bitnami.com/bitnami");
|
||||||
|
|
||||||
if (!resultOfAddingDefaultRepository.callWasSuccessful) {
|
if (!resultOfAddingDefaultRepository.callWasSuccessful) {
|
||||||
@ -101,11 +98,9 @@ const getActiveHelmRepositoriesInjectable = getInjectable({
|
|||||||
error: `Error when adding default Helm repository: ${resultOfAddingDefaultRepository.error}`,
|
error: `Error when adding default Helm repository: ${resultOfAddingDefaultRepository.error}`,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return { callWasSuccessful: true, response: await getRepositories() };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return { callWasSuccessful: true, response: repositories };
|
return { callWasSuccessful: true, response: await getRepositories() };
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@ -132,3 +127,5 @@ const getRepositoriesForFor =
|
|||||||
cacheFilePath: `${helmRepositoryCacheDirPath}/${repository.name}-index.yaml`,
|
cacheFilePath: `${helmRepositoryCacheDirPath}/${repository.name}-index.yaml`,
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const internalHelmErrorForNoRepositoriesFound = "no repositories found. You must add one before updating";
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user