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
  1. <rpc message-id="101"
  2. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  3. <edit-config>
  4. <target>
  5. <running/>
  6. </target>
  7. <config>
  8. <top xmlns="http://example.com/schema/1.2/config">
  9. <interface>
  10. <name>Ethernet0/0</name>
  11. <mtu>1500</mtu>
  12. </interface>
  13. </top>
  14. </config>
  15. </edit-config>
  16. </rpc>
  17. <rpc-reply message-id="101"
  18. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  19. <ok/>
  20. </rpc-reply>
  • 在正在运行的配置中添加一个名为“Ethernet0/0”的interface,用这个名称替换以前的interface
  1. <rpc message-id="101"
  2. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  3. <edit-config>
  4. <target>
  5. <running/>
  6. </target>
  7. <config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
  8. <top xmlns="http://example.com/schema/1.2/config">
  9. <interface xc:operation="replace">
  10. <name>Ethernet0/0</name>
  11. <mtu>1500</mtu>
  12. <address>
  13. <name>192.0.2.4</name>
  14. <prefix-length>24</prefix-length>
  15. </address>
  16. </interface>
  17. </top>
  18. </config>
  19. </edit-config>
  20. </rpc>
  21. <rpc-reply message-id="101"
  22. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  23. <ok/>
  24. </rpc-reply>
  • 从正在运行的配置中删除名为“Ethernet0/0”的interface的配置:
  1. <rpc message-id="101"
  2. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  3. <edit-config>
  4. <target>
  5. <running/>
  6. </target>
  7. <default-operation>none</default-operation>
  8. <config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
  9. <top xmlns="http://example.com/schema/1.2/config">
  10. <interface xc:operation="delete">
  11. <name>Ethernet0/0</name>
  12. </interface>
  13. </top>
  14. </config>
  15. </edit-config>
  16. </rpc>
  17. <rpc-reply message-id="101"
  18. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  19. <ok/>
  20. </rpc-reply>
  • OSPF区域删除接口192.0.2.4(在同一区域配置的其他接口不受影响):
  1. <rpc message-id="101"
  2. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  3. <edit-config>
  4. <target>
  5. <running/>
  6. </target>
  7. <default-operation>none</default-operation>
  8. <config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
  9. <top xmlns="http://example.com/schema/1.2/config">
  10. <protocols>
  11. <ospf>
  12. <area>
  13. <name>0.0.0.0</name>
  14. <interfaces>
  15. <interface xc:operation="delete">
  16. <name>192.0.2.4</name>
  17. </interface>
  18. </interfaces>
  19. </area>
  20. </ospf>
  21. </protocols>
  22. </top>
  23. </config>
  24. </edit-config>
  25. </rpc>
  26. <rpc-reply message-id="101"
  27. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  28. <ok/>
  29. </rpc-reply>