Skip to content

Commit 58ffb57

Browse files
committed
feat: sprint 91 — Helm Repositories, Deploy from Helm, Upgrade + fix logs Pending
- HelmRepository entity + HelmRepositoryService + V31 migration - HelmService: install (--create-namespace, ensureRepos), upgrade (--reuse-values) - Permission PROJECT_HELM_INSTALL/UPGRADE + V32 migration - HelmRepositoriesView: Add/Remove repos por cluster no sidebar Helm - DeployFromHelmView: wizard 3 passos como 4º modo em New Application; back como ícone puro; footer com spacer; atualiza namespace ativo após install - HelmReleasesView: SelectionAction Upgrade com dialog pré-preenchido - ObservabilityService: guard Pending em fetchPodLogs evita travamento por timeout - bump version.base 0.7.1 → 0.7.2; arquiva sprint 81 Programado em par com: Claude IA
1 parent 42e20b4 commit 58ffb57

29 files changed

Lines changed: 904 additions & 19 deletions

.scratch/sprint-81/issues/01-testcontainers-migration-test.md renamed to .scratch/archive/sprint-81/issues/01-testcontainers-migration-test.md

File renamed without changes.

.scratch/sprint-81/issues/02-workload-service-tests.md renamed to .scratch/archive/sprint-81/issues/02-workload-service-tests.md

File renamed without changes.

.scratch/sprint-81/issues/03-namespace-service-tests.md renamed to .scratch/archive/sprint-81/issues/03-namespace-service-tests.md

File renamed without changes.

.scratch/sprint-81/issues/04-user-service-tests.md renamed to .scratch/archive/sprint-81/issues/04-user-service-tests.md

File renamed without changes.

.scratch/sprint-81/issues/05-cluster-service-tests.md renamed to .scratch/archive/sprint-81/issues/05-cluster-service-tests.md

File renamed without changes.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
id: "91-01"
3+
title: "HelmRepository — entidade JPA, service e migration"
4+
status: done
5+
priority: high
6+
sprint: 91
7+
---
8+
9+
Nova entidade `HelmRepository` com campos `id`, `cluster` (ManyToOne), `name` e `url`. `HelmRepositoryRepository` com `findByCluster` e `deleteByClusterAndName`. `HelmRepositoryService` com `addRepository`, `listRepositories` e `removeRepository`.
10+
11+
`V31__create_helm_repositories.sql` cria a tabela `helm_repositories` com FK para `clusters`.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
id: "91-02"
3+
title: "Permissões Helm install/upgrade e migration"
4+
status: done
5+
priority: high
6+
sprint: 91
7+
---
8+
9+
`Permission` recebe `PROJECT_HELM_INSTALL` e `PROJECT_HELM_UPGRADE`. Adicionados a `operatorPermissions`; apenas `PROJECT_HELM_VIEW` em `viewerPermissions` (sem install/upgrade para viewer).
10+
11+
`V32__add_helm_install_upgrade_permissions.sql` concede ambas as permissões a usuários com `GLOBAL_CLUSTERS_WRITE`.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
id: "91-03"
3+
title: "HelmService — install, upgrade e gestão de repos"
4+
status: done
5+
priority: high
6+
sprint: 91
7+
---
8+
9+
`HelmService` recebe `ensureRepos(Path kubeconfig, List<HelmRepository> repos)` que executa `helm repo add` para cada repo e depois `helm repo update`.
10+
11+
`install(Cluster, namespace, repoName, chart, version, releaseName, values)` — executa `ensureRepos`, depois `helm install <release> <repo>/<chart> -n <ns> [-f values.yaml] [--version <ver>]`.
12+
13+
`upgrade(Cluster, namespace, releaseName, chart, version, values)` — executa `ensureRepos`, depois `helm upgrade <release> <chart> -n <ns> -f values.yaml [--version <ver>] --reuse-values`.
14+
15+
Values são escritos em tempfile quando não vazios; deletados em `finally`. `HelmRepositoryService` é injetado no `HelmService` para carregar os repos do cluster antes de cada operação.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
id: "91-04"
3+
title: "HelmRepositoriesView — gestão de repos no sidebar"
4+
status: done
5+
priority: high
6+
sprint: 91
7+
---
8+
9+
`HelmRepositoriesView` na rota `helm/repositories`, protegida por `PROJECT_HELM_VIEW`. Grid com colunas Name e URL. Botão "Add Repository" como extra leading button no section header. Dialog com campos Name e URL — valida que Name não contém espaços (requisito do Helm). SelectionAction "Remove" destrutivo com `ConfirmDialog` simples.
10+
11+
`MainLayout`: sub-item "Repositories" (ícone `VaadinIcon.BOOK`) adicionado abaixo de "Releases" na seção Helm. `UserManagementView`: permissões `PROJECT_HELM_INSTALL` e `PROJECT_HELM_UPGRADE` adicionadas ao grupo Helm na treeview.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
id: "91-05"
3+
title: "DeployFromHelmView — wizard 3 passos e modo selector"
4+
status: done
5+
priority: high
6+
sprint: 91
7+
---
8+
9+
`DeployFromHelmView` na rota `deploy/helm`, protegida por `PROJECT_HELM_INSTALL`. Wizard 3 passos seguindo o padrão visual das demais views de deploy (step indicator, botões Back/Next/Install, max-width 820px):
10+
11+
Step 1 — Chart: ComboBox de repositórios configurados para o cluster ativo; TextField de chart name; TextField de versão (placeholder "latest").
12+
13+
Step 2 — Config: TextField de release name (auto-sugerido a partir do chart name ao digitar, convertendo para lowercase e substituindo caracteres inválidos); TextField de namespace (pré-preenchido com namespace ativo, editável).
14+
15+
Step 3 — Values & Install: TextArea YAML para values customizados (placeholder com exemplo de YAML); botão "Install" no lugar de "Next"; após clicar, exibe inline o output do `helm install` em componente `Pre`; em sucesso navega para `HelmReleasesView`; em falha exibe erro inline.
16+
17+
`DeployApplicationView`: adiciona quarto botão "Deploy from Helm" (com `VaadinIcon.PACKAGE`) ao modo selector, navegando para `DeployFromHelmView`.

0 commit comments

Comments
 (0)