RIFT OSM R1 Initial Submission
[osm/SO.git] / models / plugins / yang / vld.yang
diff --git a/models/plugins/yang/vld.yang b/models/plugins/yang/vld.yang
new file mode 100644 (file)
index 0000000..2747887
--- /dev/null
@@ -0,0 +1,141 @@
+
+/*
+ * 
+ *   Copyright 2016 RIFT.IO Inc
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ *
+ */
+
+module vld
+{
+  namespace "urn:ietf:params:xml:ns:yang:nfvo:vld";
+  prefix "vld";
+
+  import rw-pb-ext {
+    prefix "rwpb";
+  }
+
+  import vnfd {
+    prefix "vnfd";
+  }
+
+  import ietf-inet-types {
+    prefix "inet";
+  }
+
+  import ietf-yang-types {
+    prefix "yang";
+  }
+
+  import mano-types {
+    prefix "manotypes";
+  }
+
+  revision 2015-09-10 {
+    description
+      "Initial revision. This YANG file defines
+       the Virtual Link Descriptor (VLD)";
+    reference
+      "Derived from earlier versions of base YANG files";
+  }
+
+  container vld-catalog {
+
+    list vld {
+      key "id";
+
+      leaf id {
+        description "Identifier for the VLD.";
+        type yang:uuid;
+      }
+
+      leaf name {
+        description "Virtual Link Descriptor (VLD) name.";
+        type string;
+      }
+
+      leaf short-name {
+        description "Short name for VLD for UI";
+        type string;
+      }
+
+      leaf vendor {
+        description "Provider of the VLD.";
+        type string;
+      }
+
+      leaf description {
+        description "Description of the VLD.";
+        type string;
+      }
+
+      leaf version {
+        description "Version of the VLD";
+        type string;
+      }
+
+      leaf type {
+        type manotypes:virtual-link-type;
+      }
+
+      leaf root-bandwidth {
+        description
+            "For ELAN this is the aggregate bandwidth.";
+        type uint64;
+      }
+
+      leaf leaf-bandwidth {
+        description
+            "For ELAN this is the bandwidth of branches.";
+        type uint64;
+      }
+
+      list vnfd-connection-point-ref {
+        description
+            "A list of references to connection points.";
+        key "vnfd-ref member-vnf-index-ref";
+
+        leaf vnfd-ref {
+          description "A reference to a vnfd";
+          type leafref {
+            path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id";
+          }
+        }
+
+        leaf member-vnf-index-ref {
+          description 
+              "A reference to the consituent-vnfd id in nsd. 
+              Should have been a leafref to:
+                '/nsd:nsd-catalog:/nsd:nsd/constituent-vnfd/member-vnf-index-ref'. 
+              Instead using direct leaf to avoid circular reference.";
+          type uint64; 
+        }
+
+        leaf vnfd-connection-point-ref {
+          description 
+              "A reference to a connection point name in a vnfd";
+          type leafref {
+            path "/vnfd:vnfd-catalog/vnfd:vnfd" 
+               + "[vnfd:id = current()/../vld:vnfd-ref]"
+               + "/vnfd:connection-point/vnfd:name";
+          }
+        }
+      }
+
+      // replicate for pnfd container here
+      uses manotypes:provider-network;
+    }
+  }
+}