Update TAPI YANG files to v2.1(v20181016)

* Replaced TAPI yang files with latest master(v2.1)
* Updated ModelRegistrator
* Updated library path for auto generated library
* Updated ODTN Phase1.0 impl
* Added TAPI XML conversion test for ODTN Phase1.0
* Added sample JSON for ODTN Phase1.0

Change-Id: I11eeab2423a1468df3ee515d40f31b82ed96aa3c
diff --git a/models/tapi/src/main/yang/tapi-oam@2018-10-16.yang b/models/tapi/src/main/yang/tapi-oam@2018-10-16.yang
new file mode 100644
index 0000000..baadabf
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-oam@2018-10-16.yang
@@ -0,0 +1,826 @@
+module tapi-oam {

+    namespace "urn:onf:otcc:yang:tapi-oam";

+    prefix tapi-oam;

+    import tapi-common {

+        prefix tapi-common;

+    }

+    import tapi-connectivity {

+        prefix tapi-connectivity;

+    }

+    import tapi-topology {

+        prefix tapi-topology;

+    }

+    organization "ONF OTCC (Open Transport Configuration & Control) Project";

+    contact "

+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>

+         Project List: <mailto:transport-api@opennetworking.org>

+         Editor: Karthik Sethuraman

+                 <mailto:karthik.sethuraman@necam.com>";

+    description "

+        This module contains TAPI OAM Model definitions.

+        Source: TapiOam.uml

+        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

+        License: This module is distributed under the Apache License 2.0";

+    revision 2018-10-16 {

+        description "ONF Transport API version 2.1.0.

+          - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.

+          - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]

+            <https://github.com/OpenNetworkingFoundation/EagleUmlYang>

+            and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]

+            <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>

+          - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.

+            As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.

+          - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.

+            The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.

+            YANG models included in this release are not backward compatible with previous TAPI releases.

+          - Changes included in this TAPI release (v2.1.0) are listed in

+            <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";

+    }

+    revision 2018-03-07 {

+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

+    }

+    revision 2018-02-16 {

+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

+    }

+    revision 2018-01-02 {

+        description "ONF Transport API version 2.0.0
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

+    }

+    augment "/tapi-common:context" {

+        container oam-context {

+            uses oam-context;

+            description "Augments the base TAPI Context with OamService information";

+        }

+        description "Augments the base TAPI Context with OamService information";

+    }

+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {

+    	container mep-mip-list {

+            uses mep-mip-list;

+            description "none";

+        }

+        description "none";

+    }

+    

+    /*************************

+    * definitions of references

+    *************************/

+    grouping oam-service-ref {

+        leaf oam-service-uuid {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-service/tapi-oam:uuid';

+            }

+            description "none";

+        }

+        description "none";

+    }

+

