Concepts
Validation
Le validateur récursif qui transforme les raccourcis YAML en forme canonique.
Chaque manifeste de pack (xbee-pack.yaml, xbee-pack-system.yaml, …) et chaque
xbee-env.yaml est validé par un parcours récursif de l’arbre
YAML (xbee/common/validator.go), qui accumule des diagnostics précis, à la ligne. Les
validateurs spécifiques à chaque concept vivent sous xbee/validators/.
La validation a un objectif double : rejeter les documents incohérents, et produire une forme canonique unique à partir des multiples raccourcis syntaxiques autorisés en entrée — le code d’exécution n’a ainsi jamais à réinterpréter ces raccourcis.
Exemple : validation des directives UDC
xbee/validators/env2/udc.go valide les sections configure, up, down et
operate.<name> (ensemble désigné UDC, pour Up/Down/Configure) d’un
xbee-env.yaml. Elle s’appuie sur xbee/common/validator.go pour le parcours et les
diagnostics, et sur xbee-common/yaml2 pour manipuler l’arbre yaml.Node :
validateUdc(v, "configure")
validateUdc(v, "up")
validateUdc(v, "down")
for k := range operateV.ChildMap() {
validateUdc(operateV, k)
}Chaque élément final (« leaf ») produit par la validation est une map avec les clés
host, index, et soit name (action implicite), soit payload (action explicite) :
host: tosiam1.tosit.org
index: 1
payload:
shell:
cmd:
- bash "cacert.sh"Lorsque plusieurs leaves doivent s’exécuter en parallèle, elles sont regroupées sous
xbee.parallel. La séquence de premier niveau reste, elle, dans son ordre — c’est
l’ordre d’exécution séquentiel.
Voir Environnements pour le détail des syntaxes d’entrée acceptées, et Répertoires & cache pour où ces fichiers vivent.
Erreurs détectées
- Référence d’hôte introuvable (ni clé, ni alias, ni
préfixe+numérovalide) - Élément de séquence qui n’est ni une chaîne, ni une map
- Map à plus d’une clé, qui n’est ni
xbeenixbee.parallel xbee.paralleldont la valeur n’est ni une chaîne, ni une séquencexbee.parallelen séquence accompagné de clés voisines (le payload partagé n’a de sens que lorsquexbee.parallelest une chaîne d’hôtes)up/down/configureréduit à une chaîne alors que l’environnement a plusieurs hôtes- Payload map contenant une clé non reconnue, ou n’en contenant aucune parmi
name/command/cmds/template