summaryrefslogtreecommitdiffstats
path: root/source/schema/openstack-identity.yang
diff options
context:
space:
mode:
Diffstat (limited to 'source/schema/openstack-identity.yang')
-rw-r--r--source/schema/openstack-identity.yang84
1 files changed, 84 insertions, 0 deletions
diff --git a/source/schema/openstack-identity.yang b/source/schema/openstack-identity.yang
new file mode 100644
index 0000000..4b92957
--- /dev/null
+++ b/source/schema/openstack-identity.yang
@@ -0,0 +1,84 @@
+module openstack-identity {
+ namespace "urn:opnfv:promise:openstack:identity";
+ prefix os-id;
+
+ import access-control-models { prefix acm; }
+ import nfv-infrastructure { prefix nfvi; }
+ import complex-types { prefix ct; }
+ import ietf-yang-types { prefix yang; }
+
+ description
+ "OpenStack Identity Data Models with complex types and typed instance
+ identifiers represent the various Access Control Models available
+ within OpenStack.";
+
+ revision 2015-09-03 {
+ description
+ "This YANG module is modeled using 'yangforge' which natively provides
+ complex types and typed instance identifiers. This module
+ provides various collections of resource management data models
+ for instance based management";
+ }
+
+ /*********************************************
+ * OpenStack Identity Models
+ *********************************************/
+
+ ct:complex-type Project {
+ ct:extends acm:Group;
+ description
+ "OpenStack Project represent a distinct resource consumption space across
+ collection of users and groups that can reserve and allocate
+ resources.";
+
+ leaf-list groups { type instance-identifer { ct:instance-type acm:Group; } }
+
+ container resource {
+ leaf-list images {
+ if-feature vm-images;
+ type instance-identifier { ct:instance-type nfvi:VirtualMachineImage; }
+ }
+
+ leaf-list flavors {
+ if-feature compute-flavors;
+ type instance-identifier { ct:instance-type nfvi:VirtualMachineFlavor; }
+ }
+ }
+ }
+
+ ct:complex-type User {
+ ct:extends acm:User;
+
+ description
+ "OpenStack User can also belong to multiple projects.";
+
+ leaf-list projects { type instance-identifier { ct:instance-type Project; } }
+ }
+
+ ct:complex-type Group {
+ ct:extends acm:Group;
+
+ description
+ "OpenStack Group can also belong to multiple projects.";
+
+ leaf-list projects { type instance-identifier { ct:instance-type Project; } }
+ }
+
+ ct:complex-type Domain {
+ ct:extends acm:Domain;
+
+ description
+ "OpenStack Domain represent a distinct administrative domain including projects.";
+
+ ct:instance-list projects { ct:instance-type Project; }
+ }
+
+ ct:complex-type Token {
+ leaf key { type yang:uuid; }
+ leaf identity { type instance-identifier { ct:instance-type Identity; } }
+ }
+
+
+ rpc create-project;
+ rpc remove-project;
+}