+    grouping oam-service-end-point-ref {

+    	uses oam-service-ref;

+    	leaf oam-service-end-point-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-service/tapi-oam:end-point/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    grouping meg-ref {

+        leaf meg-uuid {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:uuid';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    

+    grouping maintenance-entity-ref {

+    	uses meg-ref;

+    	leaf maintenance-entity-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:me/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    grouping mep-ref {

+    	uses meg-ref;

+    	leaf mep-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mep/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    grouping mip-ref {

+    	uses meg-ref;

+    	leaf mip-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mip/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    grouping oam-job-ref {

+        leaf oam-job-uuid {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:uuid';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    

+    grouping pm-current-data-ref {

+    	uses oam-job-ref;

+    	leaf pm-current-data-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    grouping pm-history-data-ref {

+    	uses pm-current-data-ref;

+    	leaf pm-history-data-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    grouping oam-profile-ref {

+        leaf oam-profile-uuid {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:uuid';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    

+    grouping pm-threshold-data-ref {

+    	uses oam-profile-ref;

+    	leaf pm-threshold-data-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:pm-threshold-data/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    grouping pm-bin-data-ref {

+    	uses oam-profile-ref;

+    	leaf pm-bin-data-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:pm-bin-data/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    /***********************

+    * package object-classes

+    **********************/ 

+        grouping mep {

+            leaf layer-protocol-name {

+                type tapi-common:layer-protocol-name;

+                config false;

+                description "none";

+            }

+            leaf direction {

+                type tapi-common:termination-direction;

+                config false;

+                description "none";

+            }

+            leaf mep-identifier {

+                type string;

+                config false;

+                description "none";

+            }

+            leaf-list peer-mep-identifier {

+                type string;

+                config false;

+                min-elements 1;

+                description "none";

+            }

+            uses tapi-common:local-class;

+            uses tapi-common:operational-state-pac;

+            description "none";

+        }

+        grouping oam-job {

+            list oam-service-end-point {

+            	uses oam-service-end-point-ref;

+            	key 'oam-service-uuid oam-service-end-point-local-id';

+            	min-elements 1;

+                description "none";

+            }

+            container oam-profile {

+                uses oam-profile-ref;

+                description "none";

+            }

+            list pm-current-data {

+                key 'local-id';

+                config false;

+                uses pm-current-data;

+                description "Granularity period of the CurrentData identifies the specific CurrentData instance in the scope of this OamJob.

+                    For example, typically at least

+                    one 15min and

+                    one 24hr;

+                    optionally one additional configurable (< 15min)";

+            }

+            leaf oam-job-type {

+                type oam-job-type;

+                description "none";

+            }

+            container schedule {

+                uses tapi-common:time-range;

+                description "none";

+            }

+            leaf creation-time {

+                type tapi-common:date-and-time;

+                config false;

+                description "none";

+            }

+            uses tapi-common:global-class;

+            uses tapi-common:admin-state-pac;

+            description "none";

+        }

+        grouping meg {

+            list mep {

+                key 'local-id';

+                config false;

+                uses mep;

+                description "1. ME may have 0 MEPs (case of transit domains where at least 1 MIP is present)

+                    2. ME may have 1 MEP (case of edge domaind, where the peer MEP is ouside the managed domain)

+                    3. ME may have 2 MEPs";

+            }

+            list mip {

+                key 'local-id';

+                config false;

+                uses mip;

+                description "ME may 0, 1, or more MIPs";

+            }

+            leaf layer-protocol-name {

+                type tapi-common:layer-protocol-name;

+                config false;

+                description "none";

+            }

+            leaf direction {

+                type tapi-common:forwarding-direction;

+                config false;

+                description "none";

+            }

+            leaf meg-level {

+                type uint64;

+                config false;

+                description "none";

+            }

+            leaf meg-identifier {

+                type string;

+                config false;

+                description "none";

+            }

+            uses tapi-common:resource-spec;

+            uses tapi-common:operational-state-pac;

+            description "none";

+        }

+        grouping mip {

+            leaf layer-protocol-name {

+                type tapi-common:layer-protocol-name;

+                config false;

+                description "none";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+        grouping oam-service {

+            list end-point {

+                key 'local-id';

+                min-elements 2;

+                uses oam-service-end-point;

+                description "none";

+            }

+            container meg {

+                uses meg-ref;

+                config false;

+                description "none";

+            }

+            container oam-profile {

+                uses oam-profile-ref;

+                description "none";

+            }

+            uses tapi-common:service-spec;

+            uses tapi-common:admin-state-pac;

+            uses oam-constraint;

+            description "none";

+        }

+        grouping oam-context {

+            list oam-service {

+                key 'uuid';

+                uses oam-service;

+                description "none";

+            }

+            list meg {

+                key 'uuid';

+                config false;

+                uses meg;

+                description "none";

+            }

+            list oam-job {

+                key 'uuid';

+                uses oam-job;

+                description "none";

+            }

+            list oam-profile {

+                key 'uuid';

+                uses oam-profile;

+                description "none";

+            }

+            description "none";

+        }

+        grouping oam-service-end-point {

+            container service-interface-point {

+                uses tapi-common:service-interface-point-ref;

+                description "none";

+            }

+            container connectivity-service-end-point {

+                uses tapi-connectivity:connectivity-service-end-point-ref;

+                description "none";

+            }

+            container mep {

+                uses mep-ref;

+                config false;

+                description "none";

+            }

+            container mip {

+                uses mip-ref;

+                config false;

+                description "none";

+            }

+            leaf layer-protocol-name {

+                type tapi-common:layer-protocol-name;

+                description "none";

+            }

+            leaf direction {

+                type tapi-common:port-direction;

+                description "none";

+            }

+            leaf mep-identifier {

+                type string;

+                description "This attribute contains the identifier of the MEP.

+                    This attribute is empty in case the OSEP relates to the provisioing of an MIP.

+                    ";

+            }

+            leaf-list peer-mep-identifier {

+                type string;

+                description "This attribute models the MI_PeerMEP_ID[i] defined in G.8021 and configured as specified in G.8051. It provides the identifiers of the MEPs which are peer to the subject MEP.

+                    This attribute is not specified in case the OSEP relates to the provisioing of an MIP.

+                    In case of P2P, there is only one peer";

+            }

+            uses tapi-common:local-class;

+            uses tapi-common:admin-state-pac;

+            description "none";

+        }

+        grouping mep-mip-list {

+            list mip {

+                uses mip-ref;

+                key 'meg-uuid mip-local-id';

+                description "none";

+            }

+            list mep {

+                uses mep-ref;

+                key 'meg-uuid mep-local-id';

+                description "none";

+            }

+            description "none";

+        }

+        grouping oam-constraint {

+            leaf layer-protocol-name {

+                type tapi-common:layer-protocol-name;

+                description "none";

+            }

+            leaf direction {

+                type tapi-common:forwarding-direction;

+                description "none";

+            }

+            leaf meg-level {

+                type uint64;

+                description "none";

+            }

+            description "none";

+        }

+        grouping pm-current-data {

+            list pm-history-data {

+                key 'local-id';

+                config false;

+                uses pm-history-data;

+                description "in case of 24hr Current Data, at least 1 History Data.

+                    In case of 15min Current Data, at least 16 History Data.

+                    In case of <15min, the number of History Data shall be able to cover a span of 4 hours.";

+            }

+            container granularity-period {

+                uses tapi-common:time-period;

+                description "none";

+            }

+            leaf timestamp {

+                type tapi-common:date-and-time;

+                config false;

+                description "This attribute indicates the start of the current monitoring interval.

+                    The value is bound to the quarter of an hour in case of a 15 minute interval and bound to the hour in case of a 24 hour interval.";

+            }

+            container elapsed-time {

+                uses tapi-common:time-interval;

+                description "none";

+            }

+            leaf suspect-interval-flag {

+                type boolean;

+                description "This attribute is used to indicate that the performance data for the current period may not be reliable. Some reasons for this to occur are:

+                    – Suspect data were detected by the actual resource doing data collection.

+                    – Transition of the administrativeState attribute to/from the 'lock' state.

+                    – Transition of the operationalState to/from the 'disabled' state.

+                    – Scheduler setting that inhibits the collection function.

+                    – The performance counters were reset during the interval.

+                    – The currentData (or subclass) object instance was created during the monitoring period.";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+        grouping pm-history-data {

+            container granularity-period {

+                uses tapi-common:time-period;

+                description "none";

+            }

+            leaf period-end-time {

+                type tapi-common:date-and-time;

+                description "none";

+            }

+            leaf suspect-interval-flag {

+                type boolean;

+                config false;

+                description "This attribute indicates that the performance data may not be reliable.";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+        grouping oam-profile {

+            list pm-threshold-data {

+                key 'local-id';

+                min-elements 1;

+                uses pm-threshold-data;

+                description "none";

+            }

+            list pm-bin-data {

+                key 'local-id';

+                min-elements 1;

+                uses pm-bin-data;

+                description "none";

+            }

+            uses tapi-common:global-class;

+            description "none";

+        }

+        grouping pm-threshold-data {

+            container granularity-period {

+                uses tapi-common:time-period;

+                description "none";

+            }

+            leaf is-transient {

+                type boolean;

+                description "none";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+        grouping pm-bin-data {

+            container granularity-period {

+                uses tapi-common:time-period;

+                description "none";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+

+    /***********************

+    * package type-definitions

+    **********************/ 

+        identity OAM_JOB_TYPE {

+            description "none";

+        }

+        typedef oam-job-type {

+            type identityref {

+                base OAM_JOB_TYPE;

+            }

+            description "none";

+        }

+

+    /***********************

+    * package interfaces

+    **********************/ 

+        rpc create-oam-service {

+            description "none";

+            input {

+                list end-point {

+                    min-elements 2;

+                    uses oam-service-end-point;

+                    description "none";

+                }

+                container oam-constraint {

+                    uses oam-constraint;

+                    description "none";

+                }

+                leaf state {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container service {

+                    uses oam-service;

+                    description "none";

+                }

+            }

+        }

+        rpc delete-oam-service {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+            }

+        }

+        rpc get-oam-service {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container service {

+                    uses oam-service;

+                    description "none";

+                }

+            }

+        }

+        rpc create-oam-job {

+            description "none";

+            input {

+                leaf oam-job-type {

+                    type oam-job-type;

+                    description "none";

+                }

+                list oam-service-end-point {

+                    min-elements 2;

+                    uses oam-service-end-point;

+                    description "none";

+                }

+                container oam-profile {

+                    uses oam-profile;

+                    description "none";

+                }

+                leaf state {

+                    type string;

+                    description "none";

+                }

+                leaf schedule {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container oam-job {

+                    uses oam-job;

+                    description "none";

+                }

+            }

+        }

+        rpc get-oam-job {

+            description "none";

+            input {

+                leaf job-id {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container oam-job {

+                    uses oam-job;

+                    description "none";

+                }

+            }

+        }

+        rpc get-oam-service-list {

+            description "none";

+            output {

+                list service {

+                    uses oam-service;

+                    description "none";

+                }

+            }

+        }

+        rpc get-meg {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container meg {

+                    uses meg;

+                    description "none";

+                }

+            }

+        }

+        rpc update-oam-service {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+                list end-point {

+                    uses oam-service-end-point;

+                    description "none";

+                }

+                container oam-constraint {

+                    uses oam-constraint;

+                    description "none";

+                }

+                leaf state {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container service {

+                    uses oam-service;

+                    description "none";

+                }

+            }

+        }

+        rpc delete-oam-job {

+            description "none";

+            input {

+                leaf job-id {

+                    type string;

+                    description "none";

+                }

+            }

+        }

+        rpc update-oam-job {

+            description "none";

+            input {

+                leaf job-id {

+                    type string;

+                    description "none";

+                }

+                container oam-profile {

+                    uses oam-profile;

+                    description "none";

+                }

+                leaf state {

+                    type string;

+                    description "none";

+                }

+                leaf schedule {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container oam-job {

+                    uses oam-job;

+                    description "none";

+                }

+            }

+        }

+        rpc create-oam-service-end-point {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+                leaf sip-id {

+                    type string;

+                    description "none";

+                }

+                leaf c-sep-id {

+                    type string;

+                    description "none";

+                }

+                leaf layer {

+                    type string;

+                    description "none";

+                }

+                leaf direction {

+                    type string;

+                    description "none";

+                }

+                leaf state {

+                    type string;

+                    description "none";

+                }

+                leaf mep-identifier {

+                    type string;

+                    description "none";

+                }

+                leaf-list peer-mep-identifier {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container end-point {

+                    uses oam-service-end-point;

+                    description "none";

+                }

+            }

+        }

+        rpc delete-oam-service-end-point {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+                leaf o-sep-id {

+                    type string;

+                    description "none";

+                }

+            }

+        }

+        rpc update-oam-service-end-point {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+                leaf o-sep-id {

+                    type string;

+                    description "none";

+                }

+                leaf state {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container end-point {

+                    uses oam-service-end-point;

+                    description "none";

+                }

+            }

+        }

+        rpc get-oam-service-end-point {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+                leaf o-sep-id {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container end-point {

+                    uses oam-service-end-point;

+                    description "none";

+                }

+            }

+        }

+

+}