Version parsing not supporting semver pre-release tag for suspend/resume system

Aperta
#669 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
74/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
helm, java
Ambito
api, backend

Direzione di ricerca

Inizia da MyLabController.suspendOrResume(), dove viene analizzato il campo chart di helm list, e ispeziona HelmInstallService.installChart() per la convalida SemVer. Traccia come vengono ottenuti il nome e la versione del chart, quindi verifica che suspend e resume passino la versione pre-release completa, ad esempio 0.1.0-abc1234, al comando di upgrade di Helm.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Scope
https://github.com/InseeFrLab/onyxia-api

Describe the bug
Suspend/Resume on a user service fails with IllegalArgumentException: Invalid release version ... must be a SemVer 2 string when the Helm chart version contains a hyphen (e.g. a SemVer pre-release tag).

To Reproduce

  1. Install a service whose chart version contains a hyphen, e.g. 0.1.0-abc1234.
  2. Call POST /my-lab/app/suspend or /my-lab/app/resume with the service ID.
  3. API returns 500 with Invalid release version abc1234, must be a SemVer 2 string.

Root cause
MyLabController.suspendOrResume() extracts the chart version by splitting the chart field from helm list on lastIndexOf('-'):

String chart = userService.getChart();       // "chartname-1.2.3-prerelease"
int split = chart.lastIndexOf('-');
String chartName = chart.substring(0, split);   // "chartname-1.2.3" ← wrong
String version = chart.substring(split + 1);    // "prerelease" ← wrong

If the version itself contains a hyphen (valid SemVer 2.0 pre-release), the split grabs only the part after the last hyphen, which lacks MAJOR.MINOR.PATCH and fails the strict SemVer regex in HelmInstallService.installChart().

Expected behavior
The full SemVer version (pre-release tag included) should be passed to the Helm upgrade command. A workaround on the client side is to never use hyphens in chart versions, but the API should handle this correctly.

Suggested fix
Replace lastIndexOf('-') with a more robust parsing approach. The chart name is known from the catalog metadata or the Onyxia secret — it shouldn't need to be re-extracted from the helm list chart field. Alternatively, use indexOf('-') and validate against known chart names.

Environment

  • onyxia-api v4.11.0
  • Charts with versions using SemVer pre-release tags (e.g. MAJOR.MINOR.PATCH-prerelease)

This comment was generated by pi-agent.

Lingua principale
Java
Stelle
34
Fork
34
Merge medio
9m
PR unite (30g)
4

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di InseeFrLab/onyxia-api

Tutte le issue di InseeFrLab/onyxia-api

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.