Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Definir vistas para las tablas de configuración de Junos PyEZ

Las tablas de configuración de Junos PyEZ pueden extraer datos específicos de la base de datos de configuración seleccionada de un dispositivo Junos o pueden definir recursos estructurados que se pueden usar para configurar un dispositivo Junos mediante programación. Una tabla está asociada a una vista, que se utiliza para seleccionar y hacer referencia a los elementos de los datos de la tabla. Para asociar una tabla a una vista determinada, se incluye la view propiedad en la definición de tabla, que toma el nombre de vista como argumento.

Una vista asigna los nombres de campo definidos por el usuario a elementos XML de los elementos de tabla seleccionados. Una vista le permite acceder a campos específicos en los datos como variables con propiedades que se pueden manipular en Python. Junos PyEZ maneja la extracción de los datos en Python, así como cualquier conversión de tipo o normalización de datos.

Al recuperar datos de configuración mediante tablas que tienen la get propiedad o set , los campos Ver especifican qué datos de configuración debe recuperar la aplicación para el objeto. Para las tablas que incluyen la set propiedad y definen recursos que se pueden configurar en un dispositivo, los campos definidos en la Vista restringen las instrucciones que se pueden configurar para ese recurso.

Las vistas de Junos PyEZ, al igual que las tablas, se formatean con YAML. Ver definiciones asociadas a la configuración Las tablas pueden incluir varios parámetros, que se resumen en la tabla 1.

Tabla 1: Parámetros de vista de configuración de Junos PyEZ

Ver nombre del parámetro

Ver parámetro

Tipo de tabla

Descripción

Ver nombre

get O set

Identificador de vista definido por el usuario.

Elementos de campo

fields

get O set

Matriz asociativa, o diccionario, de pares clave-valor que asignan nombres de campo definidos por el usuario a expresiones XPath que seleccionan elementos en los datos de configuración. Los nombres de campo deben ser nombres de variables de Python válidos. Las expresiones XPath son relativas al contexto definido por la get propiedad o set para esa tabla.

Cuando el ámbito Tabla utiliza get, los campos identifican los datos que se van a extraer de la configuración. Cuando el ámbito Tabla utiliza set, los campos identifican los elementos que puede configurar o recuperar, dependiendo de la operación.

Grupos de campo

fields_group

get O set

Matriz asociativa, o diccionario, de pares clave-valor que asignan nombres de campo definidos por el usuario a expresiones XPath que seleccionan elementos en los datos de configuración. Los nombres de campo deben ser nombres de variables de Python válidos. Las expresiones XPath son relativas al contexto establecido por el parámetro correspondiente groups .

Cuando el ámbito Tabla utiliza get, los campos identifican los datos que se van a extraer de la configuración. Cuando el ámbito Tabla utiliza set, los campos identifican los elementos que puede configurar o recuperar, dependiendo de la operación.

Grupos

groups

get O set

Matriz asociativa, o diccionario, de pares clave-valor que asignan un nombre de grupo definido por el usuario a una expresión XPath que establece el contexto XPath para los campos de ese grupo. La expresión Xpath es relativa al contexto definido por la get propiedad o set para esa tabla.

Tenga en cuenta las siguientes tablas y vistas de configuración de Junos PyEZ. UserTable, que incluye la get propiedad, extrae los datos de configuración de las cuentas de usuario del dispositivo de destino. UserConfigTable, que incluye la set propiedad, define un recurso de configuración estructurado que se puede utilizar para configurar cuentas de usuario en el dispositivo de destino, así como para recuperar datos de configuración de cuentas de usuario.

En las secciones siguientes se describen los diferentes componentes de la vista:

Nombre de la vista

El nombre de la vista es un identificador definido por el usuario para la vista. Para asociar una tabla a una vista determinada, incluya la view propiedad en la definición de tabla y proporcione el nombre de vista como argumento. Por ejemplo:

Campos (campos)

Las vistas se personalizan para que solo hagan referencia a los elementos necesarios en los datos de configuración seleccionados. Para ello, incluya la fields propiedad y una matriz asociativa que contenga la asignación de nombres de campo definidos por el usuario a las expresiones XPath que seleccionan los elementos deseados de los elementos de la tabla de configuración. Los nombres de campo deben ser nombres de variables de Python válidos. Las expresiones XPath son relativas al ámbito de configuración definido por la get propiedad o set en la definición de tabla.

