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 operativas de Junos PyEZ que analizan la salida estructurada

Las tablas operativas (operativas) de Junos PyEZ para salida estructurada seleccionan datos específicos de la salida XML de una RPC ejecutada en un dispositivo Junos. Una tabla se asocia con una vista, que se usa para acceder a los campos de los elementos de la tabla y asignarlos a variables Python definidas por el usuario. 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 sus variables definidas por el usuario a elementos XML en los elementos de tabla seleccionados. Una vista le permite acceder a campos específicos en el resultado 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. Las claves definidas en la vista deben ser nombres de variables de Python válidos.

Las vistas de Junos PyEZ, como las tablas, se formatean con YAML. Las vistas que analizan la salida estructurada pueden incluir varios parámetros, que se resumen en la Tabla 1.

Tabla 1: Parámetros en vistas para tablas op de Junos PyEZ para salida estructurada

Ver nombre del parámetro

Parámetro de vista

Descripción

Ver nombre

Identificador definido por el usuario para la vista.

Elementos de campo

fields

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 elementos de tabla. Los nombres de campo deben ser nombres de variables de Python válidos.

Grupos de campo

fields_group

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 elementos de tabla. Las expresiones XPath son relativas al contexto establecido por el parámetro de grupos correspondiente. Los nombres de campo deben ser nombres de variables de Python válidos.

Grupos

groups

Matriz asociativa, o diccionario, de pares clave-valor que asignan un nombre de grupo definido por el usuario a una expresión XPath (en relación con el contexto del elemento De tabla) que establece el contexto XPath para los campos de ese grupo.

Considere la siguiente tabla y vista de Junos PyEZ op, que se incluyen con la distribución Junos PyEZ. La tabla extrae información de estado operativo para interfaces Ethernet en el dispositivo de destino.

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)

Personalizar vistas de modo que solo hagan referencia a los elementos necesarios de los elementos de tabla 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 expresiones XPath que seleccionan los elementos deseados del elemento Tabla. Los nombres de campo deben ser nombres de variables de Python válidos. Las expresiones XPath son relativas al contexto del elemento Tabla.

Tenga en cuenta la siguiente salida RPC de ejemplo:

Si el parámetro Table item selecciona <physical-interface> elementos del resultado, 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 cada nombre de campo definido por el usuario a un elemento secundario del <physical-interface> elemento:

En la secuencia de comandos de Python, puede acceder a un elemento View como propiedad de variable. De forma predeterminada, cada elemento view tiene una name propiedad que hace referencia a la clave que identifica de forma única ese elemento.

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 de campo en la asignación de campos. En el ejemplo siguiente, se define el valor del mtu elemento como un entero:

En el resultado de RPC, algunos elementos XML de Junos son solo elementos vacíos que actúan como marcas. Puede indicar explícitamente que un campo es una marca en la asignación de campo. El valor del elemento de campo para una marca es True si el elemento está presente en el resultado y False si el elemento está ausente. En el ejemplo siguiente, se define el ifdf-running elemento como una marca:

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 oper_status_down campo se establece en True si el valor del oper-status elemento contiene 'down':

También puede usar expresiones regulares más complejas y hacer coincidir con varios valores. El siguiente elemento de campo se establece en True si la dirección del rt-destination elemento comienza con '198.51.':

El siguiente elemento de campo se establece en True si el no-refresh elemento contiene cualquiera de los valores de la expresión regular.

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 la siguiente salida RPC, el <if-device-flags> elemento contiene varios elementos secundarios correspondientes a los valores mostrados en el Device flags campo en el resultado de la CLI:

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 el elemento table seleccionado. Por ejemplo, si la definición EthPortTable selecciona <physical-interface> elementos, la asignación de elementos de campo usaría las siguientes expresiones XPath:

Como alternativa, puede crear un grupo que establezca el contexto en el <if-device-flags> 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 flags y el grupo fields_flagsde campos correspondiente. El flags grupo establece el contexto en el physical-interface/if-device-flags nivel de jerarquía, y los present campos y running tienen acceso a los valores de los ifdf-present elementos y ifdf-running , respectivamente.

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.