Mentions légales du service

Skip to content

Fix #15882

IMBERT Matthieu requested to merge kavlanng-channels-ssh-pattern into master

Cf. https://intranet.grid5000.fr/bugzilla/show_bug.cgi?id=15882

Sur les Aruba le nom des channels comporter un espace si on veut les référencer en ligne de commande ssh (utilisé par KavlanNG), pas d'espace si on veut les référencer dans une requête SNMP (utilisé par la supervision). Donc impossible de les nommer d'une façon qui convienne aux deux dans la refapi.

Solution que je propose:

  • Ajouter aux channels la possibilité d'avoir une propriété ssh_pattern, à l'instar des linecards. Par contre l'entrée linecards est un tableau, on peut donc avoir une propriété ssh_pattern par linecard. Dans le cas des channels, c'est directement un hash, on ne peut donc pas ajouter de propriété ssh_pattern dans l'entrée channels, on l'appelle donc channels_ssh_pattern et elle est au même niveau que channels
  • Ajouter dans le générateur KavlanNG la faculté d'interpoler (syntaxe standard ruby #{}) le contenu des ssh_pattern et channels_ssh_pattern. Cela permet de faire des manipulations de chaînes de caractères. Par exemple: pour ajouter l'espace dans le nom du channel ("lag1" -> "lag 1"), on peut écrire: channels_ssh_pattern: '#{/\D+/.match("%CHANNEL%")} #{/\d+/.match("%CHANNEL%")}'. Cela ne peut fonctionner que si le générateur KavlanNG est le seul à utiliser les propriétés ssh_pattern et channels_ssh_pattern, et il semble que ce soit bien le cas.

Point à discuter: le code d'interpolation est dans le générateur KavlanNG. Si dans le futur d'autres outils utilisent ssh_pattern et channels_ssh_pattern il faudra dupliquer ce code d'interpolation dans ces outils. C'est pas très souhaitable (d'autant plus si l'outil n'est pas en ruby). Une solution alternative serait que le générateur refapi fasse le travail d'interpolation, et génère des ssh_name pour chaque port / chaque channel, dont la linecard / le channel aurait un ssh_pattern / channels_ssh_pattern, à l'instar de ce qui est fait pour snmp_pattern.

Merge request reports