Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

構造化出力を解析するためのJunos PyEZ操作テーブルの定義

概要 RPC XML出力から特定の項目を選択するカスタムテーブルを作成し、Junosデバイスから運用情報を抽出します。

Junos PyEZオペレーショナル(op) 構造化出力のテーブルは、Junosデバイスで実行されたRPCのXML出力からデータを抽出します。これにより、デバイスに関連する動作状態情報をすばやく取得して確認できます。

Junos PyEZ テーブルは YAML を使用してフォーマットされます。Op テーブル定義には、 表 1 に要約されている必須パラメーターとオプション・パラメーターをいくつか含めることができます。

表1: 構造化出力用のJunos PyEZ Opテーブルのパラメータ

テーブル パラメーター名

テーブル パラメーター

説明

テーブル名

テーブルのユーザー定義識別子。

RPC コマンド

rpc

実行する RPC の要求タグ名。

RPC の既定の引数

args

(オプション)RPC の既定のコマンド オプションと引数。

RPC オプションの引数キー

args_key

(オプション)コマンドの省略可能な最初の引数が特定のキーワードを必要としない場合のその引数への参照。

このプロパティーを含めない場合は、操作データを取得するときにメソッド引数リストに含まれる get() オプションの引数にキーワードまたはオプション名を指定する必要があります。

テーブル項目

item

データから抽出する項目を選択する要素内の <rpc-reply> 最上位要素に対する相対的な XPath 式。

これらの項目は、関連付けられたビューの参照になります。

テーブル項目キー

key

(オプション)要素を識別子として使用 <name> しない項目、または複合キーが必要な場合に、テーブル項目を一意に識別する値を持つタグを選択する XPath 式または XPath 式のリスト。

項目が識別子に要素を使用する場合は <name> 、このプロパティを省略できます。

テーブルビュー

view

テーブル項目からフィールド データを抽出するために使用されるビュー。

Junos PyEZディストリビューションに含まれている次のJunos PyEZ運用表 EthPortTableを考えてみましょう。テーブルは、ターゲットデバイス上のイーサネットインターフェイスの動作状態情報を抽出します。

以下のセクションでは、Table のさまざまなコンポーネントについて説明します。

テーブル名

テーブル名は、テーブルのユーザー定義識別子です。YAML ファイルまたは文字列には、1 つ以上のテーブルを含めることができます。YAML ドキュメントの先頭は左揃えにする必要があります。例えば:

RPC コマンド (rpc)

Junos PyEZ op 構造化出力のテーブルは、RPC の XML 出力から特定の情報を抽出します。デバイスで実行する RPC を指定するには、op テーブル定義にプロパティを含める rpc 必要があります。

rpc値は、コマンドの Junos XML リクエストタグです。例えば、 コマンドget-interface-informationshow interfacesリクエスト・タグ名は です。

要求タグは、次のいずれかの方法を使用して見つけることができます。

  • | display xml rpc Junos OS CLI で コマンドの後に オプションを追加する

  • Junos PyEZ Device インスタンス display_xml_rpc('command', format='text') メソッドの実行

  • Junos XML API Explorer でのコマンドと対応するタグの検索

RPC の既定の引数 (引数)

省略可能 args なプロパティは、RPC の既定のコマンド オプションと引数を定義します。これらは、 の下に argsインデントされたキーと値のペアとしてリストされます。既定の引数は、スクリプトでメソッドを呼び出し get() 、その既定値をオーバーライドする引数を指定しない場合に使用されます。

オプションが特定の値を必要としない単なるフラグである場合は、オプション値をテーブル定義でに設定Trueすることで、引数リストに含めることができます。たとえば、show interfaces mediaコマンドは引数 media: True. を持つ要求タグにget-interface-informationマップします。オプションに値が必要な場合は、引数の値を既定値として使用する値に設定します。

メモ:

Junos OS コマンドライン インターフェイス(CLI)のオプション名がハイフンでつながれている場合は、名前のダッシュをすべてアンダースコアに変更する必要があります。

デフォルトでは、Junos PyEZはテーブルのすべてのキーと値を正規化し、先頭と末尾の空白をすべて削除し、内部空白文字のシーケンスを単一のスペースに置き換えます。Table の正規化を無効にするには、引数リストに含めます normalize: False

RPC 省略可能な引数キー (args_key)

オプション args_key ・プロパティーは、CLI コマンドがオプション名またはキーワードを明示的に指定する必要のないオプションの最初の引数を取る場合に使用します。次の例では、 show interfaces コマンド はオプションの引数としてインターフェイス名を取ります。

