Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos PyEZ設定テーブルのビューの定義

Junos PyEZ設定テーブルでは、Junosデバイスの選択した設定データベースから特定のデータを抽出したり、Junosデバイスのプログラムによる設定に使用できる構造化リソースを定義することができます。テーブルは、テーブル データ内の要素を選択して参照するために使用されるビューに関連付けられます。テーブルを特定のビューに関連付けるには、ビュー名を引数として受け取るプロパティをテーブル定義に含め view ます。

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

または set プロパティを持つgetテーブルを使用して構成データを取得する場合、[ビュー] フィールドは、アプリケーションがオブジェクトに対して取得する構成データを指定します。プロパティを含みset、デバイスで構成できるリソースを定義するテーブルの場合、ビューで定義されたフィールドは、そのリソースに対して構成できるステートメントを制限します。

Junos PyEZ ビューは、テーブルと同様に、YAML を使用してフォーマットされます。構成に関連付けられたビュー定義 表には、 表 1 に要約されているいくつかのパラメーターを含めることができます。

表 1: Junos PyEZ コンフィギュレーション ビューのパラメータ

ビュー パラメータ名

ビューパラメータ

テーブルの種類

説明

ビュー名

get または set

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

フィールド項目

fields

get または set

ユーザー定義フィールド名を、設定データ内の要素を選択する XPath 式にマップするキーと値のペアの連想配列 (ディクショナリ)。フィールド名は、有効な Python 変数名である必要があります。XPath 式は、そのテーブルの または set プロパティによってget定義されたコンテキストを基準にしています。

テーブル スコープ getで が使用されている場合、フィールドは構成から抽出するデータを識別します。Table スコープ setで を使用する場合、フィールドは、操作に応じて構成または取得できる要素を識別します。

フィールドグループ

fields_group

get または set

ユーザー定義フィールド名を、設定データ内の要素を選択する XPath 式にマップするキーと値のペアの連想配列 (ディクショナリ)。フィールド名は、有効な Python 変数名である必要があります。XPath 式は、対応する groups パラメーターによって設定されたコンテキストを基準にしています。

テーブル スコープ getで が使用されている場合、フィールドは構成から抽出するデータを識別します。Table スコープ setで を使用する場合、フィールドは、操作に応じて構成または取得できる要素を識別します。

グループ

groups

get または set

ユーザー定義グループ名を、そのグループ内のフィールドの XPath コンテキストを設定する XPath 式にマップする、キーと値のペアの連想配列 (ディクショナリ)。Xpath 式は、その Table の または get set プロパティで定義されたコンテキストを基準にしています。

次のJunos PyEZ構成テーブルとビューについて考えてみます。 UserTableプロパティを含む get は、ターゲット・デバイス上のユーザー・アカウントの構成データを抽出します。 UserConfigTableプロパティーを含む は set 、ターゲット・デバイス上のユーザー・アカウントの構成およびユーザー・アカウントの構成データの取得に使用できる構造化された構成リソースを定義します。

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

ビュー名

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

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

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

または set プロパティのいずれかを含むgetテーブルを使用して構成データを取得する場合、ビューで定義されたフィールドは、構成から抽出するステートメントを識別します。プロパティを含みset、デバイスで構成できるリソースを定義するテーブルの場合、フィールドはそのリソースに対して構成できるステートメントを識別します。構成リソースのすべての識別子要素のフィールドを明示的に定義する必要があります。これらの識別子フィールドは、key-field対応する Table 定義のプロパティで参照されます。

次の構成階層の例を考えてみます。

Table get またはsetパラメーターでスコープsystem/login/userが と定義されている場合、ビュー定義の各フィールドの XPath 式は、そのコンテキストに対する相対パスになります。次のビュー定義は、ユーザー定義フィールド名 username、 、および uid を要素の子要素<user>userclassにマップします。

Table 定義にプロパティが含まれている場合setは、オブジェクトを一意に識別する識別子要素 (この場合<name>は ) のフィールドを明示的に定義する必要があります。Table のプロパティは、key-fieldオブジェクトの識別子要素にマップされるすべての View フィールドを参照する必要があります。テーブル の プロパティsetkey-fieldプロパティでfields少なくとも 1 つの識別子要素を常に定義する必要があります。

Python スクリプトでは、変数プロパティとして View アイテムにアクセスできます。

メモ:

構成データを取得する場合、データ内に要素を持つ <name> 各オブジェクトには、その要素の値にアクセスするために使用できる既定の name プロパティがあります。

ビュー フィールドには、そのビューを参照するテーブルの種類に応じて異なるオプションを含めることができます。構造化された構成リソース(set)を定義するテーブルには、Junos PyEZアプリケーションがデバイス上でリソースを構成する際に有効なデータを提供することを確認するために、各フィールドのタイプと制約のチェックを含めることができます。構成データ (get) を取得するテーブルには、特定の要素の属性値を返すオプションや、アプリケーションで使用するデータ型を指定するオプションを含めることができます。フィールドオプション ('get' テーブル)フィールドオプション ('set' テーブル) は、それぞれテーブルとテーブルを使用するgetsetときに含めることができるオプションの概要を説明します。

フィールドオプション ('get' テーブル)

