Reorganization of devicemanager directory structure
[ccsdk/features.git] / sdnr / wt / devicemanager-onap / onf14 / provider / src / main / yang / l-3vpn-profile-1-0.yang
diff --git a/sdnr/wt/devicemanager-onap/onf14/provider/src/main/yang/l-3vpn-profile-1-0.yang b/sdnr/wt/devicemanager-onap/onf14/provider/src/main/yang/l-3vpn-profile-1-0.yang
new file mode 100644 (file)
index 0000000..b5682c9
--- /dev/null
@@ -0,0 +1,499 @@
+module l-3vpn-profile-1-0 {\r
+  yang-version 1.1;\r
+  namespace "urn:onf:yang:l-3vpn-profile-1-0";\r
+  prefix l-3vpn-profile;\r
+\r
+  import ietf-yang-types {\r
+    prefix yang;\r
+  }\r
+  import core-model-1-4 {\r
+    prefix core-model;\r
+  }\r
+\r
+  organization\r
+    "openBackhaul.com proposal to Open Networking Foundation (ONF)";\r
+  contact\r
+    "WG Web : https://github.com/openBackhaul/Overview\r
+     WG List: L3vpnProfile@openBackhaul.com\r
+     Editor : Thorsten Heinze\r
+     Email  : Thorsten.Heinze@openBackhaul.com";\r
+  description\r
+    "Technology specific profile definition for Layer 3 Virtual Private Networks\r
+\r
+     Copyright 2019 openBackhaul.com\r
+\r
+     Licensed under the Apache License, Version 2.0 (the 'License');\r
+     you may not use this file except in compliance with the License.\r
+     You may obtain a copy of the License at\r
+     http://www.apache.org/licenses/LICENSE-2.0\r
+     Unless required by applicable law or agreed to in writing, software\r
+     distributed under the License is distributed on an 'AS IS' BASIS,\r
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+     See the License for the specific language governing permissions and\r
+     limitations under the License.";\r
+\r
+  revision 2020-01-27 {\r
+    description\r
+      "Model for the Transport SDN Pilot at Telefonica Germany.\r
+       Please view https://github.com/openBackhaul/l3vpnProfile/issues for changes.";\r
+    reference\r
+      "https://github.com/openBackhaul/l3vpnProfile/tree/tsp: Model definition\r
+       https://github.com/openBackhaul/onfCoreIm/tree/tsp: ONF TR-512 Core IM incl. Profile and enhanced Equipment definition";\r
+  }\r
+  revision 2019-07-12 {\r
+    description\r
+      "Model for the Transport SDN Pilot at Telefonica Germany.\r
+       Please view https://github.com/openBackhaul/l3vpnProfile/issues for changes.";\r
+    reference\r
+      "https://github.com/openBackhaul/l3vpnProfile/tree/tsp: Model definition\r
+       https://github.com/openBackhaul/onfCoreIm/tree/tsp: ONF TR-512 Core IM incl. Profile and enhanced Equipment definition";\r
+  }\r
+\r
+  identity PROFILE_NAME_TYPE_L3VPN_PROFILE {\r
+    base core-model:PROFILE_NAME_TYPE;\r
+    description\r
+      "none";\r
+  }\r
+\r
+  augment "/core-model:control-construct/core-model:profile-collection/core-model:profile" {\r
+    when "derived-from-or-self(./core-model:profile-name, 'l-3vpn-profile:PROFILE_NAME_TYPE_L3VPN_PROFILE')";\r
+    uses l-3vpn-profile-spec;\r
+    description\r
+      "none";\r
+  }\r
+\r
+  /****************************************\r
+   * package notifications\r
+   **************************************/ \r
+\r
+  notification object-creation-notification {\r
+    uses object-creation-notification;\r
+    description\r
+      "none";\r
+  }\r
+\r
+  grouping object-creation-notification {\r
+    leaf counter {\r
+      type int32;\r
+      default "-1";\r
+      config false;\r
+      description\r
+        "Counts object creation notifications.";\r
+    }\r
+    leaf timestamp {\r
+      type yang:date-and-time;\r
+      default "2010-11-20T14:00:00+01:00";\r
+      config false;\r
+      description\r
+        "none";\r
+    }\r
+    leaf object-id-ref {\r
+      type leafref {\r
+        path "/core-model:control-construct/core-model:profile-collection/core-model:profile/core-model:uuid";\r
+        require-instance false;\r
+      }\r
+      config false;\r
+      description\r
+        "none";\r
+    }\r
+    leaf object-type {\r
+      type string;\r
+      default "Type of created object not specified.";\r
+      config false;\r
+      description\r
+        "none";\r
+    }\r
+    description\r
+      "none";\r
+  }\r
+\r
+  notification object-deletion-notification {\r
+    uses object-deletion-notification;\r
+    description\r
+      "none";\r
+  }\r
+\r
+  grouping object-deletion-notification {\r
+    leaf counter {\r
+      type int32;\r
+      default "-1";\r
+      config false;\r
+      description\r
+        "Counts object deletion notifications.";\r
+    }\r
+    leaf timestamp {\r
+      type yang:date-and-time;\r
+      default "2010-11-20T14:00:00+01:00";\r
+      config false;\r
+      description\r
+        "none";\r
+    }\r
+    leaf object-id-ref {\r
+      type leafref {\r
+        path "/core-model:control-construct/core-model:profile-collection/core-model:profile/core-model:uuid";\r
+        require-instance false;\r
+      }\r
+      config false;\r
+      description\r
+        "none";\r
+    }\r
+    description\r
+      "none";\r
+  }\r
+\r
+  /****************************************\r
+   * grouping statements for object classes\r
+   **************************************/ \r
+\r
+  grouping l-3vpn-profile-spec {\r
+    container l-3vpn-pac {\r
+      uses l-3vpn-pac;\r
+      description\r
+        "none";\r
+    }\r
+    description\r
+      "none";\r
+  }\r
+\r
+  grouping l-3vpn-pac {\r
+    container l-3vpn-capability {\r
+      config false;\r
+      uses l-3vpn-capability;\r
+      description\r
+        "none";\r
+    }\r
+    container l-3vpn-configuration {\r
+      config false;\r
+      uses l-3vpn-configuration;\r
+      description\r
+        "none";\r
+    }\r
+    description\r
+      "none";\r
+  }\r
+\r
+  grouping l-3vpn-capability {\r
+    leaf profile-naming-is-avail {\r
+      type boolean;\r
+      default "false";\r
+      config false;\r
+      description\r
+        "1 = There is a free text field available for naming the profile.";\r
+    }\r
+    leaf l-3vpn-based-on-ip-v-6-is-avail {\r
+      type boolean;\r
+      default "false";\r
+      config false;\r
+      description\r
+        "1 = Virtual Private Networks based on IP v6 addresses is available at the device.";\r
+    }\r
+    description\r
+      "none";\r
+  }\r
+\r
+  grouping l-3vpn-configuration {\r
+    leaf profile-name {\r
+      type string;\r
+      default "Name of profile not yet defined.";\r
+      description\r
+        "Identifier of the profile. Could be a name, could be a number. Free text field to be filled by the operator.";\r
+    }\r
+    leaf l-3vpn-description {\r
+      type string;\r
+      default "VPN description not yet defined.";\r
+      description\r
+        "Short description of the VPN.";\r
+    }\r
+    list l-3vpn-configuration-list {\r
+      key "label-mode";\r
+      min-elements 1;\r
+      max-elements 2;\r
+      uses l-3vpn-configuration-type;\r
+      description\r
+        "L3 VPN instance Configuration.";\r
+    }\r
+    description\r
+      "none";\r
+  }\r
+\r
+  /****************************************\r
+   * typedef statements\r
+   **************************************/ \r
+\r
+  typedef label-mode-type {\r
+    type identityref {\r
+      base LABEL_MODE_TYPE;\r
+    }\r
+    description\r
+      "none";\r
+  }\r
+\r
+  typedef device-identifier-kind-type {\r
+    type identityref {\r
+      base DEVICE_IDENTIFIER_KIND_TYPE;\r
+    }\r
+    description\r
+      "none";\r
+  }\r
+\r
+  typedef address-family-type {\r
+    type identityref {\r
+      base ADDRESS_FAMILY_TYPE;\r
+    }\r
+    description\r
+      "Address family of the VRF IPv4/IPV6.";\r
+  }\r
+\r
+  typedef route-pritority-type {\r
+    type identityref {\r
+      base ROUTE_PRITORITY_TYPE;\r
+    }\r
+    description\r
+      "The priority of the Route";\r
+  }\r
+\r
+  typedef route-state-type {\r
+    type identityref {\r
+      base ROUTE_STATE_TYPE;\r
+    }\r
+    description\r
+      "The state of the route as per the routing table. It is a combination of the one or more of the following states: ADV, NOADV,ACTIVE, INACTIVE, RELIED.";\r
+  }\r
+\r
+  typedef route-flag-type {\r
+    type identityref {\r
+      base ROUTE_FLAG_TYPE;\r
+    }\r
+    description\r
+      "Indicates the route flag, that is, Route Flags in the heading of the routing table displayed. It is a combination of one or more of the following flags: D and,R Meaning of each of the flag is availble under corresponding flag value.";\r
+  }\r
+\r
+  /*********************************************\r
+   * grouping statements for complex data types\r
+   *******************************************/ \r
+\r
+  identity LABEL_MODE_TYPE {\r
+    description\r
+      "none";\r
+  }\r
+\r
+  identity LABEL_MODE_TYPE_PER_INSTANCE {\r
+    base LABEL_MODE_TYPE;\r
+    description\r
+      "Labels are assigned to VPN instances in one label per instance mode, that is, all routes in a VPN instance are assigned with the same label.";\r
+  }\r
+\r
+  identity LABEL_MODE_TYPE_PER_ROUTE {\r
+    base LABEL_MODE_TYPE;\r
+    description\r
+      "Labels are assigned to routes in the 'one label per route' mode, that is, each route is assigned with one label.";\r
+  }\r
+\r
+  identity DEVICE_IDENTIFIER_KIND_TYPE {\r
+    description\r
+      "none";\r
+  }\r
+\r
+  identity DEVICE_IDENTIFIER_KIND_TYPE_LOOP_BACK_IP_ADDRESS {\r
+    base DEVICE_IDENTIFIER_KIND_TYPE;\r
+    description\r
+      "none";\r
+  }\r
+\r
+  identity DEVICE_IDENTIFIER_KIND_TYPE_AS_NUMBER {\r
+    base DEVICE_IDENTIFIER_KIND_TYPE;\r
+    description\r
+      "none";\r
+  }\r
+\r
+  identity DEVICE_IDENTIFIER_KIND_TYPE_NOT_YET_DEFINED {\r
+    base DEVICE_IDENTIFIER_KIND_TYPE;\r
+    description\r
+      "none";\r
+  }\r
+\r
+  identity ADDRESS_FAMILY_TYPE {\r
+    description\r
+      "none";\r
+  }\r
+\r
+  identity ADDRESS_FAMILY_TYPE_IPV4-FAMILY {\r
+    base ADDRESS_FAMILY_TYPE;\r
+    description\r
+      "none";\r
+  }\r
+\r
+  identity ADDRESS_FAMILY_TYPE_IPV6-FAMILY {\r
+    base ADDRESS_FAMILY_TYPE;\r
+    description\r
+      "none";\r
+  }\r
+\r
+  identity ADDRESS_FAMILY_TYPE_UNKNOWN {\r
+    base ADDRESS_FAMILY_TYPE;\r
+    description\r
+      "none";\r
+  }\r
+\r
+  identity ADDRESS_FAMILY_TYPE_NOT_YET_DEFINED {\r
+    base ADDRESS_FAMILY_TYPE;\r
+    description\r
+      "none";\r
+  }\r
+\r
+  identity ROUTE_PRITORITY_TYPE {\r
+    description\r
+      "none";\r
+  }\r
+\r
+  identity ROUTE_PRITORITY_TYPE_CRITICAL {\r
+    base ROUTE_PRITORITY_TYPE;\r
+    description\r
+      "Highest protocol priority.";\r
+  }\r
+\r
+  identity ROUTE_PRITORITY_TYPE_HIGH {\r
+    base ROUTE_PRITORITY_TYPE;\r
+    description\r
+      "High protocol priority";\r
+  }\r
+\r
+  identity ROUTE_PRITORITY_TYPE_MEDIUM {\r
+    base ROUTE_PRITORITY_TYPE;\r
+    description\r
+      "Medium protocol priority.";\r
+  }\r
+\r
+  identity ROUTE_PRITORITY_TYPE_LOW {\r
+    base ROUTE_PRITORITY_TYPE;\r
+    description\r
+      "Low protocol priority.";\r
+  }\r
+\r
+  identity ROUTE_STATE_TYPE {\r
+    description\r
+      "none";\r
+  }\r
+\r
+  identity ROUTE_STATE_TYPE_ACTIVE_ADV {\r
+    base ROUTE_STATE_TYPE;\r
+    description\r
+      "The route state is active and advertised.";\r
+  }\r
+\r
+  identity ROUTE_STATE_TYPE_ACTIVE_NOADV {\r
+    base ROUTE_STATE_TYPE;\r
+    description\r
+      "The route state is active and not advertised.";\r
+  }\r
+\r
+  identity ROUTE_STATE_TYPE_ACTIVE_ADV_RELIED {\r
+    base ROUTE_STATE_TYPE;\r
+    description\r
+      "The route state is active, advertised, and relied.";\r
+  }\r
+\r
+  identity ROUTE_STATE_TYPE_ACTIVE_NOADV_RELIED {\r
+    base ROUTE_STATE_TYPE;\r
+    description\r
+      "The route state is active, not advertised, and relied.";\r
+  }\r
+\r
+  identity ROUTE_STATE_TYPE_INVALID_NOADV {\r
+    base ROUTE_STATE_TYPE;\r
+    description\r
+      "The route state is invalid and not advertised.";\r
+  }\r
+\r
+  identity ROUTE_STATE_TYPE_INACTIVE_NOADV {\r
+    base ROUTE_STATE_TYPE;\r
+    description\r
+      "The route state is inactive and not advertised.";\r
+  }\r
+\r
+  identity ROUTE_FLAG_TYPE {\r
+    description\r
+      "none";\r
+  }\r
+\r
+  identity ROUTE_FLAG_TYPE_D {\r
+    base ROUTE_FLAG_TYPE;\r
+    description\r
+      "A route is advertised to the Forwarding Information Base table.";\r
+  }\r
+\r
+  identity ROUTE_FLAG_TYPE_RD {\r
+    base ROUTE_FLAG_TYPE;\r
+    description\r
+      "A route is an iterated route and needs to be advertised to the FIB table.";\r
+  }\r
+\r
+  identity ROUTE_FLAG_TYPE_R {\r
+    base ROUTE_FLAG_TYPE;\r
+    description\r
+      "A route is an iterated route.";\r
+  }\r
+\r
+  grouping route-distinguisher-and-target-type {\r
+    leaf vpn-number {\r
+      type uint32;\r
+      description\r
+        "Identifier of the VPN, which is unique in the entire network";\r
+    }\r
+    leaf device-identifier-kind {\r
+      type device-identifier-kind-type;\r
+      default "DEVICE_IDENTIFIER_KIND_TYPE_NOT_YET_DEFINED";\r
+      description\r
+        "none";\r
+    }\r
+    leaf loop-back-ip-address {\r
+      type string;\r
+      default "-1.-1.-1.-1";\r
+      description\r
+        "Only relevant if (deviceIdentifierKind==LOOP_BACK_IP_ADDRESS). Loop back address of the device.";\r
+    }\r
+    leaf as-number {\r
+      type uint32;\r
+      default "0";\r
+      description\r
+        "Only relevant if (deviceIdentifierKind==AS_NUMBER). Autonomous System number of the device.";\r
+    }\r
+    description\r
+      "none";\r
+  }\r
+\r
+  grouping l-3vpn-configuration-type {\r
+    leaf label-mode {\r
+      type label-mode-type;\r
+      description\r
+        "Label model used by the VPN.";\r
+    }\r
+    container route-distinguisher {\r
+      uses route-distinguisher-and-target-type;\r
+      description\r
+        "The route distinguisher that should be used for the local VRF or VSI instance when it is signalled via BGP.";\r
+    }\r
+    list route-target-import-list {\r
+      key "vpn-number";\r
+      min-elements 1;\r
+      uses route-distinguisher-and-target-type;\r
+      description\r
+        "Route targets that will be imported to this VPN ";\r
+    }\r
+    list route-target-export-list {\r
+      key "vpn-number";\r
+      min-elements 1;\r
+      uses route-distinguisher-and-target-type;\r
+      description\r
+        "Route targets that will be tagged to outgoing routes";\r
+    }\r
+    leaf address-family {\r
+      type address-family-type;\r
+      default "ADDRESS_FAMILY_TYPE_NOT_YET_DEFINED";\r
+      description\r
+        "Address family type for the VPN instance is created for";\r
+    }\r
+    description\r
+      "L3 VPN instance configuration information.";\r
+  }\r
+}\r