このプロパティーを使用すると args_key 、オペレーショナル・データを取得するときに、キーワードまたはオプション名を明示的に指定しなくても、このオプションの引数を使用できます。

Table 定義にプロパティを含める args_key 場合は、引数値を指定できますが、データを取得するときにオプション名を省略できます。

Table 定義でプロパティを args_key 省略した場合、データを取得するときにこのパラメーターを含める場合は、オプション名を明示的に指定する必要があります。

テーブルアイテム(アイテム)

すべての op テーブル定義で必要な Table item プロパティは、RPC 出力から抽出するデータを識別します。 item 値は、目的の要素を選択するタグ内の <rpc-reply> 最上位要素に対する相対的な XPath 式です。これらの項目は、関連付けられたビューの参照になります。

以下の例は、切り捨てられた CLI コマンドの出力例を示しています。

この出力から要素を選択する <physical-interface> には、プロパティを含め item 、要素を選択する XPath を指定します。この場合、 <physical-interface> 要素は最上位 <interface-information> 要素の直接の子であり、値の XPath 式 item は単なる要素名です。

これらの項目は、関連付けられたビューの参照になります。

異なるデバイスは、同じRPCに対して異なる出力要素を出力できます。その結果、アイテムの XPath はシステムによって異なる場合があります。このプロパティでは item 、パイプ (|) 演算子を使用して暗黙的な "or" を指定し、複数の可能なノードから選択することができます。プロパティに item この演算子が含まれている場合、プロパティは key リストを使用する必要があります。例えば:

テーブル項目キー (キー)

省略可能 key なプロパティは、要素を識別子として使用 <name> しない項目、または複合キーを使用する場合に、Table 項目を一意に識別するために使用するタグを選択する XPath 式または XPath 式のリストです。

次のコマンド出力では、各 <physical-interface> 要素は子 <name> 要素によって一意に識別されます。

Table item プロパティで<physical-interface>要素が選択されている場合、既定で要素をキーとして使用する場合は<name>、Table 定義からプロパティを省略keyできます。

これに対して、次のコマンド show route brief 出力について考えてみます。

要素を選択するroute-table/rt場合、各ルートエントリを一意に識別するための対応する<name>要素はありません。<name>識別子が存在しない場合、プロパティはkey、各項目を一意に識別するタグを指定できます。この場合、キーとして使用することで<rt-destination>各項目を一意に識別route-table/rtできます。

さらに、Junos PyEZ リリース 2.3.0 以降、キーが不要であることを示す テーブル を 定義 key: Null できるようになりました。この場合、Table と View は、キーを持つ入れ子になったディクショナリではなく、単純なディクショナリとしてデータを返します。

テーブル項目は、単一の要素または複数の要素で構成されるキーによって定義できます。単一要素キーは、プロパティの値 key に単純な XPath 式を使用します。複合キーは、XPath 式のリストによって定義されます。次のテーブル定義について考えてみます。

このテーブル定義の複合キーは、次のようになります。

複合キーが欠落している要素を参照している場合、Junos PyEZ はキー Noneの値を に置き換えます。

メモ:

プロパティに key パイプ (|) 演算子が含まれている場合は、プロパティでリスト item を使用する必要があります。

このプロパティはkey、テーブルが複数の可能なノードから選択できるようにするパイプ ( | ) 演算子もサポートしています。この演算子を使用すると、異なるシステムが同じ RPC に対して異なる出力要素を出力する場合でも、同じテーブルを使用できます。たとえば、参照用にここに示されている LLDPNeighborTable は、キーとして または lldp-local-port-id 要素を選択できますlldp-local-interface

プロパティで key 演算子を使用すると | 、RPC 応答に存在する各キーがキーの一覧に追加されます。この演算子を使用して暗黙的な「または」を指定でき、異なるタイプの設定またはリリースに対して異なるタグ名が存在する場合に役立ちます。たとえば、RPC が 1 つのデバイスの識別子として返 lldp-local-interface され、同じ RPC が別のデバイスの識別子として返される lldp-local-port-id 場合、テーブルは適切なキーを自動的に選択します。

テーブル ビュー (表示)

このプロパティは view 、テーブル定義を特定のビューに関連付けます。ビューは、XPath 式を使用して、ユーザー定義フィールド名を選択したテーブル項目の要素にマップします。ビューをカスタマイズして、テーブル項目から必要な要素のみを選択できます。