Suprime as exceções do RpcError levantadas para avisos em aplicativos Junos PyEZ
RESUMO Para determinadas operações em um aplicativo Junos PyEZ, você pode suprimir RpcError
exceções que são levantadas em resposta a <rpc-error>
elementos que têm uma gravidade de aviso.
O Junos PyEZ permite que você realize tarefas operacionais e de configuração em dispositivos Junos. Em um aplicativo Junos PyEZ, quando você liga para métodos específicos ou executa RPCs sob demanda, o Junos PyEZ envia os RPCs apropriados para o dispositivo para realizar a operação ou recuperar as informações solicitadas. Se a resposta rpc contém <rpc-error>
elementos com gravidade de aviso ou superior, o aplicativo Junos PyEZ levanta uma exceção RpcError
.
Em certos casos, pode ser necessário ou desejável suprimir as RpcError
exceções que são levantadas em resposta a avisos. Você pode instruir um aplicativo Junos PyEZ a suprimir RpcError
exceções levantadas para advertências, incluindo o ignore_warning
argumento na chamada de método ou invocação do RPC. O ignore_warning
argumento requer um Boolean, uma corda, ou uma lista de cordas. Você pode instruir o dispositivo a ignorar todos os avisos ou um ou mais avisos específicos.
Você pode usar o ignore_warning
argumento nos seguintes jnpr.junos.utils.config.Config
métodos de classe:
-
commit()
-
diff()
-
load()
-
pdiff()
-
rollback()
Você também pode usar ignore_warning
quando recuperar a configuração e os dados de estado com o get()
RPC.
Ignore todos os avisos
Para instruir o aplicativo a ignorar todos os avisos para uma operação ou RPC, inclua o ignore_warning=True
argumento na chamada de método ou invocação de RPC. O exemplo a seguir ignora todos os avisos e load()
commit()
métodos:
from jnpr.junos import Device from jnpr.junos.utils.config import Config dev = Device(host='router1.example.com') dev.open() with Config(dev, mode='exclusive') as cu: cu.load(path='mx-config.conf', ignore_warning=True) cu.commit(ignore_warning=True) data = dev.rpc.get_configuration() print(etree.tostring(data, encoding='unicode')) dev.close()
Se você incluir ignore_warning=True
e todos os <rpc-error>
elementos tiverem uma gravidade de aviso, o aplicativo ignora todos os avisos e não levanta uma exceção RpcError
. No entanto, quaisquer <rpc-error>
elementos com níveis de gravidade mais altos ainda levantarão exceções.
Ignore avisos específicos
Para instruir o aplicativo a ignorar avisos específicos, defina o ignore_warning
argumento para uma string ou uma lista de strings contendo os avisos a ignorar. Quando ignore_warning
está definido para uma corda ou lista de cordas, a corda é usada como uma expressão regular insensível ao caso. Se uma corda contém apenas caracteres alfanuméricos, ela resulta em uma combinação de sub-cordão insensível ao caso. No entanto, você pode incluir qualquer padrão de expressão regular suportado pela re
biblioteca para combinar avisos.
O aplicativo Junos PyEZ a seguir ignora dois avisos específicos durante a operação de confirmação. O aplicativo suprime RpcError
exceções se todos os <rpc-error>
elementos tiverem uma gravidade de aviso e cada aviso na resposta corresponde a uma ou mais das strings especificadas.
from jnpr.junos import Device from jnpr.junos.utils.config import Config commit_warnings = ['Advertisement-interval is less than four times', 'Chassis configuration for network services has been changed.'] dev = Device(host='router1.example.com') dev.open() with Config(dev, mode='exclusive') as cu: cu.load(path='mx-config.conf') cu.commit(ignore_warning=commit_warnings) dev.close()