Как проверить значение одного модуля из другого ян? - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь сделать модель ниже.

У меня есть интерфейс 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

Я не знаю, как проверить какое-то значение из одного модуля в другом модуле? Я предполагаю, что эти два модуля должны быть независимыми, а не дополняющими.

Можете ли вы мне с этим помочь?

Если я совершенно не прав, то как это сделать правильно?

...