Ян тип не найден

Здесь не слишком много вопросов о моделях 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.

Другие вопросы по тегам