Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Definir visualizações para tabelas de configuração do Junos PyEZ

Configuração do Junos PyEZ Tabelas podem extrair dados específicos do banco de dados de configuração selecionado de um dispositivo Junos, ou podem definir recursos estruturados que podem ser usados para configurar programáticamente um dispositivo Junos. Uma tabela está associada a uma visualização, usada para selecionar e fazer referência aos dados da Tabela. Você associa uma Tabela a uma visão específica, incluindo a view propriedade na definição da Tabela, que tem o nome View como seu argumento.

Uma vista mapeia os nomes de campo definidos pelo usuário para elementos XML nos itens de Tabela selecionados. Uma visão permite que você acesse campos específicos nos dados como variáveis com propriedades que podem ser manipuladas em 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.

Ao recuperar dados de configuração usando tabelas que têm a get propriedade ou a set propriedade, os campos de visualização especificam quais dados de configuração o aplicativo deve recuperar para o objeto. Para tabelas que incluam a set propriedade e definem recursos que você pode configurar em um dispositivo, os campos definidos na Vista restringem quais declarações você pode configurar para esse recurso.

As visualizações do Junos PyEZ, como tabelas, são formatadas usando YAML. Visualizar definições associadas às tabelas de configuração pode incluir uma série de parâmetros, que são resumidos na Tabela 1.

Tabela 1: Parâmetros de visualização da configuração do Junos PyEZ

Visualizar o nome do parâmetro

Parâmetro de visualização

Tipo de tabela

Descrição

Veja o nome

get Ou set

Identificador de visualização definido pelo usuário.

Itens de campo

fields

get Ou set

Array associativo, ou níquete, de pares de valor-chave que mapeiam nomes de campo definidos pelo usuário para expressões XPath que selecionam elementos nos dados de configuração. Os nomes de campo devem ser nomes variáveis de Python válidos. As expressões XPath são relativas ao contexto definido pela get ou set propriedade dessa Tabela.

Quando o escopo da Tabela é usado, os campos identificam os dados a serem extraídos getda configuração. Quando o escopo da Tabela é setusado, os campos identificam os elementos que você pode configurar ou recuperar, dependendo da operação.

Grupos de campo

fields_group

get Ou set

Array associativo, ou níquete, de pares de valor-chave que mapeiam nomes de campo definidos pelo usuário para expressões XPath que selecionam elementos nos dados de configuração. Os nomes de campo devem ser nomes variáveis de Python válidos. As expressões XPath são relativas ao contexto definido pelo parâmetro correspondente groups .

Quando o escopo da Tabela é usado, os campos identificam os dados a serem extraídos getda configuração. Quando o escopo da Tabela é setusado, os campos identificam os elementos que você pode configurar ou recuperar, dependendo da operação.

Grupos

groups

get Ou set

Array associativo, ou níquete, de pares de valor-chave que mapeiam um nome de grupo definido pelo usuário para uma expressão XPath que define o contexto XPath para campos nesse grupo. A expressão Xpath é relativa ao contexto definido pela get ou set propriedade dessa Tabela.

Considere as seguintes tabelas e visualizações de configuração do Junos PyEZ. UserTable, que inclui a get propriedade, extrai dados de configuração para contas de usuário no dispositivo alvo. UserConfigTable, que inclui a set propriedade, define um recurso de configuração estruturado que pode ser usado para configurar contas de usuário no dispositivo alvo, bem como recuperar dados de configuração para contas de usuário.

As seções a seguir discutem os diferentes componentes da visã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 visã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 apenas referenciem os elementos necessários nos dados de configuração selecionados. Para isso, você inclui a fields propriedade e um conjunto associativo que contém o mapeamento de nomes de campo definidos pelo usuário para as expressões XPath que selecionam os elementos desejados dos itens da Tabela de configuração. Os nomes de campo devem ser nomes variáveis de Python válidos. As expressões XPath são relativas ao escopo de configuração definido pela get propriedade ou set pela definição da Tabela.

Ao recuperar dados de configuração usando tabelas que incluem a get propriedade ou a set propriedade, os campos definidos na Visualização identificam as declarações a serem extraídas da configuração. Para tabelas que incluam a set propriedade e definem recursos que você pode configurar em um dispositivo, os campos identificam as declarações que você pode configurar para esse recurso. Você deve definir campos explicitamente para todos os elementos identificadores para um recurso de configuração. Esses campos de identificador são então mencionados na key-field propriedade na definição da Tabela correspondente.

Considere a hierarquia de configuração de amostra a seguir:

Se a Tabela get ou set parâmetro definir o escopo comosystem/login/user, a expressão XPath para cada campo na definição de Visualização for relativa a esse contexto. A definição de visualização a seguir mapeia os nomes usernameuserclassde campo definidos pelo usuário e uid os elementos infantis do <user> elemento:

Se a definição da Tabela incluir a set propriedade, você deve definir campos explicitamente para quaisquer elementos identificadores que identifiquem o objeto de forma exclusiva, o que neste caso é <name>. A propriedade da key-field Tabela deve fazer referência a todos os campos de visualização que mapeiam para identificar elementos para um objeto. Você deve sempre definir pelo menos um elemento identificador nas propriedades e fields key-field nas set tabelas.

No script Python, você pode então acessar um item De visualização como uma propriedade variável.

Nota:

Ao recuperar dados de configuração, cada objeto que tem um <name> elemento nos dados tem uma propriedade padrão name que você pode usar para acessar o valor desse elemento.

