Нет хорошего способа смоделировать это в ЯНГ. Как вы говорите, для каждого (config true) списка требуется ключ. Обозначение листа в качестве ключа делает этот лист обязательным, поэтому вы не можете получить экземпляр документа, как в своем примере - если вы сделаете все четыре листа ключами (что можно сделать, поскольку может быть несколько ключей списка), каждый узел имеетчтобы все они были действительны, и сделать из них только пару из них ключами, это тоже не работает для вашего примера.
Обратите внимание, что в списке ложных настроек не должно быть никаких ключей. Если вы не моделируете конфигурацию (или данные, связанные с NETCONF / RESTCONF), это может быть вашим выходом.
list node {
config false;
// ...
}
В противном случае у вас нет выбора - вам нужно ввести еще один лист, который будет служить идентификатором длязапись.
В любом случае, вы могли бы использовать оператор unique
(я полагаю, основываясь на именах ваших листьев), чтобы сделать записи в списке уникальными. Он работает аналогично key
, но элементы не должны появляться в документе экземпляра, если вы его используете - для этого требуется только, чтобы комбинация узлов, которые появляются в экземпляре, была уникальной для всех записей списка.
list node {
config false;
unique "id1 id2 id3 id4";
// ...
}
Примечание: есть похожий ответ на вопрос с некоторыми дополнительными подробностями.