[ONOS-5076] YANG data tree Builder
Change-Id: I25160b651c26e614d29d7fad85e63f77a262d77c
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/Hello_ONOS.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/Hello_ONOS.yang
new file mode 100644
index 0000000..d5eafbe
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/Hello_ONOS.yang
@@ -0,0 +1,57 @@
+module Hello_ONOS {
+ yang-version 1;
+ namespace "ydt:hello_onos";
+ prefix "hello";
+
+ revision "2016-09-03" {
+ description "Initial revision of hello model";
+ }
+
+ grouping greeting {
+ leaf name {
+ type string;
+ }
+
+ leaf surName {
+ type string;
+ }
+ }
+
+ rpc hello-world {
+ input {
+
+ // uses greeting;
+
+ leaf name {
+ type string;
+ }
+
+ leaf surName {
+ type string;
+ }
+
+ leaf inputDefault {
+ type string;
+ }
+
+ list stringList {
+ key "string1 string2";
+ unique "string3";
+ leaf string1 {
+ type string;
+ }
+ leaf string2 {
+ type string;
+ }
+ leaf string3 {
+ type string;
+ }
+ }
+ }
+ output {
+ leaf greetingOut {
+ type string;
+ }
+ }
+ }
+}
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/Logistics-manager.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/Logistics-manager.yang
new file mode 100644
index 0000000..3cd4321
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/Logistics-manager.yang
@@ -0,0 +1,66 @@
+module Logistics-manager {
+
+ yang-version 1;
+
+ namespace "ydt.root";
+
+ prefix "root";
+
+ organization "ON-LAB";
+
+ description "This module defines for organisation.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ leaf Customs-supervisor {
+ type string;
+ description "name of the customs-supervisor.";
+ }
+
+ leaf Merchandiser-supervisor {
+ type string;
+ description "name of merchandiser-supervisor";
+ }
+
+ list Material-supervisor {
+ key "name";
+ leaf name {
+ type string;
+ description "name of logistics-supervisor";
+ }
+
+ leaf departmentId {
+ type string;
+ description "name of department";
+ }
+ }
+
+ container Purchasing-supervisor {
+ leaf purchasing-specialist {
+ type string;
+ description "name of the purchasing-specialist person";
+ }
+
+ leaf support {
+ type string;
+ description "name of the support person";
+ }
+ }
+
+ leaf-list Warehouse-supervisor {
+ type string;
+ description "name of the warehouse-supervisor's";
+ }
+
+ leaf trading-supervisor {
+ type string;
+ description "name of the trading-supervisor";
+ }
+
+ leaf-list employee-id {
+ type string;
+ description "list of the employee id";
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology1.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology1.yang
new file mode 100644
index 0000000..6736063
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology1.yang
@@ -0,0 +1,51 @@
+module augment-topology1 {
+
+ yang-version 1;
+
+ namespace "ydt.augment-topology1";
+
+ prefix "aug1";
+
+ import yms-ietf-network {
+ prefix nd;
+ }
+
+ import yms-network-topology {
+ prefix topo;
+ }
+
+ organization "ON-LAB";
+
+ description "This module defines for augment-topology1 classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ augment "/nd:networks/nd:network/topo:link" {
+ description
+ "Add augment1 to the link model.";
+ list augment1 {
+ key "value1";
+ leaf value1 {
+ type int8;
+ }
+ }
+ }
+
+ augment "/nd:networks/nd:network/nd:node/topo:t-point" +
+ "/supporting-termination-point" {
+ description
+ "Add augment1 to the termination-point model.";
+ container augment1 {
+ leaf value1 {
+ type int8;
+ }
+ }
+
+ leaf augment1-leaf {
+ type string;
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology2.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology2.yang
new file mode 100644
index 0000000..82a19d7
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology2.yang
@@ -0,0 +1,63 @@
+module augment-topology2 {
+
+ yang-version 1;
+
+ namespace "ydt.augment-topology2";
+
+ prefix "aug2";
+
+ import yms-ietf-network {
+ prefix nd;
+ }
+
+ import yms-network-topology {
+ prefix topo;
+ }
+
+ organization "ON-LAB";
+
+ description "This module defines for augment-topology2 classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ augment "/nd:networks/nd:network/topo:link" {
+ description
+ "Add augment2 to the link model.";
+ list augment2 {
+ key "key1 key2";
+ leaf key1 {
+ type int8;
+ }
+ leaf key2 {
+ type int8;
+ }
+ }
+
+ leaf-list augment2leafList {
+ type string;
+ }
+ }
+
+ augment "/nd:networks/nd:network/nd:node/topo:t-point/" +
+ "supporting-termination-point" {
+ description
+ "Add augment2 to the supporting-termination-point model.";
+ container augment2 {
+ config false;
+ leaf value2 {
+ type int8;
+ }
+ }
+
+ leaf-list augment2leafList {
+ type string;
+ }
+
+ leaf augment2leaf {
+ type string;
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology3.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology3.yang
new file mode 100644
index 0000000..d2c58ce
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology3.yang
@@ -0,0 +1,59 @@
+module augment-topology3 {
+
+ yang-version 1;
+
+ namespace "ydt.augment-topology3";
+
+ prefix "aug3";
+
+ import yms-ietf-network {
+ prefix nd;
+ }
+
+ import augment-topology1 {
+ prefix aug1;
+ }
+
+ import augment-topology2 {
+ prefix aug2;
+ }
+
+ import yms-network-topology {
+ prefix topo;
+ }
+
+ organization "ON-LAB";
+
+ description "This module defines for augment-topology3 classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ augment "/nd:networks/nd:network/topo:link/aug2:augment2" {
+ description
+ "Add augment3 to the augment2 model.";
+ container augment3 {
+ config false;
+ leaf value3 {
+ type int8;
+ }
+ }
+
+ leaf augment3leaf {
+ type string;
+ }
+ }
+
+ augment "/nd:networks/nd:network/nd:node/topo:t-point/" +
+ "supporting-termination-point/aug2:augment2" {
+ description
+ "Add augment3 to the augment2 model.";
+ container augment3 {
+ config false;
+ leaf value3 {
+ type int8;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology4.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology4.yang
new file mode 100644
index 0000000..b8cea93
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology4.yang
@@ -0,0 +1,58 @@
+module augment-topology4 {
+
+ yang-version 1;
+
+ namespace "ydt.augment-topology4";
+
+ prefix "aug4";
+
+ import yms-ietf-network {
+ prefix nd;
+ }
+
+ import augment-topology1 {
+ prefix aug1;
+ }
+
+ import augment-topology2 {
+ prefix aug2;
+ }
+
+ import augment-topology3 {
+ prefix aug3;
+ }
+
+ import yms-network-topology {
+ prefix topo;
+ }
+
+ organization "ON-LAB";
+
+ description "This module defines for augment-topology4 classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3" {
+ description
+ "Add augment4 to the augment3 model.";
+ container augment4 {
+ config false;
+ leaf value4 {
+ type int8;
+ }
+ }
+ }
+
+ augment "/nd:networks/nd:network/nd:node/topo:t-point/" +
+ "supporting-termination-point/aug2:augment2" {
+ description
+ "Add augment4leaf to the augment2 model.";
+
+ leaf augment4leaf{
+ type string;
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology5.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology5.yang
new file mode 100644
index 0000000..a13a688
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology5.yang
@@ -0,0 +1,66 @@
+module augment-topology5 {
+
+ yang-version 1;
+
+ namespace "ydt.augment-topology5";
+
+ prefix "aug5";
+
+ import yms-ietf-network {
+ prefix nd;
+ }
+
+ import augment-topology1 {
+ prefix aug1;
+ }
+
+ import augment-topology2 {
+ prefix aug2;
+ }
+
+ import augment-topology3 {
+ prefix aug3;
+ }
+
+ import augment-topology4 {
+ prefix aug4;
+ }
+
+ import yms-network-topology {
+ prefix topo;
+ }
+
+ organization "ON-LAB";
+
+ description "This module defines for augment-topology5 classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ augment "/nd:networks/nd:network/topo:link/aug2:augment2" {
+ description
+ "Add container to the augment2 model.";
+ container augment5 {
+ config false;
+ leaf value5 {
+ type int8;
+ }
+ }
+
+ leaf-list augment5leafList {
+ type string;
+ }
+ }
+
+ augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3" {
+ description
+ "Add augment5 to the augment3 model.";
+ container augment5 {
+ config false;
+ leaf value5 {
+ type int8;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology6.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology6.yang
new file mode 100644
index 0000000..15bd3d5
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology6.yang
@@ -0,0 +1,73 @@
+module augment-topology6 {
+
+ yang-version 1;
+
+ namespace "ydt.augment-topology6";
+
+ prefix "aug5";
+
+ import yms-ietf-network {
+ prefix nd;
+ }
+
+ import augment-topology1 {
+ prefix aug1;
+ }
+
+ import augment-topology2 {
+ prefix aug2;
+ }
+
+ import augment-topology3 {
+ prefix aug3;
+ }
+
+ import augment-topology4 {
+ prefix aug4;
+ }
+
+ import augment-topology5 {
+ prefix aug5;
+ }
+
+ import yms-network-topology {
+ prefix topo;
+ }
+
+ organization "ON-LAB";
+
+ description "This module defines for augment-topology6 classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3" {
+ description
+ "Add augment6 to the augment3 model.";
+ container augment6 {
+ config true;
+ leaf value6 {
+ type int8;
+ }
+ }
+ }
+
+ augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3/" +
+ "aug5:augment5" {
+ description
+ "Add leaf6 to the augment5 model.";
+ leaf leaf6 {
+ type string;
+ }
+
+ }
+
+ augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug5:augment5" {
+ description
+ "Add list to the augment5 model.";
+ leaf-list augment6leafList {
+ type string;
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/augmentNetwork.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/augmentNetwork.yang
new file mode 100644
index 0000000..315bc44
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/augmentNetwork.yang
@@ -0,0 +1,33 @@
+module augmentNetwork {
+
+ yang-version 1;
+
+ namespace "ydt.augmentNetwork";
+
+ prefix "aug";
+
+ import yms-ietf-network {
+ prefix nd;
+ }
+
+
+ organization "ON-LAB";
+
+ description "This module defines for augmentNetwork classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ augment "/nd:networks/nd:network" {
+ description
+ "Add container to the network model.";
+ container cont1s {
+ container cont1s {
+ leaf fine {
+ type string;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/binarytest.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/binarytest.yang
new file mode 100644
index 0000000..71ada48
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/binarytest.yang
@@ -0,0 +1,33 @@
+module binarytest {
+
+ yang-version 1;
+
+ namespace "ydt.binarytest";
+
+ prefix "binarytest";
+
+ organization "ON-LAB";
+
+ description "This module defines for binarytest classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ list binaryList {
+ config false;
+ leaf binary {
+ type binary;
+ }
+ leaf binaryWithRange {
+ type binary {
+ length "2 .. 10";
+ }
+ }
+ leaf binaryWithMultiRange {
+ type binary {
+ length "min..10 | 20 | 30..max";
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/bit.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/bit.yang
new file mode 100644
index 0000000..6d97ccc
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/bit.yang
@@ -0,0 +1,51 @@
+module bit {
+
+ yang-version 1;
+
+ namespace "ydt.bit";
+
+ prefix "bit";
+
+ organization "ON-LAB";
+
+ description "This module defines for bit classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+/*
+ leaf mybits {
+ type bits {
+ bit disable-nagle {
+ position 0;
+ }
+ bit auto-sense-speed {
+ position 1;
+ }
+ bit 10-Mb-only {
+ position 2;
+ }
+ }
+ default "auto-sense-speed";
+ }
+ */
+
+ list bitList {
+ config false;
+ leaf bit {
+ type bits {
+ bit disable-nagle {
+ position 0;
+ }
+ bit auto-sense-speed {
+ position 1;
+ }
+ bit ten-Mb-only {
+ position 2;
+ }
+ }
+ default "auto-sense-speed";
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/bool.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/bool.yang
new file mode 100644
index 0000000..1bb6181
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/bool.yang
@@ -0,0 +1,23 @@
+module bool {
+
+ yang-version 1;
+
+ namespace "ydt.boolean";
+
+ prefix "bool";
+
+ organization "ON-LAB";
+
+ description "This module defines for bool classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ list booleanList {
+ key boolean;
+ leaf boolean {
+ type boolean;
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/customssupervisor.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/customssupervisor.yang
new file mode 100644
index 0000000..73aa806
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/customssupervisor.yang
@@ -0,0 +1,21 @@
+module customssupervisor {
+
+ yang-version 1;
+
+ namespace "ydt.customs-supervisor";
+
+ prefix "customs";
+
+ organization "ON-LAB";
+
+ description "This module defines for customs-supervisor.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ leaf supervisor {
+ type string;
+ description "name of the customs-supervisor.";
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/decimal64.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/decimal64.yang
new file mode 100644
index 0000000..6470e8a
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/decimal64.yang
@@ -0,0 +1,90 @@
+module decimal64 {
+
+ yang-version 1;
+
+ namespace "ydt.decimal64";
+
+ prefix "decimal64";
+
+ organization "ON-LAB";
+
+ description "This module defines for decimal64 classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+ leaf negInt {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ }
+
+ leaf negIntWithMaxFraction {
+ type decimal64 {
+ fraction-digits 18;
+ }
+ }
+
+ leaf negIntWithMinFraction {
+ type decimal64 {
+ fraction-digits 1;
+ }
+ }
+
+ leaf posInt {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ }
+
+ leaf posIntWithMaxFraction {
+ type decimal64 {
+ fraction-digits 18;
+ }
+
+ }
+
+ leaf posIntWithMinFraction {
+ type decimal64 {
+ fraction-digits 1;
+ }
+
+ }
+
+ leaf minIntWithRange {
+ type decimal64 {
+ fraction-digits 2;
+ range "10 .. 100";
+ }
+ }
+
+ leaf midIntWithRange {
+ type decimal64 {
+ fraction-digits 2;
+ range "10 .. 100";
+ }
+ }
+
+ leaf maxIntWithRange {
+ type decimal64 {
+ fraction-digits 2;
+ range "10 .. 100";
+ }
+ }
+
+ list multiRangeValidation {
+ config false;
+ leaf decimal {
+ type decimal64 {
+ fraction-digits 2;
+ range "10..40 | 50..100";
+ }
+ }
+ leaf revDecimal {
+ type decimal64 {
+ fraction-digits 2;
+ range "min .. 3.14 | 10 | 20..max";
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/employeeid.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/employeeid.yang
new file mode 100644
index 0000000..be27c70
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/employeeid.yang
@@ -0,0 +1,21 @@
+module employeeid {
+
+ yang-version 1;
+
+ namespace "ydt.employee-id";
+
+ prefix "id";
+
+ organization "ON-LAB";
+
+ description "This module defines for employee-id.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ leaf-list employeeid {
+ type string;
+ description "list of the employee id";
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/emptydata.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/emptydata.yang
new file mode 100644
index 0000000..33f58b3
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/emptydata.yang
@@ -0,0 +1,23 @@
+module emptydata {
+
+ yang-version 1;
+
+ namespace "ydt.emptydata";
+
+ prefix "emptydata";
+
+ organization "ON-LAB";
+
+ description "This module defines for emptydata classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ list emptyList {
+ config false;
+ leaf empty {
+ type empty;
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/enumtest.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/enumtest.yang
new file mode 100644
index 0000000..a9255c5
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/enumtest.yang
@@ -0,0 +1,27 @@
+module enumtest {
+
+ yang-version 1;
+
+ namespace "ydt.enumtest";
+
+ prefix "enumtest";
+
+ organization "ON-LAB";
+
+ description "This module defines for enumtest classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ list enumList {
+ key enumleaf;
+ leaf enumleaf {
+ type enumeration {
+ enum ten { value "10";}
+ enum hundred { value "100";}
+ enum thousand { value "1000"; }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/food.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/food.yang
new file mode 100644
index 0000000..202d11f
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/food.yang
@@ -0,0 +1,39 @@
+module food {
+
+ yang-version 1;
+
+ namespace "ydt.food";
+
+ prefix "foodType";
+
+ organization "ON-LAB";
+
+ description "This module defines for food.";
+
+ revision "2016-06-24" {
+ description "Initial revision.";
+ }
+
+ container food {
+ choice snack {
+ case sportsarena {
+
+ leaf pretzel {
+ type empty;
+ }
+ leaf beer {
+ type empty;
+ }
+ }
+ case latenight {
+ leaf chocolate {
+ type enumeration {
+ enum dark;
+ enum milk;
+ enum first-available;
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/ietf-inet-types.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/ietf-inet-types.yang
new file mode 100644
index 0000000..6b994bb
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/ietf-inet-types.yang
@@ -0,0 +1,454 @@
+ module yms-ietf-inet-types {
+
+ yang-version 1;
+
+ namespace
+ "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+
+ prefix inet;
+
+ organization
+ "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+ contact
+ "WG Web: <http://tools.ietf.org/wg/netmod/>
+ WG List: <mailto:netmod@ietf.org>
+
+ WG Chair: David Kessens
+ <mailto:david.kessens@nsn.com>
+
+ WG Chair: Juergen Schoenwaelder
+ <mailto:j.schoenwaelder@jacobs-university.de>
+
+ Editor: Juergen Schoenwaelder
+ <mailto:j.schoenwaelder@jacobs-university.de>";
+
+ description
+ "This module contains a collection of generally useful derived
+ YANG data types for Internet addresses and related things.
+
+ Copyright (c) 2013 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 6991; see
+ the RFC itself for full legal notices.";
+
+ revision "2013-07-15" {
+ description
+ "This revision adds the following new data types:
+ - ip-address-no-zone
+ - ipv4-address-no-zone
+ - ipv6-address-no-zone";
+ reference
+ "RFC 6991: Common YANG Data Types";
+
+ }
+
+ revision "2010-09-24" {
+ description "Initial revision.";
+ reference
+ "RFC 6021: Common YANG Data Types";
+
+ }
+
+
+ typedef ip-version {
+ type enumeration {
+ enum "unknown" {
+ value 0;
+ description
+ "An unknown or unspecified version of the Internet
+ protocol.";
+ }
+ enum "ipv4" {
+ value 1;
+ description
+ "The IPv4 protocol as defined in RFC 791.";
+ }
+ enum "ipv6" {
+ value 2;
+ description
+ "The IPv6 protocol as defined in RFC 2460.";
+ }
+ }
+ description
+ "This value represents the version of the IP protocol.
+
+ In the value set and its semantics, this type is equivalent
+ to the InetVersion textual convention of the SMIv2.";
+ reference
+ "RFC 791: Internet Protocol
+ RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+ RFC 4001: Textual Conventions for Internet Network Addresses";
+
+ }
+
+ typedef dscp {
+ type uint8 {
+ range "0..63";
+ }
+ description
+ "The dscp type represents a Differentiated Services Code Point
+ that may be used for marking packets in a traffic stream.
+ In the value set and its semantics, this type is equivalent
+ to the Dscp textual convention of the SMIv2.";
+ reference
+ "RFC 3289: Management Information Base for the Differentiated
+ Services Architecture
+ RFC 2474: Definition of the Differentiated Services Field
+ (DS Field) in the IPv4 and IPv6 Headers
+ RFC 2780: IANA Allocation Guidelines For Values In
+ the Internet Protocol and Related Headers";
+
+ }
+
+ typedef ipv6-flow-label {
+ type uint32 {
+ range "0..1048575";
+ }
+ description
+ "The ipv6-flow-label type represents the flow identifier or Flow
+ Label in an IPv6 packet header that may be used to
+ discriminate traffic flows.
+
+ In the value set and its semantics, this type is equivalent
+ to the IPv6FlowLabel textual convention of the SMIv2.";
+ reference
+ "RFC 3595: Textual Conventions for IPv6 Flow Label
+ RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+
+ }
+
+ typedef port-number {
+ type uint16 {
+ range "0..65535";
+ }
+ description
+ "The port-number type represents a 16-bit port number of an
+ Internet transport-layer protocol such as UDP, TCP, DCCP, or
+ SCTP. Port numbers are assigned by IANA. A current list of
+ all assignments is available from <http://www.iana.org/>.
+
+ Note that the port number value zero is reserved by IANA. In
+ situations where the value zero does not make sense, it can
+ be excluded by subtyping the port-number type.
+ In the value set and its semantics, this type is equivalent
+ to the InetPortNumber textual convention of the SMIv2.";
+ reference
+ "RFC 768: User Datagram Protocol
+ RFC 793: Transmission Control Protocol
+ RFC 4960: Stream Control Transmission Protocol
+ RFC 4340: Datagram Congestion Control Protocol (DCCP)
+ RFC 4001: Textual Conventions for Internet Network Addresses";
+
+ }
+
+ typedef as-number {
+ type uint32;
+ description
+ "The as-number type represents autonomous system numbers
+ which identify an Autonomous System (AS). An AS is a set
+ of routers under a single technical administration, using
+ an interior gateway protocol and common metrics to route
+ packets within the AS, and using an exterior gateway
+ protocol to route packets to other ASes. IANA maintains
+ the AS number space and has delegated large parts to the
+ regional registries.
+
+ Autonomous system numbers were originally limited to 16
+ bits. BGP extensions have enlarged the autonomous system
+ number space to 32 bits. This type therefore uses an uint32
+ base type without a range restriction in order to support
+ a larger autonomous system number space.
+
+ In the value set and its semantics, this type is equivalent
+ to the InetAutonomousSystemNumber textual convention of
+ the SMIv2.";
+ reference
+ "RFC 1930: Guidelines for creation, selection, and registration
+ of an Autonomous System (AS)
+ RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+ RFC 4001: Textual Conventions for Internet Network Addresses
+ RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+ Number Space";
+
+ }
+
+ typedef ip-address {
+ type union {
+ type ipv4-address;
+ type ipv6-address;
+ }
+ description
+ "The ip-address type represents an IP address and is IP
+ version neutral. The format of the textual representation
+ implies the IP version. This type supports scoped addresses
+ by allowing zone identifiers in the address format.";
+ reference
+ "RFC 4007: IPv6 Scoped Address Architecture";
+
+ }
+
+ typedef ipv4-address {
+ type string {
+ pattern
+ '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\p{N}\p{L}]+)?';
+ }
+ description
+ "The ipv4-address type represents an IPv4 address in
+ dotted-quad notation. The IPv4 address may include a zone
+ index, separated by a % sign.
+
+ The zone index is used to disambiguate identical address
+ values. For link-local addresses, the zone index will
+ typically be the interface index number or the name of an
+ interface. If the zone index is not present, the default
+ zone of the device will be used.
+
+ The canonical format for the zone index is the numerical
+ format";
+ }
+
+ typedef ipv6-address {
+ type string {
+ pattern
+ '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\p{N}\p{L}]+)?';
+ pattern
+ '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?';
+ }
+ description
+ "The ipv6-address type represents an IPv6 address in full,
+ mixed, shortened, and shortened-mixed notation. The IPv6
+ address may include a zone index, separated by a % sign.
+
+ The zone index is used to disambiguate identical address
+ values. For link-local addresses, the zone index will
+ typically be the interface index number or the name of an
+ interface. If the zone index is not present, the default
+ zone of the device will be used.
+
+
+
+ The canonical format of IPv6 addresses uses the textual
+ representation defined in Section 4 of RFC 5952. The
+ canonical format for the zone index is the numerical
+ format as described in Section 11.2 of RFC 4007.";
+ reference
+ "RFC 4291: IP Version 6 Addressing Architecture
+ RFC 4007: IPv6 Scoped Address Architecture
+ RFC 5952: A Recommendation for IPv6 Address Text
+ Representation";
+
+ }
+
+ typedef ip-address-no-zone {
+ type union {
+ type ipv4-address-no-zone;
+ type ipv6-address-no-zone;
+ }
+ description
+ "The ip-address-no-zone type represents an IP address and is
+ IP version neutral. The format of the textual representation
+ implies the IP version. This type does not support scoped
+ addresses since it does not allow zone identifiers in the
+ address format.";
+ reference
+ "RFC 4007: IPv6 Scoped Address Architecture";
+
+ }
+
+ typedef ipv4-address-no-zone {
+ type ipv4-address {
+ pattern '[0-9\.]*';
+ }
+ description
+ "An IPv4 address without a zone index. This type, derived from
+ ipv4-address, may be used in situations where the zone is
+ known from the context and hence no zone index is needed.";
+ }
+
+ typedef ipv6-address-no-zone {
+ type ipv6-address {
+ pattern '[0-9a-fA-F:\.]*';
+ }
+ description
+ "An IPv6 address without a zone index. This type, derived from
+ ipv6-address, may be used in situations where the zone is
+ known from the context and hence no zone index is needed.";
+ reference
+ "RFC 4291: IP Version 6 Addressing Architecture
+ RFC 4007: IPv6 Scoped Address Architecture
+ RFC 5952: A Recommendation for IPv6 Address Text
+ Representation";
+
+ }
+
+ typedef ip-prefix {
+ type union {
+ type ipv4-prefix;
+ type ipv6-prefix;
+ }
+ description
+ "The ip-prefix type represents an IP prefix and is IP
+ version neutral. The format of the textual representations
+ implies the IP version.";
+ }
+
+ typedef ipv4-prefix {
+ type string {
+ pattern
+ '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))';
+ }
+ description
+ "The ipv4-prefix type represents an IPv4 address prefix.
+ The prefix length is given by the number following the
+ slash character and must be less than or equal to 32.
+
+ A prefix length value of n corresponds to an IP address
+ mask that has n contiguous 1-bits from the most
+ significant bit (MSB) and all other bits set to 0.
+
+ The canonical format of an IPv4 prefix has all bits of
+ the IPv4 address set to zero that are not part of the
+ IPv4 prefix.";
+ }
+
+ typedef ipv6-prefix {
+ type string {
+ pattern
+ '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+ pattern
+ '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)';
+ }
+ description
+ "The ipv6-prefix type represents an IPv6 address prefix.
+ The prefix length is given by the number following the
+ slash character and must be less than or equal to 128.
+
+ A prefix length value of n corresponds to an IP address
+ mask that has n contiguous 1-bits from the most
+ significant bit (MSB) and all other bits set to 0.
+
+ The IPv6 address should have all bits that do not belong
+ to the prefix set to zero.
+
+ The canonical format of an IPv6 prefix has all bits of
+ the IPv6 address set to zero that are not part of the
+ IPv6 prefix. Furthermore, the IPv6 address is represented
+ as defined in Section 4 of RFC 5952.";
+ reference
+ "RFC 5952: A Recommendation for IPv6 Address Text
+ Representation";
+
+ }
+
+ typedef domain-name {
+ type string {
+ length "1..253";
+ pattern
+ '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)|\.';
+ }
+ description
+ "The domain-name type represents a DNS domain name. The
+ name SHOULD be fully qualified whenever possible.
+
+ Internet domain names are only loosely specified. Section
+ 3.5 of RFC 1034 recommends a syntax (modified in Section
+ 2.1 of RFC 1123). The pattern above is intended to allow
+ for current practice in domain name use, and some possible
+ future expansion. It is designed to hold various types of
+ domain names, including names used for A or AAAA records
+ (host names) and other records, such as SRV records. Note
+ that Internet host names have a stricter syntax (described
+ in RFC 952) than the DNS recommendations in RFCs 1034 and
+ 1123, and that systems that want to store host names in
+ schema nodes using the domain-name type are recommended to
+ adhere to this stricter standard to ensure interoperability.
+
+ The encoding of DNS names in the DNS protocol is limited
+ to 255 characters. Since the encoding consists of labels
+ prefixed by a length bytes and there is a trailing NULL
+ byte, only 253 characters can appear in the textual dotted
+ notation.
+
+ The description clause of schema nodes using the domain-name
+ type MUST describe when and how these names are resolved to
+ IP addresses. Note that the resolution of a domain-name value
+ may require to query multiple DNS records (e.g., A for IPv4
+ and AAAA for IPv6). The order of the resolution process and
+ which DNS record takes precedence can either be defined
+ explicitly or may depend on the configuration of the
+ resolver.
+
+ Domain-name values use the US-ASCII encoding. Their canonical
+ format uses lowercase US-ASCII characters. Internationalized
+ domain names MUST be A-labels as per RFC 5890.";
+ reference
+ "RFC 952: DoD Internet Host Table Specification
+ RFC 1034: Domain Names - Concepts and Facilities
+ RFC 1123: Requirements for Internet Hosts -- Application
+ and Support
+ RFC 2782: A DNS RR for specifying the location of services
+ (DNS SRV)
+ RFC 5890: Internationalized Domain Names in Applications
+ (IDNA): Definitions and Document Framework";
+
+ }
+
+ typedef host {
+ type union {
+ type ip-address;
+ type domain-name;
+ }
+ description
+ "The host type represents either an IP address or a DNS
+ domain name.";
+ }
+
+ typedef uri {
+ type string;
+ description
+ "The uri type represents a Uniform Resource Identifier
+ (URI) as defined by STD 66.
+
+ Objects using the uri type MUST be in US-ASCII encoding,
+ and MUST be normalized as described by RFC 3986 Sections
+ 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary
+ percent-encoding is removed, and all case-insensitive
+ characters are set to lowercase except for hexadecimal
+ digits, which are normalized to uppercase as described in
+ Section 6.2.2.1.
+
+ The purpose of this normalization is to help provide
+ unique URIs. Note that this normalization is not
+ sufficient to provide uniqueness. Two URIs that are
+ textually distinct after this normalization may still be
+ equivalent.
+
+ Objects using the uri type may restrict the schemes that
+ they permit. For example, 'data:' and 'urn:' schemes
+ might not be appropriate.
+
+ A zero-length URI is not a valid URI. This can be used to
+ express 'URI absent' where required.
+
+ In the value set and its semantics, this type is equivalent
+ to the Uri SMIv2 textual convention defined in RFC 5017.";
+ reference
+ "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+ RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+ Group: Uniform Resource Identifiers (URIs), URLs,
+ and Uniform Resource Names (URNs): Clarifications
+ and Recommendations
+ RFC 5017: MIB Textual Conventions for Uniform Resource
+ Identifiers (URIs)";
+
+ }
+ } // module ietf-inet-types
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/ietf-network.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/ietf-network.yang
new file mode 100644
index 0000000..b56f6cf
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/ietf-network.yang
@@ -0,0 +1,216 @@
+ module yms-ietf-network {
+ yang-version 1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-network";
+ prefix nd;
+
+ import yms-ietf-inet-types {
+ prefix inet;
+ }
+
+ organization
+ "IETF I2RS (Interface to the Routing System) Working Group";
+
+ contact
+ "WG Web: <http://tools.ietf.org/wg/i2rs/>
+ WG List: <mailto:i2rs@ietf.org>
+
+ WG Chair: Susan Hares
+ <mailto:shares@ndzh.com>
+
+ WG Chair: Jeffrey Haas
+ <mailto:jhaas@pfrc.org>
+
+ Editor: Alexander Clemm
+ <mailto:alex@cisco.com>
+
+ Editor: Jan Medved
+ <mailto:jmedved@cisco.com>
+
+ Editor: Robert Varga
+ <mailto:rovarga@cisco.com>
+
+ Editor: Tony Tkacik
+ <mailto:ttkacik@cisco.com>
+
+ Editor: Nitin Bahadur
+ <mailto:nitin_bahadur@yahoo.com>
+
+ Editor: Hariharan Ananthakrishnan
+ <mailto:hari@packetdesign.com>";
+
+ description
+ "This module defines a common base model for a collection
+ of nodes in a network. Node definitions are further used
+ in network topologies and inventories.
+
+ Copyright (c) 2015 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of
+ draft-ietf-i2rs-yang-network-topo-02;
+ see the RFC itself for full legal notices.
+
+ NOTE TO RFC EDITOR: Please replace above reference to
+ draft-ietf-i2rs-yang-network-topo-02 with RFC
+ number when published (i.e. RFC xxxx).";
+
+ revision 2015-12-08 {
+ description
+ "Initial revision.
+ NOTE TO RFC EDITOR: Please replace the following reference
+ to draft-ietf-i2rs-yang-network-topo-02 with
+ RFC number when published (i.e. RFC xxxx).";
+ reference
+ "draft-ietf-i2rs-yang-network-topo-02";
+ }
+
+ typedef node-id {
+ type inet:uri;
+ description
+ "Identifier for a node.";
+ }
+
+ typedef network-id {
+ type inet:uri;
+ description
+ "Identifier for a network.";
+ }
+ grouping network-ref {
+ description
+ "Contains the information necessary to reference a network,
+ for example an underlay network.";
+ leaf network-ref {
+ type leafref {
+ path "/nd:networks/nd:network/nd:network-id";
+ require-instance false;
+ }
+ description
+ "Used to reference a network, for example an underlay
+ network.";
+ }
+ }
+
+ grouping node-ref {
+ description
+ "Contains the information necessary to reference a node.";
+ leaf node-ref {
+ type leafref {
+ path "/nd:networks/nd:network[nd:network-id=current()/../"+
+ "network-ref]/nd:node/nd:node-id";
+ require-instance false;
+ }
+ description
+ "Used to reference a node.
+ Nodes are identified relative to the network they are
+ contained in.";
+ }
+ uses network-ref;
+ }
+
+ container networks {
+ description
+ "Serves as top-level container for a list of networks.";
+ list network {
+ key "network-id";
+ description
+ "Describes a network.
+ A network typically contains an inventory of nodes,
+ topological information (augmented through
+ network-topology model), as well as layering
+ information.";
+ container network-types {
+ description
+ "Serves as an augmentation target.
+ The network type is indicated through corresponding
+ presence containers augmented into this container.";
+ }
+ leaf network-id {
+ type inet:uri;
+ description
+ "Identifies a network.";
+ }
+ list supporting-network {
+ key "network-ref";
+ description
+ "An underlay network, used to represent layered network
+ topologies.";
+ leaf network-ref {
+ type leafref {
+ path "/networks/network/network-id";
+ require-instance false;
+ }
+ description
+ "References the underlay network.";
+ }
+ }
+ list node {
+ key "node-id";
+ description
+ "The inventory of nodes of this network.";
+ leaf node-id {
+ type node-id;
+ description
+ "Identifies a node uniquely within the containing
+ network.";
+ }
+ list supporting-node {
+ key "network-ref node-ref";
+ description
+ "Represents another node, in an underlay network, that
+ this node is supported by. Used to represent layering
+ structure.";
+ leaf network-ref {
+ type leafref {
+ path "../../../supporting-network/network-ref";
+ require-instance false;
+ }
+ description
+ "References the underlay network that the
+ underlay node is part of.";
+ }
+ leaf node-ref {
+ type leafref {
+ path "/networks/network/node/node-id";
+ require-instance false;
+ }
+ description
+ "References the underlay node itself.";
+ }
+ }
+ }
+ }
+ }
+ container networks-state {
+ config false;
+ description
+ "Serves as top-level container for a list of state information
+ for networks";
+ list network {
+ key "network-ref";
+ description
+ "Data nodes representing operational data and state of
+ networks.
+ An instance is automatically created for every network
+ in the corresponding list under the networks container.";
+ uses network-ref;
+ leaf server-provided {
+ type boolean;
+ description
+ "Indicates whether the information concerning this
+ particular network is populated by the server
+ (server-provided true, the general case for network
+ information discovered from the server),
+ or whether it is configured by a client
+ (server-provided true, possible e.g. for
+ service overlays managed through a controller).";
+ }
+ }
+ }
+ }
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/integer16.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer16.yang
new file mode 100644
index 0000000..8db77be
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer16.yang
@@ -0,0 +1,98 @@
+module integer16 {
+
+ yang-version 1;
+
+ namespace "ydt.integer16";
+
+ prefix "integer16";
+
+ organization "ON-LAB";
+
+ description "This module defines for integer16 classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ list multiRangeValidation {
+ config false;
+ leaf integer {
+ type int16 {
+ range "10..40 | 50..100";
+ }
+ }
+ leaf UnInteger {
+ type uint16 {
+ range "10..40 | 50..100";
+ }
+ }
+
+ leaf revInteger {
+ type int16 {
+ range "min .. 2 | 10 | 20..max";
+ }
+ }
+
+ leaf revUnInteger {
+ type uint16 {
+ range "min .. 2 | 10 | 20..max";
+ }
+ }
+ }
+
+ leaf negInt {
+ type int16 {
+ }
+ }
+
+ leaf posInt {
+ type int16 {
+ }
+ }
+
+ leaf minIntWithRange {
+ type int16 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf midIntWithRange {
+ type int16 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf maxIntWithRange {
+ type int16 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf minUInt {
+ type uint16 {
+ }
+ }
+
+ leaf maxUInt {
+ type uint16 {
+ }
+ }
+
+ leaf minUIntWithRange {
+ type uint16 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf midUIntWithRange {
+ type uint16 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf maxUIntWithRange {
+ type uint16 {
+ range "10 .. 100";
+ }
+ }
+}
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/integer32.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer32.yang
new file mode 100644
index 0000000..fb596cf
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer32.yang
@@ -0,0 +1,98 @@
+module integer32 {
+
+ yang-version 1;
+
+ namespace "ydt.integer32";
+
+ prefix "integer32";
+
+ organization "ON-LAB";
+
+ description "This module defines for integer32 classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ list multiRangeValidation {
+ config false;
+ leaf integer {
+ type int32 {
+ range "10..40 | 50..100";
+ }
+ }
+ leaf UnInteger {
+ type uint32 {
+ range "10..40 | 50..100";
+ }
+ }
+
+ leaf revInteger {
+ type int32 {
+ range "min .. 2 | 10 | 20..max";
+ }
+ }
+
+ leaf revUnInteger {
+ type uint32 {
+ range "min .. 2 | 10 | 20..max";
+ }
+ }
+ }
+
+ leaf negInt {
+ type int32 {
+ }
+ }
+
+ leaf posInt {
+ type int32 {
+ }
+ }
+
+ leaf minIntWithRange {
+ type int32 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf midIntWithRange {
+ type int32 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf maxIntWithRange {
+ type int32 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf minUInt {
+ type uint32 {
+ }
+ }
+
+ leaf maxUInt {
+ type uint32 {
+ }
+ }
+
+ leaf minUIntWithRange {
+ type uint32 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf midUIntWithRange {
+ type uint32 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf maxUIntWithRange {
+ type uint32 {
+ range "10 .. 100";
+ }
+ }
+}
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/integer64.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer64.yang
new file mode 100644
index 0000000..39479c6
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer64.yang
@@ -0,0 +1,98 @@
+module integer64 {
+
+ yang-version 1;
+
+ namespace "ydt.integer64";
+
+ prefix "integer64";
+
+ organization "ON-LAB";
+
+ description "This module defines for integer64 classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ list multiRangeValidation {
+ config false;
+ leaf integer {
+ type int64 {
+ range "10..40 | 50..100";
+ }
+ }
+ leaf UnInteger {
+ type uint64 {
+ range "10..40 | 50..100";
+ }
+ }
+
+ leaf revInteger {
+ type int64 {
+ range "min .. 2 | 10 | 20..max";
+ }
+ }
+
+ leaf revUnInteger {
+ type uint64 {
+ range "min .. 2 | 10 | 20..max";
+ }
+ }
+ }
+
+ leaf negInt {
+ type int64 {
+ }
+ }
+
+ leaf posInt {
+ type int64 {
+ }
+ }
+
+ leaf minIntWithRange {
+ type int64 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf midIntWithRange {
+ type int64 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf maxIntWithRange {
+ type int64 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf minUInt {
+ type uint64 {
+ }
+ }
+
+ leaf maxUInt {
+ type uint64 {
+ }
+ }
+
+ leaf minUIntWithRange {
+ type uint64 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf midUIntWithRange {
+ type uint64 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf maxUIntWithRange {
+ type uint64 {
+ range "10 .. 100";
+ }
+ }
+}
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/integer8.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer8.yang
new file mode 100644
index 0000000..e05c235
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer8.yang
@@ -0,0 +1,99 @@
+module integer8 {
+
+ yang-version 1;
+
+ namespace "ydt.integer8";
+
+ prefix "integer8";
+
+ organization "ON-LAB";
+
+ description "This module defines for integer8 classifier.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ list multiRangeValidation {
+ config false;
+ leaf integer {
+ type int8 {
+ range "10..40 | 50..100";
+ }
+ }
+ leaf UnInteger {
+ type uint8 {
+ range "10..40 | 50..100";
+ }
+ }
+
+ leaf revInteger {
+ type int8 {
+ range "min .. 2 | 10 | 20..max";
+ }
+ }
+
+ leaf revUnInteger {
+ type uint8 {
+ range "min .. 2 | 10 | 20..max";
+ }
+ }
+ }
+
+
+ leaf negInt {
+ type int8 {
+ }
+ }
+
+ leaf posInt {
+ type int8 {
+ }
+ }
+
+ leaf minIntWithRange {
+ type int8 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf midIntWithRange {
+ type int8 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf maxIntWithRange {
+ type int8 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf minUInt {
+ type uint8 {
+ }
+ }
+
+ leaf maxUInt {
+ type uint8 {
+ }
+ }
+
+ leaf minUIntWithRange {
+ type uint8 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf midUIntWithRange {
+ type uint8 {
+ range "10 .. 100";
+ }
+ }
+
+ leaf maxUIntWithRange {
+ type uint8 {
+ range "10 .. 100";
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/logisticsmanager.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/logisticsmanager.yang
new file mode 100644
index 0000000..7198611
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/logisticsmanager.yang
@@ -0,0 +1,16 @@
+module logisticsmanager {
+
+ yang-version 1;
+
+ namespace "ydt.logistics-manager";
+
+ prefix "root";
+
+ organization "ON-LAB";
+
+ description "This module defines for logistics-manager.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/materialsupervisor.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/materialsupervisor.yang
new file mode 100644
index 0000000..6ab16ea
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/materialsupervisor.yang
@@ -0,0 +1,29 @@
+module materialsupervisor {
+
+ yang-version 1;
+
+ namespace "ydt.material-supervisor";
+
+ prefix "material";
+
+ organization "ON-LAB";
+
+ description "This module defines for material-supervisor.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ list supervisor {
+ key "name";
+ leaf name {
+ type string;
+ description "name of material-supervisor";
+ }
+
+ leaf departmentId {
+ type string;
+ description "name of department";
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/merchandisersupervisor.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/merchandisersupervisor.yang
new file mode 100644
index 0000000..db40c7e
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/merchandisersupervisor.yang
@@ -0,0 +1,21 @@
+module merchandisersupervisor {
+
+ yang-version 1;
+
+ namespace "ydt.Merchandiser-supervisor";
+
+ prefix "merchandiser";
+
+ organization "ON-LAB";
+
+ description "This module defines for Merchandiser-supervisor.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ leaf supervisor {
+ type string;
+ description "name of the Merchandiser-supervisor.";
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/purchasingsupervisor.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/purchasingsupervisor.yang
new file mode 100644
index 0000000..a52b4c5
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/purchasingsupervisor.yang
@@ -0,0 +1,27 @@
+module purchasingsupervisor {
+
+ yang-version 1;
+
+ namespace "ydt.purchasing-supervisor";
+
+ prefix "purchasing";
+
+ organization "ON-LAB";
+
+ description "This module defines for purchasing-supervisor.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ container supervisor {
+ leaf purchasing-specialist {
+ type string;
+ description "name of the purchasing-specialist person";
+ }
+ leaf support {
+ type string;
+ description "name of the support person";
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/rootlist.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/rootlist.yang
new file mode 100644
index 0000000..ef5a0a0
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/rootlist.yang
@@ -0,0 +1,111 @@
+module rootlist {
+
+ yang-version 1;
+
+ namespace "ydt.rootlist";
+
+ prefix "rootlist";
+
+ organization "ON-LAB";
+
+ description "This submodule defines for root.";
+
+ revision "2016-06-24" {
+ description "Initial revision.";
+ }
+/*
+ +--------------+---------+-------------+
+ | substatement | section | cardinality |
+ +--------------+---------+-------------+
+ | anyxml | 7.10 | 0..n |
+ | choice | 7.9 | 0..n |
+ | config | 7.19.1 | 0..1 |
+ | container | 7.5 | 0..n |
+ | description | 7.19.3 | 0..1 |
+ | grouping | 7.11 | 0..n |
+ | if-feature | 7.18.2 | 0..n |
+ | key | 7.8.2 | 0..1 |
+ | leaf | 7.6 | 0..n |
+ | leaf-list | 7.7 | 0..n |
+ | list | 7.8 | 0..n |
+ | max-elements | 7.7.4 | 0..1 |
+ | min-elements | 7.7.3 | 0..1 |
+ | must | 7.5.3 | 0..n |
+ | ordered-by | 7.7.5 | 0..1 |
+ | reference | 7.19.4 | 0..1 |
+ | status | 7.19.2 | 0..1 |
+ | typedef | 7.3 | 0..n |
+ | unique | 7.8.3 | 0..n |
+ | uses | 7.12 | 0..n |
+ | when | 7.19.5 | 0..1 |
+ +--------------+---------+-------------+
+*/
+
+ list listwithoutcontainer {
+ key "invalidinterval";
+ min-elements 1; //-- comment
+ leaf invalidinterval {
+ type "uint16";
+ units "seconds";
+ description "Interval before a route is declared invalid";
+ config true;
+ mandatory true;
+ status current;
+ reference "RFC 6020";
+ }
+ }
+
+ list listwithcontainer {
+ key "invalid invalid1";
+ max-elements 3;
+ min-elements 1;
+ reference "list reference";
+ unique "invalid";
+ leaf-list invalidinterval {
+ type "uint16";
+ units "seconds";
+ description "Interval before a route is declared invalid";
+ config false;
+ status current;
+ reference "RFC 6020";
+ }
+
+ container interface {
+ leaf invalidinterval {
+ type "uint16";
+ units "seconds";
+ status current;
+ mandatory true;
+ reference "RFC 6020";
+ }
+
+ leaf invalid {
+ type "uint16";
+ units "seconds";
+ description "Interval before a route is declared invalid";
+ default "16";
+ status current;
+ reference "RFC 6020";
+ }
+
+ }
+
+ leaf invalid {
+ type "uint16";
+ units "seconds";
+ description "Interval before a route is declared invalid";
+ mandatory true;
+ status current;
+ reference "RFC 6020";
+ }
+
+ leaf invalid1 {
+ type "uint16";
+ units "seconds";
+ description "Interval before a route is declared invalid";
+ mandatory true;
+ status current;
+ reference "RFC 6020";
+ }
+ }
+}
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/tradingsupervisor.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/tradingsupervisor.yang
new file mode 100644
index 0000000..a6c8681
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/tradingsupervisor.yang
@@ -0,0 +1,21 @@
+module tradingsupervisor {
+
+ yang-version 1;
+
+ namespace "ydt.trading-supervisor";
+
+ prefix "trading";
+
+ organization "ON-LAB";
+
+ description "This module defines for trading-supervisor.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ leaf supervisor {
+ type string;
+ description "name of the trading-supervisor";
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/warehousesupervisor.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/warehousesupervisor.yang
new file mode 100644
index 0000000..5145824
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/warehousesupervisor.yang
@@ -0,0 +1,21 @@
+module warehousesupervisor {
+
+ yang-version 1;
+
+ namespace "ydt.warehouse-supervisor";
+
+ prefix "warehouse";
+
+ organization "ON-LAB";
+
+ description "This module defines for warehouse-supervisor.";
+
+ revision "2016-05-24" {
+ description "Initial revision.";
+ }
+
+ leaf-list supervisor {
+ type string;
+ description "name of the warehouse-supervisor's";
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/yms-network-topology.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/yms-network-topology.yang
new file mode 100644
index 0000000..6b9452c
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/yms-network-topology.yang
@@ -0,0 +1,304 @@
+ module yms-network-topology {
+ yang-version 1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology";
+ prefix lnk;
+
+ import yms-ietf-inet-types {
+ prefix inet;
+ }
+ import yms-ietf-network {
+ prefix nd;
+ }
+
+ organization
+ "IETF I2RS (Interface to the Routing System) Working Group";
+
+ contact
+ "WG Web: <http://tools.ietf.org/wg/i2rs/>
+ WG List: <mailto:i2rs@ietf.org>
+
+ WG Chair: Susan Hares
+ <mailto:shares@ndzh.com>
+
+ WG Chair: Jeffrey Haas
+ <mailto:jhaas@pfrc.org>
+
+ Editor: Alexander Clemm
+ <mailto:alex@cisco.com>
+
+ Editor: Jan Medved
+ <mailto:jmedved@cisco.com>
+
+ Editor: Robert Varga
+ <mailto:rovarga@cisco.com>
+
+ Editor: Tony Tkacik
+ <mailto:ttkacik@cisco.com>
+
+ Editor: Nitin Bahadur
+ <mailto:nitin_bahadur@yahoo.com>
+
+ Editor: Hariharan Ananthakrishnan
+ <mailto:hari@packetdesign.com>";
+
+ description
+ "This module defines a common base model for network topology,
+ augmenting the base network model with links to connect nodes,
+ as well as termination points to terminate links on nodes.
+
+ Copyright (c) 2015 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of
+ draft-ietf-i2rs-yang-network-topo-02;
+ see the RFC itself for full legal notices.
+
+ NOTE TO RFC EDITOR: Please replace above reference to
+ draft-ietf-i2rs-yang-network-topo-02 with RFC
+ number when published (i.e. RFC xxxx).";
+
+ revision 2015-12-08 {
+ description
+ "Initial revision.
+ NOTE TO RFC EDITOR: Please replace the following reference
+ to draft-ietf-i2rs-yang-network-topo-02 with
+ RFC number when published (i.e. RFC xxxx).";
+ reference
+ "draft-ietf-i2rs-yang-network-topo-02.";
+ }
+
+ typedef link-id {
+ type inet:uri;
+ description
+ "An identifier for a link in a topology.
+ The identifier SHOULD be chosen such that the same link in a
+ real network topology will always be identified through the
+ same identifier, even if the model is instantiated in
+ separate datastores. An implementation MAY choose to capture
+ semantics in the identifier, for example to indicate the type
+ of link and/or the type of topology that the link is a part
+ of.";
+ }
+
+ typedef tp-id {
+ type inet:uri;
+ description
+ "An identifier for termination points on a node.
+ The identifier SHOULD be chosen such that the same TP in a
+ real network topology will always be identified through the
+ same identifier, even if the model is instantiated in
+ separate datastores. An implementation MAY choose to capture
+ semantics in the identifier, for example to indicate the type
+ of TP and/or the type of node and topology that the TP is a
+ part of.";
+ }
+ grouping link-ref {
+ description
+ "References a link in a specific network.";
+ leaf link-ref {
+ type leafref {
+ path "/nd:networks/nd:network[nd:network-id=current()/../"+
+ "network-ref]/lnk:link/lnk:link-id";
+ require-instance false;
+ }
+ description
+ "A type for an absolute reference a link instance.
+ (This type should not be used for relative references.
+ In such a case, a relative path should be used instead.)";
+ }
+ uses nd:network-ref;
+ }
+
+ grouping tp-ref {
+ description
+ "References a termination point in a specific node.";
+ leaf tp-ref {
+ type leafref {
+ path "/nd:networks/nd:network[nd:network-id=current()/../"+
+ "network-ref]/nd:node[nd:node-id=current()/../"+
+ "node-ref]/lnk:termination-point/lnk:tp-id";
+ require-instance false;
+ }
+ description
+ "A type for an absolute reference to a termination point.
+ (This type should not be used for relative references.
+ In such a case, a relative path should be used instead.)";
+ }
+ uses nd:node-ref;
+ }
+
+ augment "/nd:networks/nd:network" {
+ description
+ "Add links to the network model.";
+ list link {
+ key "link-id";
+ description
+ "A Network Link connects a by Local (Source) node and
+ a Remote (Destination) Network Nodes via a set of the
+ nodes' termination points.
+ As it is possible to have several links between the same
+ source and destination nodes, and as a link could
+ potentially be re-homed between termination points, to
+ ensure that we would always know to distinguish between
+ links, every link is identified by a dedicated link
+ identifier.
+ Note that a link models a point-to-point link, not a
+ multipoint link.
+ Layering dependencies on links in underlay topologies are
+ not represented as the layering information of nodes and of
+ termination points is sufficient.";
+ container source {
+ description
+ "This container holds the logical source of a particular
+ link.";
+ leaf source-node {
+ type leafref {
+ path "../../../nd:node/nd:node-id";
+ }
+ mandatory true;
+ description
+ "Source node identifier, must be in same topology.";
+ }
+ leaf source-tp {
+ type leafref {
+ path "../../../nd:node[nd:node-id=current()/../"+
+ "source-node]/t-point/tp-id";
+ }
+ description
+ "Termination point within source node that terminates
+ the link.";
+ }
+ }
+ container destination {
+ description
+ "This container holds the logical destination of a
+ particular link.";
+ leaf dest-node {
+ type leafref {
+ path "../../../nd:node/nd:node-id";
+ }
+ mandatory true;
+ description
+ "Destination node identifier, must be in the same
+ network.";
+ }
+ leaf dest-tp {
+ type leafref {
+ path "../../../nd:node[nd:node-id=current()/../"+
+ "dest-node]/t-point/tp-id";
+ }
+ description
+ "Termination point within destination node that
+ terminates the link.";
+ }
+ }
+ leaf link-id {
+ type link-id;
+ description
+ "The identifier of a link in the topology.
+ A link is specific to a topology to which it belongs.";
+ }
+ list supporting-link {
+ key "network-ref link-ref";
+ description
+ "Identifies the link, or links, that this link
+ is dependent on.";
+ leaf network-ref {
+ type leafref {
+ path "../../../nd:supporting-network/nd:network-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which underlay topology
+ supporting link is present.";
+ }
+ leaf link-ref {
+ type leafref {
+ path "/nd:networks/nd:network[nd:network-id=current()/"+
+ "../network-ref]/link/link-id";
+ require-instance false;
+ }
+ description
+ "This leaf identifies a link which is a part
+ of this link's underlay. Reference loops, in which
+ a link identifies itself as its underlay, either
+ directly or transitively, are not allowed.";
+ }
+ }
+ }
+
+ leaf link-id {
+ type link-id;
+ description
+ "The identifier of a link in the topology.
+ A link is specific to a topology to which it belongs.";
+ }
+ }
+ augment "/nd:networks/nd:network/nd:node" {
+ description
+ "Augment termination points which terminate links.
+ Termination points can ultimately be mapped to interfaces.";
+ list t-point {
+ key "tp-id";
+ description
+ "A termination point can terminate a link.
+ Depending on the type of topology, a termination point
+ could, for example, refer to a port or an interface.";
+ leaf tp-id {
+ type tp-id;
+ description
+ "Termination point identifier.";
+ }
+ list supporting-termination-point {
+ key "network-ref node-ref tp-ref";
+ description
+ "The leaf list identifies any termination points that
+ the termination point is dependent on, or maps onto.
+ Those termination points will themselves be contained
+ in a supporting node.
+ This dependency information can be inferred from
+ the dependencies between links. For this reason,
+ this item is not separately configurable. Hence no
+ corresponding constraint needs to be articulated.
+ The corresponding information is simply provided by the
+ implementing system.";
+ leaf network-ref {
+ type leafref {
+ path "../../../nd:supporting-node/nd:network-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which topology the
+ supporting termination point is present.";
+ }
+ leaf node-ref {
+ type leafref {
+ path "../../../nd:supporting-node/nd:node-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which node the supporting
+ termination point is present.";
+ }
+ leaf tp-ref {
+ type leafref {
+ path "/nd:networks/nd:network[nd:network-id=current()/"+
+ "../network-ref]/nd:node[nd:node-id=current()/../"+
+ "node-ref]/t-point/tp-id";
+ require-instance false;
+ }
+ description
+ "Reference to the underlay node, must be in a
+ different topology";
+ }
+ }
+ }
+ }
+ }