Python での Junos Snapshot Administrator について テスト演算子
PythonのJunos Snapshotアドミニストレータ(JSNAPy)を使用すると、Junosデバイスのランタイム環境スナップショットをキャプチャして監査できます。 jsnapy 構成ファイルは、スナップショットの有効範囲を定義し、1 つのスナップショットまたは 2 つのスナップショットの比較に使用するテスト ファイルを指定します。 --snapcheck オプションは 1 つのスナップショットを取得して結果を評価し、 --check オプションは 2 つの個別のスナップショットの結果を比較します。テスト ファイル内では、Junos デバイスで実行するコマンド、起動する XPath、オプションの id 値、コマンド出力に対して実行するテストを指定します。テスト・ケースでは、テスト・オペレーターを使用して、1 つのスナップショット内のデータ・エレメントを評価するか、2 つの個別のスナップショット内のデータ・エレメントを比較します。
Jsnapyは、存在、等価性、不等式、サイズ、および特定の範囲またはリストからの包含または除外をテストする多数の関係演算子を提供します。特定の演算子は、文字列、数値、XML 要素など、さまざまなオペランドの種類を操作します。テスト・ケースは、実行されるチェックのタイプに関連するテスト・オペレーターを使用して構築する必要があります。使用可能な演算子のリストについては、 Python テスト演算子の Junos Snapshot Administrator の概要を参照してください。
Python の Junos Snapshot Administrator は、少数のテスト演算子を使用して、2 つの個別のスナップショット内の要素または要素の値を比較します。演算子には、 delta、 list-no-less、 list-no-more、および no-diffが含まれます。これらのテスト演算子を使用するテスト・ケースは、 --check オプションを使用すると実行されます。1 つのコレクションに固有の --snapcheck オプションを使用すると、これらのテスト演算子を使用するテスト ケースは事実上無視されます。Python の Junos Snapshot Administrator は、次のサンプル出力に示すように、テスト ケースが無視された場合にメッセージを出力します。
--------------------------------------------------------------------------- CHECKING SECTION: ospf-checks --------------------------------------------------------------------------- INFO: snapcheck mode: skipping test: list-not-less INFO: snapcheck mode: skipping test: no-diff + TEST PASSED: All OSPF neighbors are up + TEST PASSED: OSPF neighbors must have the same priority value INFO: snapcheck mode: skipping test: no-diff
2 つのスナップショットの要素値を比較する場合、最初のスナップショット データ項目を 2 番目のスナップショット データ項目にマップするには、一意の ID を作成するデータの要素を定義する必要があります。テスト ケースの一意の ID を作成するには、 id ステートメントの後に、一意の要素を参照する XPath 式を含めます。
次の例では、 name 要素の値を使用して項目を識別します。
id: name
複数の要素値に基づいて一意の ID を作成するには、次のいずれかの方法を使用します。
-
ID のリストを定義します。
id: [name, ../peer-address]
-
カンマ区切りの ID の文字列を定義します。
id: name, ../peer-address
また、適切な XPath 式を使用して、コンテンツ値に対して相対的な ID 値を構築することもできます。例えば:
id: connection-id, ../local-site-id, ancestor::instance/instance-name