Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Définition de vues pour les tables de configuration Junos PyEZ

Les tables de configuration Junos PyEZ peuvent extraire des données spécifiques de la base de données de configuration sélectionnée d’un équipement Junos ou définir des ressources structurées qui peuvent être utilisées pour configurer un équipement Junos par programmation. Une table est associée à une vue, qui est utilisée pour sélectionner et référencer des éléments dans les données de la table. Vous associez une table à une vue particulière en incluant la view propriété dans la définition de la table, qui prend le nom de la vue comme argument.

Une vue mappe vos noms de champs définis par l’utilisateur aux éléments XML des éléments de table sélectionnés. Une vue vous permet d’accéder à des champs spécifiques dans les données en tant que variables avec des propriétés qui peuvent être manipulées en Python. Junos PyEZ gère l’extraction des données en Python ainsi que toute conversion de type ou normalisation des données.

Lors de la récupération des données de configuration à l’aide de tables ayant la get propriété ou la set propriété, les champs d’affichage spécifient les données de configuration que l’application doit récupérer pour l’objet. Pour les tables qui incluent la propriété et définissent les set ressources que vous pouvez configurer sur un appareil, les champs définis dans la vue limitent les instructions que vous pouvez configurer pour cette ressource.

Les vues Junos PyEZ, comme les tableaux, sont mises en forme à l’aide de YAML. Afficher les définitions associées aux tables de configuration peut inclure un certain nombre de paramètres, qui sont résumés dans le tableau 1.

Tableau 1 : paramètres de la vue de configuration Junos PyEZ

Nom du paramètre d’affichage

Paramètre d’affichage

Table Type

Description

Nom de la vue

get Ou set

Identificateur de vue défini par l’utilisateur.

Éléments de champ

fields

get Ou set

Tableau associatif, ou dictionnaire, de paires clé-valeur qui mappe des noms de champs définis par l’utilisateur à des expressions XPath qui sélectionnent des éléments dans les données de configuration. Les noms de champs doivent être des noms de variables Python valides. Les expressions XPath sont relatives au contexte défini par la get propriété or set de cette table.

Lorsque l’étendue Table utilise get, les champs identifient les données à extraire de la configuration. Lorsque l’étendue Table utilise set, les champs identifient les éléments que vous pouvez configurer ou récupérer, en fonction de l’opération.

Groupes de champs

fields_group

get Ou set

Tableau associatif, ou dictionnaire, de paires clé-valeur qui mappe des noms de champs définis par l’utilisateur à des expressions XPath qui sélectionnent des éléments dans les données de configuration. Les noms de champs doivent être des noms de variables Python valides. Les expressions XPath sont relatives au contexte défini par le paramètre correspondant groups .

Lorsque l’étendue Table utilise get, les champs identifient les données à extraire de la configuration. Lorsque l’étendue Table utilise set, les champs identifient les éléments que vous pouvez configurer ou récupérer, en fonction de l’opération.

Groupes

groups

get Ou set

Tableau associatif, ou dictionnaire, de paires clé-valeur qui mappent un nom de groupe défini par l’utilisateur à une expression XPath qui définit le contexte XPath pour les champs de ce groupe. L’expression Xpath est relative au contexte défini par la get propriété or set de cette table.

Considérez les tableaux et vues de configuration Junos PyEZ suivants. UserTable, qui inclut la get propriété, extrait les données de configuration des comptes d’utilisateurs sur l’équipement cible. UserConfigTable, qui inclut la set propriété, définit une ressource de configuration structurée qui peut être utilisée pour configurer les comptes d’utilisateurs sur l’équipement cible et récupérer les données de configuration des comptes d’utilisateurs.

Les sections suivantes traitent des différents composants de la vue :

Nom de la vue

Le nom de la vue est un identificateur défini par l’utilisateur pour la vue. Vous associez une table à une vue particulière en incluant la propriété dans la définition de table view 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 dans les données de configuration sélectionnées. Pour ce faire, vous incluez la fields propriété et un tableau associatif contenant le mappage des noms de champs définis par l’utilisateur aux expressions XPath qui sélectionnent les éléments souhaités dans les éléments de la table de configuration. Les noms de champs doivent être des noms de variables Python valides. Les expressions XPath sont relatives à l’étendue de configuration définie par la get propriété or set dans la définition de la table.

