Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Definir visualizações das tabelas operacionais do Junos PyEZ que analisam a saída estruturada

Tabelas operacionais (op) do Junos PyEZ para saída estruturada selecionam dados específicos da saída XML de um RPC executado em um dispositivo Junos. Uma tabela está associada a uma visualização, que é usada para acessar campos nos itens da Tabela e mapeá-los para variáveis Python definidas pelo usuário. Você associa uma Tabela a uma visualização específica, incluindo a view propriedade na definição da Tabela, que toma o nome View como seu argumento.

A View mapeia suas variáveis definidas pelo usuário para elementos XML nos itens de Tabela selecionados. Uma visualização permite que você acesse campos específicos na saída como variáveis com propriedades que podem ser manipuladas no Python. O Junos PyEZ lida com a extração dos dados em Python, bem como qualquer tipo de conversão ou normalização de dados. As chaves definidas na visualização devem ser nomes de variáveis Python válidos.

As visualizações do Junos PyEZ, como tabelas, são formatadas usando YAML. As visualizações que analisam a saída estruturada podem incluir uma série de parâmetros, que são resumidos na Tabela 1.

Tabela 1: Parâmetros de visualização para tabelas de operações do Junos PyEZ para saída estruturada

Exibir nome do parâmetro

Parâmetro de visualização

Descrição

Veja o nome

Identificador definido pelo usuário para a visualização.

Itens de campo

fields

Matriz associativa, ou níprica, de pares de valor-chave que mapeiam nomes de campo definidos pelo usuário para expressões XPath que selecionam elementos nos itens da Tabela. Os nomes de campo devem ser nomes variáveis python válidos.

Grupos de campo

fields_group

Matriz associativa, ou níprica, de pares de valor-chave que mapeiam nomes de campo definidos pelo usuário para expressões XPath que selecionam elementos nos itens da Tabela. As expressões XPath são relativas ao contexto definido pelo parâmetro de grupos correspondentes. Os nomes de campo devem ser nomes variáveis python válidos.

Grupos

groups

Matriz associativa, ou níprica, de pares de valor-chave que mapeiam um nome de grupo definido pelo usuário para uma expressão XPath (em relação ao contexto do item Table) que define o contexto XPath para campos nesse grupo.

Considere a seguinte tabela e visualização do Junos PyEZ, que estão incluídos na distribuição do Junos PyEZ. A Tabela extrai informações de estado operacional para interfaces Ethernet no dispositivo alvo.

As seções a seguir discutem os diferentes componentes da visualização:

Veja o nome

O nome De visualização é um identificador definido pelo usuário para a visualização. Você associa uma Tabela a uma visualização específica, incluindo a view propriedade na definição da Tabela e fornecendo o nome De visualização como argumento. Por exemplo:

Campos (campos)

Você personaliza visualizações para que elas só façam referência aos elementos necessários dos itens da Tabela selecionada. Para isso, você inclui a fields propriedade e um arranjo associativo contendo o mapeamento de nomes de campo definidos pelo usuário para expressões XPath que selecionam os elementos desejados do item Tabela. Os nomes de campo devem ser nomes variáveis python válidos. As expressões do XPath são relativas ao contexto do item Tabela.

Considere a saída RPC da amostra a seguir:

Se o parâmetro da Tabela item selecionar elementos <physical-interface> da saída, a expressão XPath para cada campo na definição de Visualização é relativa a esse contexto. A definição de visualização a seguir mapeia cada nome de campo definido pelo usuário para um elemento infantil do <physical-interface> elemento:

No script Python, você pode acessar um item View como uma propriedade variável. Por padrão, cada item View tem uma name propriedade que faz referência à chave que identifica esse item com exclusividade.

O formato de campo determina o tipo de valor de um campo. Por padrão, os valores de campo são armazenados como strings. Você pode especificar um tipo diferente para o valor de campo no mapeamento de campo. O exemplo a seguir define o valor do mtu elemento como um inteiro:

Na saída RPC, alguns elementos Do Junos XML são apenas elementos vazios que atuam como bandeiras. Você pode indicar explicitamente que um campo é uma bandeira no mapeamento de campo. O valor do item de campo para uma bandeira é verdadeiro se o elemento estiver presente na saída e falso se o elemento estiver ausente. O exemplo a seguir define o ifdf-running elemento como uma bandeira:

Você também pode definir o valor do item de campo para um Boolean usando a seguinte sintaxe:

O valor do elemento é avaliado em relação à expressão regular passada para regex(). Se o valor do elemento corresponde à expressão, o valor do item de campo será definido para o Boolean definido no formato. No exemplo a seguir, o oper_status_down campo é definido como verdadeiro se o valor do oper-status elemento contiver "down":

Você também pode usar expressões regulares mais complexas e combinar com vários valores. O item de campo a seguir é definido como verdadeiro se o endereço do rt-destination elemento começar com '198.51.':

O item de campo a seguir é definido como verdadeiro se o no-refresh elemento contiver qualquer valor na expressão regular.

Grupos (grupos) e grupos de campo (fields_)

Os grupos fornecem um método de atalho para selecionar e referenciar elementos dentro de um nó específico definido em um item da Tabela.

Na saída RPC a seguir, o <if-device-flags> elemento contém vários elementos infantis correspondentes aos valores exibidos no Device flags campo na saída CLI:

Dentro da definição de Visualização, você pode usar a fields propriedade para acessar os elementos infantis, fornecendo a expressão XPath completa a cada elemento em relação ao item de Tabela selecionado. Por exemplo, se a definição EthPortTable selecionar <physical-interface> itens, o mapeamento de itens de campo usaria as seguintes expressões XPath:

Alternativamente, você pode criar um grupo que define o contexto para o <if-device-flags> elemento e, em seguida, definir itens de grupo de campo que apenas fornecem a expressão XPath em relação a esse contexto. Você pode definir qualquer número de grupos dentro de uma definição de visualização.

Para criar um grupo, inclua a groups propriedade e mapeie um nome de grupo definido pelo usuário para a expressão XPath que define o novo contexto. Em seguida, defina um grupo de campo cujo nome é fields_ seguido pelo nome do grupo. O grupo de campo é um conjunto associativo que contém o mapeamento de nomes de campo definidos pelo usuário para expressões XPath que agora são relativas ao contexto definido dentro groups. Os nomes de campo devem ser nomes variáveis python válidos.

O exemplo a seguir define o grupo flags e o grupo fields_flagsde campo correspondente. O flags grupo define o contexto para o nível de physical-interface/if-device-flags hierarquia, e os campos e os present campos running acessam os valores dos ifdf-present elementos e ifdf-running dos elementos, respectivamente.

Quer você use campos ou grupos de campo, você acessa o valor da mesma maneira dentro do script Junos PyEZ usando os nomes de campo definidos pelo usuário.