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