Каков стандартный способ генерирования запросов XML RPC NETCONF из модели данных YANG

Я пытаюсь найти лучший способ создания запросов XML RPC для отправки на устройство с тегами NETCONF.

Мы знаем, как должен выглядеть запрос, поэтому я просто кодирую XML-запрос XML-RPC с заполнителями. Эти заполнители могут быть заменены фактическим вводом позже.

Например:

<rpc message-id="">
  <get-config>
    <source>
      <running/>
    </source>
    <filter type="subtree" base_path="">
      <wing-stats>
        <device>
          <lldp>
            <dev_id/>
            <local_port/>
            <neighborId/>
            <Neighbor_port_id/>
          </lldp>
          <mac>@device_mac</mac>
        </device>
      </wing-stats>
    </filter>
  </get-config>
</rpc>

Здесь, в этом примере, @device_mac будет заменен при отправке запроса. Но кое-что, как я чувствовал, я жестко кодирую XML запроса. Есть ли лучший способ генерации запроса XML?

Данные Netconf будут смоделированы с использованием файлов YANG/YIN. Есть ли способ, которым я могу использовать эти файлы для генерации части запроса NETCONF по крайней мере?

2 ответа

Bala,

Я бы сказал, что есть два способа сделать это: вы можете использовать любой из доступных наборов инструментов на основе модели дат, и я знаю, что по крайней мере один из них генерирует API, ориентированные на модель, и скрывает подробные манипуляции с XML (DOM). Второе направление - использовать отображение YANG на DSDL, определенное в RFC 6110, как реализовано инструментом pyang. Теперь последний требует, чтобы ваши инструменты могли работать с DSDL, который по сути является комбинацией Relax NG и Schematron.

Надеюсь это поможет.

Я бы сказал, что все зависит от вашего контекста. Если ваше приложение предназначено для поддержки именно этой конкретной модели и только этого конкретного rpc, то было бы, вероятно, излишним использовать какой-либо более сложный, независимый от модели API для такого небольшого варианта использования.

С другой стороны, если ваше приложение должно поддерживать множество моделей и rpcs или даже если оно должно поддерживать новые модели, добавленные во время выполнения, то вам определенно следует изучить решения, которые могут быть применены к любой модели, например, упомянутой Carl.

Другие вопросы по тегам