Junos PyEZアプリケーションで警告のために発生するRpcError例外を抑制する
特定のJunos PyEZ 操作では、重大度レベルが警告RpcError<rpc-error>要素に応答して発生する例外を抑制できます。
PyEZ Junos、Junos OSを実行しているデバイスやJunos OS Evolvedを実行しているデバイス上で運用および設定タスクを実行できます。Junos PyEZアプリケーションが特定のメソッドを呼び出したり、オンデマンドRPCを実行したりすると、Junos PyEZは適切なRPCをデバイスに送信して操作を実行したり、要求された情報を取得したりします。RPC 応答に重大度レベルが警告以上の <rpc-error> 要素が含まれている場合、Junos PyEZ は RpcError 例外を発生させます。
場合によっては、警告に応答して発生するRpcError例外を抑制することが必要または望ましい場合があります。Junos PyEZ アプリケーションは、メソッド呼び出しまたは RPC 呼び出しに ignore_warning 引数を含めることで、これらのRpcError例外を抑制できます。ignore_warning引数は、ブール値、文字列、または文字列のリストを取ります。すべての警告または1つ以上の特定の警告を無視するようにデバイスに指示できます。
次の場合に ignore_warning 引数を含めることができます。
-
get()RPCを使用して、設定または状態データを取得します。 -
次の
jnpr.junos.utils.config.Configクラスメソッドを呼び出します。-
commit() -
diff() -
load() -
pdiff() -
rollback()
-
すべての警告を無視する
操作または RPC に関するすべての警告を無視するようにアプリケーションに指示するには、メソッド呼び出しまたは RPC 呼び出しに ignore_warning=True 引数を含めます。次の例では、 load() メソッドと commit() メソッドに関するすべての警告を無視しています。
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アプリケーションは、コミット操作中に2つの特定の警告を無視します。アプリケーションは、すべての<rpc-error>要素の重大度が警告であり、応答の各警告が指定された文字列の 1 つ以上に一致する場合、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()