First commit

This commit is contained in:
2026-07-20 11:05:07 +02:00
commit b592ab669f
159 changed files with 10294 additions and 0 deletions
@@ -0,0 +1,40 @@
"""Émet un jeton d'auto-inscription à usage unique pour un nouveau noeud
(flux "kubeadm join", voir ROADMAP.md et banevents/views.py::join_node).
À lancer sur le MASTER uniquement le jeton n'a de sens que contre
l'endpoint /api/join/ de cette même instance.
Usage :
manage.py create_join_token <nom_du_noeud> [--ttl-minutes 60]
Le jeton n'est affiché QU'UNE SEULE FOIS ici, en clair seul son hash est
persisté (JoinToken.token_hash). Impossible de le retrouver après coup :
en cas de perte, en émettre un nouveau (le précédent reste valide jusqu'à
son expiration ou son utilisation, aucun conflit).
"""
from typing import Any
from django.core.management.base import BaseCommand
from banevents.enrollment import DEFAULT_TTL_MINUTES, issue_join_token, join_command
class Command(BaseCommand):
help = "Émet un jeton d'auto-inscription à usage unique pour un nouveau noeud."
def add_arguments(self, parser: Any) -> None:
parser.add_argument('node_name')
parser.add_argument('--ttl-minutes', type=int, default=DEFAULT_TTL_MINUTES)
def handle(self, *args: Any, **options: Any) -> None:
node_name = options['node_name']
ttl_minutes = options['ttl_minutes']
token, _ = issue_join_token(node_name, ttl_minutes)
self.stdout.write(self.style.SUCCESS(
f"Jeton émis pour '{node_name}' (expire dans {ttl_minutes} min, usage unique) :"
))
self.stdout.write('')
self.stdout.write(f' {join_command(node_name, token)}')
self.stdout.write('')
self.stdout.write('À lancer sur le nouveau noeud, puis "sudo make install" comme d\'habitude.')