Ян тип не найден
Здесь не слишком много вопросов о моделях YANG здесь, в stackru, но я надеюсь, что вы мне поможете.
Я создал модель YANG и хочу импортировать ее в другой модуль. Оператор импорта выглядит следующим образом:
import service-abstract-type-definition {
prefix sfc-satd;
revision-date 2015-11-15;
}
И использование это выглядит так:
leaf abstract-type {
type sfc-satd:service-abstract-type-definition;
description
"Abstract Type definition for the Service Function";
}
Этот лист находится внутри группировки.
Импортированный модуль выглядит так:
module service-abstract-type-definition {
namespace "urn:odl:params:xml:ns:yang:sfc-satd";
prefix sfc-satd;
import service-locator {
prefix sfc-sl;
revision-date 2014-07-01;
}
description
"This module contains YANG definitions for managing Service Abstract Type Definition";
revision 2015-11-15 {
description
"First version of Service Abstract Type Definition.";
}
// Service Function
// Service Abstract Type definitions
container service-abstract-type-definition {
description
"List of parameters to define an abstract type of Service Function";
leaf name {
type string;
description "Service Function type names such as firewall, dpi, tcp-proxy, etc";
}
leaf symmetry {
type boolean;
description "SF is involved in a symmetric service path";
}
leaf bidirectionality {
type boolean;
description "SF handles uplink and downlink traffic";
}
leaf nsh-aware {
type boolean;
description "Service Function can handle Network Service Headers";
}
container dpl {
description "Data Plane Locators from the Service Function";
uses sfc-sl:data-plane-locator;
}
}
}
При компиляции я получаю сообщение об ОШИБКЕ, говорящее, что тип satd: service-abstract-type-definition не найден, и я действительно не понимаю этого. Любая идея??
Спасибо
1 ответ
Обычно вы используете операторы импорта по двум причинам в NETMOD YANG 1.0: повторное использование определений верхнего уровня из другого модуля и внедрение определений из вашего модуля в другой модуль.
Существует пять определений верхнего уровня, которые могут быть импортированы из другого модуля в YANG: группировки, определения типов, расширения, функции и идентификационные данные. В вашем случае вы пытались импортировать определение, не являющееся одним из них, - контейнер YANG, представляющий один из операторов определения данных (они определяют узлы, для которых может быть создан экземпляр AKA дерева данных). Другие операторы определения данных: лист, лист-список, список, выбор, регистр, увеличение, использование и anyxml.
Вы не можете импортировать операторы определения данных для использования в вашем модуле, если они не определены в группе и не указаны в операторе использования. Кроме того, дочерний оператор типа оператора листа представляет тип данных конечного экземпляра, который ограничивает набор допустимых значений для значения экземпляра (например, набор значений для текстового узла элемента XML в кодировке XML). Листовые операторы также не могут быть родителями для других операторов определения данных - поэтому они называются листами (ветвь дерева данных заканчивается ими).
Семестр type
в YANG больше похож на типы данных в языках программирования и его не следует путать с определенными терминами из других языков схемы (сложных типов), которые определяют структуру. Как вы узнали сами, вы можете определять пользовательские типы данных в YANG с помощью оператора typedef.