Fix #15882
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éelinecards
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éechannels
, on l'appelle doncchannels_ssh_pattern
et elle est au même niveau quechannels
- Ajouter dans le générateur KavlanNG la faculté d'interpoler (syntaxe standard ruby
#{}
) le contenu desssh_pattern
etchannels_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ésssh_pattern
etchannels_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
.