Junos XML プロトコルを使用して設定データ内の要素を並べ替える
ほとんどの設定オブジェクトでは、Junos OS設定管理ソフトウェアが設定階層の所定の位置に設定オブジェクトを保存および表示するため、オブジェクトまたはその子が作成される順序は重要ではありません。ただし、ルーティング ポリシーやファイアウォール フィルターなどの一部の構成オブジェクトは、意図したルーティング動作を生成するために順番に処理および分析する必要がある要素で構成されています。クライアント アプリケーションが Junos XML 管理プロトコルを使用して新しい要素を順序指定済みセットに追加すると、要素は既存の要素のリストに追加されます。クライアントアプリケーションは、必要に応じて要素を並べ替えることができます。
Junos OS を実行しているデバイスとの Junos XML プロトコル セッションでは、順序指定されたセット内の構成要素の順序を変更するために、クライアント アプリケーションには、まず Junos XML プロトコルを使用した構成要素の作成、変更、削除で説明されているタグ要素が含まれます。Junos XML タグ要素を使用する場合、アプリケーションは順序付けられたセットを表すコンテナタグ要素を発行し、移動する構成要素の識別子ごとにタグ要素を囲みます。次の例では、識別子タグ要素が と呼ばれます <name>。
順序指定されたセット内の最初の位置に既存の要素を移動するには、アプリケーションには、その要素の開始コンテナー タグに属性が含まれています insert="first" 。
<configuration>
<!-- opening tag for each parent of the set -->
<ordered-set insert="first">
<name>identifier-for-moving-object</name>
</ordered-set>
<!-- closing tag for each parent of the set -->
</configuration>
別の要素に対して相対的な位置に既存の要素を移動するには、アプリケーションは、セット内の別の参照要素に対して移動要素の新しい位置を示す、 または insert="after" 属性を開口部のコンテナ タグに含めますinsert="before"。参照要素を識別するために、順序付けられたセットの開始コンテナタグの属性として、参照要素の識別子をそれぞれ含めます。
次の例では、セット内の要素には、 と呼ばれる <name>1つの 識別子があります。
<configuration>
<!-- opening tag for each parent of the set -->
<ordered-set insert="(before | after)" name="referent-value">
<name>identifier-for-moving-object</name>
</ordered-set>
<!-- closing tag for each parent of the set -->
</configuration>
次の例では、セット内の各要素には 2 つの識別子があります。開始タグは、読みやすさのみを目的として 2 行に表示されます。
<configuration>
<!-- opening tag for each parent of the set -->
<ordered-set insert="(before | after)" identifier1="referent-value"
identifier2="referent-value">
<identifier1>value-for-moving-object</identifier1>
<identifier2>value-for-moving-object</identifier2>
</ordered-set>
<!-- closing tag for each parent of the set -->
</configuration>
属性を insert または active 属性とinactive組み合わせて、並べ替え時に構成要素を無効化または再活性化できます。詳細については、 Junos XMLプロトコルを使用した他の変更と同時に構成要素のアクティベーション状態を変更するを参照してください。
設定モードコマンドを使用して要素を並べ替える場合、アプリケーションはCLI設定モードコマンドと同等のコマンドを指定 insert します。
<configuration-set>
insert statement-path-to-object identifier-for-moving-object (before | after) referent-value
</configuration-set>
属性 insert="first" に同等のCLI設定モードコマンドはありません。
設定データを表すために書式設定されたASCIIテキストまたはJSONを使用する場合、並べ替え操作は使用できません。
以下の例では、 階層レベルで定義された と呼ばれる older-filterファイアウォールフィルターを移動し、Junos XMLタグ要素を [edit firewall filter] 使用して呼び出された newer-filter 別のフィルターの後に配置する方法を示しています。この操作は、以下の設定モード コマンドと同じです。
[edit] user@host# insert firewall family inet filter older-filter after filter newer-filter
以下の例は、 という名前 older-filterのファイアウォールフィルターを 階層レベルで定義して移動し、設定モードコマンドを [edit firewall filter] 使用して呼び出された newer-filter 別のフィルターの後に配置する方法を示しています。
<rpc>
<load-configuration action="set" format="text">
<configuration-set>
insert firewall family inet filter older-filter after filter newer-filter
</configuration-set>
</load-configuration>
</rpc>
以下の例では、 階層レベルで定義されたOSPF仮想リンクを移動する方法を[edit protocols ospf area area]示しています。識別子neighbor-id 192.168.0.3を持つリンクは、 transit-area 10.10.10.1 と を持つリンクの前に移動しますneighbor-id 192.168.0.5transit-area 10.10.10.2。この操作は、以下の設定モード コマンドと同じです。
[edit protocols ospf area area] user@host# insert virtual-link neighbor-id 192.168.0.3 transit-area 10.10.10.1 before virtual-link neighbor-id 192.168.0.5 transit-area 10.10.10.2
クライアント アプリケーション
<rpc>
<load-configuration>
<configuration>
<protocols>
<ospf>
<area>
<name>area</name>
<virtual-link insert="before" neighbor-id="192.168.0.5" transit-area="10.10.10.2">
<neighbor-id>192.168.0.3</neighbor-id>
<transit-area>10.10.10.1</transit-area>
</virtual-link>
</area>
</ospf>
</protocols>
</configuration>
</load-configuration>
</rpc>
Junos XML プロトコル サーバー
<rpc-reply xmlns:junos="URL">
<load-configuration-results>
<load-success/>
</load-configuration-results>
</rpc-reply>