34d438c24a100705e8d7cbf390b99db070398dc8
[osm/SO.git] / rwprojectmano / plugins / yang / rw-project-mano.yang
1 /*
2  *
3  *   Copyright 2017 RIFT.IO Inc
4  *
5  *   Licensed under the Apache License, Version 2.0 (the "License");
6  *   you may not use this file except in compliance with the License.
7  *   You may obtain a copy of the License at
8  *
9  *       http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *   Unless required by applicable law or agreed to in writing, software
12  *   distributed under the License is distributed on an "AS IS" BASIS,
13  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *   See the License for the specific language governing permissions and
15  *   limitations under the License.
16  *
17  */
18
19 module rw-project-mano
20 {
21   namespace "http://riftio.com/ns/riftware-1.0/rw-project-mano";
22   prefix "rw-project-mano";
23
24   import rw-rbac-base {
25     prefix "rw-rbac-base";
26   }
27
28   import rw-pb-ext {
29     prefix "rw-pb-ext";
30   }
31
32   import rw-project {
33     prefix "rw-project";
34   }
35
36   import rw-rbac-internal {
37     prefix "rw-rbac-internal";
38   }
39
40   revision 2017-03-08 {
41     description
42       "Initial revision. This YANG file defines the
43        MANO extentions for project based tenancy";
44     reference
45       "Derived from earlier versions of base YANG files";
46   }
47
48   identity catalog-oper {
49     base rw-project:project-role;
50     description
51       "The catalog-oper Role has read permission to the VNFD and NSD
52       catalogs within a Project.  The catalog-oper Role may also have
53       execute permission to specific non-mutating RPCs.";
54   }
55
56   identity catalog-admin {
57     base rw-project:project-role;
58     description
59       "The catalog-admin Role has full CRUDX permissions to the VNFD
60       and NSD catalogs within a Project.  The catalog-admin Role does
61       not provide general CRUDX permissions to the Project as a whole,
62       nor to the RIFT.ware platform in general.";
63   }
64
65   augment /rw-project:project/rw-project:project-config/rw-project:user {
66     description
67       "Configuration for MANO application-specific Roles.";
68
69     list mano-role {
70       description
71         "The list of MANO application-specific Roles the User has been
72         assigned, within the enclosing Project.";
73
74       key "role";
75       uses rw-rbac-base:simple-role;
76     }
77   }
78
79   augment /rw-project:project/rw-project:project-state/rw-project:user {
80     description
81       "The state for MANO application-specific Roles.";
82
83     list mano-role {
84       description
85       "The state of the MANO application-specific Role the User has
86       been assigned.";
87
88       key "role";
89       uses rw-rbac-base:simple-role;
90
91       leaf state {
92         description
93           "The assignment of a User to a Role may be an asynchronous
94           operation.  This value indicates whether the Role
95           assignment is active.  If the value is 'active', then the
96           assignment is complete and active.  Any other value
97           indicates that Role assignment is in a transitional or
98           failed state, as described in the value.";
99         type string;
100       }
101     }
102   }
103
104   augment /rw-project:project/rw-project:project-state {
105     description
106       "State for MANO application-specific Roles.";
107
108     list mano-role {
109       description
110         "The set of Roles that may be configured into
111         /rw-project:project/rw-project:project-config/rw-project:user/
112         rw-project-mano:mano-role/rw-project-mano:role.";
113
114       key "role";
115       uses rw-rbac-base:simple-role;
116
117       leaf description {
118         description
119           "A description of the Role.";
120         type string;
121       }
122     }
123   }
124 }