将配置语句映射到 Junos XML 标记元素
Junos XML API 定义配置层次结构中每个容器和叶语句的标记元素。在配置层级的顶层,标记元素和语句之间几乎总是有一对一映射,并且大多数标记名称与配置语句名称匹配。在更深层次的层次结构中,映射有时不太直接,因为某些 CLI 符号约定不会直接映射到符合 XML 的标记语法。
对于某些配置语句,在 CLI 配置模式提示处键入语句时使用的符号与配置文件中使用的符号不同。同一 Junos XML 标记元素映射到两种符号样式。
以下部分介绍配置语句与 Junos XML 标记元素之间的映射:
层次结构级别和容器语句的映射
该 <configuration>
元素是配置语句的顶级 Junos XML 容器元素。它与 [edit]
CLI 配置模式中的层次结构级别对应。配置层次结构下几个层级的大多数语句都是容器语句。与容器语句对应的 Junos XML 容器标记元素几乎总是与语句具有相同的名称。
以下示例显示配置层次结构顶层两个语句的 Junos XML 标记元素。请注意,CLI 配置语句中的闭合托架对应于关闭 Junos XML 标记。
具有标识符的对象的映射
在某些层次结构级别中,相同类型的配置对象可能会多次发生。对象的每个实例都有一个唯一的标识符,用于将其与其他实例区分开来。在 CLI 符号中,此类对象的父语句包含以下表单的关键字和标识符:
keyword identifier { … configuration statements for individual characteristics … }
keyword
是一个固定字符串,表示正在定义的对象类型, identifier
是此类型实例的独特名称。在 Junos XML API 中,与关键字对应的标记元素是表示对象特征的儿童标记元素的容器标记元素。容器标记元素的名称通常与字符串匹配 keyword
。
Junos XML API 在处理标识符时与 CLI 不同。由于 Junos XML API 不允许容器标记元素同时包含其他标记元素和未标记的字符数据(如标识符名称),因此标识符必须括在自己的标记元素中。大多数时候,配置对象的标识符标记元素称为 <name>
。某些对象有多个标识符,通常有名称,而不是 <name>
。要验证配置对象的每个标识符标记元素的名称,请参阅 Junos XML API 配置开发人员参考中的对象条目。
Junos OS 保留配置组中junos-defaults
定义的配置组标识符的前缀junos-
。用户定义的标识不能从字符串junos-
开始。
标识符标记元素也构成一般 XML 约定例外,即同一层次结构级别的标记元素可以任何顺序显示;标识符标记元素始终先在容器标记元素中进行。
大多数有标识符的对象的配置包含附加叶语句,表示对象的其他特性。例如,在 [edit protocols bgp group]
层次结构级别上配置的每个 BGP 组都有一个关联名称(标识符),并且可以为类型、对等自治系统 (AS) 编号和邻接方地址等其他特征提供叶语句。有关叶语句的 Junos XML 映射的信息,请参阅 单值和固定格式叶语句的映射、 具有多个值的叶语句映射以及 一条或多个线路上的多个选项的映射。
以下示例显示配置语句的 Junos XML 标记元素,用于定义两个称为 和 <name>
的 <name>
BGP 组。请注意,包含每个组标识符(以及组内邻接方标识符)的 Junos XML <name>
元素在 CLI 语句中没有对应项。
单值和固定格式叶语句的映射
叶语句是 CLI 配置语句,不包含任何其他语句。大多数叶语句定义配置对象的一个特征的值,并具有以下形式:
keyword value;
一般来说,对应于叶语句的 Junos XML 标记元素的名称与 keyword
字符串相同。开口和关闭 Junos XML 标记之间的字符串与 value
字符串相同。
以下示例显示具有关键字和值的两个叶语句的 Junos XML 标记元素: message
层次结构级别的 [edit system login]
语句和 preference
层次结构级别的 [edit protocols ospf]
语句。
某些叶语句仅包含固定格式的关键字,而没有关联的可变形式值。Junos XML API 使用空标记表示此类语句。以下示例显示层次结构级别语句的 disable
[edit forwarding-options sampling]
Junos XML 标记元素。
为具有多个值的叶语句映射
某些 Junos OS 叶语句接受多个值,这些值可以由用户定义,也可以从一组预定义的值中提取。CLI 符号使用方括号在单个语句中将所有值括起来,如下列所示:
statement [ value1 value2 value3 ...];
相反,Junos XML API 会将每个值都括在自己的标记元素中。以下示例显示具有多个用户定义值的 CLI 语句的 Junos XML 标记元素。该 import
语句导入配置中其他位置定义的两个路由策略。
以下示例显示具有多个预定义值的 CLI 语句的 Junos XML 标记元素。该 permissions
语句向登录类成员 user-accounts
授予三个预定义权限。
映射一条或多个线路上的多个选项
对于某些 Junos OS 配置对象,标准 CLI 语法在单行上放置多个选项,通常表示可更易于清晰。在大多数此类情况下,第一个选项标识对象且没有关键字,但后续选项是成对的关键字和值。Junos XML API 将每个选项都括在自己的标记元素中。由于第一个选项在 CLI 语句中没有关键字,因此 Junos XML API 会为其标记元素分配名称。
以下示例显示在单行中具有多个选项的 CLI 配置语句的 Junos XML 标记元素。Junos XML API 定义了两个选项的标记元素,并将名称分配给第一个选项 (10.0.0.1) 的标记元素,而该选项没有 CLI 关键字。
某些配置对象的语法包含多个多选项行。同样,Junos XML API 会为每个选项定义单独的标记元素。以下示例显示层次结构级别语句的 [edit protocols isis]
Junos XML 标记元素traceoptions
。该语句有三个儿童语句,每个语句有多个选项。
映射有关配置语句的评论
Junos OS 配置可以包含描述配置中语句的注释。在 CLI 配置模式中 annotate
,命令定义了评论,以便与当前层次结构级别上的语句相关联。您也可使用文本编辑器将评论直接插入配置文件中。有关更多信息,请参阅 CLI 用户指南。
Junos XML API 包含有关元素中的 <junos:comment>
配置语句的评论。(这些注释不同于字符串 <!--
中包含且 -->
会被协议服务器自动丢弃的注释。)
在 Junos XML API 中<junos:comment>
,该元素紧随相关配置语句的元素前面。(如果省略了相关语句的标记元素,则配置数据库中不会记录评论。)评论文本字符串可以包含在配置数据库中表示评论的两个划界人之一:#
评论前的字符或评论前和*/
之后的成对字符串/*
。如果客户端应用程序不包括划定程序,则协议服务器在将评论添加到配置中时会添加相应的服务器。协议服务器还保留评论中包含的任何空白空间。
以下示例显示 Junos XML 标记元素,这些元素将评论与示例配置语句中的两个语句相关联。第一个评论说明了如何在元素 (/* New backbone area */
) 的内容<junos:comment>
中包括新行字符,以使评论出现在配置文件中自己的行中。第二<junos:comment>
个元素的内容中没有新行字符,因此在配置文件中,评论直接遵循同一行上的关联语句。