Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Définir des vues pour les tables opérationnelles Junos PyEZ qui analysent les résultats structurés

Les tables opérationnelles (op) Junos PyEZ pour la sortie structurée sélectionnent des données spécifiques à partir de la sortie XML d’un RPC exécuté sur un équipement Junos. Une table est associée à une vue, qui permet d’accéder aux champs des éléments de table et de les mapper aux variables Python définies par l’utilisateur. Vous associez une table à une vue particulière en incluant la view propriété dans la définition de table, qui prend le nom de la vue comme argument.

A View mappe vos variables définies par l’utilisateur aux éléments XML des éléments de la table sélectionnés. Une vue vous permet d’accéder à des champs spécifiques dans la sortie en tant que variables avec des propriétés pouvant être manipulées en Python. Junos PyEZ gère l’extraction des données dans Python ainsi que toute conversion de type ou normalisation des données. Les clés définies dans la vue doivent être des noms de variables Python valides.

Les vues Junos PyEZ, comme les tables, sont mises en forme à l’aide de YAML. Les vues qui analysent les résultats structurés peuvent inclure un certain nombre de paramètres, qui sont résumés dans le tableau 1.

Tableau 1 : Paramètres des vues des tables d’exploitation Junos PyEZ pour les sorties structurées

Voir le nom du paramètre

Afficher le paramètre

Description

Voir le nom

Identifiant défini par l’utilisateur pour la vue.

Éléments de terrain

fields

Réseau associatif, ou dictionnaire, de paires clé-valeur qui mappent les noms de champs définis par l’utilisateur à des expressions XPath qui sélectionnent des éléments dans les éléments de la table. Les noms de champs doivent être des noms de variables Python valides.

Groupes de terrain

fields_group

Réseau associatif, ou dictionnaire, de paires clé-valeur qui mappent les noms de champs définis par l’utilisateur à des expressions XPath qui sélectionnent des éléments dans les éléments de la table. Les expressions XPath sont relatives au contexte défini par le paramètre de groupes correspondant. Les noms de champs doivent être des noms de variables Python valides.

Groupes

groups

Tableau associatif, ou dictionnaire, de paires clé-valeur qui mappent un nom de groupe défini par l’utilisateur à une expression XPath (relative au contexte d’élément de table) qui définit le contexte XPath pour les champs de ce groupe.

Prenons la table et la vue op Junos PyEZ suivantes, qui sont incluses avec la distribution Junos PyEZ. La table extrait les informations sur l’état opérationnel des interfaces Ethernet sur l’équipement cible.

Les sections suivantes abordent les différents composants de la vue :

Voir le nom

Le nom View est un identifiant défini par l’utilisateur pour la vue. Vous associez une table à une vue particulière en incluant la view propriété dans la définition de table et en fournissant le nom de la vue comme argument. Par exemple :

Champs (champs)

Vous personnalisez les vues afin qu’elles ne référencent que les éléments nécessaires à partir des éléments de table sélectionnés. Pour ce faire, vous incluez la fields propriété et un tableau associatif contenant le mappage de noms de champs définis par l’utilisateur avec des expressions XPath qui sélectionnent les éléments souhaités dans l’élément Table. Les noms de champs doivent être des noms de variables Python valides. Les expressions XPath sont relatives au contexte de l’élément de table.

Prenons l’exemple de sortie RPC suivant :

Si le paramètre Table item sélectionne des <physical-interface> éléments dans la sortie, l’expression XPath de chaque champ de la définition View est relative à ce contexte. La définition de la vue suivante mappe chaque nom de champ défini par l’utilisateur à un élément enfant de l’élément <physical-interface> :

Dans le script Python, vous pouvez ensuite accéder à un élément View en tant que propriété variable. Par défaut, chaque élément View possède une name propriété qui fait référence à la clé qui identifie cet élément de manière unique.

Le format du champ détermine le type de la valeur d’un champ. Par défaut, les valeurs de champ sont stockées sous forme de chaînes. Vous pouvez spécifier un type différent pour la valeur du champ dans le mappage de champs. L’exemple suivant définit la valeur de l’élément mtu comme un entier :

Dans la sortie RPC, certains éléments JUNOs XML ne sont que des éléments vides qui agissent comme des indicateurs. Vous pouvez indiquer explicitement qu’un champ est un indicateur dans le mappage de champs. La valeur de l’élément de champ pour un indicateur est True si l’élément est présent dans la sortie et False si l’élément est absent. L’exemple suivant définit l’élément ifdf-running comme un indicateur :

Vous pouvez également définir la valeur de l’élément de champ sur un booléen à l’aide de la syntaxe suivante :

La valeur de l’élément est évaluée par rapport à l’expression régulière transmise à regex(). Si la valeur de l’élément correspond à l’expression, la valeur de l’élément de champ est définie sur le booléen défini dans le format. Dans l’exemple suivant, le oper_status_down champ est défini sur True si la valeur de l’élément oper-status contient « down » :

Vous pouvez également utiliser des expressions régulières plus complexes et correspondre à plusieurs valeurs. L’élément de champ suivant est défini sur True si l’adresse de l’élément rt-destination commence par « 198.51. » :

L’élément de champ suivant est défini sur True si l’élément contient une no-refresh valeur dans l’expression régulière.

Groupes (groupes) et groupes de terrain (fields_)

Les groupes fournissent une méthode de raccourci pour sélectionner et référencer des éléments au sein d’un ensemble de nœuds spécifique dans un élément de table.

Dans la sortie RPC suivante, l’élément <if-device-flags> contient plusieurs éléments enfants correspondant aux valeurs affichées dans le champ dans la Device flags sortie CLI :

Dans la définition View, vous pouvez utiliser la fields propriété pour accéder aux éléments enfants en fournissant l’expression XPath complète à chaque élément relatif à l’élément table sélectionné. Par exemple, si la définition EthPortTable sélectionne des éléments, le mappage d’éléments <physical-interface> de champ utilise les expressions XPath suivantes :

Vous pouvez également créer un groupe qui définit le contexte de l’élément <if-device-flags> , puis définir des éléments de groupe de champs qui fournissent simplement l’expression XPath par rapport à ce contexte. Vous pouvez définir n’importe quel nombre de groupes dans une définition view.

Pour créer un groupe, incluez la groups propriété et mappez un nom de groupe défini par l’utilisateur à l’expression XPath qui définit le nouveau contexte. Puis définissez un groupe de champs dont le nom est fields_ suivi du nom du groupe. Le groupe de champs est un tableau associatif contenant le mappage de noms de champs définis par l’utilisateur avec des expressions XPath qui sont désormais relatives au contexte défini dans groups. Les noms de champs doivent être des noms de variables Python valides.

L’exemple suivant définit le groupe flags et le groupe de champs fields_flagscorrespondant . Le flags groupe définit le contexte au niveau hiérarchiquephysical-interface/if-device-flags, et les present running champs accèdent respectivement aux valeurs des éléments et ifdf-running des ifdf-present éléments.

Que vous utilisiez des champs ou des groupes de champs, vous accédez à la valeur de la même manière dans le script Junos PyEZ à l’aide des noms de champs définis par l’utilisateur.