Add TAPI Topology simulated network function type.
[sim/o1-interface.git] / ntsimulator / deploy / smo-nts-ng-topology-server / yang / tapi-notification@2020-06-16.yang
diff --git a/ntsimulator/deploy/smo-nts-ng-topology-server/yang/tapi-notification@2020-06-16.yang b/ntsimulator/deploy/smo-nts-ng-topology-server/yang/tapi-notification@2020-06-16.yang
new file mode 100644 (file)
index 0000000..058692f
--- /dev/null
@@ -0,0 +1,634 @@
+module tapi-notification {\r
+    namespace "urn:onf:otcc:yang:tapi-notification";\r
+    prefix tapi-notification;\r
+    import tapi-common {\r
+        prefix tapi-common;\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G39KDEbL$ >\r
+         Project List: <mailto:transport-api@opennetworking.org>\r
+         Editor: Karthik Sethuraman <mailto:karthik.sethuraman@necam.com>\r
+         Andrea Mazzini <mailto:andrea.mazzini@nokia.com>\r
+         Arturo Mayoral <mailto:arturo.mayoral@telefonica.com>\r
+         Nigel Davis <mailto:ndavis@ciena.com>";\r
+    description "\r
+        This module contains TAPI Notification Model definitions.\r
+        Source: TapiNotification.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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G4QHf0bG$ >\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G8IIivez$ >\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G3bKxRf2$ >.\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
+                   - Added DEVICE to ObjectType.\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G7tqhxFK$ >";\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G7KeAhLL$ >";\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G7eDS6-t$ >";\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G7KeAhLL$ >";\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G1ftwU5J$ >";\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G7KeAhLL$ >";\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G-5JStw4$ >";\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G7KeAhLL$ >";\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G1Yf4AAN$ >";\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G27-pJK_$ >";\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G8RnGvXg$ >";\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6Gy6YoeAv$ >";\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6GyqYDgG_$ >";\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!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G1V9Thk9$ >";\r
+    }\r
+    augment "/tapi-common:context" {\r
+        container notification-context {\r
+            uses notification-context;\r
+            description "Augments the base TAPI Context with NotificationService information";\r
+        }\r
+        description "Augments the base TAPI Context with NotificationService information";\r
+    }\r
+    /**************************\r
+    * package object-classes\r
+    **************************/ \r
+    grouping notification-subscription-service {\r
+        list notification {\r
+            key 'uuid';\r
+            config false;\r
+            uses notification;\r
+            description "none";\r
+        }\r
+        container notification-channel {\r
+            config false;\r
+            uses notification-channel;\r
+            description "none";\r
+        }\r
+        container subscription-filter {\r
+            uses subscription-filter;\r
+            description "none";\r
+        }\r
+        leaf subscription-state {\r
+            type subscription-state;\r
+            description "none";\r
+        }\r
+        leaf-list supported-notification-types {\r
+            type notification-type;\r
+            config false;\r
+            min-elements 1;\r
+            description "none";\r
+        }\r
+        leaf-list supported-object-types {\r
+            type object-type;\r
+            config false;\r
+            min-elements 1;\r
+            description "none";\r
+        }\r
+        uses tapi-common:service-spec;\r
+        description "none";\r
+    }\r
+    grouping subscription-filter {\r
+        leaf-list requested-notification-types {\r
+            type notification-type;\r
+            description "none";\r
+        }\r
+        leaf-list requested-object-types {\r
+            type object-type;\r
+            description "none";\r
+        }\r
+        leaf-list requested-layer-protocols {\r
+            type tapi-common:layer-protocol-name;\r
+            description "none";\r
+        }\r
+        leaf-list requested-object-identifier {\r
+            type tapi-common:uuid;\r
+            description "none";\r
+        }\r
+        leaf include-content {\r
+            type boolean;\r
+            description "Indicates whether the published Notification includes content or just the Notification Id (which enables retrieval of the notification at the later stage)";\r
+        }\r
+        uses tapi-common:local-class;\r
+        description "none";\r
+    }\r
+    notification notification {\r
+        uses notification;\r
+        description "none";\r
+    }\r
+    grouping notification {\r
+        leaf notification-type {\r
+            type notification-type;\r
+            description "none";\r
+        }\r
+        leaf target-object-type {\r
+            type object-type;\r
+            description "none";\r
+        }\r
+        leaf target-object-identifier {\r
+            type tapi-common:uuid;\r
+            description "none";\r
+        }\r
+        list target-object-name {\r
+            key 'value-name';\r
+            min-elements 1;\r
+            uses tapi-common:name-and-value;\r
+            description "none";\r
+        }\r
+        leaf event-time-stamp {\r
+            type tapi-common:date-and-time;\r
+            description "none";\r
+        }\r
+        leaf sequence-number {\r
+            type uint64;\r
+            config false;\r
+            description "A monotonous increasing sequence number associated with the notification.\r
+                The exact semantics of how this sequence number is assigned (per channel or subscription or source or system) is left undefined.";\r
+        }\r
+        leaf source-indicator {\r
+            type source-indicator;\r
+            description "none";\r
+        }\r
+        leaf layer-protocol-name {\r
+            type tapi-common:layer-protocol-name;\r
+            description "none";\r
+        }\r
+        list changed-attributes {\r
+            key 'value-name';\r
+            uses name-and-value-change;\r
+            description "none";\r
+        }\r
+        list additional-info {\r
+            key 'value-name';\r
+            uses tapi-common:name-and-value;\r
+            description "none";\r
+        }\r
+        leaf additional-text {\r
+            type string;\r
+            description "none";\r
+        }\r
+        container tca-info {\r
+            uses tca-info;\r
+            description "none";\r
+        }\r
+        container alarm-info {\r
+            uses alarm-info;\r
+            description "none";\r
+        }\r
+        uses tapi-common:resource-spec;\r
+        description "none";\r
+    }\r
+    grouping notification-channel {\r
+        leaf stream-address {\r
+            type string;\r
+            config false;\r
+            description "The address/location/URI of the channel/stream to which the subscribed notifications are published.\r
+                This specifics of this is typically dependent on the implementation protocol & mechanism and hence is typed as a string.";\r
+        }\r
+        leaf next-sequence-no {\r
+            type uint64;\r
+            config false;\r
+            description "The sequence number of the next notification that will be published on the channel";\r
+        }\r
+        uses tapi-common:local-class;\r
+        description "none";\r
+    }\r
+    grouping notification-context {\r
+        list notif-subscription {\r
+            key 'uuid';\r
+            uses notification-subscription-service;\r
+            description "none";\r
+        }\r
+        list notification {\r
+            key 'uuid';\r
+            config false;\r
+            uses notification;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    grouping alarm-info {\r
+        leaf is-transient {\r
+            type boolean;\r
+            config false;\r
+            description "none";\r
+        }\r
+        leaf perceived-severity {\r
+            type perceived-severity-type;\r
+            config false;\r
+            description "none";\r
+        }\r
+        leaf probable-cause {\r
+            type string;\r
+            config false;\r
+            description "none";\r
+        }\r
+        leaf service-affecting {\r
+            type service-affecting;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+    grouping tca-info {\r
+        leaf is-transient {\r
+            type boolean;\r
+            config false;\r
+            description "none";\r
+        }\r
+        leaf threshold-crossing {\r
+            type threshold-crossing-type;\r
+            description "none";\r
+        }\r
+        leaf threshold-parameter {\r
+            type string;\r
+            config false;\r
+            description "none";\r
+        }\r
+        leaf threshold-value {\r
+            type uint64;\r
+            config false;\r
+            description "none";\r
+        }\r
+        leaf perceived-severity {\r
+            type perceived-tca-severity;\r
+            description "none";\r
+        }\r
+        leaf measurement-interval {\r
+            type tapi-common:date-and-time;\r
+            description "none";\r
+        }\r
+        leaf suspect-interval-flag {\r
+            type boolean;\r
+            description "none";\r
+        }\r
+        description "none";\r
+    }\r
+\r
+    /**************************\r
+    * package type-definitions\r
+    **************************/ \r
+    grouping name-and-value-change {\r
+        leaf value-name {\r
+            type string;\r
+            description "The name of the value. The value need not have a name.";\r
+        }\r
+        leaf old-value {\r
+            type string;\r
+            description "The value";\r
+        }\r
+        leaf new-value {\r
+            type string;\r
+            description "The value";\r
+        }\r
+        description "A scoped name-value triple, including old value and new value";\r
+    }\r
+    typedef notification-type {\r
+        type enumeration {\r
+            enum OBJECT_CREATION {\r
+                description "Not a normal state. The system is unable to determine the correct value.";\r
+            }\r
+            enum OBJECT_DELETION {\r
+                description "none";\r
+            }\r
+            enum ATTRIBUTE_VALUE_CHANGE {\r
+                description "none";\r
+            }\r
+            enum ALARM_EVENT {\r
+                description "none";\r
+            }\r
+            enum THRESHOLD_CROSSING_ALERT {\r
+                description "none";\r
+            }\r
+        }\r
+        description "List of supported Notifications types.";\r
+    }\r
+    typedef object-type {\r
+        type enumeration {\r
+            enum TOPOLOGY {\r
+                description "none";\r
+            }\r
+            enum NODE {\r
+                description "none";\r
+            }\r
+            enum LINK {\r
+                description "none";\r
+            }\r
+            enum CONNECTION {\r
+                description "none";\r
+            }\r
+            enum PATH {\r
+                description "none";\r
+            }\r
+            enum CONNECTIVITY_SERVICE {\r
+                description "none";\r
+            }\r
+            enum VIRTUAL_NETWORK_SERVICE {\r
+                description "none";\r
+            }\r
+            enum PATH_COMPUTATION_SERVICE {\r
+                description "none";\r
+            }\r
+            enum NODE_EDGE_POINT {\r
+                description "none";\r
+            }\r
+            enum SERVICE_INTERFACE_POINT {\r
+                description "none";\r
+            }\r
+            enum CONNECTION_END_POINT {\r
+                description "none";\r
+            }\r
+            enum MAINTENANCE_ENTITY_GROUP {\r
+                description "none";\r
+            }\r
+            enum MAINTENANCE_ENTITY {\r
+                description "none";\r
+            }\r
+            enum MEG_END_POINT {\r
+                description "none";\r
+            }\r
+            enum MEG_INTERMEDIATE_POINT {\r
+                description "none";\r
+            }\r
+            enum SWITCH_CONTROL {\r
+                description "none";\r
+            }\r
+            enum SWITCH {\r
+                description "none";\r
+            }\r
+            enum ROUTE {\r
+                description "none";\r
+            }\r
+            enum NODE_RULE_GROUP {\r
+                description "none";\r
+            }\r
+            enum INTER_RULE_GROUP {\r
+                description "none";\r
+            }\r
+            enum RULE {\r
+                description "none";\r
+            }\r
+            enum OAM_JOB {\r
+                description "none";\r
+            }\r
+            enum ACCESS_PORT {\r
+                description "none";\r
+            }\r
+            enum EQUIPMENT {\r
+                description "none";\r
+            }\r
+            enum HOLDER {\r
+                description "none";\r
+            }\r
+            enum PHYSICAL_SPAN {\r
+                description "none";\r
+            }\r
+            enum ABSTRACT_STRAND {\r
+                description "none";\r
+            }\r
+            enum DEVICE {\r
+                description "none";\r
+            }\r
+        }\r
+        description "The list of TAPI Global Object Class types on which Notifications can be raised.";\r
+    }\r
+    typedef source-indicator {\r
+        type enumeration {\r
+            enum RESOURCE_OPERATION {\r
+                description "none";\r
+            }\r
+            enum MANAGEMENT_OPERATION {\r
+                description "none";\r
+            }\r
+            enum UNKNOWN {\r
+                description "none";\r
+            }\r
+        }\r
+        description "none";\r
+    }\r
+    typedef subscription-state {\r
+        type enumeration {\r
+            enum SUSPENDED {\r
+                description "none";\r
+            }\r
+            enum ACTIVE {\r
+                description "none";\r
+            }\r
+        }\r
+        description "none";\r
+    }\r
+    typedef perceived-severity-type {\r
+        type enumeration {\r
+            enum CRITICAL {\r
+                description "none";\r
+            }\r
+            enum MAJOR {\r
+                description "none";\r
+            }\r
+            enum MINOR {\r
+                description "none";\r
+            }\r
+            enum WARNING {\r
+                description "none";\r
+            }\r
+            enum CLEARED {\r
+                description "none";\r
+            }\r
+        }\r
+        description "none";\r
+    }\r
+    typedef threshold-crossing-type {\r
+        type enumeration {\r
+            enum THRESHOLD_ABOVE {\r
+                description "none";\r
+            }\r
+            enum THRESHOLD_BELOW {\r
+                description "none";\r
+            }\r
+            enum CLEARED {\r
+                description "none";\r
+            }\r
+        }\r
+        description "none";\r
+    }\r
+    typedef service-affecting {\r
+        type enumeration {\r
+            enum SERVICE_AFFECTING {\r
+                description "none";\r
+            }\r
+            enum NOT_SERVICE_AFFECTING {\r
+                description "none";\r
+            }\r
+            enum UNKNOWN {\r
+                description "none";\r
+            }\r
+        }\r
+        description "none";\r
+    }\r
+    typedef perceived-tca-severity {\r
+        type enumeration {\r
+            enum WARNING {\r
+                description "none";\r
+            }\r
+            enum CLEAR {\r
+                description "none";\r
+            }\r
+        }\r
+        description "none";\r
+    }\r
+\r
+    /**************************\r
+    * package interfaces\r
+    **************************/ \r
+    rpc get-supported-notification-types {\r
+        description "none";\r
+        output {\r
+            leaf-list supported-notification-types {\r
+                type notification-type;\r
+                min-elements 1;\r
+                description "none";\r
+            }\r
+            leaf-list supported-object-types {\r
+                type object-type;\r
+                min-elements 1;\r
+                description "none";\r
+            }\r
+        }\r
+    }\r
+    rpc create-notification-subscription-service {\r
+        description "none";\r
+        input {\r
+            container subscription-filter {\r
+                uses subscription-filter;\r
+                description "none";\r
+            }\r
+            leaf subscription-state {\r
+                type subscription-state;\r
+                description "none";\r
+            }\r
+        }\r
+        output {\r
+            container subscription-service {\r
+                uses notification-subscription-service;\r
+                description "none";\r
+            }\r
+        }\r
+    }\r
+    rpc update-notification-subscription-service {\r
+        description "none";\r
+        input {\r
+            leaf subscription-id-or-name {\r
+                type string;\r
+                description "none";\r
+            }\r
+            container subscription-filter {\r
+                uses subscription-filter;\r
+                description "none";\r
+            }\r
+            leaf subscription-state {\r
+                type subscription-state;\r
+                description "none";\r
+            }\r
+        }\r
+        output {\r
+            container subscription-service {\r
+                uses notification-subscription-service;\r
+                description "none";\r
+            }\r
+        }\r
+    }\r
+    rpc delete-notification-subscription-service {\r
+        description "none";\r
+        input {\r
+            leaf subscription-id-or-name {\r
+                type string;\r
+                description "none";\r
+            }\r
+        }\r
+        output {\r
+            container subscription-service {\r
+                uses notification-subscription-service;\r
+                description "none";\r
+            }\r
+        }\r
+    }\r
+    rpc get-notification-subscription-service-details {\r
+        description "none";\r
+        input {\r
+            leaf subscription-id-or-name {\r
+                type string;\r
+                description "none";\r
+            }\r
+        }\r
+        output {\r
+            container subscription-service {\r
+                uses notification-subscription-service;\r
+                description "none";\r
+            }\r
+        }\r
+    }\r
+    rpc get-notification-subscription-service-list {\r
+        description "none";\r
+        output {\r
+            list subscription-service {\r
+                key 'uuid';\r
+                uses notification-subscription-service;\r
+                description "none";\r
+            }\r
+        }\r
+    }\r
+    rpc get-notification-list {\r
+        description "none";\r
+        input {\r
+            leaf subscription-id-or-name {\r
+                type string;\r
+                description "none";\r
+            }\r
+            leaf time-period {\r
+                type string;\r
+                description "none";\r
+            }\r
+        }\r
+        output {\r
+            list notification {\r
+                key 'uuid';\r
+                uses notification;\r
+                description "none";\r
+            }\r
+        }\r
+    }\r
+\r
+}\r