禁止为 Junos PyEZ 应用程序中的警告引发的 RpcError 异常
总结 对于 Junos PyEZ 应用程序中的某些操作,您可以禁止显示 RpcError
为响应严重性为警告的元素而 <rpc-error>
引发的异常。
Junos PyEZ 使您能够在 Junos 设备上执行操作和配置任务。在 Junos PyEZ 应用程序中,当您调用特定方法或执行按需 RPC 时,Junos PyEZ 会将相应的 RPC 发送到设备以执行操作或检索请求的信息。如果 RPC 回复包含 <rpc-error>
严重性为警告或更高的元素,Junos PyEZ 应用程序将引发 RpcError
异常。
在某些情况下,可能有必要或希望禁止显示RpcError
为响应警告而引发的异常。您可以通过在方法调用或 RPC 调用中包含参数来ignore_warning
指示 Junos PyEZ 应用程序抑制RpcError
为警告引发的异常。该ignore_warning
参数采用布尔值、字符串或字符串列表。您可以指示设备忽略所有警告或一个或多个特定警告。
可以在以下jnpr.junos.utils.config.Config
类方法中使用该ignore_warning
参数:
-
commit()
-
diff()
-
load()
-
pdiff()
-
rollback()
在使用 RPC 检索get()
配置和状态数据时,也可以使用ignore_warning
。
忽略所有警告
若要指示应用程序忽略操作或 RPC 的所有警告,请在ignore_warning=True
方法调用或 RPC 调用中包含参数。下面的示例忽略 和load()
commit()
方法的所有警告:
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()
如果包括 ignore_warning=True
并且所有 <rpc-error>
元素的严重性均为警告,则应用程序将忽略所有警告,并且不会引发 RpcError
异常。但是,任何 <rpc-error>
具有较高严重性的元素仍将引发异常。
忽略特定警告
若要指示应用程序忽略特定警告,请将参数设置为 ignore_warning
字符串或包含要忽略的警告的字符串列表。当设置为字符串或字符串列表时 ignore_warning
,字符串将用作不区分大小写的正则表达式。如果字符串仅包含字母数字字符,则会导致不区分大小写的子字符串匹配。但是,您可以包含库支持 re
的任何正则表达式模式以匹配警告。
以下 Junos PyEZ 应用程序在提交操作期间忽略两个特定警告。如果所有元素的<rpc-error>
严重性都为警告,并且响应中的每个警告都与一个或多个指定的字符串匹配,则应用程序将RpcError
禁止异常。
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()