プロパティを含み get 、デバイスから構成データのみを取得するテーブルでは、関連付けられたビューのフィールドに対して多数のオプションまたは演算子を定義できます。このセクションでは、さまざまなオプションの概要を説明します。

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

次の構文を使用して、フィールド アイテムの値をブール値に設定することもできます。

要素の値は、に渡され regex()た正規表現に対して評価されます。要素の値が式と一致する場合、フィールド アイテムの値は、形式で定義されたブール値に設定されます。次の例では、 superuser 要素の値に 'super-user' が含まれている場合、 class フィールドは True に設定されます。

Junos PyEZは、 group 設定ビューのフィールドの演算子も提供します。この 演算子を使用すると group 、Junos 設定グループから継承された要素の属性の値 junos:group にアクセスできます。この値は、その要素が継承されたグループを示します。

例えば、以下の設定では、 remote 階層レベルで設定した設定グループから global ユーザーを継承しています [edit groups global]

フィールド マッピングに 演算子を含めてgroup、要素の値ではなく属性junos:groupの値を参照します。次の例では、uidgroup演算子で フィールドと fullgroup フィールドを定義していますgroup。スクリプトでこれらのフィールド名にアクセスすると、フィールドは または full-name 要素に関連付けられた属性の値junos:groupを参照しますuid

フィールドオプション (「設定」テーブル)

構造化された構成リソース(set)を定義するテーブルには、Junos PyEZアプリケーションがデバイス上でリソースを構成する際に有効なデータを提供することを確認するために、関連するビューの各フィールドのタイプと制約チェックを含めることができます。型チェックは、Junos PyEZアプリケーションが特定のリソースに対してステートメントを設定する際に、正しいデータ型を提供することを確認します。制約チェックを使用すると、ステートメントのデフォルト値を定義し、アプリケーションがそれらのステートメントに対して正しい範囲内の値を提供することを確認できます。このセクションでは、関連付けられたビューのフィールドのオプションとして含まれている、サポートされている型と制約のチェックについて説明します。

表 2 および 表 3 は、構成表のビュー set のフィールドに定義できるタイプ検査と制約検査をそれぞれ要約したものです。型チェックは相互に排他的ですが、フィールドごとに複数の制約チェックを定義できます。

表 2: 'set' 構成テーブルの型チェック

type

説明

bool

フィールドは、 または の True ブール値のみを受け入れます False

enable: { 'enable' : { 'type': 'bool' } }

enum

フィールドは、リストで定義されている enum 値の 1 つだけを受け入れます

enc : { 'encapsulation' : {'type' : { 'enum' : ['vlan-ccc','vlan-vpls'] }}}

float

フィールドは浮動小数点値のみを受け入れます

drift : { 'clock-drift' : { 'type' : 'float' } }

int

フィールドは整数値のみを受け入れます

uid: { 'uid' : { 'type' : 'int' } }

str

フィールドは文字列値のみを受け入れます

name: { 'name': {'type': 'str' } }

表 3: 'set' 構成テーブルの制約チェック

制約チェック名

説明

default

フィールドの既定値。

ユーザーがフィールドを明示的に構成しない場合、フィールドはデフォルト値を使用します。ユーザーがメソッドを呼び出して reset() アプリケーションのフィールド値をリセットすると、既定値が定義されているフィールドはその値に設定されます。

native_vlan : { 'native-vlan-id' : { 'type' : 'int', 'default' : 501 } }

maxValue

フィールド typeに基づいて解釈されるフィールドの最大値。

native_vlan : { 'native-vlan-id' : { 'type' : 'int', 'minValue' : 0, 'maxValue' : 4094 } }

minValue

フィールドの最小値は、フィールド typeに基づいて解釈されます。

native_vlan : { 'native-vlan-id' : { 'type' : 'int', 'minValue' : 0, 'maxValue' : 4094 } }

1 つのフィールドに定義できる型チェックは 1 つだけですが、複数の制約チェックを定義できます。したがって、フィールドには、値、最小値 (minValue)、および最大値 (maxValue) を含めることができますdefault

minValueおよび maxValue オプションは、オプションの値typeに基づいて解釈されます。既定では、フィールド値は文字列です。文字列の場合、minValueおよび maxValue は文字列の最小長と最大長です。整数と浮動小数点数の場合、値はその型の最小値と最大値です。

フィールドに型または制約のチェックを含め、ユーザーがチェックに失敗した設定データを提供すると、Junos PyEZ アプリケーションは適切な TypeError ValueError または 例外を発生させ、エラーを説明するメッセージを表示します。

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

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

次の構成データでは、要素には <authentication> ユーザーの認証方法に対応する子要素が含まれています。

ビュー定義内では、このプロパティを使用してfields、選択した構成階層を基準とした各要素に完全な XPath 式を提供することで、子要素にアクセスできます。たとえば、Table get またはsetプロパティが階層レベルで要素[edit system login]を選択する<user>場合、フィールド項目マッピングでは次の XPath 式が使用されます。

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

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

次の例では、グループ auth および対応するフィールドグループ fields_authを定義します。 auth グループはコンテキストを階層レベルに設定 system/login/user/authentication し、フィールドは password 要素の値を参照します encrypted-password

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