module openstack { prefix os; import nfv-infrastructure { prefix nfvi; } import access-control-models { prefix acm; } import ietf-yang-types { prefix yang; } import ietf-inet-types { prefix inet; } import complex-types { prefix ct; } description "OpenStack controller module"; revision 2016-01-19 { description "Basic coverage of limited intents needed for Promise"; } identity openstack { base nfvi:manager; } identity release { base openstack; } identity distro { base openstack; } feature os-system-admin { description "OpenStack system administration capability"; } grouping os-credentials { uses acm:access-credentials { refine strategy { default keystone; } refine endpoint { default "http://localhost:5000/v2.0"; } } container tenant { leaf id { type string; } leaf name { type string; } } } // OpenStack infrastructure platform (PLACEHOLDER) container platform { uses nfvi:resource-stack; leaf release { type identityref { base release; } } leaf distro { type identityref { base distro; } } //ct:instance-list services { ct:instance-type OpenStackService; } //ct:instance-list endpoints { ct:instance-type ServiceEndpoint; } } // OpenStack system administrator configuration tree container admin { if-feature os-system-admin; container auth { uses os-credentials; leaf token { type yang:uuid; } } } rpc authenticate { if-feature os-system-admin; input { uses os-credentials; } output { leaf token { type yang:uuid; } } } rpc create-tenant { if-feature os-system-admin; } }