Updated namespace to use OSM URN; renamed rw-project to osm-project
[osm/IM.git] / models / yang / nsd-base.yang
index 6c852cb..894b7a5 100644 (file)
 
 module nsd-base
 {
-  namespace "http://riftio.com/ns/riftware-1.0/nsd-base";
+  namespace "urn:etsi:osm:yang:nsd-base";
   prefix "nsd-base";
 
-  import rw-pb-ext {
-    prefix "rwpb";
-  }
-
   import ietf-inet-types {
     prefix "inet";
   }
@@ -35,6 +31,10 @@ module nsd-base
     prefix "manotypes";
   }
 
+  import vnfd {
+    prefix "vnfd";
+  }
+
   revision 2017-02-28 {
     description
       "Initial revision. This YANG file defines
@@ -61,17 +61,6 @@ module nsd-base
     }
   }
 
-  typedef scaling-policy-type {
-    type enumeration {
-      enum manual {
-        value 1;
-      }
-      enum automatic {
-        value 2;
-      }
-    }
-  }
-
   typedef scaling-criteria-operation {
     type enumeration {
       enum AND {
@@ -111,7 +100,7 @@ module nsd-base
       description "NSD parameter pool name to use for this parameter";
       type string;
     }
-  }
+  } // primitive-parameter
 
   grouping nsd-descriptor-common {
     leaf id {
@@ -168,17 +157,69 @@ module nsd-base
           different NS.";
 
       key "name";
-      leaf name {
-        description
-            "Name of the NS connection point.";
-        type string;
-      }
+      uses nsd-connection-point-common;
 
       leaf type {
         description
             "Type of the connection point.";
         type manotypes:connection-point-type;
       }
+
+      choice connection {
+        description "Logical connection of the CP to a VLD or to a VNF CP";
+
+        case vld-ref {
+
+          leaf vld-id-ref {
+            description
+              "ID reference to a VLD in the NS";
+            type leafref {
+              path "../../vld/id";
+            }
+          }
+
+        }
+
+        case vnfd-connection-point-ref {
+
+          leaf member-vnf-index-ref {
+            description "Reference to member-vnf within constituent-vnfd";
+            type leafref {
+              path "../../constituent-vnfd/member-vnf-index";
+            }
+          }
+
+          leaf vnfd-id-ref {
+            description
+              "A reference to a vnfd. This is a leafref to path:
+                  ../../nsd:constituent-vnfd
+                  + [nsd:id = current()/../nsd:id-ref]
+                  + /nsd:vnfd-id-ref";
+            type leafref {
+              path "../../constituent-vnfd" +
+                   "[member-vnf-index = current()/../member-vnf-index-ref]" +
+                   "/vnfd-id-ref";
+            }
+          }
+
+          leaf vnfd-connection-point-ref {
+            description
+              "A reference to a connection point name
+                  in a vnfd. This is a leafref to path:
+                      /vnfd:vnfd-catalog/vnfd:vnfd
+                      + [vnfd:id = current()/../nsd:vnfd-id-ref]
+                      + /vnfd:connection-point/vnfd:name";
+            type leafref {
+              path "/vnfd:vnfd-catalog/vnfd:vnfd" +
+                   "[vnfd:id = current()/../vnfd-id-ref]" +
+                   "/vnfd:connection-point/vnfd:name";
+            }
+          }
+
+        }
+
+      }
+
     }
 
     list scaling-group-descriptor {
@@ -208,7 +249,7 @@ module nsd-base
         leaf scaling-type {
           description
               "Type of scaling";
-          type scaling-policy-type;
+          type manotypes:scaling-policy-type;
         }
 
         leaf enabled {
@@ -223,7 +264,7 @@ module nsd-base
               "Operation to be applied to check between scaling criterias to
                check if the scale in threshold condition has been met.
                Defaults to AND";
-          type scaling-criteria-operation;
+          type manotypes:scaling-criteria-operation;
           default AND;
         }
 
@@ -232,7 +273,7 @@ module nsd-base
               "Operation to be applied to check between scaling criterias to
                check if the scale out threshold condition has been met.
                Defauls to OR";
-          type scaling-criteria-operation;
+          type manotypes:scaling-criteria-operation;
           default OR;
         }
 
@@ -267,12 +308,28 @@ module nsd-base
             type uint64;
           }
 
+          leaf scale-in-relational-operation {
+            description
+              "The relational operator used to compare the monitoring param
+              against the scale-in-threshold.";
+            type manotypes:relational-operation-type;
+            default LE;
+          }
+
           leaf scale-out-threshold {
             description
                 "Value above which scale-out requests are generated";
             type uint64;
           }
 
