Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Définir différents niveaux de sortie dans des RPC YANG personnalisés pour les équipements Junos

Définition de différents niveaux de sortie dans des RPC YANG personnalisés

Vous pouvez définir des RPC personnalisés pour les équipements Junos à l’aide de YANG. La sortie RPC peut être personnalisée pour émettre différentes données et mettre en forme cli en fonction de l’entrée RPC. Vous pouvez ainsi créer différents styles ou niveaux de sortie pour le même RPC.

Vous pouvez demander le style souhaité en incluant la valeur appropriée pour l’argument d’entrée lorsque vous appelez le RPC. Le script d’action doit traiter cet argument et émettre la sortie XML pour le style demandé. Junos OS traduit ensuite le XML en la sortie CLI correspondante définie pour ce style dans le module YANG. Le modèle RPC présenté dans cette rubrique crée deux styles : brief et detail.

Pour créer différents styles pour la sortie d’un RPC :

  1. Dans le module YANG qui inclut le RPC, importez le module d’extensions ODL Junos OS, qui définit les extensions YANG que vous utilisez pour spécifier précisément comment rendre la sortie lorsque vous exécutez la commande RPC dans la CLI ou lorsque vous demandez la sortie RPC au format texte.
    Note:

    À partir de la version 17.4R1 de Junos OS, les modules YANG de Junos OS utilisent une nouvelle convention de nommage pour le nom, le nom et l’espace de noms du module.

  2. Dans les paramètres d’entrée du RPC, définissez une leaf instruction avec le type enumerationet incluez des enum instructions qui définissent des noms pour chaque style.
    Note:

    À partir de la version 17.3 de Junos OS, l’instruction action-execute est une sous-déclaration à command. Dans les versions précédentes, les action-execute déclarations et command sont placées au même niveau, et l’instruction command est facultative.

  3. Dans l’instruction RPC output , créez des instructions distinctes junos-odl:style qui définissent la mise en forme cli pour chaque style. L’identifiant de chaque style instruction doit correspondre à l’un des noms de style définis dans l’instruction énumérée leaf .
    Note:

    À partir de la version 17.3 de Junos OS, la mise en forme cli d’un RPC personnalisé est définie dans l’instruction junos-odl:format d’extension et junos-odl:format est une sous-état à junos-odl:style. Dans les versions précédentes, la mise en forme cli est définie à l’aide d’un conteneur qui inclut l’instruction junos-odl:cli-format , et l’instruction junos-odl:style est incluse dans ce conteneur.

  4. Dans le script d’action RPC, traitez l’argument d’entrée et émettez la sortie XML du style demandé dans un élément parent dont le nom de balise est identique au nom du style.
    Note:

    À partir de Junos OS version 21.2R1 et Junos OS Evolved version 21.2R1, lorsque l’équipement transmet des arguments de ligne de commande à un script d’action Python, il préfixe un seul trait d’union (-) vers des noms d’arguments à caractère unique et préfixe deux traits d’union (--) à des noms d’arguments multi-caractères.

    Voir l’exemple : Définition de différents niveaux de sortie pour obtenir des exemples de scripts complets qui fonctionnent dans les différentes versions.

Le code suivant décrit la structure générale du RPC et du module d’enfermement. Lorsque vous appelez le RPC dans la CLI et que vous incluez l’argument level d’entrée et spécifiez l’un brief ou detail, Junos OS rend la sortie définie pour ce style.

Pour exécuter le RPC dans la CLI, exécutez la commande définie par l’instruction junos:command et spécifiez le style en incluant l’argument de ligne de commande approprié, qui dans cet exemple est level. Le script d’action correspondant traite l’argument d’entrée et émet la sortie pour le style demandé.

Exemple : définition de différents niveaux de production

Cet exemple présente un script d’action et de RPC YANG personnalisés qui déterminent si un hôte est accessible et impriment différents niveaux de sortie en fonction de l’entrée de l’utilisateur.

Exigences

Cet exemple utilise les composants matériels et logiciels suivants :

  • Équipement exécutant Junos OS version 17.3R1 ou ultérieure qui prend en charge le chargement de modèles de données YANG personnalisés.

Présentation du RPC et du script d’action

Le module YANG dans cet exemple définit un RPC personnalisé pour ping sur l’hôte spécifié et renvoyer le résultat en utilisant différents niveaux de sortie en fonction de l’entrée de l’utilisateur. Le module rpc-style-test YANG est enregistré dans le fichier rpc-style-test.yang . Le module importe les modules d’extension Junos OS, qui fournissent les extensions nécessaires pour exécuter des RPC personnalisés sur l’équipement et personnaliser la sortie CLI.

Le module définit le get-host-status RPC. La <get-host-status> balise de demande est utilisée pour exécuter à distance le RPC sur l’équipement. Dans la définition RPC, l’instruction junos:command définit la commande utilisée pour exécuter le RPC dans l’interface CLI, qui est ici show host-status.

Les junos:action-execute instructions et junos:script définissent le script d’action qui est appelé lorsque vous exécutez le RPC. Cet exemple utilise un script d’action Python nommé rpc-style-test.py pour récupérer les informations requises par le RPC. Le script renvoie les éléments de sortie XML pour chaque niveau de sortie défini dans l’instruction RPC output .

