BSD: find_devs_with_freebsd/netbsd use lstrip('LABEL=') which mangles labels starting with L, A, B or E
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 82/100
Direzione di ricerca
Inizia in cloudinit/util.py, nelle funzioni find_devs_with_freebsd() e find_devs_with_netbsd(), soprattutto nella gestione di LABEL= e TYPE= citata nell’issue. Leggi i test relativi alla ricerca dei dispositivi ed eseguili per verificare entrambe le funzioni. Il lavoro è completato quando le etichette che iniziano con L, A, B o E vengono mantenute e i test continuano a coprire il comportamento di ricerca esistente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug report
On FreeBSD and NetBSD, util.find_devs_with_freebsd() / find_devs_with_netbsd() use str.lstrip() to remove the LABEL= / TYPE= prefix:
- https://github.com/canonical/cloud-init/blob/b452c2097/cloudinit/util.py#L1393
- https://github.com/canonical/cloud-init/blob/b452c2097/cloudinit/util.py#L1415-L1417
label = criteria.lstrip("LABEL=")
_type = criteria.lstrip("TYPE=")
lstrip() removes any leading characters in the set {L, A, B, E, =}, not the prefix. Any label that starts with one of those characters is mangled:
| criteria | expected label | actual label |
|---|---|---|
LABEL=BACKUP |
BACKUP |
CKUP |
LABEL=ALBERT |
ALBERT |
RT |
LABEL=EFI |
EFI |
FI |
So the device lookup silently fails for such labels (e.g. a user-defined config/seed disk label, or cc_mounts/cc_disk_setup using LABEL=).
Steps to reproduce the problem
from unittest import mock
from cloudinit import util
with mock.patch("os.path.exists", return_value=True):
print(util.find_devs_with_freebsd("LABEL=BACKUP"))
# ['/dev/msdosfs/CKUP', '/dev/iso9660/CKUP']
Environment details
- Cloud-init version: main @ b452c2097 (26.2)
- Operating System Distribution: FreeBSD, NetBSD
- Cloud provider, platform or installer type: any
cloud-init logs
N/A – reproduced at unit level (above).
Possible fix
Use criteria[len("LABEL="):] (or str.removeprefix()) for both LABEL= and TYPE=.
Contributor note: I'm happy to raise a PR with the fix and unit tests once a maintainer confirms this is a bug.
- Lingua principale
- Python
- Stelle
- 3.9k
- Fork
- 1.2k
- Merge medio
- 2g 26m
- PR unite (30g)
- 16
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di canonical/cloud-init
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
canonical/cloud-init#7232 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
canonical/cloud-init#7230 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
canonical/cloud-init#7229 ·
I maintainer di solito rispondono entro 1 giorno
-
DataSourceCloudStack: get_vr_address() does not catch NoDHCPLeaseError, so the default-gateway fallback is never reachedForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug new
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
canonical/cloud-init#7124 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Should be wrapped in try...except in case of JSONDecodeErrorForse già presa @p-ramcharan-dev l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
canonical/cloud-init#7069 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di canonical/cloud-init
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
comp/desktop P3 type/feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
NousResearch/hermes-agent#154285 ·
I maintainer di solito rispondono entro 1 giorno
-
docs: qualify copied and custom kubectl debug policy notesForse già presa @nym01 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
kubescape/cel-admission-library#166 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
SACGF/variantgrid#2804 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG] HTTP lifecycle dispatch treats a NO_PROXY-only environment as corporate egress and skips the resolve-and-pinned sessionForse già presa @bodapatisaikrishna l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno