我正在尝试以编程方式为 yang 模式配置对象构建 netconf 编辑配置请求。目前我正在手动构建这个 xml 字符串。有没有办法以编程方式做到这一点?我正在使用 golang
例如,我正在尝试为架构 bgp-config.yang 中定义的 bgp 配置元素发送编辑配置请求:
module bgp-config {
namespace "http://exnet.com/bgp-config";
prefix bgp-config;
import ietf-inet-types { prefix inet; }
import tailf-common { prefix tailf; }
import ietf-yang-types { prefix yang; }
import ietf-bgp-types { prefix bgp-types; }
import ietf-bgp-multiprotocol { prefix bgp-mp; }
import openconfig-routing-policy { prefix rpol; }
import myietf-routing {prefix rt;}
revision "2016-04-07" {
description "Revisied on 2016-04-07.";
}
augment "/rt:router"
{
list bgp {
//presence "Container for BGP protocol hierarchy";
//tailf:cli-add-mode;
tailf:info "Top-level configuration and state for the BGP router";
tailf:cli-full-no;
tailf:cli-suppress-list-no;
key "local-as";
max-elements 1;
description
"Top-level configuration and state for the BGP router";
uses bgp_config;
uses bgp-graceful-restart;
uses bgp-mp:bgp-route-selection-options;
//tailf:cli-suppress-no;
container afi-safis {
tailf:cli-drop-node-name;
description
"Address family specific configuration";
uses bgp-mp:bgp-common-afi-safi-list;
}
}
}
我有这个代码片段可以向 netconf 服务器发送 bgp 配置元素的编辑配置请求:
var s *netconf.Session
localas := 888
xmlstr := `<edit-config>
<target><candidate/></target>
<config>
<router xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<bgp xmlns="http://exnet.com/bgp-config">
<local-as>` + strconv.Itoa(localas) + `</local-as>
</bgp>
</router>
</config>
</edit-config>`
NetConfSendRPC(s, xmlstr)
xmlstr = "<commit/>"
NetConfSendRPC(s, xmlstr)
s.Close()
我的问题是关于如何以编程方式构造 xml 字符串以发送所有配置元素的编辑配置。第一步是从 yang 模式生成 xml 标记的 go 结构(这是我需要帮助/指针的地方),然后我可以使用 xml marshal 方法来构造请求。第一步的任何建议都会有所帮助。谢谢。