Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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

構造化出力の Junos PyEZ 運用(op)テーブルは、Junos デバイス上で実行される RPC の XML 出力から特定のデータを選択します。テーブルは、テーブルアイテム内のフィールドにアクセスし、ユーザー定義のPython変数にマップするために使用されるビューに関連付けられています。テーブルを特定のビューに関連付けるには、テーブル定義にプロパティを view 含めて、引数としてビュー名を取得します。

ビューは、選択したテーブル項目内の XML 要素にユーザー定義の変数をマップします。ビューを使用すると、Python で操作できるプロパティを持つ変数として、出力内の特定のフィールドにアクセスできます。Junos PyEZは、データの抽出、あらゆるタイプの変換やデータ正規化を処理します。ビューで定義されたキーは、有効な Python 変数名である必要があります。

Junos PyEZ ビューは、テーブルと同様に、YAML を使用してフォーマットされます。構造化された出力を解析するビューには、 表 1 に要約された多数のパラメーターを含めることができます。

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

パラメータ名を表示

[パラメータを表示]

説明

名前を表示

ビューのユーザー定義識別子。

フィールド項目

fields

ユーザー定義のフィールド名をテーブル項目内の要素を選択する XPath 式にマップするキーと値のペアの連想配列(辞書)。フィールド名は有効な Python 変数名である必要があります。

フィールド グループ

fields_group

ユーザー定義のフィールド名をテーブル項目内の要素を選択する XPath 式にマップするキーと値のペアの連想配列(辞書)。XPath 式は、対応するグループ パラメーターによって設定されたコンテキストに対して相対的です。フィールド名は有効な Python 変数名である必要があります。

グループ

groups

ユーザー定義のグループ名を XPath 式にマッピングするキー値ペアの連想配列(または辞書)が、そのグループ内のフィールドに XPath コンテキストを設定します。

Junos PyEZ ディストリビューションに含まれている以下の Junos PyEZ op Table and View を検討してください。表は、ターゲット デバイス上のイーサネット インターフェイスの運用状態情報を抽出します。

以下のセクションでは、ビューの各コンポーネントについて説明します。

名前を表示

ビュー名は、ビューのユーザー定義の識別子です。テーブルを特定の View に関連付けるには、テーブル定義にプロパティを view 含め、引数としてビュー名を指定します。例えば:

フィールド(フィールド)

選択したテーブル項目から必要な要素のみを参照するように、ビューをカスタマイズします。これを fields 行うには、プロパティと、ユーザー定義のフィールド名のマッピングを含む連想配列を含め、 Table 項目から目的の要素を選択する XPath 式を使用します。フィールド名は有効な Python 変数名である必要があります。XPath 式は、Table アイテムのコンテキストに対して相対的です。

次のサンプル RPC 出力を検討してください。

Table item パラメーターが出力から要素を選択 <physical-interface> した場合、ビュー定義内の各フィールドの XPath 式は、そのコンテキストに対して相対的です。次のビュー定義は、各ユーザー定義フィールド名を要素の子要素に <physical-interface> マッピングします。

Python スクリプトでは、変数プロパティとして View アイテムにアクセスできます。既定では、各 View アイテムには name 、そのアイテムを一意に識別するキーを参照するプロパティがあります。

フィールドの形式によって、フィールドの値の型が決まります。デフォルトでは、フィールド値は文字列として格納されます。フィールドマッピングでフィールド値に異なるタイプを指定できます。次の例では、要素の値を mtu 整数として定義しています。

RPC出力では、一部のJunos XML要素は、フラグとして機能する空の要素です。フィールドがフィールドマッピングのフラグであることを明示的に示すことができます。フィールド項目の値、 フラグは True 要素が出力に存在する場合とFalse要素がない場合。次の例では、要素を ifdf-running フラグとして定義します。

また、以下の構文を使用して、フィールド項目値をブール値に設定することもできます。

要素の値は、 に渡された正規表現に対して regex()評価されます。要素の値が式に一致する場合、フィールド項目の値は形式で定義されたブール値に設定されます。以下の例では、要素の oper_status_downoper-status に 'down' が含まれている場合、フィールドは True に設定されます。

また、より複雑な正規表現を使用し、複数の値にマッチさせることもできます。要素内 rt-destination のアドレスが'198.51.'で始まる場合、次のフィールド項目が True に設定されます。

要素に正規表現でいずれかの値が含まれている場合、 no-refresh 次のフィールド項目が True に設定されます。

グループ(グループ)とフィールドグループ(fields_)

グループを選択し、テーブル項目内の特定のノード セット内の要素を参照するショートカット メソッドを提供します。

以下の RPC 出力では、 <if-device-flags> エレメントには CLI 出力の フィールドに表示される Device flags 値に対応する複数の子エレメントが含まれています。

ビュー定義内で、プロパティを fields 使用して子要素にアクセスするには、選択したテーブル 項目に対する各要素に完全な XPath 式を提供します。たとえば、EthPortTable 定義で項目が選択 <physical-interface> された場合、フィールド アイテム マッピングは次の XPath 式を使用します。

または、要素にコンテキストを設定するグループを作成し、そのコンテキストに対して <if-device-flags> XPath 式を提供するフィールド グループ項目を定義することもできます。ビュー定義内で任意の数のグループを定義できます。

グループを作成するには、プロパティを groups 含め、ユーザー定義のグループ名を、新しいコンテキストを定義する XPath 式にマッピングします。次に、名前の後にグループ名が fields_ 続くフィールドグループを定義します。フィールド グループは、ユーザー定義のフィールド名を XPath 式にマッピングするを含む連想配列で、XPath 式内 groupsのコンテキスト セットを基準にしています。フィールド名は有効な Python 変数名である必要があります。

以下の例では、グループflagsと対応するフィールドグループfields_flagsを定義しています。グループはflags、 階層レベルにコンテキストをphysical-interface/if-device-flags設定しpresent、 フィールドはそれぞれ と running ifdf-running 要素の値にifdf-presentアクセスします。

フィールドまたはフィールド グループを使用する場合でも、Junos PyEZ スクリプト内でユーザー定義のフィールド名を使用して、同じ方法で値にアクセスできます。