Add TAPI Topology simulated network function type.
[sim/o1-interface.git] / ntsimulator / deploy / smo-nts-ng-topology-server / yang / tapi-streaming@2020-06-16.yang
diff --git a/ntsimulator/deploy/smo-nts-ng-topology-server/yang/tapi-streaming@2020-06-16.yang b/ntsimulator/deploy/smo-nts-ng-topology-server/yang/tapi-streaming@2020-06-16.yang
new file mode 100644 (file)
index 0000000..32700b9
--- /dev/null
@@ -0,0 +1,1518 @@
+module tapi-streaming {\r
+    yang-version "1.1";\r
+    namespace "urn:onf:otcc:yang:tapi-streaming";\r
+    prefix tapi-streaming;\r
+    import tapi-common {\r
+        prefix tapi-common;\r
+    }\r
+    import tapi-connectivity {\r
+        prefix tapi-connectivity;\r
+    }\r
+    import tapi-equipment {\r
+        prefix tapi-equipment;\r
+    }\r
+    import tapi-oam {\r
+        prefix tapi-oam;\r
+    }\r
+    import tapi-path-computation {\r
+        prefix tapi-path-computation;\r
+    }\r
+    import tapi-topology {\r
+        prefix tapi-topology;\r
+    }\r
+    import tapi-virtual-network {\r
+        prefix tapi-virtual-network;\r
+    }\r
+    organization "ONF OTCC (Open Transport Configuration & Control) Project";\r
+    contact "\r
+         Project Web: <https://urldefense.com/v3/__https://wiki.opennetworking.org/display/OTCC/TAPI__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_yiFzE6g$ >\r
+         Project List: <mailto:transport-api@opennetworking.org>\r
+         Editor: Karthik Sethuraman <mailto:karthik.sethuraman@necam.com>\r
+         Andrea Mazzin <mailto:andrea.mazzini@nokia.com>\r
+         Arturo Mayoral <mailto:arturo.mayoral@telefonica.com>\r
+         Nigel Davis <mailto:ndavis@ciena.com>";\r
+    description "This module contains TAPI Streaming Model definitions.\r
+        Source: TapiStreaming.uml\r
+        - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK.\r
+        - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]\r
+        <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/EagleUmlYang__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_6pxiNxl$ >\r
+        and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]\r
+        <https://urldefense.com/v3/__https://wiki.opennetworking.org/display/OIMT/UML*-*YANG*Guidelines__;Kysr!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_wxKUbJ_$ >\r
+        - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.\r
+        As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.\r
+        - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.\r
+        The YANG model backward compatibility criteria are outlined in section 11 of <https://urldefense.com/v3/__https://tools.ietf.org/html/rfc7950__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_zcAY1P4$ >.\r
+        YANG models included in this release may not be backward compatible with previous TAPI releases.\r
+        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.\r
+        License: This module is distributed under the Apache License 2.0.";\r
+    revision 2020-06-16 {\r
+        description "ONF Transport API version 2.1.3.\r
+                   - Comment typos corrected.\r
+                   - One attribute changed (sourcePrecesion/source-precesion --> sourcePrecision/source-precision).\r
+                   Changes included in this TAPI release (v2.1.3) are listed in\r
+                   <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/blob/develop_v2_1/CHANGE_LOG/change-log.2.1.3.md__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_xm1nx_D$ >";\r
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model\r
+                  <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_8UH3XnH$ >";\r
+    }\r
+    revision 2019-07-16 {\r
+        description "ONF Transport API version 2.1.2.\r
+                   Changes included in this TAPI release (v2.1.2) are listed in\r
+                   <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/blob/develop_v2_1/CHANGE_LOG/change-log.2.1.2.md__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_0xFu4bN$ >";\r
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model\r
+                  <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_8UH3XnH$ >";\r
+    }\r
+    revision 2018-12-10 {\r
+        description "ONF Transport API version 2.1.1.\r
+                   Changes included in this TAPI release (v2.1.1) are listed in\r
+                   <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.1.md__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur__2p0od1$ >";\r
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model\r
+                  <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_8UH3XnH$ >";\r
+    }\r
+    revision 2018-10-16 {\r
+        description "ONF Transport API version 2.1.0.\r
+                   Changes included in this TAPI release (v2.1.0) are listed in\r
+                   <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_4DGi8ul$ >";\r
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model\r
+                  <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_8UH3XnH$ >";\r
+    }\r
+    revision 2018-03-07 {\r
+        description "ONF Transport API version 2.0.2\r
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.\r
+        Changes in this revision: <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_8KlxwJZ$ >";\r
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model\r
+                  <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_-hMD5Xl$ >";\r
+    }\r
+    revision 2018-02-16 {\r
+        description "ONF Transport API version 2.0.1\r
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.\r
+        Changes in this revision: <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur__C1vuym$ >";\r
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model\r
+                  <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_5DYNwzZ$ >";\r
+    }\r
+    revision 2018-01-02 {\r
+        description "ONF Transport API version 2.0.0\r
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.\r
+        Changes in this revision: <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_1xZSBRA$ >";\r
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model\r
+                  <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_xt-GtqY$ >";\r
+    }\r
+    feature tapi-streaming {\r
+        description "Support for streaming of the information in the specific TAPI context, in terms of stream-records. Through augmentation of context with stream-context, allows the client to determine what specific stream connections are supported and which are currently available to connect to. Offers the ability to identify and use various log strategies and stream connection protocols.";\r
+    }\r
+    feature tapi-streaming-admin {\r
+        description "Support for monitoring of active connections to available streams. Through augmentation of context with stream-admin-context, allows the admin client to get details from monitors of active connections to provide a view of whether the client of the monitored stream is having difficult absorbing the stream. Will usually be used in a tapi context for a stream admin client. Will usually be used together with the tapi-streaming feature so that the stream monitors from one stream could be provided through another stream .";\r
+    }\r
+    augment "/tapi-common:context/tapi-streaming:stream-context/tapi-streaming:supported-stream-type" {\r
+        if-feature tapi-streaming;\r
+        container compacted-log-details {\r
+            uses compacted-log-details;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body/tapi-streaming:condition-detector" {\r
+        if-feature tapi-streaming;\r
+        container alarm-condition-detector-detail {\r
+            uses alarm-condition-detector-detail;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='SERVICE_INTERFACE_POINT'";\r
+        if-feature tapi-streaming;\r
+        container service-interface-point {\r
+            uses tapi-common:service-interface-point;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='CONDITION_DETECTOR'";\r
+        if-feature tapi-streaming;\r
+        container condition-detector {\r
+            uses condition-detector;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='ANY_CLASS'";\r
+        if-feature tapi-streaming;\r
+        container any-class {\r
+            uses any-class;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-common:context" {\r
+        if-feature tapi-streaming-admin;\r
+        container stream-admin-context {\r
+            uses stream-admin-context;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-common:context" {\r
+        if-feature tapi-streaming;\r
+        container stream-context {\r
+            uses stream-context;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-common:context/tapi-streaming:stream-context/tapi-streaming:supported-stream-type" {\r
+        if-feature tapi-streaming;\r
+        container connection-protocol-details {\r
+            uses connection-protocol-details;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='STREAM_MONITOR'";\r
+        if-feature tapi-streaming-admin;\r
+        container stream-monitor {\r
+            uses stream-monitor;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='SUPPORTED_STREAM_TYPE'";\r
+        if-feature tapi-streaming;\r
+        container supported-stream-type {\r
+            uses supported-stream-type;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='AVAILABLE_STREAM_TYPE'";\r
+        if-feature tapi-streaming;\r
+        container available-stream {\r
+            uses available-stream;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='CONNECTION'";\r
+        if-feature tapi-streaming;\r
+        container connection {\r
+            uses tapi-connectivity:connection;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='CONNECTION_END_POINT'";\r
+        if-feature tapi-streaming;\r
+        container connection-end-point {\r
+            uses tapi-connectivity:connection-end-point;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='CONNECTIVITY_SERVICE'";\r
+        if-feature tapi-streaming;\r
+        container connectivity-service {\r
+            uses tapi-connectivity:connectivity-service;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='CONNECTION_SERVICE_END_POINT'";\r
+        if-feature tapi-streaming;\r
+        container connectivity-service-end-point {\r
+            uses tapi-connectivity:connectivity-service-end-point;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='ROUTE'";\r
+        if-feature tapi-streaming;\r
+        container route {\r
+            uses tapi-connectivity:route;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='SWITCH'";\r
+        if-feature tapi-streaming;\r
+        container switch {\r
+            uses tapi-connectivity:switch;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='SWITCH_CONTROL'";\r
+        if-feature tapi-streaming;\r
+        container switch-control {\r
+            uses tapi-connectivity:switch-control;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='EQUIPMENT'";\r
+        if-feature tapi-streaming;\r
+        container equipment {\r
+            uses tapi-equipment:equipment;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='HOLDER'";\r
+        if-feature tapi-streaming;\r
+        container holder {\r
+            uses tapi-equipment:holder;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='ACCESS_PORT'";\r
+        if-feature tapi-streaming;\r
+        container access-port {\r
+            uses tapi-equipment:access-port;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='ABSTRACT_STRAND'";\r
+        if-feature tapi-streaming;\r
+        container abstract-strand {\r
+            uses tapi-equipment:abstract-strand;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='DEVICE'";\r
+        if-feature tapi-streaming;\r
+        container device {\r
+            uses tapi-equipment:device;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='PHYSICAL_SPAN'";\r
+        if-feature tapi-streaming;\r
+        container physical-span {\r
+            uses tapi-equipment:physical-span;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='MEG_END_POINT'";\r
+        if-feature tapi-streaming;\r
+        container mep {\r
+            uses tapi-oam:mep;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='OAM_JOB'";\r
+        if-feature tapi-streaming;\r
+        container oam-job {\r
+            uses tapi-oam:oam-job;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='MAINTENANCE_ENTITY_GROUP'";\r
+        if-feature tapi-streaming;\r
+        container meg {\r
+            uses tapi-oam:meg;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='MEG_INTERMEDIATE_POINT'";\r
+        if-feature tapi-streaming;\r
+        container mip {\r
+            uses tapi-oam:mip;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='OAM_SERVICE'";\r
+        if-feature tapi-streaming;\r
+        container oam-service {\r
+            uses tapi-oam:oam-service;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='OAM_SERVICE_END_POINT'";\r
+        if-feature tapi-streaming;\r
+        container oam-service-end-point {\r
+            uses tapi-oam:oam-service-end-point;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='PM_CURRENT_DATA'";\r
+        if-feature tapi-streaming;\r
+        container pm-current-data {\r
+            uses tapi-oam:pm-current-data;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='PM_HISTORY'";\r
+        if-feature tapi-streaming;\r
+        container pm-history-data {\r
+            uses tapi-oam:pm-history-data;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='OAM_PROFILE'";\r
+        if-feature tapi-streaming;\r
+        container oam-profile {\r
+            uses tapi-oam:oam-profile;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='PM_THRESHOLD_DATA'";\r
+        if-feature tapi-streaming;\r
+        container pm-threshold-data {\r
+            uses tapi-oam:pm-threshold-data;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='PM_BIN_DATA'";\r
+        if-feature tapi-streaming;\r
+        container pm-bin-data {\r
+            uses tapi-oam:pm-bin-data;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='PATH'";\r
+        if-feature tapi-streaming;\r
+        container path {\r
+            uses tapi-path-computation:path;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='PATH_COMPUTATION_SERVICE'";\r
+        if-feature tapi-streaming;\r
+        container path-computation-service {\r
+            uses tapi-path-computation:path-computation-service;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='PATH_SERVICE_END_POINT'";\r
+        if-feature tapi-streaming;\r
+        container path-service-end-point {\r
+            uses tapi-path-computation:path-service-end-point;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='PATH_OPTIMIZATION_CONSTRAINT'";\r
+        if-feature tapi-streaming;\r
+        container path-optimization-constraint {\r
+            uses tapi-path-computation:path-optimization-constraint;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='PATH_OBJECTIVE_FUNCTION'";\r
+        if-feature tapi-streaming;\r
+        container path-objective-function {\r
+            uses tapi-path-computation:path-objective-function;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='LINK'";\r
+        if-feature tapi-streaming;\r
+        container link {\r
+             uses tapi-topology:link;\r
+             description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='NODE'";\r
+        if-feature tapi-streaming;\r
+        container node {\r
+            uses tapi-topology:node;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='TOPOLOGY'";\r
+        if-feature tapi-streaming;\r
+        container topology {\r
+            uses tapi-topology:topology;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='NODE_EDGE_POINT'";\r
+        if-feature tapi-streaming;\r
+        container node-edge-point {\r
+            uses tapi-topology:node-edge-point;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='RULE'";\r
+        if-feature tapi-streaming;\r
+        container rule {\r
+            uses tapi-topology:rule;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='NODE_RULE_GROUP'";\r
+        if-feature tapi-streaming;\r
+        container node-rule-group {\r
+            uses tapi-topology:node-rule-group;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='INTER_RULE_GROUP'";\r
+        if-feature tapi-streaming;\r
+        container inter-rule-group {\r
+            uses tapi-topology:inter-rule-group;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='NETWORK_TOPOLOGY_SERVICE'";\r
+        if-feature tapi-streaming;\r
+        container network-topology-service {\r
+            uses tapi-topology:network-topology-service;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='VIRTUAL_NETWORK_SERVICE'";\r
+        if-feature tapi-streaming;\r
+        container virtual-network-service {\r
+            uses tapi-virtual-network:virtual-network-service;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='VIRTUAL_NETWORK_SERVICE_ENDPOINT'";\r
+        if-feature tapi-streaming;\r
+        container virtual-network-service-end-point {\r
+            uses tapi-virtual-network:virtual-network-service-end-point;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {\r
+        when "tapi-streaming:record-content='VIRTUAL_NETWORK_CONSTRAINT'";\r
+        if-feature tapi-streaming;\r
+        container virtual-network-constraint {\r
+            uses tapi-virtual-network:virtual-network-constraint;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+\r
+   /**************************\r
+    * definitions of refrences\r
+    **************************/\r
+    grouping available-stream-ref {\r
+        leaf available-stream-uuid{\r
+            type leafref {\r
+                path '/tapi-common:context/tapi-streaming:stream-context/tapi-streaming:available-stream/tapi-streaming:uuid';\r
+            }\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    grouping supported-stream-type-ref {\r
+        leaf supported-stream-type-uuid {\r
+            type leafref {\r
+                path '/tapi-common:context/tapi-streaming:stream-context/tapi-streaming:supported-stream-type/tapi-streaming:uuid';\r
+            }\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+\r
+   /**************************\r
+    * package type-definitions\r
+    **************************/ \r
+    identity ALARM_DETECTOR_STATE {\r
+        description "none";\r
+    }\r
+    identity ALARM_DETECTOR_STATE_ACTIVE {\r
+        base ALARM_DETECTOR_STATE;\r
+        description "The detector is indicating the operation of the monitored entity is not within acceptable bounds with respect to the specific condition measured.\r
+            If INTERMITTENT is supported there may be a requirement for persisted unacceptable operation after a problem occurs before ACTIVE is declared. An alternative may be to declare INTERMITTENT.\r
+            Where INTERMITTENT is supported, ACTIVE indicates the stable presence of a problem.";\r
+    }\r
+    identity ALARM_DETECTOR_STATE_INTERMITTENT {\r
+        base ALARM_DETECTOR_STATE;\r
+        description "The detector is indicating the operation of the monitored entity is intermittently not within acceptable bounds with respect to the specific condition measured.\r
+            INTERMITTENT support is optional. Where it is supported there may be a requirement for persisted unacceptable operation after a problem occurs before ACTIVE or INTERMITTENT is declared.";\r
+    }\r
+    identity ALARM_DETECTOR_STATE_CLEAR {\r
+        base ALARM_DETECTOR_STATE;\r
+        description "The detector is indicating the operation of the monitored entity is within acceptable bounds with respect to the specific condition measured.\r
+            There may be a requirement for persisted acceptable operation after a problem before clear is declared etc.\r
+            For a Compacted Log solution a CLEAR alarm will be considered as a DELETE ChangeType in the RecordBody.\r
+            Hence a CLEAR will also cause a Tombstone record in a Compacted Log solution.";\r
+    }\r
+    identity LOG_RECORD_STRATEGY {\r
+        description "none";\r
+    }\r
+    identity LOG_RECORD_STRATEGY_WHOLE_ENTITY_ON_CHANGE {\r
+        base LOG_RECORD_STRATEGY;\r
+        description "A record provides a snapshot of a whole entity and a snapshot is taken on each change.\r
+            The record includes all properties and values whether they have changed or not.";\r
+    }\r
+    identity LOG_RECORD_STRATEGY_CHANGE_ONLY {\r
+        base LOG_RECORD_STRATEGY;\r
+        description "Each record only provides a view of the changes that have occurred (on a per entity change basis).\r
+            E.g., the log only includes the attribute that has changed and not other attributes that have not changed.";\r
+    }\r
+    identity LOG_RECORD_STRATEGY_WHOLE_ENTITY_PERIODIC {\r
+        base LOG_RECORD_STRATEGY;\r
+        description "A snapshot of an entity is recorded periodically regardless of whether there has been change or not.";\r
+    }\r
+    identity LOG_STORAGE_STRATEGY {\r
+        description "none";\r
+    }\r
+    identity LOG_STORAGE_STRATEGY_COMPACTED {\r
+        base LOG_STORAGE_STRATEGY;\r
+        description "The log uses some mechanism to remove noisy detail whilst enabling the client to achieve eventual consistency (alignment) with current state.";\r
+    }\r
+    identity LOG_STORAGE_STRATEGY_TRUNCATED {\r
+        base LOG_STORAGE_STRATEGY;\r
+        description "The log only maintains recent records and disposes of old records. \r
+            This log does not alone enable the client to achieve alignment with current state.";\r
+    }\r
+    identity LOG_STORAGE_STRATEGY_FULL_HISTORY {\r
+        base LOG_STORAGE_STRATEGY;\r
+        description "Maintains a history from system initiation with no missing records. \r
+            Provides initial state at the beginning of the history";\r
+    }\r
+    identity LOG_STORAGE_STRATEGY_FULL_HISTORY_WITH_PERIODIC_BASELINE {\r
+        base LOG_STORAGE_STRATEGY;\r
+        description "Provides a history with initial state and periodic/occasional statements of current state at a particular point in time.";\r
+    }\r
+    identity STREAM_STATE {\r
+        description "none";\r
+    }\r
+    identity STREAM_STATE_ALIGNING {\r
+        base STREAM_STATE;\r
+        description "The log that underpins the stream is aligning with other backend services and hence may not be providing full service.\r
+            If events are provided, they will be completely valid.";\r
+    }\r
+    identity STREAM_STATE_ACTIVE {\r
+        base STREAM_STATE;\r
+        description "The stream is operating such that if a client connects records will be provided as per back pressure etc.";\r
+    }\r
+    identity STREAM_STATE_PAUSED {\r
+        base STREAM_STATE;\r
+        description "Although the stream is available it has been paused by the administrator such that the records are being appended to the log but a new client will not receive any events whilst the stream is paused.";\r
+    }\r
+    identity STREAM_STATE_TERMINATED {\r
+        base STREAM_STATE;\r
+        description "The stream is essentially no longer available. It will be removed from the AvailableStreams list shortly.";\r
+    }\r
+    identity RECORD_TYPE {\r
+        description "none";\r
+    }\r
+    identity RECORD_TYPE_CREATE_UPDATE {\r
+        base RECORD_TYPE;\r
+        description "The record includes a create or update.\r
+            Where there is an update in a non-compacted log the information with be sparse (e.g., a single attribute) and about an entity that is already known.";\r
+    }\r
+    identity RECORD_TYPE_DELETE {\r
+        base RECORD_TYPE;\r
+        description "The record is about a delete.\r
+            The record may have a LogRecordHeader and a LogRecordBody but no augmented content.\r
+            The entityKey should be sufficient to identify the entity to be deleted.\r
+            Under certain circumstances there may be class content in the LogRecordBody.";\r
+    }\r
+    identity RECORD_TYPE_TOMBSTONE {\r
+        base RECORD_TYPE;\r
+        description "Used in a Compacted log to remove old records and truncate deletion history.\r
+            Is only a LogRecordHeader with no LogRecordBody.";\r
+    }\r
+    identity SOURCE_PRECISION {\r
+        description "none";\r
+    }\r
+    identity SOURCE_PRECISION_UNKNOWN {\r
+        base SOURCE_PRECISION;\r
+        description "The state of the clock at the event source is not known.\r
+            The view of time of day at the source is suspect.";\r
+    }\r
+    identity SOURCE_PRECISION_FREE_RUNNING {\r
+        base SOURCE_PRECISION;\r
+        description "The clock at the event source is free-running.\r
+            The view of time of day at the source may be significantly different from that at other sources.";\r
+    }\r
+    identity SOURCE_PRECISION_SYNCHRONIZED {\r
+        base SOURCE_PRECISION;\r
+        description "The clock at the event source is appropriately synchroniZed to the timing master.\r
+            The view of time of day at the source should be essentially the same as that at other time-synchronized sources.";\r
+    }\r
+    identity SPREAD {\r
+        description "none";\r
+    }\r
+    identity SPREAD_AT {\r
+        base SPREAD;\r
+        description "The event occurred at a particular time.";\r
+    }\r
+    identity SPREAD_BEFORE {\r
+        base SPREAD;\r
+        description "The event occurred before a particular time.";\r
+    }\r
+    identity SPREAD_AFTER {\r
+        base SPREAD;\r
+        description "The event occurred after a particular time.";\r
+    }\r
+    identity SPREAD_BETWEEN {\r
+        base SPREAD;\r
+        description "The event occurred between two stated times.";\r
+    }\r
+    identity CONDITION_DETECTOR_TYPE {\r
+        description "none";\r
+    }\r
+    identity CONDITION_DETECTOR_TYPE_ALARM_DETECTOR {\r
+        base CONDITION_DETECTOR_TYPE;\r
+        description "A type of detector used for reporting problems.\r
+            The underlying raw detector is two state from the perspective of the monitored condition. \r
+            The detector is asymmetric in nature. \r
+            One state indicates that there is a problem and the other state indicates that there is no problem.";\r
+    }\r
+    identity CONDITION_DETECTOR_TYPE_EVENT_DETECTOR {\r
+        base CONDITION_DETECTOR_TYPE;\r
+        description "A type of detector used for reporting events.";\r
+    }\r
+    typedef alarm-detector-state {\r
+        type identityref {\r
+            base ALARM_DETECTOR_STATE;\r
+        }\r
+        description "The state of the processed Boolean alarm detector.\r
+            The source applies some analysis to the raw detector to determine the state.\r
+            The processing by the source my vary.";\r
+    }\r
+    grouping legacy-properties {\r
+        leaf perceived-severity {\r
+            type perceived-severity;\r
+            description "A device will provide an indication of importance for each alarm. \r
+                This property indicates the importance.\r
+                In some cases, the severity may change through the life of an active alarm.";\r
+        }\r
+        leaf service-affect {\r
+            type service-affect;\r
+            description "Some devices will indicate, from its very narrow viewpoint, whether service has been impacted or not.\r
+                This property carries this detail.";\r
+        }\r
+        leaf is-acknowledged {\r
+            type boolean;\r
+            description "Devices offer a capability to acknowledge alarms (to stop the bells ringing).\r
+                Often an EMS will offer a similar capability.\r
+                This property reflects the current acknowledge state.";\r
+        }\r
+        leaf-list additional-alarm-info {\r
+            type string;\r
+            description "Often, alarms raised by devices have additional information. \r
+                This property can be used to convey this.";\r
+        }\r
+        description "At this point in the evolution of control solutions LegacyProperties are probably mandatory, however, it is anticipated that as control solutions advance the LegacyProperties will become irrelevant.";\r
+    }\r
+    typedef log-record-strategy {\r
+        type identityref {\r
+            base LOG_RECORD_STRATEGY;\r
+        }\r
+        description "Defines the different approaches for logging information about an event covering the log trigger and the log content.";\r
+    }\r
+    typedef log-storage-strategy {\r
+        type identityref {\r
+            base LOG_STORAGE_STRATEGY;\r
+        }\r
+        description "Defines the storage (record retention) approach.";\r
+    }\r
+    typedef object-class-identifier {\r
+        type enumeration {\r
+            enum NODE {\r
+                description "Node.\r
+                    A GlobalClass.";\r
+            }\r
+            enum CONNECTION {\r
+                description "Connection.\r
+                    A GlobalClass.";\r
+            }\r
+            enum LINK {\r
+                description "Link.\r
+                    A GlobalClass.";\r
+            }\r
+            enum CONNECTION_END_POINT {\r
+                description "ConnectionEndPoint.\r
+                    A GlobalClass.";\r
+            }\r
+            enum CONNECTIVITY_SERVICE {\r
+                description "ConnectivityService.\r
+                    A GlobalClass.";\r
+            }\r
+            enum INTER_RULE_GROUP {\r
+                description "InterRuleGroup.\r
+                    A GlobalClass.";\r
+            }\r
+            enum MAINTENANCE_ENTITY {\r
+                description "MaintenanceEntity.\r
+                    A GlobalClass.";\r
+            }\r
+            enum MAINTENANCE_ENTITY_GROUP {\r
+                description "Meg.\r
+                    A GlobalClass.";\r
+            }\r
+            enum MEG_END_POINT {\r
+                description "Mep.\r
+                    A LocalClass. \r
+                    For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";\r
+            }\r
+            enum MEG_INTERMEDIATE_POINT {\r
+                description "Mip.\r
+                    A LocalClass. \r
+                    For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions. ";\r
+            }\r
+            enum NODE_EDGE_POINT {\r
+                description "NodeEdgePoint.\r
+                    A GlobalClass.";\r
+            }\r
+            enum OAM_JOB {\r
+                description "OamJob.\r
+                    A GlobalClass.";\r
+            }\r
+            enum PATH {\r
+                description "Path.\r
+                    A GlobalClass.";\r
+            }\r
+            enum NODE_RULE_GROUP {\r
+                description "NodeRuleGroup.\r
+                    A GlobalClass.";\r
+            }\r
+            enum PATH_COMPUTATION_SERVICE {\r
+                description "PathComputationService.\r
+                    A GlobalClass.";\r
+            }\r
+            enum ROUTE {\r
+                description "Route.\r
+                    A LocalClass. \r
+                    For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions";\r
+            }\r
+            enum RULE {\r
+                description "Rule.\r
+                    A LocalClass. \r
+                    For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions";\r
+            }\r
+            enum SERVICE_INTERFACE_POINT {\r
+                description "ServiceInterfacePoint.\r
+                    A GlobalClass.";\r
+            }\r
+            enum SWITCH {\r
+                description "Switch.\r
+                    A LocalClass. \r
+                    For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions";\r
+            }\r
+            enum SWITCH_CONTROL {\r
+                description "SwitchControl.\r
+                    A GlobalClass.";\r
+            }\r
+            enum TOPOLOGY {\r
+                description "Topology.\r
+                    A GlobalClass.";\r
+            }\r
+            enum VIRTUAL_NETWORK_SERVICE {\r
+                description "VirtualNetworkService.\r
+                    A GlobalClass.";\r
+            }\r
+            enum OAM_PROFILE {\r
+                description "OamProfile.\r
+                    A GlobalClass.";\r
+            }\r
+            enum OAM_SERVICE {\r
+                description "OamService.\r
+                    A GlobalClass.";\r
+            }\r
+            enum CONNECTION_SPEC {\r
+                description "ConnectionSpec.\r
+                    A class that is a representation of the definition that an instance of a Connection references. This has a globally unique id.";\r
+            }\r
+            enum ACCESS_PORT {\r
+                description "AccessPort.\r
+                    A GlobalClass.";\r
+            }\r
+            enum DEVICE {\r
+                description "Device.\r
+                    A GlobalClass.";\r
+            }\r
+            enum PHYSICAL_SPAN {\r
+                description "PhysicalSpan.\r
+                    A GlobalClass.";\r
+            }\r
+            enum EQUIPMENT {\r
+                description "Equipment.\r
+                    A GlobalClass.";\r
+            }\r
+            enum HOLDER {\r
+                description "Holder.\r
+                    A GlobalClass.";\r
+            }\r
+            enum CONDITION_DETECTOR {\r
+                description "ConditionDetector.\r
+                    Has an id approach that allows for the measured entity to have a NativeId, or UUID or ID combination.";\r
+            }\r
+            enum AVAILABLE_STREAM {\r
+                description "AvailableStream.\r
+                    A GlobalClass.";\r
+            }\r
+            enum STREAM_MONITOR {\r
+                description "StreamMonitor.\r
+                    A GlobalClass.";\r
+            }\r
+            enum SUPPORTED_STREAM_TYPE {\r
+                description "SupportedStream.\r
+                    A GlobalClass.";\r
+            }\r
+            enum NETWORK_TOPOLOGY_SERVICE {\r
+                description "NetworkTopologyService.\r
+                    A GlobalClass.";\r
+            }\r
+            enum TAPI_CONTEXT {\r
+                description "TapiContext.\r
+                    A GlobalClass.";\r
+            }\r
+            enum OAM_SERVICE_END_POINT {\r
+                description "OamServiceEndPoint.\r
+                    Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";\r
+            }\r
+            enum PM_BIN_DATA {\r
+                description "PmBinData.\r
+                    Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";\r
+            }\r
+            enum PM_CURRENT_DATA {\r
+                description "PmCurrentData.\r
+                    Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";\r
+            }\r
+            enum PM_HISTORY_DATA {\r
+                description "PmHistoryData.\r
+                    Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";\r
+            }\r
+            enum PM_THRESHOLD_DATA {\r
+                description "PmThresholdData.\r
+                    Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";\r
+            }\r
+            enum CONNECTIVITY_SERVICE_END_POINT {\r
+                description "ConnectivityServiceEndPoint.\r
+                    Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";\r
+            }\r
+            enum ABSTRACT_STRAND {\r
+                description "AbstractStrand.\r
+                    Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";\r
+            }\r
+            enum PATH_OBJECTIVE_FUNCTION {\r
+                description "PathObjectiveFunction.\r
+                    Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";\r
+            }\r
+            enum PATH_OPTIMIZATION_CONSTRAINT {\r
+                description "PathOptimizationConstraint.\r
+                    Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";\r
+            }\r
+            enum PATH_SERVICE_END_POINT {\r
+                description "PathServiceEndPoint.\r
+                    Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";\r
+            }\r
+            enum VIRTUAL_NETWORK_CONSTRAINT {\r
+                description "VirtualNetworkConstraint.\r
+                    Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";\r
+            }\r
+            enum VIRTUAL_NETWORK_SERVICE_END_POINT {\r
+                description "VirtualNetworkServiceEndPoint.\r
+                    Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";\r
+            }\r
+            enum ANY_CLASS {\r
+                description "Empty structure.";\r
+            }\r
+        }\r
+        description "The list of TAPI Global Object Class types for which a record can be streamed.";\r
+    }\r
+    typedef stream-state {\r
+        type identityref {\r
+            base STREAM_STATE;\r
+        }\r
+        description "The state of the available stream.";\r
+    }\r
+    grouping approx-date-and-time {\r
+        leaf primary-time-stamp {\r
+            type tapi-common:date-and-time;\r
+            config false;\r
+            description "Time of the event at the origin where known precisely.\r
+                Where the event is known to be before particular time, this field records that time.\r
+                Where the event is known to be after a particular time, this field records that time (this is an unusual case where there is no proposed before time).\r
+                Where the event is known to have occurred in a time window, this field records the end time (the time before which the event must have occurred).";\r
+        }\r
+        leaf start-time-stamp {\r
+            type tapi-common:date-and-time;\r
+            config false;\r
+            description "The time after which the event is known to have occurred when the event is known to have occurred between two times.\r
+                The primaryTimeStamp provides the end time.";\r
+        }\r
+        leaf spread {\r
+            type spread;\r
+            config false;\r
+            description "Indicates the knowledge of the time of occurrence of the event.";\r
+        }\r
+        leaf source-precision {\r
+            type source-precision;\r
+            config false;\r
+            description "Indicates how well the source time is synchronized with network time.";\r
+        }\r
+        description "Allows for recording of an aspect of imprecise time.";\r
+    }\r
+    typedef record-type {\r
+        type identityref {\r
+            base RECORD_TYPE;\r
+        }\r
+        description "The type of the record.\r
+            Used to understand what log content will be present and how to interpret it.\r
+            For some record types there is special encoding.\r
+            A ACTIVE alarm and an INTERMITTENT alarm are CREATE_UPDATE.\r
+            A CLEAR alarm is DELETE with an adjacent TOMBSTONE record.";\r
+    }\r
+    typedef source-precision {\r
+        type identityref {\r
+            base SOURCE_PRECISION;\r
+        }\r
+        description "Alternative statements about timing precision at the event source.";\r
+    }\r
+    typedef spread {\r
+        type identityref {\r
+            base SPREAD;\r
+        }\r
+        description "The alternative time of occurrence statements.";\r
+    }\r
+    typedef condition-detector-type {\r
+        type identityref {\r
+            base CONDITION_DETECTOR_TYPE;\r
+        }\r
+        description "The type of condition detector.\r
+            The type relates to the characteristics of the detection and reporting strategies.\r
+            This drives the conditional augment.";\r
+    }\r
+    typedef event-source {\r
+        type enumeration {\r
+            enum RESOURCE_OPERATION {\r
+                description "The event is from the operation of the network resources.\r
+                    The event source has a relatively fast time characteristic.";\r
+            }\r
+            enum MANAGEMENT_OPERATION {\r
+                description "Event is from a Management operation (slow control).\r
+                    The event source has a relatively slow time characteristic.";\r
+            }\r
+            enum UNKNOWN {\r
+                description "The origin of the event is not known.";\r
+            }\r
+        }\r
+        description "Source of the event.\r
+            Use to give some idea of the time characteristics of the event source.";\r
+    }\r
+    typedef perceived-severity {\r
+        type enumeration {\r
+            enum CRITICAL {\r
+                description "The highest severity of ACTIVE/INTERMITTENT alarm.";\r
+            }\r
+            enum MAJOR {\r
+                description "The middle severity of ACTIVE/INTERMITTENT alarm.";\r
+            }\r
+            enum MINOR {\r
+                description "The lowest severity of ACTIVE/INTERMITTENT alarm.";\r
+            }\r
+            enum WARNING {\r
+                description "An extremely low importance ACTIVE/INTERMITTENT alarm (lower than MINOR).";\r
+            }\r
+            enum CLEARED {\r
+                description "The severity of a CLEAR where no other severity information is available.";\r
+            }\r
+        }\r
+        description "The values for importance of an ACTIVE, INTERMITTENT or CLEAR alarm.";\r
+    }\r
+    typedef service-affect {\r
+        type enumeration {\r
+            enum SERVICE_AFFECTING {\r
+                description "The condition is believed to impact service.";\r
+            }\r
+            enum NOT_SERVICE_AFFECTING {\r
+                description "The condition is believed to not impact service.";\r
+            }\r
+            enum UNKNOWN {\r
+                description "The service impact of the condition is not known.";\r
+            }\r
+        }\r
+        description "Indicates whether the device considers the condition to be impacting service.\r
+            Note that the detected condition along with knowledge of the topology and protection provide a more suitable approach.";\r
+    }\r
+\r
+    /**************************\r
+    * package object-classes\r
+    **************************/ \r
+    grouping compacted-log-details {\r
+        leaf tombstone-retention {\r
+            type string;\r
+            config false;\r
+            description "Time in minutes.\r
+                The time period for which a Tombstone record will be held in the log from when it was logged. \r
+                This provides an adjustment to the essential Compaction strategy such that after the tombstoneRetention period there will be no records about a particular thing that existed but no longer exists.\r
+                Tombstone retention overrides recordRetention for Tombstones.\r
+                Key word 'FOREVER' means that Tombstone records will never be removed from the log.\r
+                Can be adjusted by an administrator (via a separate view) through the life of the stream.";\r
+        }\r
+        leaf compaction-delay {\r
+            type string;\r
+            config false;\r
+            description "Time in minutes. \r
+                The delay between logging the record and making the record available for compaction.\r
+                This provides an adjustment to the essential Compaction strategy such that there may be several distinct records for the same thing in the where those records are not older than the Compaction Delay.\r
+                Can be adjusted by an administrator (via a separate view) through the life of the stream.";\r
+        }\r
+        description "Details relevant for a CompactedLog.\r
+            The essential Compacted Log strategy is to remove historic records about a particular thing such that only the latest record about each thing exists in the log.\r
+            The essential strategy is refined by the parameters of this structure.";\r
+    }\r
+    grouping alarm-condition-detector-detail {\r
+        leaf alarm-detector-state {\r
+            type alarm-detector-state;\r
+            config false;\r
+            description "The state of the detector.\r
+                The detector state accounts for the time characteristics of the detected condition.";\r
+        }\r
+        container legacy-properties {\r
+            config false;\r
+            uses legacy-properties;\r
+            description "Alarm systems of the 20th century were based primarily on local lamps (initially filament bulbs) and bells.\r
+                Lamps can only be on or off, and bells sounding or not sounding, so alarms were Boolean in nature.\r
+                Where a detector was essentially multi-state it was converted into multiple Boolean statements.\r
+                The management of the equipments was essentially human only and local only (there were rarely remote systems).\r
+                The device with the problem was the only possible indicator of importance and it had only three distinct bulbs to illuminate (filament bulbs tend to fail requiring costly replacement).\r
+                The devices were relatively simple in function and analysis of the detectors was crude.\r
+                There was only the device to indicate severity\r
+                The device also could provide the best view as to whether a service was impacted, although clearly it had almost no knowledge.\r
+                In a modern solution with well-connected remote systems that increasingly analyze problems and where there is increasingly 'lights out' building operation, the device's guess at severity etc. is irrelevant.\r
+                In addition, with sophisticated resilience mechanisms, the device cannot make any relevant statement on whether the customer service has been impacted.\r
+                Likewise, in a world where there were no remote systems and local management was the only practice, alarms had to be locally 'acknowledged'. \r
+                Where there are remote systems, per alarm acknowledge is burdensome.\r
+                However, many solutions and operational practices continue to use the historic schemes.\r
+                On that basis, the schemes are supported but relegated to optional.";\r
+        }\r
+        description "A record of the state of a detector where that detector has two underling states that are of asymmetric importance.";\r
+    }\r
+    grouping condition-detector {\r
+        leaf condition-native-name {\r
+            type string;\r
+            config false;\r
+            description "The name used for the Condition by the source of the information.";\r
+        }\r
+        leaf measured-entity-uuid {\r
+            type tapi-common:uuid;\r
+            config false;\r
+            description "The uuid of the TAPI entity that represents the entity measured at source.\r
+                If the TAPI entity cannot be identified as it cannot be mapped, then this property can be omitted.\r
+                If the TAPI entity is a local class, then this is the UUID of the GlobalClass parent of the entity of which this is part.";\r
+        }\r
+        leaf measured-entity-native-id {\r
+            type string;\r
+            config false;\r
+            description "The identifier (invariant over the life) of the instance of the measured entity at the source.";\r
+        }\r
+        leaf condition-normalized-name {\r
+            type string;\r
+            config false;\r
+            description "It is often the case that there is a Condition Name that is commonly used or even standardized that has not been used by the source of the condition. \r
+                If this is the case, then that common/standard name is provided in via this property.";\r
+        }\r
+        leaf measured-entity-class {\r
+            type object-class-identifier;\r
+            config false;\r
+            description "The TAPI class of the measured entity. \r
+                If the class cannot be identified as it cannot be mapped, then this property can be omitted.";\r
+        }\r
+        leaf detector-uuid {\r
+            type tapi-common:uuid;\r
+            config false;\r
+            description "The uuid of the TAPI entity that represents the detector.\r
+                If the TAPI entity cannot be identified as it cannot be mapped, then this property can be omitted.\r
+                Where the detector is not modelled independently, but instead is a part of the measured entity such that it is identified by a 'local id' built from the UUID of the measured entity and the condition name, then this property may be omitted.";\r
+        }\r
+        leaf detector-native-id {\r
+            type string;\r
+            config false;\r
+            description "The identifier (invariant over the life) of the instance of the detector at the source (e.g. a device).\r
+                The string reported in this field must include the:\r
+                - device identifier\r
+                - one or more resource identifiers including that of the measured entity\r
+                It need not include the condition name.\r
+                ";\r
+        }\r
+        leaf condition-detector-type {\r
+            type condition-detector-type;\r
+            config false;\r
+            description "Identifies the type of detector.\r
+                This drives the conditional augmentation. \r
+                Some types of detector may not need specific augmentation.\r
+                ";\r
+        }\r
+        leaf-list measured-entity-local-id {\r
+            type string;\r
+            config false;\r
+            description "Where the measured entity is a local class and hence does not have a UUID the local ID is provided in conjunction with the parents ID. \r
+                The parent may also be a local class in which case its ID is a a local ID along with its parent ID.\r
+                There will be a parent which is a global class which then supplies a UUID.\r
+                The ID of the entity that is being measured is the combination of the UUID and the ordered list of local IDs.\r
+                The local ID may not be provided where:\r
+                - the report about a global class\r
+                - the report is relying on the detectorNativeId.";\r
+        }\r
+        description "ConditionDetector represents any monitoring component that assesses properties of something and determines from those properties what conditions are associated with the thing.\r
+            For example, a thing might be 'too hot' or might be 'unreliable'.\r
+            The monitor may a multi-state output. \r
+            The ConditionDetector lifecycle depends upon the lifecycle of the thing it is monitoring (this is a general OAM model consideration).\r
+            The entityKey in the AppendLogRecordHeader for a ConditionDetector record is the nativeDetector Id which may be derived from other ids (most robustly, nativeOwningEntityName (to which the detector is associated) + natveConditionName).";\r
+    }\r
+    grouping any-class {\r
+        description "In the final version all classes that can stream will be explicitly associated with the AppendLogRecordBody";\r
+    }\r
+    grouping stream-admin-context {\r
+        list stream-monitor {\r
+            key 'uuid';\r
+            config false;\r
+            uses stream-monitor;\r
+            description "The list of available stream monitors.";\r
+        }\r
+        uses tapi-common:global-class;\r
+        description "Context providing access to stream administration functionality.";\r
+    }\r
+    grouping stream-monitor {\r
+        leaf id-of-last-record-read-from-log {\r
+            type string;\r
+            config false;\r
+            description "The id/key of the last record read from the log by the client stream.\r
+                The analysis of this value needs to account for stream buffering in the comms layer.";\r
+        }\r
+        leaf id-of-last-record-written-to-log {\r
+            type string;\r
+            config false;\r
+            description "The id/key of the last record written to the log. \r
+                This is the same value for all clients of the stream.";\r
+        }\r
+        container available-stream {\r
+            uses available-stream-ref;\r
+            config false;\r
+            description "none";\r
+        }\r
+        leaf client-id {\r
+            type string;\r
+            config false;\r
+            description "The id of the connected client.";\r
+        }\r
+        leaf last-updated {\r
+            type tapi-common:date-and-time;\r
+            config false;\r
+            description "The date/time when the values provided were recorded.";\r
+        }\r
+        leaf client-address {\r
+            type string;\r
+            config false;\r
+            description "The address of the connected client that is being monitored.";\r
+        }\r
+        uses tapi-common:global-class;\r
+        description "Information on the monitoring of the use of a specific AvailableStream.";\r
+    }\r
+    grouping connection-protocol-details {\r
+        leaf-list allowed-connection-protocols {\r
+            type string;\r
+            config false;\r
+            description "Name of the allowed protocol.";\r
+        }\r
+        description "Details of the connection protocols available for the specific stream.";\r
+    }\r
+    grouping available-stream {\r
+        leaf connection-address {\r
+            type string;\r
+            config false;\r
+            description "Provides the address for the connection. \r
+                The format of the address and attachment mechanism will depend on the connection protocol defined in another attribute of this class.";\r
+        }\r
+        leaf stream-state {\r
+            type stream-state;\r
+            config false;\r
+            description "The state of the stream.";\r
+        }\r
+        container supported-stream-type {\r
+            uses supported-stream-type-ref;\r
+            config false;\r
+            description "Identifies the type of stream that is available for connection.";\r
+        }\r
+        leaf stream-id {\r
+            type string;\r
+            config false;\r
+            description "The id of the stream.";\r
+        }\r
+        leaf connection-protocol {\r
+            type string;\r
+            config false;\r
+            description "Names the connection protocol for this particular available stream.\r
+                The connection protocol is chosen from the list of connection protocols identified in the referenced SupportedStreamType.";\r
+        }\r
+        uses tapi-common:global-class;\r
+        description "Details of stream a stream that can be connected to by a client application.";\r
+    }\r
+    grouping stream-context {\r
+        list available-stream {\r
+            key 'uuid';\r
+            config false;\r
+            uses available-stream;\r
+            description "none";\r
+        }\r
+        list supported-stream-type {\r
+            key 'uuid';\r
+            config false;\r
+            uses supported-stream-type;\r
+            description "none";\r
+        }\r
+        description "All streams relevant to the specific TapiContext.";\r
+    }\r
+    grouping supported-stream-type {\r
+        leaf stream-type-name {\r
+            type string;\r
+            config false;\r
+            description "Name of the stream type.";\r
+        }\r
+        leaf record-retention {\r
+            type string;\r
+            config false;\r
+            description "Time in minutes.\r
+                Statement of retention time and/or retention capacity in bytes.\r
+                Key word 'FOREVER' means that records will never be removed from the log.\r
+                May be overridden for particular cases of specific LogStorageStrategy (via augment).";\r
+        }\r
+        leaf segment-size {\r
+            type string;\r
+            config false;\r
+            description "Size of sub-structuring of the log.";\r
+        }\r
+        leaf-list record-content {\r
+            type object-class-identifier;\r
+            description "Identifies the classes that are supported through the stream. \r
+                The list may be a subset of the classes within the context.";\r
+        }\r
+        leaf log-storage-strategy {\r
+            type log-storage-strategy;\r
+            config false;\r
+            description "Indicates the storage characteristics of the log supporting the stream.";\r
+        }\r
+        leaf log-record-strategy {\r
+            type log-record-strategy;\r
+            config false;\r
+            description "Indicates the type of content of each log record.";\r
+        }\r
+        uses tapi-common:global-class;\r
+        description "Definition of a supported stream type.";\r
+    }\r
+    grouping log-record {\r
+        container log-record-header {\r
+            config false;\r
+            uses log-record-header;\r
+            description "The header of the log record providing general parameters of the record common to all records.";\r
+        }\r
+        container log-record-body {\r
+            config false;\r
+            uses log-record-body;\r
+            description "The body of the log record providing specific logged details.";\r
+        }\r
+        description "A specific atomic entry in a log.";\r
+    }\r
+    grouping log-record-body {\r
+        container event-time-stamp {\r
+            config false;\r
+            uses approx-date-and-time;\r
+            description "Time of the event at the origin of the event that triggered the generation of the record. \r
+                The structure allows for time uncertainty.";\r
+        }\r
+        leaf event-source {\r
+            type event-source;\r
+            config false;\r
+            description "Indicates whether the source is controlled (under management control) or potentially chaotic (under resource control).\r
+                The time characteristic of the source may be determined from the metadata describing the resource (e.g., a detector).\r
+                Where there is an alternative (and probably more detailed) source of information on time characteristic this attribute can be omitted.";\r
+        }\r
+        list additional-event-info {\r
+            key 'value-name';\r
+            config false;\r
+            uses tapi-common:name-and-value;\r
+            description "Addition information related to the event such as change reason where changeReason would be the name and the value text would provide information on the reason for change.";\r
+        }\r
+        leaf-list parent-address {\r
+            type string;\r
+            config false;\r
+            description "Where the entity is a local class this provides the ordered list of ids from the closest global class (a UUID cast as a string) to the direct parent (which may be the global class).\r
+                The field can include all entities back to the Context and hence can be used for global classes where the tree is being represented in full.\r
+                Gives the position of the entity in the address tree (usually containment) that is raising the event by providing the name/id values in the address of the parent.\r
+                Is the sequence of named levels in the tree up to but excluding the entity of the notification. \r
+                It includes the device id where relevant.";\r
+        }\r
+        leaf record-content {\r
+            type object-class-identifier;\r
+            config false;\r
+            description "The identifier of the object class in the record body detail.\r
+                This property is used to control the conditional augmentation of the body with detail.";\r
+        }\r
+        description "The specific details of the Record.";\r
+    }\r
+    grouping log-record-header {\r
+        leaf tapi-context {\r
+            type tapi-common:uuid;\r
+            config false;\r
+            description "The identifier of the context.";\r
+        }\r
+        leaf token {\r
+            type string;\r
+            config false;\r
+            description "A coded (and compact) form of the fullLogRecordOffsetId.\r
+                This property is used to request streaming from a particular point (e.g., the last correctly handled record).";\r
+        }\r
+        list full-log-record-offset-id {\r
+            key 'value-name';\r
+            config false;\r
+            min-elements 1;\r
+            uses tapi-common:name-and-value;\r
+            description "In a complex log solution there may be various parts to the log.\r
+                The record token is a compressed form of log record reference.\r
+                This property provides the verbose form \r
+                For example, it may include:\r
+                - stream id\r
+                - topic\r
+                - partition\r
+                - partition offset\r
+                - sequence number (the offset is essentially the sequence number associated with the partition)";\r
+        }\r
+        leaf log-append-time-stamp {\r
+            type tapi-common:date-and-time;\r
+            config false;\r
+            description "The time when the record was appended to the log.";\r
+        }\r
+        leaf entity-key {\r
+            type string;\r
+            config false;\r
+            description "The identifier of the entity that is used in a Compacted log as the compaction key.\r
+                The entityKey value, where appropriate, may be based upon the identifiers from the event source.\r
+                It can be built from some specific detail combination that meets the necessary uniqueness and durability requirements.\r
+                entityKey is the value used during compaction.\r
+                Ideally it is a UUID format, if this can be formed from the source identifier.";\r
+        }\r
+        leaf record-type {\r
+            type record-type;\r
+            config false;\r
+            description "The type of the record.\r
+                Can be used to understand which elements of the record will be present.";\r
+        }\r
+        leaf record-authenticity-token {\r
+            type string;\r
+            config false;\r
+            description "none";\r
+        }\r
+        description "The header of the log record providing general parameters of the record common to all records.";\r
+    }\r
+    notification stream-record {\r
+        uses stream-record;\r
+        description "none";\r
+    }\r
+    grouping stream-record {\r
+        list log-record {\r
+            config false;\r
+            uses log-record;\r
+            description "Each stream record may include a number of log records.";\r
+        }\r
+        description "The stream content.";\r
+    }\r
+\r
+    /**************************\r
+    * package interfaces\r
+    **************************/ \r
+    rpc connect-to-stream {\r
+        description "none";\r
+        input {\r
+            leaf start-from-token {\r
+                type string;\r
+                description "none";\r
+            }\r
+            leaf connection-address {\r
+                type string;\r
+                description "none";\r
+            }\r
+        }\r
+    }\r
+    rpc get-available-stream-connection-details {\r
+        description "none";\r
+        output {\r
+            list active-connections {\r
+                uses available-stream;\r
+                description "none";\r
+            }\r
+        }\r
+    }\r
+    rpc get-supported-stream-connection-types {\r
+        description "none";\r
+        output {\r
+            list supported-stream-types {\r
+                uses supported-stream-type;\r
+                description "none";\r
+            }\r
+        }\r
+    }\r
+\r
+}\r