initial submission of RIFT model changes for multi-tenancy, RBAC and projects
[osm/IM.git] / models / yang / rw-project.yang
diff --git a/models/yang/rw-project.yang b/models/yang/rw-project.yang
new file mode 100644 (file)
index 0000000..4c9d5cb
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ *   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 rw-project
+{
+  namespace "http://riftio.com/ns/riftware-1.0/rw-project";
+  prefix "rw-project";
+
+  description
+    "This yang module defines project-based tenancy for RIFT.ware.
+    Authorization for project access is defined in terms of RIFT.ware's
+    Role-Based Access Control (RBAC) model.";
+
+  revision 2015-09-10 {
+    description
+      "Initial revision.  This YANG file defines the model for
+      RIFT.ware project management for multi-tenancy";
+    reference
+      "RIFT.io MANO Tenancy Design Specification";
+  }
+
+  list project {
+    description
+      "Configuration and state for individual projects.  RIFT.ware
+      applications and projects are expected to augment this list in
+      order to add configuration for projects that is specific to the
+      product or application.  As such, this list contains minimal
+      data defined in this yang module.
+
+      When augmenting this element, other yang modules should prefer to
+      define containers with the same name as the augmenting module.
+      (Augmenting RIFT.ware modules should prefer to augment without
+      the rw prefix [for new features], or should prefer to augment the
+      augmented container of an existing augment, to ease future
+      adoption and/or standardization.)";
+
+    key "name";
+    leaf name {
+      description "Name of the project.";
+      type string {
+        length "1..255";
+      }
+    }
+
+    leaf description {
+      description "Information about project";
+      type string;
+    }
+  }
+}