+          leaf scale-out-relational-operation {
+            description
+              "The relational operator used to compare the monitoring param
+              against the scale-out-threshold.";
+            type manotypes:relational-operation-type;
+            default GE;
+          }
+
           leaf ns-monitoring-param-ref {
             description
                "Reference to the NS level monitoring parameter
@@ -330,7 +387,7 @@ module nsd-base
 
         leaf trigger {
           description "scaling trigger";
-          type scaling-trigger;
+          type manotypes:scaling-trigger;
         }
 
         leaf ns-service-primitive-name-ref {
@@ -349,58 +406,16 @@ module nsd-base
 
       key "id";
 
-      leaf id {
-        description
-            "Identifier for the VNFFGD.";
-        type string;
-      }
-
-      leaf name {
-        description
-            "VNFFGD name.";
-        type string;
-      }
-
-      leaf short-name {
-        description
-            "Short name to appear as label in the UI";
-        type string;
-      }
-
-      leaf vendor {
-        description "Provider of the VNFFGD.";
-        type string;
-      }
-
-      leaf description {
-        description "Description of the VNFFGD.";
-        type string;
-      }
-
-      leaf version {
-        description "Version of the VNFFGD";
-        type string;
-      }
+      uses fgd-common;
 
       list rsp {
         description
           "List of Rendered Service Paths (RSP).";
-
         key "id";
 
-        leaf id {
-          description
-            "Identifier for the RSP.";
-          type string;
-        }
+        uses rsp-common;
 
-        leaf name {
-          description
-            "RSP name.";
-          type string;
-        }
-
-        list vnfd-connection-point-ref {
+        list vnfd-connection-point-ref { // not common
           description
             "A list of references to connection points.";
           key "member-vnf-index-ref";
@@ -426,14 +441,37 @@ module nsd-base
                       + [nsd:id = current()/../nsd:id-ref]
                       + /nsd:vnfd-id-ref";
 
-             type leafref {
+            type leafref {
                 path "../../../../constituent-vnfd" +
-                     "[member-vnf-index = current()/../member-vnf-index-ref]" +
-                     "/vnfd-id-ref";
-             }
-           }
+                    "[member-vnf-index = current()/../member-vnf-index-ref]" +
+                    "/vnfd-id-ref";
+            }
+          }
 
-          leaf vnfd-connection-point-ref {
+          leaf vnfd-ingress-connection-point-ref {
+            description
+              "A reference to a connection point name
+                  in a vnfd. This is a leafref to path:
+                      /vnfd:vnfd-catalog/vnfd:vnfd
+                      + [vnfd:id = current()/../nsd:vnfd-id-ref]
+                      + /vnfd:connection-point/vnfd:name
+                  NOTE: An issue with confd is preventing the
+                  use of xpath. Seems to be an issue with leafref
+                  to leafref, whose target is in a different module.
+                  Once that is resolved this will switched to use
+                  leafref";
+            // TODO: Keeping as string as this needs to be
+            // diffenent lvel based of if it is nsd-catalog or
+            // in nsr.
+            // type leafref {
+            //   path "../../../../../../vnfd:vnfd-catalog/vnfd:vnfd" +
+            //        "[vnfd:id = current()/../vnfd-id-ref]/" +
+            //        "vnfd:connection-point/vnfd:name";
+            // }
+            type string;
+          }
+
+          leaf vnfd-egress-connection-point-ref {
             description
               "A reference to a connection point name
                   in a vnfd. This is a leafref to path:
@@ -464,25 +502,7 @@ module nsd-base
 
         key "id";
 
-        leaf id {
-          description
-              "Identifier for the classifier rule.";
-          type string;
-        }
-
-        leaf name {
-          description
-              "Name of the classifier.";
-          type string;
-        }
-
-        leaf rsp-id-ref {
-          description
-              "A reference to the RSP.";
-          type leafref {
-            path "../../rsp/id";
-          }
-        }
+        uses classifier-common;
 
         leaf member-vnf-index-ref {
           description "Reference to member-vnf within constituent-vnfds";
@@ -528,57 +548,17 @@ module nsd-base
           // }
           type string;
         }
-
-        list match-attributes {
-          description
-              "List of match attributes.";
-
-          key "id";
-
-          leaf id {
-            description
-                "Identifier for the classifier match attribute rule.";
-            type string;
-          }
-
-          leaf ip-proto {
-            description
-                "IP Protocol.";
-            type uint8;
-          }
-
-          leaf source-ip-address {
-            description
-                "Source IP address.";
-            type inet:ip-address;
-          }
-
-          leaf destination-ip-address {
-            description
-                "Destination IP address.";
-            type inet:ip-address;
-          }
-
-          leaf source-port {
-            description
-                "Source port number.";
-            type inet:port-number;
-          }
-
-          leaf destination-port {
-            description
-                "Destination port number.";
-            type inet:port-number;
-          }
-          //TODO: Add more match criteria
-        } //match-attributes
       } // classifier
+
     } // vnffgd
 
     uses manotypes:ip-profile-list;
 
+    container ns-configuration {
+      uses manotypes:ns-configuration;
+    }
+
     list initial-service-primitive {
-      rwpb:msg-new NsdInitialServicePrimitive;
       description
         "Initial set of service primitives for NSD.";
       key "seq";
@@ -587,7 +567,6 @@ module nsd-base
     }
 
     list terminate-service-primitive {
-      rwpb:msg-new NsdTerminateServicePrimitive;
       description
         "Set of service primitives during
          termination for NSD.";
@@ -676,12 +655,60 @@ module nsd-base
         }
       }
     }
-  }
+  } // nsd-descriptor-common
 
   grouping nsd-vld-common {
     /* Still having issues modelling this,
        see the comments under vnfd-connection-point-ref
+
+       IMPORTANT: Change description fields
     */
+    uses vld-common;
+
+    choice init-params {
+      description "Extra parameters for VLD instantiation";
+
+      case vim-network-ref {
+        leaf vim-network-name {
+          description
+            "Name of network in VIM account. This is used to indicate
+                   pre-provisioned network name in cloud account.";
+          type string;
+        }
+      }
+
+      case vim-network-profile {
+        leaf ip-profile-ref {
+          description "Named reference to IP-profile object";
+          type leafref {
+            path "../../ip-profiles/name";
+          }
+        }
+      }
+
+    }
+  } // nsd-vld-common
+
+  grouping nsd-connection-point-common {
+    description "NSD connection point base";
+    //IMPORTANT: Change description fields
+    leaf name {
+      description
+          "Name of the connection point.";
+      type string;
+    }
+
+    leaf floating-ip-required {
+      description
+          "Boolean parameter to indicate whether the CP must be exposed.
+           A public IP address will be allocated to this CP if exposed is true.
+           The default is false meaning a floating IP address is not required.
+           It must be explicitly asked for a floating IP address to be allocated.";
+      type boolean;
+    }
+  } // nsd-connection-point-common
+
+  grouping vld-common {
     description
       "List of Virtual Link Descriptors.";
 
@@ -742,35 +769,126 @@ module nsd-base
       type boolean;
       default false;
     }
