RIFT OSM R1 Initial Submission
[osm/SO.git] / rwcm / plugins / yang / rw-conman.yang
diff --git a/rwcm/plugins/yang/rw-conman.yang b/rwcm/plugins/yang/rw-conman.yang
new file mode 100644 (file)
index 0000000..bb1555d
--- /dev/null
@@ -0,0 +1,260 @@
+
+/*
+ * 
+ *   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.
+ *
+ */
+
+
+
+/**
+ * @file rw-conman.yang
+ * @author Manish Patel
+ * @date 2015/10/27
+ * @brief Service Orchestrator configuration yang
+ */
+
+module rw-conman
+{
+  namespace "http://riftio.com/ns/riftware-1.0/rw-conman";
+  prefix "rw-conman";
+
+  import rw-pb-ext {
+    prefix "rwpb";
+  }
+
+  import rw-cli-ext {
+    prefix "rwcli";
+  }
+
+  import nsr {
+    prefix "nsr";
+  }
+
+  import vnfr {
+    prefix "vnfr";
+  }
+
+  import rw-vlr {
+    prefix "rwvlr";
+  }
+
+  import rw-yang-types {
+    prefix "rwt";
+  }
+
+  import ietf-inet-types {
+    prefix "inet";
+  }
+
+  import ietf-yang-types {
+    prefix "yang";
+  }
+
+  import mano-base {
+    prefix "manobase";
+  }
+
+  import mano-types {
+    prefix "manotypes";
+  }
+
+  import rw-config-agent {
+    prefix "rw-config-agent";
+  }
+
+  revision 2015-10-27 {
+    description
+      "Initial revision.";
+  }
+
+  // typedef ro-endpoint-method {
+  //   type enumeration {
+  //     enum netconf;
+  //     enum restconf;
+  //   }
+  // }
+  
+  grouping ro-endpoint {
+    // leaf ro-endpoint-method {
+    //   description "interface between CM & RO, defaults to netconf";
+    //   type ro-endpoint-method;
+    //   default netconf;
+    // }
+    leaf ro-ip-address {
+      type inet:ip-address;
+      description "IP Address";
+      default "127.0.0.1";
+    }
+    leaf ro-port {
+      type inet:port-number;
+      description "Port Number";
+      default 2022;
+    }
+    leaf ro-username {
+      description "RO endpoint username";
+      type string;
+      default "admin";
+    }
+    leaf ro-password {
+      description "RO endpoint password";
+      type string;
+      default "admin";
+    }
+  }
+
+  grouping vnf-cfg-items {
+    leaf configuration-file {
+      description "Location of the confguration file on CM system";
+      type string;
+    }
+    leaf translator-script {
+      description "Script that translates the templates in the configuration-file using VNFR information
+                   Currently, we only use IP address translations.
+                   configuration will use connection point name instead of IP addresses.";
+      type string;
+    }
+  }
+  
+  container cm-config {
+    description "Service Orchestrator specific configuration";
+    rwpb:msg-new "SoConfig";
+    rwcli:new-mode "cm-config";
+
+    container ro-endpoint {
+      description "Resource Orchestrator endpoint ip address";
+      rwpb:msg-new "RoEndpoint";
+      uses ro-endpoint;
+    }
+    
+    //uses vnf-cfg-items;
+
+    list nsr {
+      key "id";
+      leaf id {
+        description "Indicates NSR bringup complete, now initiate configuration of the NSR";
+        type yang:uuid;
+      }
+    }
+  }// cm-config
+  
+  // =================== SHOW ==================
+  typedef record-state {
+    type enumeration {
+      enum init;
+      enum received;
+      enum cfg-delay;
+      enum cfg-process;
+      enum cfg-process-failed;
+      enum cfg-sched;
+      enum connecting;
+      enum failed-connection;
+      enum netconf-connected;
+      enum netconf-ssh-connected;
+      enum restconf-connected;
+      enum cfg-send;
+      enum cfg-failed;
+      enum ready-no-cfg;
+      enum ready;
+    }
+  }
+
+  // TBD: Do we need this typedef, currently not used anywhere
+  typedef cfg-type {
+    type enumeration {
+      enum none;
+      enum scriptconf;
+      enum netconf;
+      enum restconf;
+      enum jujuconf;
+    }
+  }
+
+
+  // This is also used by RO (Resource Orchestrator) to indicate NSR is ready
+  // It will only fill in IDs
+  container cm-state {
+    rwpb:msg-new "CmOpdata";
+    config false;
+    description "CM NS & VNF states";
+
+    leaf states {
+      description "CM various states";
+      type string;
+    }
+    
+    list cm-nsr {
+      description "List of NS Records";
+      key "id";
+      leaf id {
+        type yang:uuid;
+      }
+      leaf name {
+        description "NSR name.";
+        type string;
+      }
+      leaf state {
+        description "State of NSR";
+        type record-state;
+      }
+      leaf state-details {
+        description "Details of the state of NSR, in case of errors";
+        type string;
+      }
+      
+      list cm-vnfr {
+        description "List of VNF Records within NS Record";
+        key "id";
+        leaf id {
+          type yang:uuid;
+        }
+        leaf name {
+          description "VNFR name.";
+          type string;
+        }
+        leaf state {
+          description "Last known state of this VNFR";
+          type record-state;
+        }
+        container mgmt-interface {
+          leaf ip-address {
+            type inet:ip-address;
+          }
+          leaf port {
+            type inet:port-number;
+          }
+        }
+        leaf cfg-type {
+          type string;
+        }
+        leaf cfg-location {
+          type inet:uri;
+        }
+        list connection-point {
+          key "name";
+          leaf name {
+            description "Connection Point name";
+            type string;
+          }
+          leaf ip-address {
+            description "IP address assigned to this connection point";
+            type inet:ip-address;
+          }
+        }
+      } // list VNFR
+    } // list NSR
+  } // cm-state
+  
+} // rw-conman