Per-school LINBO hardware groups: school-qualified group ids in import-devices
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 52/100
Direzione di ricerca
Start in src/linuxmuster_base7/cli/import_devices.py, reading doGrubCfg(), doLinboStartconf(), buildDhcpHostDeclaration(), and doPxeGroupsBySchool(), then inspect linuxmuster_base7.functions for the requested helper pair. Choose one separately scoped task, preserve default-school output byte-for-byte, and verify the qualified names, links, or migration behavior described in the issue without overwriting existing qualified files.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
This is the linuxmuster-base7 part of linuxmuster/linuxmuster-linbo7#178 (per-school hardware groups on multi-school servers). The design and cross-repo overview stay in linbo7#178. This issue tracks only the base7 work.
Background
On a multi-school server every hardware group is server-wide: two schools with a group raum101 share one start.conf.raum101, and school admins cannot safely be given control over "their" groups. As discussed in linbo7#178, the fix is a school-qualified group id that linuxmuster-import-devices generates. The LINBO client, the GRUB templates and the rsync hooks already pass the group string through unchanged, so they need no changes.
Target behaviour
- For every school other than
default-school, import-devices uses<school>+<group>in place of<group>for every LINBO artefact it derives from the group, e.g.start.conf.abc+raum101andabc+raum101.cfg. default-schoolkeeps the current flat names exactly as they are. Single-school installations see no change.
Separator + (decided in linbo7#178): neither school names nor group names can contain +, so qualified ids cannot collide and can be parsed without the school list. A name without + belongs to default-school; a name with + splits on the first + into school and group.
Affected code (src/linuxmuster_base7/cli/import_devices.py)
buildDhcpHostDeclaration():option extensions-path/option nis-domaindoLinboStartconf():start.conf.<group>, including the unconfigured default copydoGrubCfg():<group>.cfgdoPxeGroupsBySchool(): thestart.conf-<ip>andhostcfg/<host>.cfglinks and the returned group list
The group column in devices.csv stays unqualified. The qualified id is derived, never stored.
Tasks
Each task is meant to be a separate, small PR:
- Group id helper pair in
linuxmuster_base7.functions: one function for school + group → qualified id and one for qualified id → school + group, so the naming rule lives in one place.linbo_mkgrubimg.py(linbo7) and linuxmuster-tools reuse them. Fordefault-schoolthe id is the plain group. Use them at all the call sites above. - Migration of existing installations: for every non-default school, copy each
start.conf.<group>that the school uses tostart.conf.<school>+<group>(a group shared by several schools gets one copy per school), rewrite theGroup =line in each copy to the qualified id (clients use it asHOSTGROUPin offline mode), then re-run the import. It must be idempotent and must never overwrite an existing qualified file. - Changelog / release notes: document the new naming and that formerly shared groups are split per school.
Covered outside base7, see linbo7#178: the linbo_sync fallback for group-keyed Windows boot files (BCD, bsmbr, gptlabel) in existing images, and the linbo_mkgrubimg.py fixes for non-default schools.
Constraints
- Default-school behaviour must stay byte-for-byte identical (DHCP config, file names, links).
Open questions
- Where the migration runs: on package upgrade or as an explicit command. To be discussed here.
Contributing
PRs are welcome. Please keep each PR small and limited to one task above, so it can be reviewed and merged on its own. PRs that reformat existing code without a functional reason will not be accepted.
Related: linuxmuster/linuxmuster-linbo7#178, linuxmuster/linuxmuster-tools#36
- Lingua principale
- Python
- Stelle
- 13
- Fork
- 9
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
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
- 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 linuxmuster/linuxmuster-base7
-
linuxmuster-release-upgrade: fix networkd-wait-online typo, stop masking systemd-resolved wholesaleAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 25/100
linuxmuster/linuxmuster-base7#203 · 4 commenti ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 15/100
linuxmuster/linuxmuster-base7#197 ·
-
Support Ubuntu 26.04Aperta7.4
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
linuxmuster/linuxmuster-base7#172 ·
-
Replace ISC Dhcp through KeaAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
linuxmuster/linuxmuster-base7#152 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
linuxmuster/linuxmuster-base7#151 · 2 commenti ·
Tutte le issue di linuxmuster/linuxmuster-base7
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
qgis/QGIS-Plugins-Website#459 ·
-
bug severity:medium
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
bot-found bug priority: P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
madenvel/KalinkaPlayer#179 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
ls1intum/edutelligence#1098 ·
I maintainer di solito rispondono entro 1 giorno