Note:

À partir de la version 17.3 de Junos OS, l’instruction action-execute est une sous-déclaration à command. Dans les versions précédentes, les action-execute déclarations et command sont placées au même niveau, et l’instruction command est facultative.

Le RPC a deux paramètres d’entrée, hostip et level. Le hostip paramètre est l’hôte pour vérifier l’accessibilité. Le level paramètre sélectionne le style de sortie du RPC. Lorsque vous exécutez le RPC, vous incluez l’adresse IP de l’hôte cible et un niveau, brief ou detail. Le script d’action définit la valeur par défaut pour level , de sorte que 'brief'si vous omettez cet argument, le RPC imprime la sortie correspondant au style bref.

Le RPC définit également les nœuds de sortie qui doivent être émis par le script d’action correspondant. Le nœud racine est l’élément <host-status-information> , qui renferme l’élément <brief> ou l’élément <detail> , en fonction de l’entrée de l’utilisateur, ainsi que les nœuds de sortie enfants spécifiés pour chaque niveau de sortie. Les deux niveaux de sortie comprennent les <hostip> éléments et <status> les éléments enfants, mais l’élément <detail> inclut également l’élément <date> enfant. Les junos-odl:format instructions définissent la mise en forme de la sortie affichée dans la CLI. Ce nœud n’est pas émis dans l’arbre XML de sortie.

Le script d’action ping l’hôte pour déterminer s’il est accessible et définit le statut en fonction des résultats. Le script construit et imprime ensuite le XML pour la sortie RPC en fonction de l’argument spécifié level . L’arbre XML doit correspondre exactement à la hiérarchie définie dans le RPC.

Le module contenant le RPC et le fichier de script d’action sont ajoutés à l’équipement dans le cadre d’un nouveau package YANG nommé rpc-style-test.

Module YANG et script d’action

YANG Module

Le module YANG, rpc-style-test.yang, définit le RPC, la commande utilisée pour exécuter le RPC dans la CLI et le nom du script d’action à invoquer lors de l’exécution du RPC. Le nom de base du fichier doit correspondre au nom du module.

Script d’action

Le script d’action correspondant est rpc-style-test.py. Le script d’action imprime différents niveaux de sortie en fonction de la valeur de l’argument level fourni par l’utilisateur. Le script définit une valeur par défaut de 'brief' pour l’argument level , de sorte que si l’utilisateur omet l’argument, le script renvoie le bref style de sortie. Cet exemple fournit deux versions du script d’action, qui gèrent correctement les arguments de ligne de commande du script pour les différentes versions.

Script d’action (Junos OS version 21.2R1 et versions ultérieures)
Script d’action (Junos OS version 21.1 et versions antérieures)

Configuration

Permettre l’exécution des scripts Python

Pour permettre à l’équipement d’exécuter des scripts Python non signés :

  1. Configurez l’instruction language python ou language python3 , en fonction de la version Junos OS.

    Note:

    À partir de Junos OS version 20.2R1 et Junos OS Evolved version 22.3R1, l’équipement utilise Python 3 pour exécuter des actions YANG et des scripts de traduction. Dans les versions précédentes, Junos OS utilise uniquement Python 2.7 pour exécuter ces scripts, et Junos OS Evolved utilise Python 2.7 par défaut pour exécuter les scripts.

  2. Validez la configuration.

Charger le RPC sur l’équipement

Pour ajouter le RPC et le script d’action au schéma Junos sur l’équipement :

  1. Téléchargez le module YANG et le script d’action sur l’équipement Junos.

  2. Assurez-vous que le script d’action Python répond aux exigences suivantes :

  3. (Facultatif) Validez la syntaxe du module YANG et du script d’action.

  4. Ajoutez le module YANG et le script d’action à un nouveau package YANG.

  5. Lorsque le système vous invite à redémarrer l’interface cli Junos OS, appuyez sur Enter pour accepter la valeur par défaut de yes, ou tapez yes et appuyez sur Enter.

Vérifier le RPC

But

Vérifiez que le RPC fonctionne comme prévu.

Action

À partir du mode opérationnel, exécutez le RPC dans la CLI en émettant la commande définie par l’instruction junos:command dans la définition RPC. Incluez l’argument hostip d’entrée et incluez l’argument level pour chaque niveau de sortie différent.

Vous pouvez afficher le XML correspondant en ajoutant | display xml à la commande.

De même, pour les résultats détaillés :

Sens

Lorsque vous exécutez le RPC, l’équipement appelle le script d’action. Le script d’action imprime la hiérarchie XML pour le niveau de sortie défini dans l’instruction RPC output . Lorsque le RPC est exécuté dans l’interface cli, l’équipement utilise la mise en forme CLI définie dans le RPC pour convertir la sortie XML en sortie CLI affichée.

Tableau de l’historique des versions
Libération
Description
21.2R1 et 21.2R1-EVO
À partir de Junos OS version 21.2R1 et Junos OS Evolved version 21.2R1, lorsque l’équipement transmet des arguments de ligne de commande à un script d’action Python, il préfixe un seul trait d’union (-) vers des noms d’arguments à caractère unique et préfixe deux traits d’union (--) à des noms d’arguments multi-caractères.