Lors de la récupération des données de configuration à l’aide de tables qui incluent la get propriété ou , set les champs définis dans la vue identifient les instructions à extraire de la configuration. Pour les tables qui incluent la propriété et définissent les set ressources que vous pouvez configurer sur un appareil, les champs identifient les instructions que vous pouvez configurer pour cette ressource. Vous devez définir explicitement des champs pour tous les éléments d’identification d’une ressource de configuration. Ces champs d’identificateur sont ensuite référencés dans la key-field propriété de la définition de table correspondante.

Considérez l’exemple de hiérarchie de configuration suivant :

Si la table get ou set le paramètre définit l’étendue comme system/login/user, l’expression XPath de chaque champ de la définition de vue est relative à ce contexte. La définition de vue suivante mappe les noms usernamede champ définis par l’utilisateur, userclass, et uid aux éléments enfants de l’élément <user> :

Si la définition de table inclut la set propriété, vous devez définir explicitement des champs pour tous les éléments d’identification qui identifient l’objet de manière unique, ce qui dans ce cas est <name>. La propriété Table key-field doit référencer tous les champs View qui correspondent à des éléments d’identification pour un objet. Vous devez toujours définir au moins un élément d’identificateur dans les fields propriétés et key-field dans set les tables.

Dans le script Python, vous pouvez ensuite accéder à un élément View en tant que propriété variable.

Note:

Lors de la récupération des données de configuration, chaque objet qui contient un <name> élément dans les données possède une propriété par défaut name que vous pouvez utiliser pour accéder à la valeur de cet élément.

Les champs d’affichage peuvent inclure différentes options en fonction du type de table qui fait référence à cet affichage. Les tables qui définissent des ressources de configuration structurées (set) peuvent inclure des vérifications de type et de contrainte pour chaque champ afin de s’assurer que l’application Junos PyEZ fournit des données valides lors de la configuration de la ressource sur un périphérique. Les tables qui récupèrent les données de configuration (get) peuvent inclure des options qui renvoient des valeurs d’attribut pour des éléments spécifiques ou qui spécifient le type de données à utiliser dans l’application. Les options de champ (tables 'get' ) et les options de champ (tables 'set') décrivent les options qui peuvent être incluses lors de l'utilisation get de tables et set , respectivement.

Options de champ (tables 'get')

Les tables qui incluent la propriété et récupèrent uniquement les get données de configuration d’un appareil peuvent définir un certain nombre d’options ou d’opérateurs pour les champs de la vue associée. Cette section présente les différentes options.

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 dans le mappage des champs. L’exemple suivant définit la valeur de l’élément uid comme étant un entier :

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

La valeur de l’élément est évaluée par rapport à l’expression régulière passée à regex(). Si la valeur de l’élément correspond à l’expression, la valeur de l’élément de champ est définie sur la valeur booléenne définie dans le format. Dans l'exemple suivant, le superuser champ est défini sur True si la valeur de l class 'élément contient 'super-user' :

Junos PyEZ fournit également l’opérateur des champs dans les group vues de configuration. L’opérateur group vous permet d’accéder à la valeur de l’attribut pour les junos:group éléments hérités des groupes de configuration Junos. Cette valeur indique le groupe dont cet élément a hérité.

Par exemple, dans la configuration suivante, l’utilisateur remote est hérité du groupe de configuration configuré au niveau de global la [edit groups global] hiérarchie.

Vous incluez l’opérateur group dans le mappage des champs pour référencer la valeur de l’attribut junos:group au lieu de la valeur de l’élément. L’exemple suivant définit les uidgroup champs et fullgroup avec l’opérateur group . Lorsque vous accédez à ces noms de champ dans un script, le champ fait référence à la valeur de l’attribut junos:group associé à l’élément uid or full-name .

Options de champ (tables 'set')

Les tables qui définissent des ressources de configuration structurées (set) peuvent inclure des vérifications de type et de contrainte pour chaque champ de la vue associée afin de garantir que l’application Junos PyEZ fournit des données valides lors de la configuration de la ressource sur un périphérique. Les vérifications de type garantissent que l’application Junos PyEZ fournit le type de données correct lorsqu’elle configure les instructions pour une ressource spécifique. Les vérifications de contraintes vous permettent de définir une valeur par défaut pour les instructions et de vous assurer que l’application fournit des valeurs qui se trouvent dans la plage correcte pour ces instructions. Les vérifications de type et de contrainte prises en charge, qui sont incluses en tant qu’options pour les champs de la vue associée, sont décrites dans cette section.

