Каков стандартный способ генерирования запросов 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.