7.2 <edit-config>
描述:
<edit-config>操作将全部或部分指定配置加载到指定的目标配置数据存储。此操作允许以多种方式表示新配置,例如使用本地文件,远程文件或内联。如果目标配置数据存储不存在,它将被创建。
如果一个NETCONF节点(peer)支持:url能力(8.8节),那么<url>元素可以出现而不是<config>参数。
设备分析源和目标配置并执行所请求的更改。目标配置不一定被替换,就像<copy-config>消息一样。而是根据源数据和请求的操作来更改目标配置。
如果<edit-config>操作包含应用于基础数据模型中相同概念节点的多个子操作,则操作的结果是未定义的(即,不在NETCONF协议的范围之内)。
属性:
operation:<config>子树中的元素可以包含一个“operation”属性,它属于3.1节定义的NETCONF名称空间。该属性标识配置中的要执行该操作的点,并可以在整个<config>子树中的多个元素上出现。如果未指定“operation”属性,则配置将合并到配置数据存储中。 “operation”属性具有以下值之一:merge:由包含此属性的元素标识的配置数据与由<target>参数标识的配置数据存储中对应级别的配置合并。这是默认行为。replace:由包含此属性的元素标识的配置数据将替换由<target>参数标识的配置数据存储区中的任何相关配置。如果配置数据存储中不存在此类配置数据,则会创建它。与替换整个目标配置的<copy-config>操作不同,只有实际存在于<config>参数中的配置受到影响。create:当且仅当配置数据存在于配置数据存储中时,才将包含此属性的元素标识的配置数据添加到配置中。如果配置数据存在,则返回一个<error-tag>值为“data-exists”的<rpc-error>元素。delete:当且仅当配置数据当前存在于配置数据存储中时,才从配置中删除由包含此属性的元素标识的配置数据。如果配置数据不存在,则返回一个<error-tag>值为“data-missing”的<rpc-error>元素。remove:如果配置数据当前存在于配置数据存储中,则从配置中删除由包含此属性的元素标识的配置数据。如果配置数据不存在,服务器会自动忽略“remove”操作。
参数:
target:正在编辑的配置数据存储的名称,例如<running/>或<candidate />。default-operation:选择此<edit-config>请求的默认操作(如“operation”属性中所述)。<default-operation>参数的默认值是“merge”。<default-operation>参数是可选的,但是如果提供,它具有以下值之一:merge:<config>参数中的配置数据与目标数据存储中相应级别的配置合并。这是默认行为。replace:<config>参数中的配置数据完全替换了目标数据存储中的配置。这对加载以前保存的配置数据很有用。none:目标数据存储不受<config>参数中的配置影响,除非和直到传入的配置数据使用“operation”属性请求不同的操作。如果<config>参数中的配置包含目标数据存储中没有相应级别的数据,则返回<rpc-error>,并带有<error-tag>缺少数据的值。使用“none”允许像“delete”这样的操作避免无意中创建要删除的元素的父层次结构。
test-option:只有当设备公布支持:validate:1.1能力时才能指定<test-option>元素(8.6节)。<test-option>元素具有以下值之一:test-then-set:在尝试设置之前执行验证测试。 如果发生验证错误,请不要执行<edit-config>操作。 这是默认的测试选项。set:先执行一个没有验证测试的设置。test-only:仅执行验证测试,而不尝试设置。
error-option:<error-option>元素具有以下值之一:stop-on-error:停止第一个错误的<edit-config>操作。这是默认的错误选项。continue-on-error:继续处理错误的配置数据;记录错误,如果发生任何错误,则产生否定响应。rollback-on-error:如果发生错误情况,从而生成错误严重性<rpc-error>元素,则服务器将停止处理<edit-config>操作,并在指定的开始时将指定的配置恢复到完整状态这个<edit-config>操作。该选项要求服务器支持8.5节中描述的错误回滚功能。
config:配置数据的层次结构,由设备的一个数据模型定义。内容必须放置在适当的命名空间中,以允许设备检测适当的数据模型,并且内容必须遵循该数据模型的约束,如其能力定义所定义。能力在第8节讨论。
正面响应:
如果设备能够满足请求,则发送包含<ok>元素的<rpc-reply>。
负面响应:
如果因任何原因无法完成请求,则会发送<rpc-error>答复。
示例:
本节中的<edit-config>示例使用一个简单的数据模型,其中存在多个实例的<interface>元素,每个<interface>元素中的<name>元素用来区分一个<interface>实例。
- 在正在运行的配置中名为“
Ethernet0/0”的interface上将MTU设置为1500:
<rpc message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target>
<running/>
</target>
<config>
<top xmlns="http://example.com/schema/1.2/config">
<interface>
<name>Ethernet0/0</name>
<mtu>1500</mtu>
</interface>
</top>
</config>
</edit-config>
</rpc>
<rpc-reply message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
- 在正在运行的配置中添加一个名为“
Ethernet0/0”的interface,用这个名称替换以前的interface:
<rpc message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target>
<running/>
</target>
<config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
<top xmlns="http://example.com/schema/1.2/config">
<interface xc:operation="replace">
<name>Ethernet0/0</name>
<mtu>1500</mtu>
<address>
<name>192.0.2.4</name>
<prefix-length>24</prefix-length>
</address>
</interface>
</top>
</config>
</edit-config>
</rpc>
<rpc-reply message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
- 从正在运行的配置中删除名为“
Ethernet0/0”的interface的配置:
<rpc message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target>
<running/>
</target>
<default-operation>none</default-operation>
<config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
<top xmlns="http://example.com/schema/1.2/config">
<interface xc:operation="delete">
<name>Ethernet0/0</name>
</interface>
</top>
</config>
</edit-config>
</rpc>
<rpc-reply message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
- 从
OSPF区域删除接口192.0.2.4(在同一区域配置的其他接口不受影响):
<rpc message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target>
<running/>
</target>
<default-operation>none</default-operation>
<config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
<top xmlns="http://example.com/schema/1.2/config">
<protocols>
<ospf>
<area>
<name>0.0.0.0</name>
<interfaces>
<interface xc:operation="delete">
<name>192.0.2.4</name>
</interface>
</interfaces>
</area>
</ospf>
</protocols>
</top>
</config>
</edit-config>
</rpc>
<rpc-reply message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>