Junos PyEZ 애플리케이션의 경고에 대해 발생하는 RpcError 예외 억제
특정 Junos PyEZ 작업의 경우, 심각도 수준이 경고인 요소에 대한 <rpc-error> 응답으로 발생한 예외를 억제 RpcError 할 수 있습니다.
Junos PyEZ를 사용하면 Junos OS를 실행하는 디바이스와 진화한 Junos OS를 실행하는 디바이스에서 운영 및 구성 작업을 수행할 수 있습니다. Junos PyEZ 애플리케이션이 특정 메서드를 호출하거나 온디맨드 RPC를 실행하면 Junos PyEZ는 적절한 RPC를 디바이스로 전송하여 작업을 수행하거나 요청된 정보를 검색합니다. RPC 응답에 심각도 수준 경고 이상의 요소가 포함된 <rpc-error> 경우 Junos PyEZ는 예외를 발생시킵니다 RpcError .
특정 경우에는 경고에 대한 응답으로 발생하는 예외를 RpcError 표시하지 않는 것이 필요하거나 바람직할 수 있습니다. Junos PyEZ 애플리케이션은 메서드 호출 또는 RPC 호출에 인수를 포함하여 ignore_warning 이러한 RpcError 예외를 억제할 수 있습니다. ignore_warning 인수는 부울, 문자열 또는 문자열 목록을 사용합니다. 디바이스에 모든 경고 또는 하나 이상의 특정 경고를 무시하도록 지시할 수 있습니다.
다음과 같은 경우 인수를 포함 ignore_warning 할 수 있습니다.
-
RPC를
get()사용하여 구성 또는 상태 데이터를 검색합니다. -
다음
jnpr.junos.utils.config.Config클래스 메서드를 호출합니다.-
commit() -
diff() -
load() -
pdiff() -
rollback()
-
모든 경고 무시
작업 또는 RPC에 대한 모든 경고를 무시하도록 애플리케이션에 지시하려면 메서드 호출 또는 RPC 호출에 인수를 포함 ignore_warning=True 합니다. 다음 예제에서는 and commit() 메서드에 대한 모든 경고를 무시합니다.load()
from jnpr.junos import Device
from jnpr.junos.utils.config import Config
from lxml import etree
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 애플리케이션은 커밋 작업 중에 두 가지 특정 경고를 무시합니다. 애플리케이션은 RpcError 모든 요소의 <rpc-error> 심각도가 경고이고 응답의 각 경고가 지정된 문자열 중 하나 이상과 일치하는 경우 예외를 표시하지 않습니다.
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()