Al recuperar datos de configuración mediante tablas que incluyen la get propiedad o set , los campos definidos en la vista identifican las instrucciones que se van a extraer de la configuración. Para las tablas que incluyen la set propiedad y definen recursos que puede configurar en un dispositivo, los campos identifican las instrucciones que puede configurar para ese recurso. Debe definir explícitamente campos para todos los elementos identificadores de un recurso de configuración. A continuación, se hace referencia a estos campos de identificador en la key-field propiedad de la definición de tabla correspondiente.

Considere la siguiente jerarquía de configuración de ejemplo:

Si la tabla get o set parámetro define el ámbito como system/login/user, la expresión XPath para cada campo de la definición de vista es relativa a ese contexto. La siguiente definición de vista asigna los nombres usernamede campo definidos por el usuario , userclassy uid a elementos secundarios del <user> elemento:

Si la definición de tabla incluye la set propiedad, debe definir explícitamente campos para cualquier elemento identificador que identifique de forma exclusiva el objeto, que en este caso es <name>. La propiedad Table key-field debe hacer referencia a todos los campos View que se asignan a elementos identificadores de un objeto. Siempre debe definir al menos un elemento identificador en las propiedades y key-field de set las fields tablas.

En la secuencia de comandos de Python, puede acceder a un elemento Ver como una propiedad variable.

Nota:

Al recuperar datos de configuración, cada objeto que tiene un <name> elemento en los datos tiene una propiedad predeterminada name que puede usar para tener acceso al valor de ese elemento.

Los campos de vista pueden incluir diferentes opciones según el tipo de tabla que hace referencia a esa vista. Las tablas que definen recursos de configuración estructurados (set) pueden incluir comprobaciones de tipo y restricción para cada campo, a fin de garantizar que la aplicación Junos PyEZ proporcione datos válidos al configurar el recurso en un dispositivo. Las tablas que recuperan datos de configuración (get) pueden incluir opciones que devuelven valores de atributo para elementos específicos o que especifican el tipo de datos que se va a utilizar en la aplicación. Las Opciones de campo (tablas 'get') y las opciones de campo (tablas 'set') describen las opciones que se pueden incluir al usar get y set tablas, respectivamente.

Opciones de campo (tablas 'get')

Las tablas que incluyen la get propiedad y recuperan únicamente datos de configuración de un dispositivo pueden definir varias opciones u operadores para los campos de la vista asociada. En esta sección se describen las distintas opciones.

El formato de campo determina el tipo del valor de un campo. De forma predeterminada, los valores de campo se almacenan como cadenas. Puede especificar un tipo diferente para el valor en la asignación de campos. En el ejemplo siguiente se define el valor del uid elemento para que sea un número entero:

También puede establecer el valor del elemento de campo en un valor booleano mediante la sintaxis siguiente:

El valor del elemento se evalúa con respecto a la expresión regular pasada a regex(). Si el valor del elemento coincide con la expresión, el valor del elemento de campo se establece en el valor booleano definido en el formato. En el ejemplo siguiente, el superuser campo se establece en True si el class valor del elemento contiene 'superuser':

Junos PyEZ también proporciona el operador para los group campos en las vistas de configuración. El group operador permite acceder al valor del junos:group atributo para los elementos heredados de los grupos de configuración de Junos. Este valor indica el grupo del que se heredó ese elemento.

Por ejemplo, en la siguiente configuración, el remote usuario se hereda del global grupo de configuración configurado en el nivel de [edit groups global] jerarquía.

El operador se incluye group en la asignación de campos para hacer referencia al valor del junos:group atributo en lugar del valor del elemento. En el ejemplo siguiente se definen los uidgroup campos y fullgroup con el group operador. Cuando se accede a estos nombres de campo en una secuencia de comandos, el campo hace referencia al valor del junos:group atributo asociado al uid elemento o full-name .

Opciones de campo (tablas 'establecidas')

