Add MEF Presto YANG modules. 31/41131/3
authorDonald Hunter <donaldh@cisco.com>
Thu, 30 Jun 2016 10:59:52 +0000 (11:59 +0100)
committerDonald Hunter <donaldh@cisco.com>
Thu, 30 Jun 2016 15:48:13 +0000 (16:48 +0100)
These modules supersede the MEF NRP modules that are in unimgr-api.

Change-Id: I6a2d65d0cd5eee8f4d50f7f96a464324b4a3ca94
Signed-off-by: Donald Hunter <donaldh@cisco.com>
pom.xml
presto-api/pom.xml [new file with mode: 0644]
presto-api/src/main/yang/mef-nrp-bandwidth-profile.yang [new file with mode: 0644]
presto-api/src/main/yang/mef-nrp-specs.yang [new file with mode: 0644]
presto-api/src/main/yang/mef-nrp-types.yang [new file with mode: 0644]
presto-api/src/main/yang/onf-core-network-module.yang [new file with mode: 0644]
presto-api/src/main/yang/onf-core-network-types.yang [new file with mode: 0644]
presto-api/src/main/yang/onf-core-specs.yang [new file with mode: 0644]

diff --git a/pom.xml b/pom.xml
index 32dc02194a73418d8643dcbad4844141be57d3f3..d6468c80e835610707649aa836072260287c5a5d 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -59,6 +59,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
       <modules>
         <module>api</module>
         <module>legato-api</module>
+        <module>presto-api</module>
         <module>impl</module>
         <module>cisco-xr-driver</module>
         <module>cli</module>
