RIFT OSM R1 Initial Submission
[osm/SO.git] / rwlaunchpad / plugins / yang / rw-launchpad.yang
diff --git a/rwlaunchpad/plugins/yang/rw-launchpad.yang b/rwlaunchpad/plugins/yang/rw-launchpad.yang
new file mode 100644 (file)
index 0000000..37a9c85
--- /dev/null
@@ -0,0 +1,207 @@
+
+/*
+ * 
+ *   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-launchpad.yang
+ * @author Joshua Downer
+ * @date 2015/09/14
+ * @brief Launchpad Yang
+ */
+
+module rw-launchpad
+{
+  namespace "http://riftio.com/ns/riftware-1.0/rw-launchpad";
+  prefix "rw-launchpad";
+
+  import ietf-yang-types {
+    prefix "yang";
+  }
+
+  import rw-pb-ext {
+    prefix "rwpb";
+  }
+
+  import ietf-inet-types {
+    prefix "inet";
+  }
+
+
+  import rw-cli-ext {
+    prefix "rwcli";
+  }
+
+  import rw-yang-types {
+    prefix "rwt";
+  }
+
+  import rwcal {
+    prefix "rwcal";
+  }
+
+  import rw-vnfd {
+    prefix "rw-vnfd";
+  }
+
+  import vld {
+    prefix "vld";
+  }
+
+  import rw-nsd {
+    prefix "rw-nsd";
+  }
+
+  import rw-cloud {
+    prefix "rw-cloud";
+  }
+
+  import rw-nsr {
+    prefix "rw-nsr";
+  }
+
+  import rw-conman {
+    prefix "rw-conman";
+  }
+
+  import rw-config-agent {
+    prefix "rw-config-agent";
+  }
+
+  import rw-monitor {
+    prefix "rw-monitor";
+  }
+
+  import rw-image-mgmt {
+    prefix "rw-image-mgmt";
+  }
+
+  revision 2015-09-14 {
+    description
+      "Initial revision.";
+  }
+
+  container datacenters {
+    description "OpenMano data centers";
+
+    rwpb:msg-new DataCenters;
+    config false;
+
+    list cloud-accounts {
+      description
+          "A list of OpenMano cloud accounts that have data centers associated
+          with them";
+
+      rwpb:msg-new CloudAccount;
+      key "name";
+
+      leaf name {
+        description "The name of the cloud account";
+        type leafref {
+          path "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name";
+        }
+      }
+
+      list datacenters {
+        rwpb:msg-new DataCenter;
+        leaf uuid {
+          description "The UUID of the data center";
+          type yang:uuid;
+        }
+
+        leaf name {
+          description "The name of the data center";
+          type string;
+        }
+      }
+    }
+  }
+
+  typedef resource-orchestrator-account-type {
+    description "RO account type";
+    type enumeration {
+      enum rift-ro;
+      enum openmano;
+    }
+  }
+
+  container resource-orchestrator {
+    rwpb:msg-new ResourceOrchestrator;
+
+    leaf name {
+       type string;
+    }
+
+    leaf account-type {
+      type resource-orchestrator-account-type;
+    }
+
+    choice resource-orchestrator {
+      description
+        "The resource orchestrator to use by the Launchpad";
+      default rift-ro;
+
+      case rift-ro {
+        description
+          "Use the RIFT.io resource orchestrator";
+
+        container rift-ro {
+          leaf rift-ro {
+            type empty;
+          }
+        }
+      }
+
+      case openmano {
+        description
+          "Use OpenMano as RO";
+
+        container openmano {
+          leaf host {
+            type string;
+            default "localhost";
+          }
+
+          leaf port {
+            type uint16;
+            default 9090;
+          }
+
+          leaf tenant-id {
+            type string {
+              length "36";
+            }
+            mandatory true;
+          }
+        }
+      }
+    }
+  }
+
+  container launchpad-config {
+    leaf public-ip {
+      description
+          "An IP address that can, at least, be reached by the host that the
+          launchpad is running on. This is not a mandatory but is required for
+          alarms to function correctly.";
+      type string;
+    }
+  }
+}