Las tablas que definen recursos de configuración estructurados (set) pueden incluir comprobaciones de tipo y restricción para cada campo de la vista asociada, a fin de garantizar que la aplicación Junos PyEZ proporcione datos válidos al configurar el recurso en un dispositivo. Las comprobaciones de tipo garantizan que la aplicación Junos PyEZ proporciona el tipo de datos correcto cuando configura las instrucciones para un recurso específico. Las comprobaciones de restricciones permiten definir un valor predeterminado para las instrucciones y asegurarse de que la aplicación proporciona valores que están en el rango correcto para dichas instrucciones. En esta sección se describen las comprobaciones de tipo y restricción admitidas, que se incluyen como opciones para los campos de la vista asociada.

En la tabla 2 y en la tabla 3 se resumen las comprobaciones de tipo y restricción, respectivamente, que se pueden definir para los campos de la vista de una set tabla de configuración. Las comprobaciones de tipo son mutuamente excluyentes, pero se pueden definir varias comprobaciones de restricción para cada campo.

Tabla 2: Comprobaciones de tipo para tablas de configuración 'set'

type Valor

Descripción

Ejemplo

bool

El campo sólo acepta valores booleanos de True o False

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

enum

El campo sólo acepta uno de los valores definidos en la enum lista

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

float

El campo solo acepta valores de coma flotante

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

int

El campo solo acepta valores enteros

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

str

El campo solo acepta valores de cadena

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

Tabla 3: Comprobaciones de restricciones para tablas de configuración 'set'

Nombre de comprobación de restricción

Descripción

Ejemplo

default

Valor predeterminado de un campo.

Un campo utiliza su valor predeterminado cuando el usuario no lo configura explícitamente. Si el usuario llama al método para restablecer los valores de reset() campo en la aplicación, los campos que tienen un valor predeterminado definido se establecen en ese valor.

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

maxValue

Valor máximo de un campo, que se interpreta en función del campo type.

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

minValue

Valor mínimo para un campo, que se interpreta en función del campo type.

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

Sólo puede definir una única comprobación de tipo para un campo, pero puede definir varias comprobaciones de restricción. Por lo tanto, un campo podría incluir un default valor, un valor mínimo (minValue) y un valor máximo (maxValue).

Las minValue opciones y maxValue se interpretan en función del valor de la type opción. De forma predeterminada, los valores de campo son cadenas. Para cuerdas, minValue y maxValue son las longitudes mínima y máxima de la cadena. Para enteros y flotantes, los valores son los valores mínimo y máximo para ese tipo.

Si incluye comprobaciones de tipo o restricción para un campo y el usuario proporciona datos de configuración que no superan las comprobaciones, la aplicación Junos PyEZ genera la excepción apropiada TypeError o ValueError con un mensaje que describe el error.

Grupos (grupos) y Grupos de campo (fields_)

Los grupos proporcionan un método de acceso directo para seleccionar y hacer referencia a elementos dentro de un conjunto de nodos específico en un elemento de tabla.

En los siguientes datos de configuración, el <authentication> elemento contiene un elemento secundario correspondiente al método de autenticación del usuario:

Dentro de la definición View, puede utilizar la fields propiedad para tener acceso a los elementos secundarios proporcionando la expresión XPath completa a cada elemento en relación con la jerarquía de configuración seleccionada. Por ejemplo, si la tabla get o set propiedad selecciona elementos en el nivel de <user> [edit system login] jerarquía, la asignación de elementos de campo usaría la siguiente expresión XPath:

Como alternativa, puede crear un grupo que establezca el contexto XPath en el <authentication> elemento y, a continuación, definir elementos de grupo de campos que solo proporcionen la expresión XPath relativa a ese contexto. Puede definir cualquier número de grupos dentro de una definición de View.

Para crear un grupo, incluya la propiedad y asigne un nombre de grupo definido por el groups usuario a la expresión XPath que define el nuevo contexto. A continuación, defina un grupo de campos cuyo nombre vaya fields_ seguido del nombre del grupo. El grupo de campos es una matriz asociativa que contiene la asignación de nombres de campo definidos por el usuario a expresiones XPath que ahora son relativas al contexto establecido en groups. Los nombres de campo deben ser nombres de variables de Python válidos.

En el ejemplo siguiente se define el grupo auth y el grupo fields_authde campos correspondiente. El auth grupo establece el contexto en el system/login/user/authentication nivel de jerarquía y el password campo hace referencia al valor del encrypted-password elemento.

Tanto si utiliza campos como grupos de campos, puede acceder al valor de la misma manera dentro del script de Junos PyEZ mediante los nombres de campo definidos por el usuario.