Les tableaux 2 et 3 résument respectivement les vérifications de type et de contrainte que vous pouvez définir pour les champs de la vue d’une set table de configuration. Les vérifications de type s’excluent mutuellement, mais plusieurs vérifications de contrainte peuvent être définies pour chaque champ.

Tableau 2 : Vérifications de type pour les tables de configuration « set »

type Valeur

Description

Exemple

bool

Le champ n’accepte que les valeurs booléennes de True ou False

enable: { 'enable' : { 'type': 'bool' } }

enum

Le champ n’accepte qu’une seule des valeurs définies dans la enum liste

enc : { 'encapsulation' : {'type' : { 'enum' : ['vlan-ccc','vlan-vpls'] }}}

float

Le champ n’accepte que les valeurs à virgule flottante

drift : { 'clock-drift' : { 'type' : 'float' } }

int

Le champ n’accepte que les valeurs entières

uid: { 'uid' : { 'type' : 'int' } }

str

Le champ n’accepte que les valeurs de chaîne

name: { 'name': {'type': 'str' } }

Tableau 3 : Vérifications des contraintes pour les tables de configuration « set »

Nom de la vérification de contrainte

Description

Exemple

default

Valeur par défaut d’un champ.

Un champ utilise sa valeur par défaut lorsque l’utilisateur ne le configure pas explicitement. Si l’utilisateur appelle la méthode pour réinitialiser les reset() valeurs de champ dans l’application, les champs qui ont une valeur par défaut définie sont définis sur cette valeur.

native_vlan : { 'native-vlan-id' : { 'type' : 'int', 'default' : 501 } }

maxValue

Valeur maximale d’un champ, qui est interprétée en fonction du champ type.

native_vlan : { 'native-vlan-id' : { 'type' : 'int', 'minValue' : 0, 'maxValue' : 4094 } }

minValue

Valeur minimale d’un champ, qui est interprétée en fonction du champ type.

native_vlan : { 'native-vlan-id' : { 'type' : 'int', 'minValue' : 0, 'maxValue' : 4094 } }

Vous ne pouvez définir qu’une seule vérification de type pour un champ, mais vous pouvez définir plusieurs vérifications de contrainte. Ainsi, un champ peut inclure une default valeur, une valeur minimale (minValue) et une valeur maximale (maxValue).

Les minValue options et maxValue sont interprétées en fonction de la valeur de l’option type . Par défaut, les valeurs de champ sont des chaînes. Pour les chaînes, minValue et maxValue sont les longueurs minimale et maximale de la chaîne. Pour les nombres entiers et les nombres à virgule flottante, les valeurs sont les valeurs minimale et maximale de ce type.

Si vous incluez des vérifications de type ou de contrainte pour un champ et que l’utilisateur fournit des données de configuration qui échouent aux vérifications, l’application Junos PyEZ lève l’exception appropriée TypeError avec ValueError un message décrivant l’erreur.

Groupes (groupes) et Groupes de champs (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 les données de configuration suivantes, l’élément <authentication> contient un élément enfant correspondant à la méthode d’authentification de l’utilisateur :

Dans la définition de la vue, vous pouvez utiliser la fields propriété pour accéder aux éléments enfants en fournissant l’expression XPath complète à chaque élément par rapport à la hiérarchie de configuration sélectionnée. Par exemple, si la table get ou set la propriété sélectionne des éléments au niveau de la [edit system login] hiérarchie, le mappage des <user> éléments de champ utilise l’expression XPath suivante :

Vous pouvez également créer un groupe qui définit le contexte XPath sur l’élément <authentication> , puis définir des éléments de groupe de champs qui fournissent simplement l’expression XPath relative à ce contexte. Vous pouvez définir autant de groupes que vous le souhaitez dans une définition de vue.

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. Définissez ensuite 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 des noms de champs définis par l’utilisateur aux expressions XPath qui sont maintenant 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 auth et le groupe fields_authde champs correspondant. Le auth groupe définit le contexte au niveau de la system/login/user/authentication hiérarchie et le password champ fait référence à la valeur de l’élément encrypted-password .

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 en utilisant les noms de champs définis par l’utilisateur.