Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Definir vistas para 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 se asocia con una vista, que se utiliza para seleccionar y hacer referencia a los elementos de los datos de tabla. Asocie una tabla con una vista determinada incluyendo la view propiedad en la definición de tabla, que toma el nombre de vista como su argumento.

Una vista asigna los nombres de campo definidos por el usuario a elementos XML en los elementos de tabla seleccionados. Una vista le permite acceder a campos específicos de 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 tipo de conversión o normalización de datos.

Cuando se recuperan datos de configuración mediante tablas que tienen la get o la set propiedad, los campos view especifican qué datos de configuración debe recuperar la aplicación para el objeto. En el caso de las tablas que incluyen la set propiedad y definen los recursos que puede configurar en un dispositivo, los campos definidos en la vista restringen las instrucciones que puede configurar para ese recurso.

Las vistas de Junos PyEZ, como las tablas, se formatean con YAML. Las definiciones de vista asociadas con las tablas de configuración pueden incluir varios parámetros, que se resumen en la Tabla 1.

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

Ver nombre del parámetro

Parámetro de vista

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 de esa tabla.

Cuando el ámbito de tabla utiliza get, los campos identifican los datos que se extraerán de la configuración. Cuando el ámbito tabla utiliza set, los campos identifican los elementos que puede configurar o recuperar, según 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 de tabla utiliza get, los campos identifican los datos que se extraerán de la configuración. Cuando el ámbito tabla utiliza set, los campos identifican los elementos que puede configurar o recuperar, según 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 de esa tabla.

Considere las siguientes tablas y vistas de configuración de Junos PyEZ. UserTable, que incluye la get propiedad, extrae datos de configuración para cuentas de usuario en el 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 recuperar datos de configuración para cuentas de usuario.

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

Ver nombre

El nombre de vista es un identificador definido por el usuario para la vista. Asocie una tabla con una vista determinada incluyendo la view propiedad en la definición de tabla y proporcionando el nombre de vista como su argumento. Por ejemplo:

Campos (campos)

Las vistas se personalizan de modo que solo hagan referencia a los elementos necesarios en los datos de configuración seleccionados. Para ello, incluye la fields propiedad y una matriz asociativa que contiene 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.

Cuando se recuperan datos de configuración mediante tablas que incluyen la get propiedad o la set propiedad, los campos definidos en la vista identifican las instrucciones que se deben extraer de la configuración. En el caso de las tablas que incluyen la set propiedad y definen los 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 de identificador para 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 los elementos secundarios del <user> elemento:

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

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

Nota:

Cuando se recuperan 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 dicha vista. Las tablas que definen recursos de configuración estructurados (set) pueden incluir comprobaciones de tipos y restricciones para cada campo para asegurarse de que la aplicación Junos PyEZ proporciona 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 usar en la aplicación. Las opciones de campo ('obtener' tablas) y opciones de campo ('establecer' tablas) describen las opciones que se pueden incluir cuando se utiliza get y set tablas, respectivamente.

Opciones de campo ('obtener' tablas)

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

El formato de campo determina el tipo para el 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 campo. En el ejemplo siguiente, se define el valor del uid elemento como un entero:

También puede establecer el valor del elemento de campo en un 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 booleano definido en el formato. En el ejemplo siguiente, el superuser campo se establece en True si el valor del class elemento contiene 'superusuario':

Junos PyEZ también proporciona el group operador para campos en vistas de configuración. El operador le permite tener acceso al valor del junos:group atributo para los elementos que se heredan de grupos definidos por el usuario. Este valor indica el grupo del que se heredó ese elemento.

Incluye el group operador en la asignación de campo para hacer referencia al valor del junos:group atributo en lugar del valor del elemento. En el siguiente ejemplo, 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 con el uid o full-name elemento.

Opciones de campo ('establecer' tablas)

Las tablas que definen recursos de configuración estructurados (set) pueden incluir comprobaciones de tipo y restricción para cada campo en la vista asociada para asegurarse de que la aplicación Junos PyEZ proporciona datos válidos al configurar el recurso en un dispositivo. Las comprobaciones de tipos 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 le permiten definir un valor predeterminado para instrucciones y asegurarse de que la aplicación proporciona valores que están en el intervalo correcto para esas instrucciones. Las comprobaciones de tipo y restricción compatibles, que se incluyen como opciones para los campos de la vista asociada, se describen en esta sección.

Las tablas 2 y 3 resumen las comprobaciones de tipo y restricción, respectivamente, que puede definir para campos en la Vista de una set tabla de configuración. Las comprobaciones de tipos son mutuamente exclusivas, pero se pueden definir varias comprobaciones de restricciones para cada campo.

Tabla 2: Comprobaciones de tipos para tablas de configuración "set"

type Valor

Descripción

Ejemplo

bool

El campo solo acepta valores booleanos de True o False

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

enum

El campo solo 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 punto 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 restricciones

Descripción

Ejemplo

default

Valor predeterminado para un campo.

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

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

maxValue

Valor máximo para un campo, que se interpreta según el campo type.

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

minValue

Valor mínimo para un campo, que se interpreta según el campo type.

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

Solo puede definir una comprobación de tipo único para un campo, pero puede definir varias comprobaciones de restricciones. 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 según el valor de la type opción. De forma predeterminada, los valores de campo son cadenas. En el caso de las cadenas, minValue y maxValue son las longitudes mínima y máxima de la cadena. Para números 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 fallan las comprobaciones, la aplicación Junos PyEZ genera la excepción o ValueError la adecuada TypeError 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 table.

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 de vista, puede usar 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 table get o set propiedad selecciona <user> elementos en el [edit system login] nivel de 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 simplemente proporcionan la expresión XPath en relación con ese contexto. Puede definir cualquier número de grupos dentro de una definición de vista.

Para crear un grupo, incluya la groups propiedad y asigne un nombre de grupo definido por el usuario a la expresión XPath que define el nuevo contexto. A continuación, defina un grupo de campos cuyo nombre va 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 dentro groupsde . 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.

Ya sea que utilice campos o grupos de campos, tenga acceso al valor de la misma manera dentro de la secuencia de comandos Junos PyEZ mediante los nombres de campo definidos por el usuario.