Hostname: Standardpräfix tuxflotte statt des vom Boot-Medium gemeldeten Namens
Ohne eigene Hostnamenkonvention übernahm der Server den vom Client gemeldeten Namen. Der Client ist das Live-System des Boot-Mediums, also hieß jedes Gerät "debian" (auch das erste Kundengerät). Jetzt vergibt der Server immer selbst, ohne eigenen Präfix als tuxflotte-<Nummer>. Bekannte Geräte mit unpassendem Namen bekommen ihn bei der nächsten Neuinstallation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ea00480df1
commit
381e0e55c1
1 file changed
+17
-11
@@ -44,6 +44,11 @@ AGENT_REPORTABLE_EVENT_TYPES = {"applied", "apply_failed", "removed", "remove_fa
|
||||
# Name der pro Organisation automatisch angelegten Standard-OE (siehe
|
||||
# Konfigurationsgruppen-Plan) - Landeplatz fuer neu aktivierte Geraete.
|
||||
STANDARD_OE_NAME = "Neue Geräte"
|
||||
# Hostnamen vergibt immer der Server. Organisationen ohne eigenen Präfix
|
||||
# bekommen diesen (13.10.2026) - vorher galt dann der vom Client gemeldete
|
||||
# Name, und der Client ist das Live-System des Boot-Mediums: jedes Gerät
|
||||
# hieß "debian" (auch das erste Kundengerät).
|
||||
STANDARD_HOSTNAME_PRAEFIX = "tuxflotte"
|
||||
|
||||
# Phase 4 des Self-Service-ISO-Plans (siehe tuxflotte-installer/scripts/
|
||||
# build_customer_iso.sh). TUXFLOTTE_INSTALLER_DIR ist ein separat auf anode
|
||||
@@ -1634,9 +1639,9 @@ def set_hostname_konvention(organization_id: str, praefix: str | None, stellen:
|
||||
def generate_hostname_for_organization(cur, organization_id: str) -> str | None:
|
||||
"""
|
||||
Erzeugt einen Hostnamen nach der Organisations-Konvention (Design-Runde
|
||||
10.09.2026, siehe ADR-0028/Roadmap) - None, wenn keine Konvention
|
||||
konfiguriert ist (hostname_praefix leer), dann bleibt der vom Client
|
||||
gemeldete Hostname wie bisher maßgeblich (siehe resolve_hostname_for_activation()).
|
||||
10.09.2026, siehe ADR-0028/Roadmap). Ohne eigenen Präfix der
|
||||
Organisation gilt STANDARD_HOSTNAME_PRAEFIX. None nur, wenn es die
|
||||
Organisation nicht gibt.
|
||||
|
||||
"sequenziell": liest+erhöht hostname_naechste_sequenz innerhalb
|
||||
derselben Transaktion wie der Aufrufer (SELECT ... FOR UPDATE sperrt
|
||||
@@ -1660,10 +1665,11 @@ def generate_hostname_for_organization(cur, organization_id: str) -> str | None:
|
||||
)
|
||||
row = cur.fetchone()
|
||||
|
||||
if row is None or not row[0]:
|
||||
if row is None:
|
||||
return None
|
||||
|
||||
praefix, stellen, modus, naechste_sequenz = row
|
||||
praefix = praefix or STANDARD_HOSTNAME_PRAEFIX
|
||||
obergrenze = 10 ** stellen
|
||||
|
||||
if modus == "zufaellig":
|
||||
@@ -1698,8 +1704,9 @@ def resolve_hostname_for_activation(organization_id: str, device_fingerprint: st
|
||||
"""
|
||||
Ermittelt den für die Aktivierung zu verwendenden Hostnamen.
|
||||
|
||||
Neues Gerät: Organisations-Hostnamenkonvention, falls konfiguriert,
|
||||
sonst der vom Client gemeldete Name.
|
||||
Neues Gerät: nach der Hostnamenkonvention der Organisation (ohne
|
||||
eigenen Präfix: STANDARD_HOSTNAME_PRAEFIX). Der vom Client gemeldete
|
||||
Name ist nur noch Rückfall, wenn die Vergabe nichts liefert.
|
||||
|
||||
Bekanntes Gerät (Neuinstallation): Kunden-ISO-Test 02.10.2026 - bisher
|
||||
galt hier immer der vom Client gemeldete Name. Der Client ist aber das
|
||||
@@ -1707,8 +1714,9 @@ def resolve_hostname_for_activation(organization_id: str, device_fingerprint: st
|
||||
nicht den des installierten Geräts - jede Neuinstallation benannte das
|
||||
Gerät deshalb in "debian" um und die Konvention griff nie. Jetzt:
|
||||
passt der gespeicherte Name zur Konvention, bleibt er; sonst wird nach
|
||||
der Konvention neu vergeben. Ohne Konvention bleibt der gespeicherte
|
||||
Name (auch ein manuell vergebener).
|
||||
der Konvention neu vergeben. Seit 13.10.2026 auch ohne eigenen Präfix
|
||||
(Standardpräfix): ein Gerät, das noch "debian" heißt, bekommt bei der
|
||||
nächsten Neuinstallation seinen Namen.
|
||||
"""
|
||||
|
||||
with get_database_connection() as conn:
|
||||
@@ -1729,9 +1737,7 @@ def resolve_hostname_for_activation(organization_id: str, device_fingerprint: st
|
||||
return generiert or reported_hostname
|
||||
|
||||
gespeichert, praefix, stellen = bestehend
|
||||
|
||||
if not praefix:
|
||||
return gespeichert or reported_hostname
|
||||
praefix = praefix or STANDARD_HOSTNAME_PRAEFIX
|
||||
|
||||
if gespeichert and re.fullmatch(rf"{re.escape(praefix)}-\d{{{stellen}}}", gespeichert):
|
||||
return gespeichert
|
||||
|
||||
Reference in new issue
Block a user