Я пытаюсь сделать модель ниже.
У меня есть интерфейс rnet и хост. Если ethe rnet работает - подключитесь к нему, иначе - ошибка печати.
Это янь модели интерфейса (bgp_test.yang)
module bgp_test {
namespace "http://bgp.test.com/ex";
prefix "bgp";
container interface {
leaf name {
type string;
mandatory true;
}
container ipv4 {
leaf enabled {
type boolean;
default 'true';
}
list address {
key "ip";
description
"The list of IPv4 addresses on the interface.";
leaf ip {
type ipv4-address-no-zone;
description
"The IPv4 address on the interface.";
}
} // list address
} // container ipv4
}
}
А это модель для подключения
module bgp_test_connect {
namespace "http://bgp.test.com/ex/connect";
prefix "cnt";
import bgp_test {
prefix "bgp";
}
container connect_ip {
leaf ip {
type string;
}
when "ip = /bgp:interface/bgp:ipv4/bgp:address/bgp:ip";
must "/bgp:interface/bgp:ipv4/bgp:enabled != 'true' " {
error-message "An cannot connect to disabled iface";
}
}
}
Вот xml интерфейса (bgp-test. xml)
<?xml version="1.0" encoding="utf-8"?>
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<interface xmlns="http://bgp.test.com/ex" >
<name>GigabitEth0</name>
<ipv4>
<enabled>false</enabled>
<address>
<ip>10.123.43.2</ip>
</address>
</ipv4>
</interface>
</config>
Это xml подключения (bgp_cnt. xml)
<?xml version="1.0" encoding="utf-8"?>
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<connect_ip
xmlns="http://bgp.test.com/ex/connect"
xmlns:bgp="http://bgp.test.com/ex">
<ip>10.123.43.2</ip>
</connect_ip>
</config>
Теперь я пытаюсь проверить первый файл (ethe rnet description) и получить такой вывод
$ yang2dsdl -t config -v bgp-test.xml bgp_test.yang bgp_test_connect.yang
...
No errors found.
Теперь я пытаюсь проверить оба файла xml и получить такой результат
$ yang2dsdl -t config -v bgp-test.xml bgp_cnt.xml bgp_test.yang bgp_test_connect.yang
bgp_cnt.xml:2: error: no module with the namespace "urn:ietf:params:xml:ns:netconf:base:1.0" is imported
bgp_cnt.xml:2: error: expected an argument for keyword "config"
DSDL translation needs a valid module
Я не знаю, как проверить какое-то значение из одного модуля в другом модуле? Я предполагаю, что эти два модуля должны быть независимыми, а не дополняющими.
Можете ли вы мне с этим помочь?
Если я совершенно не прав, то как это сделать правильно?