доступ к определенной записи листового списка с помощью yang restconf

Мне понятно, как ссылаться на элемент list (черновик restconf), но непонятно, как ссылаться на конкретный leaf-list entry. Например, учитывая следующее определение:

module x { 
   container y { 
     leaf-list z;
   }
}

and if I have the following data in the system

<y>
  <z>a</z>
  <z>b</z>
  <z>d</z>
</y>

как вставить c в третью позицию?

Restconf имеет «вставку» и «точку», которые принимают ресурс uri. Но что такое URI ресурса для идентификации элемента листового списка? Если я хочу сослаться на вторую запись, допустимо ли следующее?

/y/z=b

person user19937    schedule 07.04.2016    source источник


Ответы (1)


Каждая запись листового списка является отдельным ресурсом данных в restconf-draft-10.

Контейнеры, листы, элементы листового списка, элементы списка, узлы anydata и anyxml являются ресурсами данных.

Вот что говорится в разделе 3.5 о leaf-list записях. . Далее он определяет кодировку leaf-list идентификаторов ресурсов данных в 5.3.1:

Если узел данных в выражении пути является узлом листового списка YANG, то значение листового списка ДОЛЖНО быть закодировано в соответствии со следующими правилами:

o Идентификатор экземпляра для листового списка ДОЛЖЕН быть закодирован с использованием одного сегмента пути [RFC3986].

o Сегмент пути состоит из имени листового списка, за которым следует символ "=", за которым следует значение листового списка. (например, /restconf/data/top-leaflist=fred).

Итак, ваш пример для второй записи: /restconf/data/x:y/z=b.

Что касается вставки, то тут как бы непонятно. В приложении D черновика есть примеры как для point, так и для insert, но используйте list вместо leaf-list (обратите внимание, что оба параметра ДОЛЖНЫ быть ordered-by user, чтобы два параметра были действительными в запросе).

D.3.5. Параметр "точка"

  POST /restconf/data/example-jukebox:jukebox/
      library/artist=Foo%20Fighters/album=Wasting%20Light?
      insert=after&point=%2Fexample-jukebox%3Ajukebox%2F
      library%2Fartist%3DFoo%20Fighters%2Falbum%3D
      Wasting%20Light%2Fsong%3DBridge%20Burning   HTTP/1.1
  Host: example.com
  Content-Type: application/yang.data+json

  {
    "example-jukebox:song" : {
      "name" : "Rope",
      "location" : "/media/foo/a7/rope.mp3",
      "format" : "MP3",
      "length" : 259
    }
  }
person predi    schedule 08.04.2016
comment
Как я могу получить доступ как к z.a, так и к z.b, я пытался использовать запятую, но выдает ошибку как неподдерживаемый формат uri - количество значений отличается от количества ключей - person user3516540; 30.10.2020