+  } // vld-common
 
-    leaf ipv4-nat-pool-name{
+  grouping fgd-common {
+
+    leaf id {
+      description
+          "Identifier for the FGD.";
       type string;
-      description "IPV4 nat pool name";
     }
 
-    choice init-params {
-      description "Extra parameters for VLD instantiation";
+    leaf name {
+      description
+          "FGD name.";
+      type string;
+    }
 
-      case vim-network-ref {
-        leaf vim-network-name {
-          description
-            "Name of network in VIM account. This is used to indicate
-                   pre-provisioned network name in cloud account.";
-          type string;
-        }
+    leaf short-name {
+      description
+          "Short name to appear as label in the UI";
+      type string;
+    }
+
+    leaf vendor {
+      description "Provider of the FGD.";
+      type string;
+    }
+
+    leaf description {
+      description "Description of the FGD.";
+      type string;
+    }
+
+    leaf version {
+      description "Version of the FGD";
+      type string;
+    }
+  } // fgd-common
+
+  grouping rsp-common {
+
+    leaf id {
+      description
+        "Identifier for the RSP.";
+      type string;
+    }
+
+    leaf name {
+      description
+        "RSP name.";
+      type string;
+    }
+
+  } // rsp-common
+
+  grouping classifier-common {
+
+    leaf id {
+      description
+          "Identifier for the classifier rule.";
+      type string;
+    }
+
+    leaf name {
+      description
+          "Name of the classifier.";
+      type string;
+    }
+
+    leaf rsp-id-ref {
+      description
+          "A reference to the RSP.";
+      type leafref {
+        path "../../rsp/id";
       }
+    }
 
-      case vim-network-profile {
-        leaf ip-profile-ref {
-          description "Named reference to IP-profile object";
-          type leafref {
-            path "../../ip-profiles/name";
-          }
-        }
+    list match-attributes {
+      description
+          "List of match attributes.";
+
+      key "id";
+
+      leaf id {
+        description
+            "Identifier for the classifier match attribute rule.";
+        type string;
       }
 
-    }
-  }
+      leaf ip-proto {
+        description
+            "IP Protocol.";
+        type uint8;
+      }
+
+      leaf source-ip-address {
+        description
+            "Source IP address.";
+        type inet:ip-address;
+      }
+
+      leaf destination-ip-address {
+        description
+            "Destination IP address.";
+        type inet:ip-address;
+      }
+
+      leaf source-port {
+        description
+            "Source port number.";
+        type inet:port-number;
+      }
+
+      leaf destination-port {
+        description
+            "Destination port number.";
+        type inet:port-number;
+      }
+      //TODO: Add more match criteria
+    } //match-attributes
+  } // classifier-common
 
   grouping monitoring-param-common {
     description
@@ -788,5 +906,5 @@ module nsd-base
     uses manotypes:monitoring-param-value;
     uses manotypes:monitoring-param-ui-data;
     uses manotypes:monitoring-param-aggregation;
-  }
+  } // monitoring-param-common
 }