Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Per-school LINBO hardware groups: school-qualified group ids in import-devices

Abierto
#206 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
52/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
python
Área
backend, cli

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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+raum101 and abc+raum101.cfg.
  • default-school keeps 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)

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. For default-school the 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 to start.conf.<school>+<group> (a group shared by several schools gets one copy per school), rewrite the Group = line in each copy to the qualified id (clients use it as HOSTGROUP in 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

  1. 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

Lenguaje dominante
Python
Estrellas
13
Forks
9
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de linuxmuster/linuxmuster-base7

Todos los issues de linuxmuster/linuxmuster-base7

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.