Junos XML プロトコルを使用して設定データ内の要素を削除する
Junos OS を実行しているデバイスとの Junos XML プロトコル セッションでは、候補の構成データベースまたはオープンな構成データベースから構成要素(階層レベルまたは構成オブジェクト)を削除するために、クライアント アプリケーションは Junos XML プロトコルを使用した構成要素の作成、変更、削除で説明された基本的なタグ要素を出力します。Junos XML タグ要素を使用して削除する要素を表す場合、クライアント アプリケーションには、各要素の開始タグに 属性が含まれます delete="delete" 。書式設定されたASCIIテキストを使用する場合、クライアントアプリケーションは各要素の前に演算子を delete: 削除します。構成モード コマンドを使用して要素を削除する場合、クライアント アプリケーションは コマンドを delete 使用し、 要素へのパスを指定します。JSON データを使用して要素を削除する場合、クライアント アプリケーションには、その要素の属性リストに属性が含まれます "operation" : "delete" 。属性または演算子の配置は、次のセクションで説明するように、削除される要素の種類によって異なります。
Junos OSリリース16.1以降、JavaScript Object Notation(JSON)を使用してフォーマットされた設定データを読み込むことができます。
階層レベルまたはコンテナ オブジェクトの削除
Junos XML プロトコルを使用した構成要素の作成、変更、削除の説明に従って、階層レベルとそのすべての子(または識別子がないコンテナ オブジェクト)を削除するには、クライアント アプリケーションに親レベルの基本的なタグ要素または設定ステートメントが含まれています。
Junos XML タグ要素を使用する場合、アプリケーションには、レベルまたはコンテナー オブジェクトを表す空のタグに属性が含まれます delete="delete" 。
<configuration>
<!-- opening tag for each parent level -->
<level-or-object delete="delete"/>
<!-- closing tag for each parent level -->
</configuration>
フォーマットされたASCIIテキストを使用する場合、アプリケーションは削除するレベルの上に ステートメントを配置 delete: し、セミコロンが続きます(既存の設定では子ステートメントを囲む中括弧が続いています)。
<configuration-text>
/* statements for parent levels */
delete:
object-or-level;
/* closing braces for parent levels */
</configuration-text>
設定モードコマンドを使用する場合、アプリケーションは、 コマンドと、削除する階層レベルまたはオブジェクトへのステートメントパスを指定 delete します。
<configuration-set>
delete statement-path-to-level-or-object
</configuration-set>
JSON 構成データを使用して階層レベルまたはコンテナー オブジェクトを削除する場合、アプリケーションには、 階層またはコンテナー オブジェクトの属性リストに 属性が含まれます "operation" : "delete" 。
<configuration-json>
{
"configuration" : {
/* JSON objects for parent levels */
"object-or-level" : {
"@" : {
"operation" : "delete"
}
}
/* closing braces for parent levels */
}
}
</configuration-json>
以下の例は、Junos XML タグ要素を [edit protocols ospf] 使用して候補構成から階層レベルを削除する方法を示しています。
以下の例では、JSON でフォーマットされた設定データを [edit protocols ospf] 使用して、候補のコンフィギュレーションから階層レベルを削除する方法を示しています。
<rpc>
<load-configuration format="json">
<configuration-json>
{
"configuration" : {
"protocols" : {
"ospf" : {
"@" : {
"operation" : "delete"
}
}
}
}
}
</configuration-json>
</load-configuration>
</rpc>
識別子を持つ設定オブジェクトの削除
識別子を持つ設定オブジェクトを削除するには、 Junos XMLプロトコルを使用した構成要素の作成、変更、または削除の説明に従って、クライアントアプリケーションには親レベルの基本的なタグ要素または設定ステートメントが含まれています。
Junos XML タグ要素を使用する場合、アプリケーションにはオブジェクトの delete="delete" 開始タグに 属性が含まれます。オブジェクトのコンテナタグ要素では、オブジェクトの他の特性を表すタグ要素ではなく、識別子タグ要素のみを囲みます。以下では、識別子タグ要素が と呼ばれます <name>。
<configuration>
<!-- opening tag for each parent of the object -->
<object delete="delete">
<name>identifier</name>
</object>
<!-- closing tag for each parent of the object -->
</configuration>
属性は delete 、識別子タグ要素ではなく、開くコンテナタグに表示されます。識別子タグ要素が存在すると、コンテナタグ要素で表される階層レベル全体の削除ではなく、指定されたオブジェクトが削除されます。
フォーマットされたASCIIテキストを使用する場合、アプリケーションはオブジェクトとその識別子の delete: 上に ステートメントを配置します。
<configuration-text>
/* statements for parent levels of the object */
delete:
object identifier;
/* closing braces for parent levels of the object */
</configuration-text>
設定モードコマンドを使用する場合、アプリケーションは コマンド、オブジェクトへのステートメントパス、オブジェクトとその識別子を指定 delete します。
<configuration-set>
delete statement-path-to-object object identifier
</configuration-set>
JSON 構成データを使用する場合、アプリケーションにはオブジェクトの "operation" : "delete" 属性リストに属性が含まれます。コンテナオブジェクトでは、識別子を表す名前/値のペアのみを囲みます。次の例では、要素の識別子を指定する JSON メンバーのフィールド名は"name"です。
<configuration-json>
{
"configuration" : {
/* JSON objects for parent levels of the object */
"object" : [
{
"@" : {
"operation" : "delete"
},
"name" : "identifier"
}
]
/* closing braces for parent levels of the object */
}
}
</configuration-json>
次の例では、Junos XML タグ要素を使用して、候補構成の階層レベルから[edit system login user]ユーザー オブジェクトbarbaraを削除します。
次の例では、JSON 形式の設定データを使用して、候補構成の階層レベルから[edit system login user]ユーザー オブジェクトbarbaraを削除します。
<rpc>
<load-configuration format="json">
<configuration-json>
{
"configuration" : {
"system" : {
"login" : {
"user" : [
{
"@" : {
"operation" : "delete"
},
"name" : "barbara"
}
]
}
}
}
}
</configuration-json>
</load-configuration>
</rpc>
コンフィギュレーション・オブジェクトから単一値または固定形式オプションを削除する
Junos XML プロトコルを使用した構成要素の 作成、変更、削除の説明に従って、クライアント アプリケーションには、固定形式オプションまたは 1 つの値のみを取得するオプションのいずれかから削除する場合、その親レベルの基本的なタグ要素または構成ステートメントが含まれます。(複数の値を取得できるオプションを削除する方法については、 構成オブジェクトの複数値オプションから値を削除するを参照してください)。
Junos XML タグエレメントを使用する場合、アプリケーションには各オプションの空のタグに 属性が含まれます delete="delete" 。設定に残る子のタグ要素は含まれていません。以下では、オブジェクトの識別子タグ要素が と呼ばれます <name>。
<configuration>
<!-- opening tag for each parent of the object -->
<object>
<name>identifier</name> <!-- if object has an identifier -->
<option1 delete="delete"/>
<option2 delete="delete"/>
<!-- tag elements for other options to delete -->
</object>
<!-- closing tag for each parent of the object -->
</configuration>
フォーマットされたASCIIテキストを使用する場合、アプリケーションは各 オプションの上に ステートメントを delete: 配置します。
<configuration-text>
/* statements for parent levels of the object */
object identifier;
delete:
option1;
delete:
option2;
/* closing braces for parent levels of the object */
</configuration-text>
設定モードコマンドを使用する場合、アプリケーションは、 コマンド、オプションへのステートメントパス、および削除するオプションを指定 delete します。オプションステートメントへのフルパスを指定するか、オブジェクトの階層レベルに移動し、その場所から オ プションステートメントを削除することができます。各オプションを削除するには、別のコマンドを使用します。
<configuration-set>
delete statement-path-to-object object identifier option1
delete statement-path-to-object object identifier option2
</configuration-set>
<configuration-set>
edit statement-path-to-object object identifier
delete option1
delete option2
</configuration-set>
JSON 構成データを使用してオプションを削除する場合、アプリケーションには、そのオプションの属性リストに 属性が含まれます "operation" : "delete" 。階層レベルまたはコンテナー オブジェクトのオプションを削除するには、そのレベルで削除するオプションを指定します。
<configuration-json>
{
"configuration" : {
/* JSON objects for parent levels */
"level-or-object" : {
"@option1" : {
"operation" : "delete"
},
"@option2" : {
"operation" : "delete"
}
}
/* closing braces for parent levels */
}
}
</configuration-json>
識別子を持つオブジェクトのオプションを削除するには、まず識別子を含めて、削除するオプションを指定します。次の例では、要素の識別子を指定する JSON メンバーのフィールド名は"name"です。
<configuration-json>
{
"configuration" : {
/* JSON objects for parent levels of the object */
"object" : [
{
"name" : "identifier",
"@option1" : {
"operation" : "delete"
},
"@option2" : {
"operation" : "delete"
}
}
]
/* closing braces for parent levels of the object */
}
}
</configuration-json>
以下の例では、Junos XML タグ要素を使用して、 階層レベルで固定形式 disable オプションを [edit forwarding-options sampling] 削除する方法を示しています。
設定オブジェクトの複数値オプションからの値の削除
「設定ステートメントをJunos XMLタグ要素にマッピングする」で説明されているように、一部のJunos OS設定オブジェクトは、複数の値を持つリーフステートメントです。フォーマットされたASCII CLI表現では、値はオブジェクトの名前に従って角括弧で囲まれています。
object [value1 value2 value3 ...];
Junos XML 表現は、オブジェクトに親タグを使用せず、値ごとにオブジェクト タグ要素の個別のインスタンスを使用します。以下では、識別子タグ要素が と呼ばれます <name>。
<parent-object>
<name>identifier</name>
<object>value1</object>
<object>value2</object>
<object>value3</object>
</parent-object>
このようなオブジェクトの 1 つ以上の値を削除するには、 Junos XML プロトコルを使用した構成要素の作成、変更、削除で説明されているように、クライアント アプリケーションには親レベルの基本的なタグ要素または構成ステートメントが含まれています。Junos XML タグ要素を使用する場合、アプリケーションには、値ごとに開始タグに 属性が含まれます delete="delete" 。保持する値を表すタグ要素は含まれません。以下では、親オブジェクトの識別子タグ要素が と呼ばれます <name>。
<configuration>
<!-- opening tag for each parent of the parent object -->
<parent-object>
<name>identifier</name>
<object delete="delete">value1</object>
<object delete="delete">value2</object>
</parent-object>
<!-- closing tag for each parent of the parent object -->
</configuration>
フォーマットされたASCIIテキストを使用する場合、アプリケーションは値ごとに親ステートメントを繰り返し、ペアになった各ステートメントと値の delete: 上に ステートメントを配置します。
<configuration-text>
/* statements for parent levels of the parent object */
parent-object identifier;
delete:
object value1;
delete:
object value2;
/* closing braces for parent levels of the parent object */
</configuration-text>
設定モードコマンドを使用する場合、アプリケーションは、 コマンド、各値へのステートメントパス、および削除する値を指定 delete します。値へのフルパスを指定するか、オブジェクトの階層レベルに移動して、その場所から値を削除することができます。各値を削除するには、別のコマンドを使用します。
<configuration-set>
delete statement-path-to-parent-object parent-object identifier object value1
delete statement-path-to-parent-object parent-object identifier object value2
</configuration-set>
<configuration-set>
edit statement-path-to-parent-object parent-object identifier object
delete value1
delete value2
</configuration-set>
複数値オプションを持つオブジェクトの JSON 表現は、フィールド名がオブジェクト名であり、オプションを表す値が文字列の配列である名前/値のペアです。Junos OSは、JSONを使用して複数値オプションを持つオブジェクトから単一の値を削除することをサポートしていません。オプションリストを更新するには、既存のオブジェクトを削除し、目的の値セットで新しいオブジェクトを設定する必要があります。
以下の例では、Junos XMLタグ要素を使用して、ログインクラスに付与された2つの権限を削除する user-accounts 方法を示しています。