Instantiation parameters model 45/6845/4
authorjdelacruz <jdelacruz@cttc.es>
Tue, 18 Sep 2018 17:08:29 +0000 (19:08 +0200)
committergarciadeblas <gerardo.garciadeblas@telefonica.com>
Wed, 7 Nov 2018 14:48:37 +0000 (15:48 +0100)
Change-Id: Ib4b45d71c0ea0311d90eb91b43c74f68b9b10ede
Signed-off-by: jdelacruz <jdelacruz@cttc.es>
models/yang/instantiation-parameters.yang [new file with mode: 0644]

diff --git a/models/yang/instantiation-parameters.yang b/models/yang/instantiation-parameters.yang
new file mode 100644 (file)
index 0000000..a954066
--- /dev/null
@@ -0,0 +1,217 @@
+//INFORMATION
+//organization "CTTC";
+//contact "Pol Alemany, Ricard Vilalta, Juan Luis de la Cruz";
+//description "Network Slice components definition";
+
+// MODULE STRUCTURE
+module instantiation-parameters {
+  //header information
+  yang-version 1;
+  namespace "urn:ietf:params:xml:ns:yang:nfvo:instantiation-parameters";
+  prefix "instantiation-parameters";
+  
+  import rw-project {
+    prefix "rw-project";
+  }
+  
+  import nsd {
+    prefix "nsd";
+  }
+
+  import vnfd {
+    prefix "vnfd";
+  }
+
+  import nsr {
+    prefix "nsr";
+  }
+
+  import ietf-inet-types {
+    prefix "inet";
+  }
+
+  import ietf-yang-types {
+    prefix "ietf-yang";
+  }
+
+  //revision history
+  revision 2018-09-14 {
+    description "Initial version";
+  }
+  //typedef definitions
+  grouping ns_instantiate {
+    leaf nsName {
+      mandatory true;
+      type string;
+    }
+    leaf nsDescription {
+      type string;
+    }
+    leaf nsdId {
+      mandatory true;
+      type leafref {
+        path "/nsd:nsd-catalog/nsd:nsd/nsd:id";
+      }
+    }
+    leaf vimAccountId {
+      mandatory true;
+      type string;
+    }
+    leaf ssh_keys {
+      type string;
+    }
+    leaf nsr_id {
+      config false;
+      type leafref {
+        path "/rw-project:project/nsr:ns-instance-opdata/nsr:nsr/nsr:ns-instance-config-ref";
+      }
+    }
+    list vnf {
+      key "member-vnf-index";
+      uses vnf;
+    }
+    list vld {
+      key "name";
+      uses vld;
+    }
+  }
+  grouping vnf {
+    leaf member-vnf-index{
+      mandatory true;
+      type string;
+    }
+    leaf vimAccountId {
+      type string;
+    }
+    list vdu {
+      key "id";
+      uses ns_instantiate_vdu;
+    }
+    list internal-vld {
+      key "name";
+      uses ns-instantiate-internal-vld;
+    }
+  }
+
+  grouping vld {
+    leaf name {
+      type string;
+    }
+    leaf vim-network-name {
+      type string;
+    }
+    container ip-profile {
+      uses ip-profile-update-schema;
+    }
+    list vnfd-connection-point-ref {
+      key "member-vnf-index-ref vnfd-connection-point-ref";
+      leaf member-vnf-index-ref {
+        type leafref {
+            path "../../../vnf/member-vnf-index";
+        }
+      }
+      leaf vnfd-connection-point-ref {
+        type leafref {
+          path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:connection-point/vnfd:name";
+        }
+      }
+      leaf ip-address{
+        type inet:ip-address;
+      }
+    }
+
+  }
+
+  grouping ns_instantiate_vdu {
+    leaf id {
+      mandatory true;
+      type string;
+    }
+    list volume {
+      key "name";
+      leaf name {
+        mandatory true;
+        type string;
+      }
+      leaf vim-volume-id {
+        mandatory true;
+        type string;
+      }
+    }
+    list interface {
+      key "name";
+      leaf name {
+        mandatory true;
+        type string;
+      }
+      leaf ip-address {
+        type inet:ip-address;
+      }
+      leaf mac-address {
+        type ietf-yang:mac-address;
+      }
+      leaf floating-ip-required {
+        type boolean;
+      }
+    }
+  }
+
+  grouping ns-instantiate-internal-vld {
+    leaf name {
+      mandatory true;
+      type string;
+    }
+    leaf vim-network-name {
+      type string; 
+    }
+    container ip-profile {
+      uses ip-profile-update-schema;
+    }
+    list internal-connection-point {
+      key "id-ref";
+      leaf id-ref {
+        mandatory true;
+        type string;
+      }
+      leaf ip-address{
+        type inet:ip-address;
+      }
+    }
+  }
+
+  grouping ip-profile-update-schema { //each leaf/list is either null or something
+    leaf ip-version {
+      type inet:ip-version;
+    }
+    leaf subnet-address {
+      type inet:ip-prefix;
+    }
+    leaf gateway-address {
+      type inet:ip-prefix;
+    }
+    list dns-server {
+      key "address";
+      leaf address {
+        mandatory true;
+        type inet:ip-address;
+      }
+    }
+    container dhcp-params {
+      leaf enabled {
+        type boolean;
+      }
+      leaf count {
+        type uint8; // >=1
+      }
+      leaf start-address {
+        type inet:ip-address;
+      }
+    }
+  }
+  
+  list instantiation-parameters {
+    key "nsName";
+    uses ns_instantiate;
+  }
+
+}
\ No newline at end of file