deplacement de l'info metadata dans ca section dedier dans l'api #34

Closed
opened 2026-05-23 20:55:06 +00:00 by nicolas.boufideline · 1 comment

actuellement les metadata sont repartie a plusieurs endroit dans l'api, il faut faire un champs metadata et conditionner le lancement du serveur (et le stop) a l’existence de ce champs.

actuellement les metadata sont repartie a plusieurs endroit dans l'api, il faut faire un champs metadata et conditionner le lancement du serveur (et le stop) a l’existence de ce champs.
Author
Owner

Livré sur feature-34.

Ce qui est fait

  • Objet metadata dans VMCreateRequest : password, sshkey, user_data. password et sshkey quittent la racine — rupture d'API, l'appelant Netbox doit être adapté.
  • user_data transmis en base64, décodé dans le handler ; un encodage invalide est refusé en 400 nommant le champ, jamais un document vide en silence.
  • Stockage vm/<name>/metadata/<document>, sur le modèle de vm/<name>/disk/<dev>. La chaîne transporte une map : ajouter un type de document ne touche plus qu'un seul endroit, au lieu des six couches précédentes.
  • Rendu : un document fourni est écrit verbatim, sinon le template par défaut. Toutes les erreurs remontent (RenderConfig, MkdirAll, chaque WriteFile) — une VM ne peut plus démarrer sans métadonnées en silence.
  • passwd -d root retiré du user-data par défaut ; vendor-data devient conditionnel : pas de passwd: sans mot de passe, pas de ssh_authorized_keys: sans clé, aucun bloc users: si aucun des deux. lock_passwd passe à true quand seule une clé est fournie, pour ne pas créer un compte sudo sans mot de passe.

Hors périmètre, sur décision : le conditionnement du démarrage du serveur metadata à l'existence du champ n'est pas implémenté.

Validé de bout en bout sur lab3 : clé seule, user-data appliqué dans le guest, absence d'identifiants, base64 invalide, et ancien format.

Livré sur `feature-34`. **Ce qui est fait** - Objet `metadata` dans `VMCreateRequest` : `password`, `sshkey`, `user_data`. `password` et `sshkey` quittent la racine — **rupture d'API**, l'appelant Netbox doit être adapté. - `user_data` transmis en base64, décodé dans le handler ; un encodage invalide est refusé en 400 nommant le champ, jamais un document vide en silence. - Stockage `vm/<name>/metadata/<document>`, sur le modèle de `vm/<name>/disk/<dev>`. La chaîne transporte une map : ajouter un type de document ne touche plus qu'un seul endroit, au lieu des six couches précédentes. - Rendu : un document fourni est écrit verbatim, sinon le template par défaut. Toutes les erreurs remontent (`RenderConfig`, `MkdirAll`, chaque `WriteFile`) — une VM ne peut plus démarrer sans métadonnées en silence. - `passwd -d root` retiré du user-data par défaut ; `vendor-data` devient conditionnel : pas de `passwd:` sans mot de passe, pas de `ssh_authorized_keys:` sans clé, aucun bloc `users:` si aucun des deux. `lock_passwd` passe à `true` quand seule une clé est fournie, pour ne pas créer un compte sudo sans mot de passe. **Hors périmètre, sur décision** : le conditionnement du démarrage du serveur metadata à l'existence du champ n'est pas implémenté. Validé de bout en bout sur lab3 : clé seule, user-data appliqué dans le guest, absence d'identifiants, base64 invalide, et ancien format.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
syonad/two#34
No description provided.