У меня проблема с ограничением моего CLI. Я расследовал Ян RFC7950 (https://tools.ietf.org/html/rfc7950), но ничего не нашел.
Вот пример.
grouping httpGroup {
list http-list{
key "value";
leaf value {
status current { yexte:preliminary; }
description "value to match";
must "(not(../protocol)) and (not(../network-port)))" {
error-message "Not compatible with protocol or non-TCP ports";
}
type string { length "1..255"; }
}
}
}
Эта группа будет включена в несколько групп со следующей структурой:
list and {
leaf-list protocol { ..... }
uses A;
list or {
leaf-list protocol { ..... }
uses A;
}
}
grouping A {
status{}
leaf-list protocol { ..... }
leaf-list X { ..... }
uses httpGroup;
}
Мне нужно, чтобы это условие условия было включено в httpGroup, чтобы убедиться, что значение протокола не настроено на любом уровне иерархии.
Я сделал это, добавив дополнительные пути родственников для поиска этого узла:
// same level
not(../protocol)
// next level
not(../and/protocol)
not(../or/protocol)
// previous level
not(../../protocol)
not(../../protocol)
//recursively down previous level
not(../../and/protocol)
not(../../or/protocol)
// third level
not(../and/or/protocol)
not(../and/and/protocol)
Как видите, это совсем не чистое решение.
Есть ли способ сделать это для всей иерархии, например:
if protocol node exists and http-list exists then error.
Заранее спасибо.