diff --git a/presto-api/pom.xml b/presto-api/pom.xml
new file mode 100644 (file)
index 0000000..9303138
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v1.0 which accompanies this distribution,
+and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <groupId>org.opendaylight.mdsal</groupId>
+    <artifactId>binding-parent</artifactId>
+    <version>0.9.0-SNAPSHOT</version>
+    <relativePath/>
+  </parent>
+
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.opendaylight.unimgr</groupId>
+  <artifactId>unimgr-presto-api</artifactId>
+  <version>0.1.0-SNAPSHOT</version>
+  <packaging>bundle</packaging>
+
+  <properties>
+    <ovsdb.version>1.3.0-SNAPSHOT</ovsdb.version>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.opendaylight.mdsal.model</groupId>
+      <artifactId>ietf-topology</artifactId>
+    </dependency>
+  </dependencies>
+
+</project>
diff --git a/presto-api/src/main/yang/mef-nrp-bandwidth-profile.yang b/presto-api/src/main/yang/mef-nrp-bandwidth-profile.yang
new file mode 100644 (file)
index 0000000..9929830
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
+ */
+module mef-nrp-bandwidth-profile {
+  namespace "urn:mef:nrp-bandwidth-profile";
+  prefix nrp-bwp;
+
+  import mef-nrp-types {
+    prefix nrp-types;
+  }
+
+  revision 2016-06-30 {
+  }
+
+  grouping G_NRP_BwpFlow {
+    leaf bwpFlowIndex {
+      type nrp-types:NRP_PositiveInteger;
+      description "The index i=1,2,...,n is used to index the Bandwidth Profile Flow among all Bandwidth Profile
+Flows that are mapped to a given Envelope";
+    }
+    leaf cir {
+      type nrp-types:NRP_NaturalNumber;
+      description "Committed Information Rate that limits the average rate of frames that will be declared
+Green. In bits per second.";
+    }
+    leaf cirMax {
+      type nrp-types:NRP_NaturalNumber;
+      description "Maximum Committed Information Rate that limits the rate of tokens added to the committed token
+bucket. In bits per second.";
+    }
+    leaf cbs {
+      type nrp-types:NRP_NaturalNumber;
+      description "Committed Burst Size that limits the maximum number of bytes available for a burst of frames
+that will be declared Green, in bytes,";
+    }
+    leaf eir {
+      type nrp-types:NRP_NaturalNumber;
+      description "Excess Information Rate that limits the average rate of frames that will be declared Yellow, in
+bits per second.";
+    }
+    leaf eirMax {
+      type nrp-types:NRP_NaturalNumber;
+      description "Maximum Excess Infor-mation Rate that Limits the rate of tokens added to the excess token
+bucket, in bits per second.";
+    }
+    leaf ebs {
+      type nrp-types:NRP_NaturalNumber;
+      description "Excessive Burst Size that limits the maximum number of bytes available for a burst of frames
+that will be declared Yellow, in bytes.";
+    }
+    leaf couplingFlag {
+      type nrp-types:NRP_NaturalNumber;
+      description "Coupling Flag that Determines if overflow Green tokens can be used as Yellow tokens. Value 0 for
+NO and value 1 for YES.";
+    }
+    leaf colorMode {
+      type nrp-types:NRP_ColorMode;
+      description "Color Mode that Indicates whether the Color Identifier of the frame is considered by the
+Bandwidth Profile Algorithm.";
+    }
+    leaf rank {
+      type nrp-types:NRP_PositiveInteger;
+      description "Bandwidth prorile flow rank in an associated Envelope.";
+    }
+    leaf tokenRequestOffset {
+      type nrp-types:NRP_NaturalNumber;
+      description "Adjusts the number of tokens requested for each external interface frame.";
+    }
+  }
+
+  grouping G_NRP_ColorIdentifier {
+    choice identifier {
+      case sap-color-id {
+        container serviceAccessPointColorId {
+          uses G_NRP_ServiceAccessPointColorId;
+        }
+      }
+      case pcp-color-id {
+        container pcpColorId {
+          uses G_NRP_PcpColorId;
+        }
+      }
+      case dei-color-id {
+        container deiColorId {
+          uses G_NRP_DeiColorId;
+        }
+      }
+      case desp-color-id {
+        container despColorId {
+          uses G_NRP_DespColorId;
+        }
+      }
+    }
+  }
+
+  grouping G_NRP_ServiceAccessPointColorId {
+    leaf color {
+      type nrp-types:NRP_FrameColor;
+      description "Green or Yellow.";
+    }
+  }
+  grouping G_NRP_PcpColorId {
+    leaf vlanTag {
+      type nrp-types:NRP_VlanTag;
+      description "Which vlan tag pcp to be used for color identier, S tag or C tag. S-tag is not valid for EvcEndPoint. ";
+    }
+    leaf-list pcpValue {
+      description "List PCP values map to the same color.";
+      ordered-by system;
+      type nrp-types:NRP_NaturalNumber;
+      min-elements 1;
+    }
+    leaf color {
+      type nrp-types:NRP_FrameColor;
+      description "Green or Yellow.";
+    }
+  }
+  grouping G_NRP_DeiColorId {
+    leaf vlanTag {
+      type nrp-types:NRP_VlanTag;
+      description "Which vlan tag pcp to be used for color identier, S tag or C tag. S-tag is not valid for EvcEndPoint. ";
+    }
+    leaf-list deiValue {
+      description "DEI=0 or DEI=1";
+      ordered-by system;
+      type nrp-types:NRP_NaturalNumber;
+      max-elements 2;
+      min-elements 1;
+    }
+    leaf color {
+      type nrp-types:NRP_FrameColor;
+      description "Green or Yellow";
+    }
+  }
+  grouping G_NRP_DespColorId {
+    leaf ipVersion {
+      type nrp-types:NRP_IpVersion;
+      description "IPv4, or IPv6, or both IPv4 and IPv6.";
+    }
+    leaf-list dscpValue {
+      description "List DSCP values map to the same color.";
+      ordered-by system;
+      type nrp-types:NRP_NaturalNumber;
+    }
+    leaf color {
+      type nrp-types:NRP_FrameColor;
+      description "Green or Yellow";
+    }
+  }
+
+}
diff --git a/presto-api/src/main/yang/mef-nrp-specs.yang b/presto-api/src/main/yang/mef-nrp-specs.yang
new file mode 100644 (file)
index 0000000..76be09e
--- /dev/null
@@ -0,0 +1,335 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
+ */
+module mef-nrp-specs {
+  namespace "urn:mef:nrp-specs";
+  prefix nrp;
+
+  import onf-core-network-module {
+    prefix onf-cn;
+  }
+
+  import mef-nrp-types {
+    prefix nrp-types;
+  }
+
+  import mef-nrp-bandwidth-profile {
+    prefix nrp-bwp;
+  }
+
+  import network-topology {
+    prefix nt;
+  }
+
+  revision 2016-06-30 {
+  }
+
+  augment "/onf-cn:forwarding-constructs/onf-cn:forwarding-construct/onf-cn:fcSpec" {
+    container nrp-ce-fcspec-attrs {
+      uses G_NRP_CeFcSpec;
+    }
+  }
+
+  grouping G_NRP_CeFcSpec {
+    leaf connectionType {
+      type nrp-types:NRP_ConnectionType;
+      description "Virtual connection (EVC or OVC).";
+    }
+    leaf unicastFrameDelivery {
+      type nrp-types:NRP_ServiceFrameDelivery;
+      description "A Data Service Frame with a unicast Destination MAC Address is defined to be a Multicast Data
+Service Frame. Reference MEF 10.3, Section 8.5.2.";
+    }
+    leaf multicastFrameDelivery {
+      type nrp-types:NRP_ServiceFrameDelivery;
+    }
+    leaf broadcastFrameDelivery {
+      type nrp-types:NRP_ServiceFrameDelivery;
+      description "A Data Service Frame with a broadcast Destination MAC Address is defined to be a Broadcast Data
+Service Frame. Reference MEF 10.3, Section 8.5.2 for EVC and MEF 26.1, Section x.y for OVC.";
+    }
+    leaf vcMaxServiceFrame {
+      type nrp-types:NRP_PositiveInteger;
+      description "The value for the EVC or OVC Maximum Service Frame Size is a positive integer in
+bytes. Reference MEF 10.3, Section 8.9 for EVC and MEF 26.1 Section x.y for OVC.";
+    }
+    leaf vcId {
+      type nrp-types:NRP_PositiveInteger;
+      description "The EVC ID is an arbitrary string administered by the Service Provider that is used to identify
+an EVC within the CEN.  MEF 10.3, Section 8.2.";
+    }
+  }
+
+  augment "/nt:network-topology/nt:topology/nt:node/nt:termination-point/onf-cn:ltp-attrs/onf-cn:lpList/onf-cn:lpSpec/onf-cn:terminationSpec" {
+    container nrp-termination-spec-attrs {
+      uses G_NRP_TerminationSpec;
+    }
+    container nrp-uni-termination-attrs {
+      uses G_NRP_UNI_TerminationSpec;
+    }
+  }
+
+  grouping G_NRP_TerminationSpec {
+    leaf physicalLayer {
+      type nrp-types:NRP_PhysicalLayer;
+      description "This attribute is a list of physical layers, one for each physical link implementing the UNI or
+ENNI. Different physical links can use different physical layers. The Physical Layer for each
+physical link implementing the UNI or ENNI MUST be one of the PHYs listed in IEEE Std 802.3 -
+2012 but excluding 1000BASE-PX-D and 1000BASE-PX-U.  Reference MEF 10.3, Section 9.2.";
+    }
+    list syncMode {
+      description "<p>The Synchronous Mode Service Attribute is a list with one item for each of the physical
+links. When the value of an item is &quot;Enabled,&quot; the bits transmitted from the CEN to
+the CE on the physical link corresponding to the item can be used by the CE as a bit clock
+reference. Reference MEF 10.3, Section 9.3.</p>
+";
+      key 'linkId';
+      config true;
+      ordered-by system;
+      uses nrp-types:G_NRP_SyncModePerLink;
+    }
+    leaf numberOfLinks {
+      type nrp-types:NRP_NaturalNumber;
+      description "This attribute specifies the number of links at the Ethernet Service Interface (UNI or ENNI).
+MEF 10.3, Section 9.4.";
+    }
+    leaf resiliency {
+      type nrp-types:NRP_InterfaceResiliency;
+      description "This attribute value is one of None, 2-Link Active/Standby, All Active, or Other.  MEF 10.3,
+Section 9.5.  MEF 10.3.2, MEF 26.2
+";
+    }
+    container portConvsIdToAggLinkMap {
+      description "The Port Conversation ID to Aggregation Link Map Attribute is applicable only when the
+EthernetServiceInterface resiliency attribute has the value of All Active. Its value is a Port
+Conversation ID to Aggregation Link Map as defined in IEEE Std 802.1AX - 2014.  MEF 10.3.2";
+      config true;
+      uses nrp-types:G_NRP_ConversationIdToAggrgationLinkMap;
+    }
+    leaf maxFrameSize {
+      type nrp-types:NRP_NaturalNumber;
+      description "This value limits the length of frames carried by an EVC/OVC that associates an EVC/OVC End
+Point. The minimum of this maxinum number for UNI and ENNI are different.  MEF 10.3, Section
+9.7.";
+    }
+    leaf linkOamEnabled {
+      type boolean;
+      description "When the value of the Link OAM attribute is Enabled, Link OAM musd tbe run on all physical links
+in the UNI/ENNI.  MEF 10.3, Section 9.16.";
+    }
+    leaf tokenShareEnabled {
+      type boolean;
+      description "When the value of the Token Share Service attribute is Enabled, at least one Envelope at the
+UNI/ENNI MUST be able to have two or more Bandwidth Profiles mapped to it.  MEF 6.2, Section
+8.2.1.";
+    }
+    leaf serviceProviderUniId {
+      type string;
+      description "MEF 10.3, Section 9.1.";
+    }
+  }
+
+  grouping G_NRP_UNI_TerminationSpec {
+    leaf defaultCeVlanId {
+      description "This is the CE-VLAN ID value assigned to Untagged Service Frames and Priority Tagged Service
+Frames. In MEF 10.3, it is called CE Vlan ID for untagged and priority tagged service frames.
+MEF 10.3, Section 9.9.";
+      config true;
+      type nrp-types:NRP_PositiveInteger;
+    }
+    leaf uniMegEnabled {
+      type boolean;
+      description "When the value of the UNI MEG Service Attribute is Enabled, the CEN MUST meet the mandatory
+requirements in MEF 30.1 that apply to the UNI MEG MEF 10.3, Section 9.17.";
+    }
+    leaf elmiEnabled {
+      type boolean;
+      description "When the value of the E-LMI Service Attribute is Enabled, the CEN MUST meet the mandatory
+requirements in MEF 16 that apply to the UNI-N.  MEF 10.3, Section 9.18";
+    }
+    leaf serviceprovideruniprofile {
+      type string;
+    }
+    leaf operatoruniprofile {
+      type string;
+    }
+    container ingressBwpUni {
+      description "MEF 10.3, Section 9.14";
+      config true;
+      uses nrp-bwp:G_NRP_BwpFlow;
+    }
+    container egressBwpUni {
+      description "MEF 10.3, Section 9.15";
+      config true;
+      uses nrp-bwp:G_NRP_BwpFlow;
+    }
+  }
+
+ augment "/nt:network-topology/nt:topology/nt:node/nt:termination-point/onf-cn:ltp-attrs/onf-cn:lpList/onf-cn:lpSpec/onf-cn:adapterSpec" {
+    container nrp-conn-adapt-spec-attrs {
+      uses G_NRP_ConnAdaptSpec;
+    }
+    container nrp-ivc-endpoint-conn-adapt-spec-attrs {
+      uses G_NRP_IvcEndpoint_ConnAdaptSpec;
+    }
+    container nrp-evc-endpoint-conn-adapt-spec-attrs {
+      uses G_NRP_EvcEndpoint_ConnAdaptSpec;
+    }
+  }
+
+  grouping G_NRP_ConnAdaptSpec {
+    container sourceMacAddressLimit {
+      description "MEF 10.3, Section 10.9";
+      config true;
+      uses nrp-types:G_NRP_SourceMacAddressLimit;
+    }
+    container CeExternalInterface {
+      config true;
+      uses G_NRP_TerminationSpec;
+    }
+    container coloridentifier {
+      config true;
+      uses nrp-bwp:G_NRP_ColorIdentifier;
+    }
+    container ingressBwpFlow {
+      config true;
+      uses nrp-bwp:G_NRP_BwpFlow;
+    }
+    container egressBwpFlow {
+      config true;
+      uses nrp-bwp:G_NRP_BwpFlow;
+    }
+    leaf l2cpAddressSet {
+      type nrp-types:NRP_L2cpAddressSet;
+    }
+    list l2cpPeering {
+      description "The L2CP Peering service attribute value MUST be an empty list, or a list
+of entries identifying protocols to be Peered where each entry consists of
+{Destination Address, Protocol Identifier} or {Destination Address, Protocol
+Identifier, Link Identifier}.
+MEF 45, Section 8.2";
+      key 'linkId';
+      config true;
+      ordered-by system;
+      uses nrp-types:G_NRP_L2cpPeering;
+    }
+  }
+
+  grouping G_NRP_EvcEndpoint_ConnAdaptSpec {
+    uses G_NRP_ConnAdaptSpec;
+    leaf evcEndPointId {
+      type nrp-types:NRP_PositiveInteger;
+      description "The EVC End Point Identification. This attribute is adapted from MEF 26.2. MEF 10.3 uses \"EVC
+per UNI\" for EVC End Point, therefore there is no identificaiton attribute.";
+    }
+    leaf testMegEnabled {
+      type boolean;
+      description "When the value of the Test MEG Service Attribute is Enabled, the CEN MUST meet the mandatory
+requirements in Section 7.5 of MEF 30.1.  that apply to the Test MEG";
+    }
+    leaf evcEndPointRole {
+      type nrp-types:NRP_EvcEndPointRole;
+      description "The EVC End Point Role is ROOF or LEAF.";
+    }
+    list evcEndPointMap {
+      description "This attribute provides the list of CE-VLAN IDs that maps to the EVC. MEF 10.3 and MEF 6.2 list
+this attriubte (CE-VLAN ID/EVC map) as UNI service attribute while MEF 26.2 decided to move this
+on as endpoint service attribute, just as MEF 10.1 and MEF 6.1 did. Decided to move this one to
+endpoint to be consistent. To be consitent, changing its name to EvcEntPointMap (MEF 26.2 lists
+as OVC Endpoint Map).
+";
+      key 'vid';
+      leaf vid {
+        type nrp-types:NRP_PositiveInteger;
+      }
+      config true;
+      ordered-by system;
+    }
+    leaf subscriberMegMipEbabled {
+      type boolean;
+      description "When the value of the Subscriber MEG MIP Service Attribute is Enabled, the CEN MUST instantiate
+a Subscriber Level MIP.";
+    }
+  }
+
+  grouping G_NRP_IvcEndpoint_ConnAdaptSpec {
+    leaf ivcEndPointId {
+      type string;
+      description "The EVC End Point Identification. This attribute is adapted from MEF 26.2. MEF 10.3 uses \"EVC
+per UNI\" for EVC End Point, therefore there is no identificaiton attribute.";
+    }
+    leaf testMegEnabled {
+      type boolean;
+      description "When the value of the Test MEG Service Attribute is Enabled, the CEN MUST meet the mandatory
+requirements in Section 7.5 of MEF 30.1.  that apply to the Test MEG";
+    }
+    leaf ivcEndPointRole {
+      type nrp-types:NRP_EndPointRole;
+      description "The EVC End Point Role is ROOF or LEAF.";
+    }
+    list ivcEndPointMap {
+      description "This attribute provides the list of CE-VLAN IDs that maps to the EVC. MEF 10.3 and MEF 6.2 list
+this attriubte (CE-VLAN ID/EVC map) as UNI service attribute while MEF 26.2 decided to move this
+on as endpoint service attribute, just as MEF 10.1 and MEF 6.1 did. Decided to move this one to
+endpoint to be consistent. To be consitent, changing its name to EvcEntPointMap (MEF 26.2 lists
+as OVC Endpoint Map).
+";
+      key 'vlanId';
+      config true;
+      ordered-by system;
+      uses G_NRP_EndPointMap;
+    }
+    leaf subscriberMegMipEnabled {
+      type boolean;
+      description "When the value of the Subscriber MEG MIP Service Attribute is Enabled, the CEN MUST instantiate
+a Subscriber Level MIP.";
+    }
+  }
+
+  grouping G_NRP_EndPointMap {
+    leaf vlanId {
+      type nrp-types:NRP_PositiveInteger;
+    }
+    choice endpoint-map-form {
+      case map-form-e {
+        list enni-svid {
+          key 'vid';
+          leaf vid {
+            type nrp-types:NRP_PositiveInteger;
+          }
+        }
+      }
+      case map-form-t {
+        leaf root-svid {
+          type nrp-types:NRP_PositiveInteger;
+        }
+        leaf leaf-svid {
+          type nrp-types:NRP_PositiveInteger;
+        }
+      }
+      case map-form-v {
+        leaf vuni-vid {
+          type nrp-types:NRP_PositiveInteger;
+        }
+        list enni-cevid {
+          key 'vid';
+          leaf vid {
+            type nrp-types:NRP_PositiveInteger;
+          }
+        }
+      }
+      case map-form-u {
+        list cvid {
+          key 'vid';
+          leaf vid {
+            type nrp-types:NRP_PositiveInteger;
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/presto-api/src/main/yang/mef-nrp-types.yang b/presto-api/src/main/yang/mef-nrp-types.yang
new file mode 100644 (file)
index 0000000..d748999
--- /dev/null
@@ -0,0 +1,270 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
+ */
+module mef-nrp-types {
+  namespace "urn:mef:nrp-types";
+  prefix nrp-types;
+
+  revision 2016-06-30 {
+  }
+
+  grouping G_NRP_SourceMacAddressLimit {
+    leaf enabled {
+      type boolean;
+    }
+    leaf limit {
+      type NRP_NaturalNumber;
+    }
+    leaf timeInterval {
+      type NRP_NaturalNumber;
+    }
+  }
+  grouping G_NRP_VlanId {
+    leaf vid {
+      type NRP_PositiveInteger;
+    }
+  }
+  typedef NRP_EvcEndPointRole {
+    type enumeration {
+      enum ROOT;
+      enum LEAF;
+    }
+  }
+  typedef NRP_Identifier45 {
+    type string;
+  }
+  typedef NRP_L2cpAddressSet {
+    type enumeration {
+      enum CTA;
+      enum CTB;
+      enum CTB2;
+    }
+  }
+  typedef NRP_PhysicalLayer {
+    type enumeration {
+      enum 10BASE2;
+      enum 10BASE5;
+      enum 10BASE_F;
+      enum 10BASE_FB;
+      enum 10BASE_FL;
+      enum 10BASE_FP;
+      enum 10BASE_T;
+      enum 10BASE_TE;
+      enum 10BROAD36;
+      enum 10PASS_TS;
+      enum 100BASE_BX10;
+      enum 100BASE_FX;
+      enum 100BASE_LX10;
+      enum 100BASE_T;
+      enum 100BASE_T2;
+      enum 100BASE_T4;
+      enum 100BASE_TX;
+      enum 100BASE_X;
+      enum 1000BASE_BX10;
+      enum 1000BASE_CX;
+      enum 1000BASE_KX;
+      enum 1000BASE_LX;
+      enum 1000BASE_LX10;
+      enum 1000BASE_PX10;
+      enum 1000BASE_PX20;
+      enum 1000BASE_SX;
+      enum 1000BASE_T;
+      enum 1000BASE_X;
+      enum 10GBASE_CX4;
+      enum 10GBASE_E;
+      enum 10GBASE_ER;
+      enum 10GBASE_EW;
+      enum 10GBASE_KR;
+      enum 10GBASE_KX4;
+      enum 10GBASE_L;
+      enum 10GBASE_LR;
+      enum 10GBASE_LRM;
+      enum 10GBASE_LW;
+      enum 10GBASE_LX4;
+      enum 10GBASE_PR;
+      enum 10GBASE_PRX;
+      enum 10GBASE_R;
+      enum 10GBASE_S;
+      enum 10GBASE_SR;
+      enum 10GBASE_SW;
+      enum 10GBASE_T;
+      enum 10GBASE_W;
+      enum 10GBASE_X;
+      enum 100GBASE_R;
+      enum 100GBASE_CR10;
+      enum 100GBASE_ER4;
+      enum 100GBASE_LR4;
+      enum 100GBASE_SR10;
+      enum 40GBASE_R;
+      enum 40GBASE_CR4;
+      enum 40GBASE__FR;
+      enum 40GBASE_KR4;
+      enum 40GBASE_LR4;
+      enum 40GBASE_SR4;
+      enum 1BASE5;
+      enum 2BASE_TL;
+      enum 1G_EPON;
+      enum 10G_EPON;
+      enum 10_1G_EPON;
+      enum 10_10G_EPON;
+      enum NONE;
+    }
+  }
+  typedef NRP_NaturalNumber {
+    type uint32 {
+      range "1..max";
+    }
+  }
+  grouping G_NRP_SyncModePerLink {
+    leaf linkId {
+      type string;
+    }
+    leaf syncModeEnabled {
+      type boolean;
+    }
+  }
+  typedef NRP_ProtocolFrameType {
+    type enumeration {
+      enum ETHERTYPE;
+      enum LLC_ADDRESS;
+      enum OTHER;
+    }
+  }
+  typedef NRP_InterfaceResiliency {
+    type enumeration {
+      enum NONE;
+      enum 2_LINK_ACTIVE_STANDBY;
+      enum ALL_ACTIVE;
+      enum OTHER;
+    }
+  }
+  grouping G_NRP_ConversationIdToAggrgationLinkMap {
+    leaf conversationId {
+      type NRP_NaturalNumber;
+    }
+    leaf linkId {
+      type NRP_NaturalNumber;
+    }
+  }
+  grouping G_NRP_L2cpPeering {
+    leaf destinationMacAddress {
+      type string;
+      description "The destination address determines the intended recipient device for the frame.";
+    }
+    leaf protocolType {
+      type NRP_ProtocolFrameType;
+      description "Protocol Identifier is either an LLC Address or an Ethertype, and it could have subtypes. The list specifies only the L2CP Frames that
+are to be Peered. Any L2CP Frame that is not Peered will either be Discarded or Passed
+as a result of the flow charts and requirements specified in MEF 45, Section 9.";
+    }
+    leaf linkId {
+      type string;
+      description "Identifies the physical link identifier for protocols (e.g. LLDP, ESMC) that can operate over the individual physical links.
+If no link identifier is specified then the list entry will apply to all physical links. 
+MEF 45, Section 8.2";
+    }
+    leaf protocolId {
+      type string;
+    }
+  }
+  typedef NRP_ColorMode {
+    type enumeration {
+      enum COLOR_AWARE;
+      enum COLOR_BLIND;
+    }
+  }
+  typedef NRP_PositiveInteger {
+    type uint32 {
+      range "1..max";
+    }
+  }
+  typedef NRP_VlanTag {
+    type enumeration {
+      enum S_TAG;
+      enum C_TAG;
+    }
+  }
+  typedef NRP_IpVersion {
+    type enumeration {
+      enum IPV4;
+      enum IPV6;
+      enum IPV4_AND_IPV6;
+    }
+  }
+  typedef NRP_FrameColor {
+    type enumeration {
+      enum GREEN;
+      enum YELLOW;
+    }
+  }
+  typedef NRP_PcpOrDiscard {
+    type enumeration {
+      enum DISCARD;
+      enum 0;
+      enum 1;
+      enum 2;
+      enum 3;
+      enum 4;
+      enum 5;
+      enum 6;
+      enum 7;
+    }
+  }
+  typedef NRP_DeiOrDiscard {
+    type enumeration {
+      enum DISCARD;
+      enum 0;
+      enum 1;
+    }
+  }
+  grouping G_NRP_AggLinkDepth {
+    container nrp_vlanId {
+      config true;
+      uses G_NRP_VlanId;
+    }
+    leaf nrp_linkNumber {
+      type NRP_NaturalNumber;
+    }
+  }
+  typedef NRP_ConnectionType {
+    type enumeration {
+      enum POINT_TO_POINT;
+      enum MULTIPOINT;
+      enum ROOTED_MULTIPOINT;
+    }
+  }
+  typedef NRP_ServiceFrameDelivery {
+    type enumeration {
+      enum CONDITIONALLY;
+      enum UNCONDITIONALLY;
+    }
+  }
+  typedef NRP_EndPointRole {
+    type enumeration {
+      enum ROOT;
+      enum LEAF;
+      enum TRUNK;
+    }
+  }
+  typedef NRP_MepDirection {
+    type enumeration {
+      enum DOWN;
+      enum UP;
+    }
+  }
+  grouping G_NRP_MepLevelAndDirection {
+    leaf nrp_level {
+      type NRP_NaturalNumber;
+    }
+    leaf nrp_direction {
+      type NRP_MepDirection;
+    }
+    leaf nrp_megId {
+      type string;
+    }
+  }
+}
diff --git a/presto-api/src/main/yang/onf-core-network-module.yang b/presto-api/src/main/yang/onf-core-network-module.yang
new file mode 100644 (file)
index 0000000..cb024b7
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
+ */
+module onf-core-network-module {
+  namespace "urn:onf:core-network-module";
+  prefix onf-cn;
+
+  import onf-core-network-types {
+    prefix onf-cnt;
+  }
+
+  import onf-core-specs {
+    prefix onf-cs;
+  }
+
+  import network-topology {
+    prefix nt;
+  }
+
+  revision 2016-06-30 {
+  }
+
+  container forwarding-constructs {
+    list forwarding-construct {
+      key 'uuid';
+
+      leaf uuid {
+        type string;
+      }
+
+      uses G_ForwardingConstruct;
+    }
+  }
+
+  grouping G_ForwardingConstruct {
+    leaf layerProtocolName {
+      type onf-cnt:LayerProtocolName;
+      description "The layerProtocol at which the FC enables potential for forwarding.";
+    }
+    leaf-list lowerLevelFc {
+      description "An FC object supports a recursive aggregation relationship such that the internal construction
+of an FC can be exposed as multiple lower level FC objects (partitioning).  Aggregation is used
+as for the FD to allow changes in hierarchy.
+";
+      ordered-by system;
+      type leafref {
+        path '/forwarding-constructs/forwarding-construct/uuid';
+      }
+    }
+    list fcRoute {
+      description "An FC object can have zero or more routes, each of which is defined as a list of lower level FC
+objects describing the flow across the network.";
+      key 'uuid';
+      config true;
+      ordered-by system;
+      uses G_FcRoute;
+    }
+    list fcPort {
+      description "The association of the FC to LTPs is made via FcPorts (essentially the ports of the FC).";
+      key 'topology node tp';
+      config true;
+      uses G_FcPort;
+      min-elements 2;
+    }
+    container fcSpec {
+      uses onf-cs:G_FcSpec;
+      description "References the specification that describes the capability and internal structure of of the FC
+(e.g. The arrangement of switches for a particular instance is described by a referenced
+FcSpec).  The specification allows interpretation of FcPort role and switch configurations etc.";
+    }
+    leaf forwardingDirection {
+      type onf-cnt:ForwardingDirection;
+      description "The directionality of the ForwardingConstruct.  Is applicable to simple ForwardingConstructs
+where all FcPorts are BIDIRECTIONAL (the ForwardingConstruct will be BIDIRECTIONAL) or
+UNIDIRECTIONAL (the ForwardingConstruct will be UNIDIRECTIONAL).  Is not present in more complex
+cases.";
+    }
+  }
+
+  grouping G_FcRoute {
+    leaf uuid {
+      type string;
+    }
+    leaf-list fc {
+      description "The list of FCs describing the route of an FC.";
+      ordered-by system;
+      type leafref {
+        path '/onf-cn:forwarding-constructs/onf-cn:forwarding-construct/onf-cn:uuid';
+      }
+      min-elements 2;
+    }
+  }
+
+  grouping G_FcPort {
+    uses onf-cs:ltp-ref;
+    leaf role {
+      type onf-cnt:PortRole;
+      description "Each FcPort of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke,
+leaf, root) in the context of the FC with respect to the FC function.";
+    }
+    leaf fcPortDirection {
+      type onf-cnt:PortDirection;
+      description "The orientation of defined flow at the FcPort.";
+    }
+  }
+
+  augment "/nt:network-topology/nt:topology/nt:node/nt:termination-point" {
+    container ltp-attrs {
+      uses G_LogicalTerminationPoint;
+    }
+  }
+
+  grouping G_LogicalTerminationPoint {
+    list lpList {
+      description "Ordered list of LayerProtocols that this LTP is comprised of where the first entry in the list is the lowest server layer (e.g. physical)";
+      key 'uuid';
+      config true;
+      leaf uuid {
+        type string;
+      }
+      uses G_LayerProtocol;
+    }
+    container ltpSpec {
+      uses onf-cs:G_LtpSpec;
+      description "The specification of the LTP defines internal structure of the LTP.  The specification allows
+interpretation of organisation of LPs making up the LTP and also identifies which inter-LTP
+associations are valid.";
+    }
+    leaf ltpDirection {
+      type onf-cnt:TerminationDirection;
+      description "The overall directionality of the LTP.
+- A BIDIRECTIONAL LTP must have at least some LPs that are BIDIRECTIONAL but may also have some SINK and/or SOURCE LPs.
+- A SINK LTP can only contain SINK LPs
+- A SOURCE LTP can only contain SOURCE LPs";
+    }
+  }
+
+  grouping G_LayerProtocol {
+    leaf layerProtocolName {
+      type onf-cnt:LayerProtocolName;
+      description "Indicate the specific layer-protocol described by the LayerProtocol entity.";
+    }
+    container lpSpec {
+      uses onf-cs:G_LayerProtocolSpec;
+      description "The LpSpec identifies the internal structure of the LP explaining internal flexibilities, degree
+of termination and degree of adaptation on both client and server side.";
+    }
+    leaf configuredClientCapacity {
+      type string;
+      description "Provides a summarized view of the client capacity that is configurable for use.  Note the cleint
+LTP association should provide all necessary detail hence this attribute is questionable.";
+    }
+    leaf lpDirection {
+      type onf-cnt:TerminationDirection;
+      description "The overall directionality of the LP.
+- A BIDIRECTIONAL LP will have some SINK and/or SOURCE flowss.
+- A SINK LP can only contain elements with SINK flows or CONTRA_DIRECTION_SOURCE flows
+- A SOURCE LP can only contain SOURCE flows or CONTRA_DIRECTION_SINK flows";
+    }
+    leaf terminationState {
+      type string;
+      description "Indicates whether the layer is terminated and if so how.";
+    }
+  }
+
+}
diff --git a/presto-api/src/main/yang/onf-core-network-types.yang b/presto-api/src/main/yang/onf-core-network-types.yang
new file mode 100644 (file)
index 0000000..ae3ba88
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
+ */
+module onf-core-network-types {
+  namespace "urn:onf:core-network-types";
+  prefix onf-cnt;
+
+  revision 2016-06-30 {
+  }
+
+  typedef OperType {
+    type enumeration {
+      enum REVERTIVE;
+      enum NON-REVERTIVE;
+    }
+  }
+
+  typedef LayerProtocolName {
+    type string;
+  }
+
+  typedef ForwardingDirection {
+    type enumeration {
+      enum BIDIRECTIONAL;
+      enum UNIDIRECTIONAL;
+      enum UNDEFINED_OR_UNKNOWN;
+    }
+  }
+
+  typedef PortRole {
+    status current;
+    type string;
+  }
+
+  typedef PortDirection {
+    type enumeration {
+      enum BIDIRECTIONAL;
+      enum INPUT;
+      enum OUTPUT;
+      enum UNIDENTIFIED_OR_UNKNOWN;
+    }
+  }
+
+  typedef ProtectionType {
+    status deprecated;
+    type string;
+  }
+
+  typedef TerminationDirection {
+    type enumeration {
+      enum BIDIRECTIONAL;
+      enum SINK;
+      enum SOURCE;
+      enum UNDEFINED_OR_UNKNOWN;
+    }
+  }
+
+}
diff --git a/presto-api/src/main/yang/onf-core-specs.yang b/presto-api/src/main/yang/onf-core-specs.yang
new file mode 100644 (file)
index 0000000..f5c45cf
--- /dev/null
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
+ */
+module onf-core-specs {
+  namespace "urn:onf:core-specs";
+  prefix onf-cs;
+
+  import network-topology {
+    prefix nt;
+  }
+
+  revision 2016-06-30 {
+  }
+
+  grouping ltp-ref {
+    leaf topology {
+      type nt:topology-ref;
+    }
+    leaf node {
+      type nt:node-ref;
+    }
+    leaf tp {
+      type nt:tp-ref;
+    }
+  }
+
+  grouping G_FcSpec {
+    status current;
+    leaf uuid {
+      type string;
+    }
+    list fcPortSpec {
+      key 'uuid';
+      config true;
+      ordered-by system;
+      uses G_FcPortSetSpec;
+    }
+  }
+
+  grouping G_FcPortSetSpec {
+    status current;
+    leaf uuid {
+      type string;
+    }
+    list ingressFcPortSet {
+      ordered-by system;
+      key 'topology node tp';
+      config true;
+      uses ltp-ref;
+    }
+    list egressFcPortSet {
+      ordered-by system;
+      key 'topology node tp';
+      config true;
+      uses ltp-ref;
+    }
+    leaf role {
+      type string;
+      default true;
+    }
+  }
+
+  grouping G_LtpSpec {
+  }
+
+  grouping G_LayerProtocolSpec {
+    container adapterSpec {
+      config true;
+      uses G_ConnectionPointAndAdapterSpec;
+    }
+    container terminationSpec {
+      config true;
+      uses G_TerminationSpec;
+    }
+    list adapterPropertySpecList {
+      key 'uuid';
+      config true;
+      leaf uuid {
+        type string;
+      }
+      ordered-by system;
+      uses G_AdapterPropertySpec;
+    }
+    container providerViewSpec {
+      config true;
+      uses G_ProviderViewSpec;
+    }
+    list serverSpecList {
+      key 'uuid';
+      config true;
+      leaf uuid {
+        type string;
+      }
+      ordered-by system;
+      uses G_ServerSpec;
+    }
+  }
+
+  grouping G_TerminationSpec {
+  }
+
+  grouping G_ConnectionPointAndAdapterSpec {
+  }
+
+  grouping G_AdapterPropertySpec {
+  }
+
+  grouping G_ProviderViewSpec {
+  }
+
+  grouping G_ServerSpec {
+  }
+}