Os campos de visualização podem incluir diferentes opções dependendo do tipo da Tabela que faz referência a essa visualização. As tabelas que definem recursos de configuração estruturados (set) podem incluir verificações de tipo e restrição para cada campo para garantir que o aplicativo Junos PyEZ forneça dados válidos ao configurar o recurso em um dispositivo. As tabelas que recuperam dados de configuração (get) podem incluir opções que devolvem valores de atributos para elementos específicos ou que especificam o tipo de dados a ser usado no aplicativo. As opções de campo ('get' Tables) e opções de campo ('definir' Tabelas) descrevem as opções que podem ser incluídas ao usar get e set tabelas, respectivamente.

Opções de campo ('get' Tables)

Tabelas que incluem a get propriedade e recuperam apenas dados de configuração de um dispositivo podem definir uma série de opções ou operadores para campos na Visão associada. Esta seção descreve as várias opções.

O formato de campo determina o tipo para obter o 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 no mapeamento de campo. O exemplo a seguir define o valor do uid elemento como um inteiro:

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 superuser campo é definido como verdadeiro se o valor do class elemento contém "super-usuário":

O Junos PyEZ também fornece o group operador para campos em visualizações de configuração. O group operador permite que você acesse o valor do atributo para junos:group elementos herdados dos grupos de configuração do Junos. Esse valor indica o grupo do qual esse elemento foi herdado.

Por exemplo, na configuração a seguir, o remote usuário é herdado do grupo de global configuração configurado no nível de [edit groups global] hierarquia.

Você inclui o group operador no mapeamento de campo para fazer referência ao valor do junos:group atributo em vez do valor do elemento. O exemplo a seguir define os campos e fullgroup os uidgroup campos com o group operador. Quando você acessa esses nomes de campo em um script, o campo faz referência ao valor do junos:group atributo associado ao uid elemento ou full-name elemento.

Opções de campo ('definir' tabelas)

As tabelas que definem recursos de configuração estruturados (set) podem incluir verificações de tipo e restrição para cada campo na Vista associada para garantir que o aplicativo Junos PyEZ forneça dados válidos ao configurar o recurso em um dispositivo. Verificações de tipo garantem que o aplicativo Junos PyEZ fornece o tipo de dados correto quando configura as declarações para um recurso específico. As verificações de restrição permitem que você defina um valor padrão para as declarações e garanta que o aplicativo fornece valores que estão na faixa correta para essas declarações. As verificações de tipo e restrição suportadas, incluídas como opções para os campos da Vista associada, estão descritas nesta seção.

A Tabela 2 e a Tabela 3 resumem o tipo e as verificações de restrição, respectivamente, que você pode definir para campos na Visualização de uma set Tabela de configuração. As verificações de tipo são mutuamente exclusivas, mas várias verificações de restrição podem ser definidas para cada campo.

Tabela 2: Verificações de tipo para tabelas de configuração 'definir'

type Valor

Descrição

Exemplo

bool

O campo só aceita valores Boolean de True ou False

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

enum

O campo só aceita um dos valores definidos na enum lista

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

float

O campo só aceita valores de ponto flutuante

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

int

O campo só aceita valores inteiros

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

str

O campo só aceita valores de strings

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

Tabela 3: Verificações de restrições para tabelas de configuração 'definir'

Nome de verificação de restrições

Descrição

Exemplo

default

Valor padrão para um campo.

Um campo usa seu valor padrão quando o usuário não configura explicitamente o campo. Se o usuário chamar o reset() método para redefinir os valores de campo no aplicativo, os campos que têm um padrão definido serão definidos para esse valor.

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

maxValue

Valor máximo para um campo, que é interpretado com base no campo type.

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

minValue

Valor mínimo para um campo, que é interpretado com base no campo type.

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

Você só pode definir uma verificação de tipo único para um campo, mas você pode definir várias verificações de restrição. Assim, um campo poderia incluir um default valor, um valor mínimo (minValue) e um valor máximo (maxValue).

As minValue opções e as maxValue opções são interpretadas com base no valor para a opção type . Por padrão, os valores de campo são strings. Para strings, minValue e maxValue são os comprimentos mínimos e máximos para a corda. Para inteiros e flutuadores, os valores são os valores mínimos e máximos para esse tipo.

Se você incluir verificações de tipo ou restrição para um campo, e o usuário fornecer dados de configuração que falharem nas verificações, o aplicativo Junos PyEZ eleva o apropriado TypeError ou ValueError exceção com uma mensagem que descreve o erro.

Grupos (grupos) e grupos de campo (fields_)

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

Nos dados de configuração a seguir, o <authentication> elemento contém um elemento infantil correspondente ao método de autenticação do usuário:

Dentro da definição view, você pode usar a fields propriedade para acessar os elementos infantis, fornecendo a expressão XPath completa a cada elemento em relação à hierarquia de configuração selecionada. Por exemplo, se a Tabela get ou set a propriedade selecionar elementos <user> no nível de [edit system login] hierarquia, o mapeamento de itens de campo usará a seguinte expressão XPath:

Alternativamente, você pode criar um grupo que define o contexto XPath para o <authentication> 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 em 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, definir 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 de Python válidos.

O exemplo a seguir define o grupo auth e o grupo fields_authde campo correspondente. O auth grupo define o contexto para o nível de system/login/user/authentication hierarquia, e o password campo faz referência ao valor do encrypted-password elemento.

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.