From 1393cc303d6c04268904cac476e33b4ebe4ba5a7 Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Mon, 13 Jun 2022 11:42:53 +0300 Subject: [PATCH] Stop using HelmCli from Renderer (#4861) * Introduce way for execute file Signed-off-by: Janne Savolainen * Make typing of HelmRepo shared Signed-off-by: Janne Savolainen * Introduce way to get Helm environment values Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Introduce function to read YAML file Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Introduce competition for listing active helm repositories in preferences Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Make sense in name of injectable Signed-off-by: Janne Savolainen * Introduce helper for opening and selecting values of select Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Introduce competition for activating, deactivating public helm repositories in preferences Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Introduce competition for deactivating helm repository from list of active repositories Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Add missing global overrides Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Make some tests more deterministic by mocking tooltips Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Introduce competition for activating custom helm repository in preferences Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Update snapshots Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Remove old implementation made redundant with competition for preferences of helm repositories Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Add success notification for activating custom helm repository Signed-off-by: Janne Savolainen * Introduce way to get single active helm repository Signed-off-by: Janne Savolainen * Extract responsibilities from god-class and switch to getting helm repositories using competition instead of another god class Signed-off-by: Janne Savolainen * Remove dead code Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Add TODO Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Tweak position of spinner Signed-off-by: Janne Savolainen * Start handling errors when accessing helm repositories Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Handle error about no helm repositories when updating repositories Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Remove unwarranted function configuration Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Add missing global overrides Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Remove duplication how to acquire binary path for helm Signed-off-by: Janne Savolainen * Remove redundant comment Signed-off-by: Janne Savolainen * Consolidate naming to match Helm's internal Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen * Relocate file closer to it's relatives Signed-off-by: Janne Savolainen --- ...elm-repository-in-preferences.test.ts.snap | 6813 +++++++++++++++++ ...tory-from-list-in-preferences.test.ts.snap | 4926 ++++++++++++ ...m-repositories-in-preferences.test.ts.snap | 4184 ++++++++++ ...ive-repository-in-preferences.test.ts.snap | 1887 +++++ ...tom-helm-repository-in-preferences.test.ts | 387 + ...epository-from-list-in-preferences.test.ts | 278 + ...e-helm-repositories-in-preferences.test.ts | 458 ++ ...f-active-repository-in-preferences.test.ts | 126 + ...ion-to-kubernetes-preferences.test.ts.snap | 185 +- ...vigation-to-kubernetes-preferences.test.ts | 11 + src/common/fs/exec-file.injectable.ts | 25 + src/common/fs/read-yaml-file.injectable.ts | 25 + .../add-helm-repository-channel.injectable.ts | 23 + ...ve-helm-repositories-channel.injectable.ts | 23 + src/common/helm/helm-repo.ts | 16 + ...move-helm-repository-channel.injectable.ts | 22 + src/common/utils/async-result.ts | 7 + src/common/utils/get-error-message.ts | 15 + .../base-bundled-binaries-dir.injectable.ts | 24 +- .../vars/bundled-resources-dir.injectable.ts | 9 +- ...lized-platform-architecture.injectable.ts} | 6 +- .../vars/normalized-platform.injectable.ts | 11 +- src/main/getDiForUnitTesting.ts | 58 +- src/main/helm/__mocks__/helm-chart-manager.ts | 2 +- src/main/helm/__tests__/helm-service.test.ts | 56 +- .../helm/exec-helm/exec-helm.injectable.ts | 31 + .../get-helm-env/get-helm-env.injectable.ts | 43 + src/main/helm/helm-binary-path.injectable.ts | 25 + src/main/helm/helm-chart-manager.ts | 2 +- src/main/helm/helm-repo-manager.injectable.ts | 172 - src/main/helm/helm-repo-manager.ts | 33 - src/main/helm/helm-service.ts | 134 - .../delete-helm-release.injectable.ts | 28 + .../get-helm-chart-values.injectable.ts | 29 + .../helm-service/get-helm-chart.injectable.ts | 34 + .../get-helm-release-history.injectable.ts | 28 + .../get-helm-release-values.injectable.ts | 41 + .../get-helm-release.injectable.ts | 30 + .../install-helm-chart.injectable.ts | 30 + .../list-helm-charts.injectable.ts | 41 + .../list-helm-releases.injectable.ts | 28 + .../rollback-helm-release.injectable.ts | 32 + .../update-helm-release.injectable.ts | 45 + ...-repository-channel-listener.injectable.ts | 26 + .../add-helm-repository.injectable.ts | 62 + ...epositories-channel-listener.injectable.ts | 26 + ...get-active-helm-repositories.injectable.ts | 131 + .../get-active-helm-repository.injectable.ts | 27 + ...-repository-channel-listener.injectable.ts | 26 + .../remove-helm-repository.injectable.ts | 29 + .../create-kube-auth-proxy.injectable.ts | 4 +- .../kubectl/bundled-binary-path.injectable.ts | 4 +- src/main/kubectl/create-kubectl.injectable.ts | 4 +- .../helm/charts/get-chart-route.injectable.ts | 32 +- .../get-chart-values-route.injectable.ts | 26 +- .../charts/list-charts-route.injectable.ts | 18 +- .../delete-release-route.injectable.ts | 22 +- .../get-release-history-route.injectable.ts | 26 +- .../releases/get-release-route.injectable.ts | 26 +- .../get-release-values-route.injectable.ts | 28 +- .../install-chart-route.injectable.ts | 24 +- .../list-releases-route.injectable.ts | 18 +- .../rollback-release-route.injectable.ts | 20 +- .../update-release-route.injectable.ts | 32 +- src/renderer/bootstrap.tsx | 3 - .../+preferences/add-helm-repo-dialog.tsx | 220 - .../components/+preferences/helm-charts.tsx | 202 - .../components/+preferences/kubernetes.tsx | 3 +- .../active-helm-repositories.injectable.ts | 43 + .../add-helm-repo-dialog.scss | 0 ...-custom-helm-repository-dialog-content.tsx | 152 + ...dding-of-custom-helm-repository-dialog.tsx | 47 + ...-of-custom-helm-repository-open-button.tsx | 32 + .../custom-helm-repo.injectable.ts | 25 + ...repository-dialog-is-visible.injectable.ts | 13 + ...dding-custom-helm-repository.injectable.ts | 21 + ...dding-custom-helm-repository.injectable.ts | 21 + .../get-file-paths.injectable.ts | 23 + .../helm-file-input/helm-file-input.tsx | 74 + ...-helm-repo-options-are-shown.injectable.ts | 13 + ...ubmit-custom-helm-repository.injectable.ts | 25 + .../adding-of-public-helm-repository.tsx | 80 + ...for-public-helm-repositories.injectable.ts | 29 + .../public-helm-repositories.injectable.ts | 21 + .../add-helm-repository.injectable.ts | 42 + .../select-helm-repository.injectable.ts | 33 + .../helm-charts}/helm-charts.module.scss | 0 .../kubernetes/helm-charts/helm-charts.tsx | 61 + ...elm-repositories-error-state.injectable.ts | 19 + .../helm-charts/helm-repositories.tsx | 68 + .../remove-helm-repository.injectable.ts | 27 + .../+preferences/removable-item.tsx | 4 +- .../input/validators/is-path.injectable.ts | 32 + .../show-error-notification.injectable.ts | 26 + .../show-success-notification.injectable.ts | 26 + src/renderer/components/select/select.tsx | 4 +- .../test-utils/get-application-builder.tsx | 34 +- src/renderer/components/wizard/wizard.tsx | 6 +- src/renderer/getDiForUnitTesting.tsx | 25 +- 99 files changed, 21409 insertions(+), 1039 deletions(-) create mode 100644 src/behaviours/helm-charts/__snapshots__/add-custom-helm-repository-in-preferences.test.ts.snap create mode 100644 src/behaviours/helm-charts/__snapshots__/add-helm-repository-from-list-in-preferences.test.ts.snap create mode 100644 src/behaviours/helm-charts/__snapshots__/listing-active-helm-repositories-in-preferences.test.ts.snap create mode 100644 src/behaviours/helm-charts/__snapshots__/remove-helm-repository-from-list-of-active-repository-in-preferences.test.ts.snap create mode 100644 src/behaviours/helm-charts/add-custom-helm-repository-in-preferences.test.ts create mode 100644 src/behaviours/helm-charts/add-helm-repository-from-list-in-preferences.test.ts create mode 100644 src/behaviours/helm-charts/listing-active-helm-repositories-in-preferences.test.ts create mode 100644 src/behaviours/helm-charts/remove-helm-repository-from-list-of-active-repository-in-preferences.test.ts create mode 100644 src/common/fs/exec-file.injectable.ts create mode 100644 src/common/fs/read-yaml-file.injectable.ts create mode 100644 src/common/helm/add-helm-repository-channel.injectable.ts create mode 100644 src/common/helm/get-active-helm-repositories-channel.injectable.ts create mode 100644 src/common/helm/helm-repo.ts create mode 100644 src/common/helm/remove-helm-repository-channel.injectable.ts create mode 100644 src/common/utils/async-result.ts create mode 100644 src/common/utils/get-error-message.ts rename src/common/vars/{bundled-binaries-normalized-arch.injectable.ts => normalized-platform-architecture.injectable.ts} (77%) create mode 100644 src/main/helm/exec-helm/exec-helm.injectable.ts create mode 100644 src/main/helm/get-helm-env/get-helm-env.injectable.ts create mode 100644 src/main/helm/helm-binary-path.injectable.ts delete mode 100644 src/main/helm/helm-repo-manager.injectable.ts delete mode 100644 src/main/helm/helm-repo-manager.ts delete mode 100644 src/main/helm/helm-service.ts create mode 100644 src/main/helm/helm-service/delete-helm-release.injectable.ts create mode 100644 src/main/helm/helm-service/get-helm-chart-values.injectable.ts create mode 100644 src/main/helm/helm-service/get-helm-chart.injectable.ts create mode 100644 src/main/helm/helm-service/get-helm-release-history.injectable.ts create mode 100644 src/main/helm/helm-service/get-helm-release-values.injectable.ts create mode 100644 src/main/helm/helm-service/get-helm-release.injectable.ts create mode 100644 src/main/helm/helm-service/install-helm-chart.injectable.ts create mode 100644 src/main/helm/helm-service/list-helm-charts.injectable.ts create mode 100644 src/main/helm/helm-service/list-helm-releases.injectable.ts create mode 100644 src/main/helm/helm-service/rollback-helm-release.injectable.ts create mode 100644 src/main/helm/helm-service/update-helm-release.injectable.ts create mode 100644 src/main/helm/repositories/add-helm-repository/add-helm-repository-channel-listener.injectable.ts create mode 100644 src/main/helm/repositories/add-helm-repository/add-helm-repository.injectable.ts create mode 100644 src/main/helm/repositories/get-active-helm-repositories/get-active-helm-repositories-channel-listener.injectable.ts create mode 100644 src/main/helm/repositories/get-active-helm-repositories/get-active-helm-repositories.injectable.ts create mode 100644 src/main/helm/repositories/get-active-helm-repository.injectable.ts create mode 100644 src/main/helm/repositories/remove-helm-repository/remove-helm-repository-channel-listener.injectable.ts create mode 100644 src/main/helm/repositories/remove-helm-repository/remove-helm-repository.injectable.ts delete mode 100644 src/renderer/components/+preferences/add-helm-repo-dialog.tsx delete mode 100644 src/renderer/components/+preferences/helm-charts.tsx create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/active-helm-repositories.injectable.ts rename src/renderer/components/+preferences/{ => kubernetes/helm-charts/adding-of-custom-helm-repository}/add-helm-repo-dialog.scss (100%) create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-custom-helm-repository/adding-of-custom-helm-repository-dialog-content.tsx create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-custom-helm-repository/adding-of-custom-helm-repository-dialog.tsx create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-custom-helm-repository/adding-of-custom-helm-repository-open-button.tsx create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-custom-helm-repository/custom-helm-repo.injectable.ts create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-custom-helm-repository/dialog-visibility/adding-of-custom-helm-repository-dialog-is-visible.injectable.ts create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-custom-helm-repository/dialog-visibility/hide-dialog-for-adding-custom-helm-repository.injectable.ts create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-custom-helm-repository/dialog-visibility/show-dialog-for-adding-custom-helm-repository.injectable.ts create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-custom-helm-repository/helm-file-input/get-file-paths.injectable.ts create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-custom-helm-repository/helm-file-input/helm-file-input.tsx create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-custom-helm-repository/maximal-custom-helm-repo-options-are-shown.injectable.ts create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-custom-helm-repository/submit-custom-helm-repository.injectable.ts create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-public-helm-repository/adding-of-public-helm-repository.tsx create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-public-helm-repository/public-helm-repositories/call-for-public-helm-repositories.injectable.ts create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-public-helm-repository/public-helm-repositories/public-helm-repositories.injectable.ts create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-public-helm-repository/select-helm-repository/add-helm-repository.injectable.ts create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/adding-of-public-helm-repository/select-helm-repository/select-helm-repository.injectable.ts rename src/renderer/components/+preferences/{ => kubernetes/helm-charts}/helm-charts.module.scss (100%) create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/helm-charts.tsx create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/helm-repositories-error-state.injectable.ts create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/helm-repositories.tsx create mode 100644 src/renderer/components/+preferences/kubernetes/helm-charts/remove-helm-repository.injectable.ts create mode 100644 src/renderer/components/input/validators/is-path.injectable.ts create mode 100644 src/renderer/components/notifications/show-error-notification.injectable.ts create mode 100644 src/renderer/components/notifications/show-success-notification.injectable.ts diff --git a/src/behaviours/helm-charts/__snapshots__/add-custom-helm-repository-in-preferences.test.ts.snap b/src/behaviours/helm-charts/__snapshots__/add-custom-helm-repository-in-preferences.test.ts.snap new file mode 100644 index 0000000000..35db1088d9 --- /dev/null +++ b/src/behaviours/helm-charts/__snapshots__/add-custom-helm-repository-in-preferences.test.ts.snap @@ -0,0 +1,6813 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`add custom helm repository in preferences when navigating to preferences containing helm repositories renders 1`] = ` + +
+
+ +
+
+
+
+

+ Kubernetes +

+
+
+ Kubectl binary download + +
+ +
+
+
+ Download mirror + +
+
+ + +
+
+
+ Download mirror for kubectl +
+
+ +
+
+
+ + +
+
+
+
+
+
+ Directory for binaries + +
+
+ +
+
+
+ The directory to download binaries into. +
+
+
+
+ Path to kubectl binary + +
+
+ +
+
+
+
+
+
+

+ Kubeconfig Syncs +

+
+ +
+
+ Synced Items + +
+
+
+ No files and folders have been synced yet +
+
+
+
+
+

+ Helm Charts +

+
+
+
+
+ + +
+
+
+ Repositories +
+
+ +
+
+
+ + + +
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + close + + +
+ +
+
+
+
+
+
+
+ +`; + +exports[`add custom helm repository in preferences when navigating to preferences containing helm repositories when active repositories resolve renders 1`] = ` + +
+
+ +
+
+
+
+

+ Kubernetes +

+
+
+ Kubectl binary download + +
+ +
+
+
+ Download mirror + +
+
+ + +
+
+
+ Download mirror for kubectl +
+
+ +
+
+
+ + +
+
+
+
+
+
+ Directory for binaries + +
+
+ +
+
+
+ The directory to download binaries into. +
+
+
+
+ Path to kubectl binary + +
+
+ +
+
+
+
+
+
+

+ Kubeconfig Syncs +

+
+ +
+
+ Synced Items + +
+
+
+ No files and folders have been synced yet +
+
+
+
+
+

+ Helm Charts +

+
+
+
+
+ + +
+
+
+ Repositories +
+
+ +
+
+
+ + +
+
+
+ +
+
+
+
+ Some active repository +
+
+ some-url +
+ + + delete + + +
+
+
+
+
+
+
+
+
+
+
+
+ + + close + + +
+ +
+
+
+
+
+
+
+ +`; + +exports[`add custom helm repository in preferences when navigating to preferences containing helm repositories when active repositories resolve when selecting to add custom repository renders 1`] = ` + +
+
+ +
+
+
+
+

+ Kubernetes +

+
+
+ Kubectl binary download + +
+ +
+
+
+ Download mirror + +
+
+ + +
+
+
+ Download mirror for kubectl +
+
+ +
+
+
+ + +
+
+
+
+
+
+ Directory for binaries + +
+
+ +
+
+
+ The directory to download binaries into. +
+
+
+
+ Path to kubectl binary + +
+
+ +
+
+
+
+
+
+

+ Kubeconfig Syncs +

+
+ +
+
+ Synced Items + +
+
+
+ No files and folders have been synced yet +
+
+
+
+
+

+ Helm Charts +

+
+
+
+
+ + +
+
+
+ Repositories +
+
+ +
+
+
+ + +
+
+
+ +
+
+
+
+ Some active repository +
+
+ some-url +
+ + + delete + + +
+
+
+
+
+
+
+
+
+
+
+
+ + + close + + +
+ +
+
+
+
+
+
+
+