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