config = ложный узел, когда обязательный - PullRequest
1 голос
/ 21 июня 2019

У меня есть модель Янга, которая определяет узел config = false, который также является обязательным. Должен ли я возвращать этот узел как пустой узел XML в ответе get rpc, даже если мое приложение не поддерживает его?

В идеале мое приложение должно поддерживать его, но из-за ограничений мы не можем реализовать необходимую поддержку. Так какой же должен быть правильный способ обработки таких случаев? Должны ли мы испускать / представлять его в ответе get rpc как пустой узел XML? Я предполагаю, что если мы проигнорируем такие узлы, внешний контроллер может не получить ответ get rpc.

-RAM

1 Ответ

1 голос
/ 21 июня 2019

Если реализация вашего сервера не поддерживает определенный узел в исходной модели, вам следует создать модуль отклонения YANG, который выражает это ограничение. Таким образом, клиенты получают информацию об этом, и все довольны - вы, конечно, рекламируете свой модуль отклонения вместе с отклоненным модулем.

Например:

module target {
  yang-version 1.1;
  namespace "target:uri";
  prefix "tgt";

  container state {
    config false;
    leaf some-counter {
      type uint64;
      mandatory true;
    }
  }
}

Допустим, ваше устройство не поддерживает лист some-counter выше. Затем вы создаете модуль создания отклонений, который описывает, как ваша реализация отличается от совместимой реализации.

module target-dev {
  yang-version 1.1;
  namespace "target-dev:uri";
  prefix "tgtd";

  import target {
    prefix tgt;
  }

  deviation "/tgt:state/tgt:some-counter" {
    deviate not-supported;
  }
}

Когда приходит запрос get, вы ничего не возвращаете для этого листа, так как он не существует в мире вашей реализации.

Подробности операторов deviation и deviate можно найти в RFC7950:

Вы должны быть очень осторожны, полагаясь на этот механизм! Всегда создавайте отдельный модуль, который содержит только отклонения, возможно отклоняющиеся от одного целевого модуля. Существует руководящий документ , который следует прочитать на всякий случай.

...