forked from gophercloud/gophercloud
-
Notifications
You must be signed in to change notification settings - Fork 0
/
doc.go
135 lines (103 loc) · 2.86 KB
/
doc.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*
Package roles provides information and interaction with the roles API
resource for the OpenStack Identity service.
Example to List Roles
listOpts := roles.ListOpts{
DomainID: "default",
}
allPages, err := roles.List(identityClient, listOpts).AllPages()
if err != nil {
panic(err)
}
allRoles, err := roles.ExtractRoles(allPages)
if err != nil {
panic(err)
}
for _, role := range allRoles {
fmt.Printf("%+v\n", role)
}
Example to Create a Role
createOpts := roles.CreateOpts{
Name: "read-only-admin",
DomainID: "default",
Extra: map[string]interface{}{
"description": "this role grants read-only privilege cross tenant",
}
}
role, err := roles.Create(identityClient, createOpts).Extract()
if err != nil {
panic(err)
}
Example to Update a Role
roleID := "0fe36e73809d46aeae6705c39077b1b3"
updateOpts := roles.UpdateOpts{
Name: "read only admin",
}
role, err := roles.Update(identityClient, roleID, updateOpts).Extract()
if err != nil {
panic(err)
}
Example to Delete a Role
roleID := "0fe36e73809d46aeae6705c39077b1b3"
err := roles.Delete(identityClient, roleID).ExtractErr()
if err != nil {
panic(err)
}
Example to List Role Assignments
listOpts := roles.ListAssignmentsOpts{
UserID: "97061de2ed0647b28a393c36ab584f39",
ScopeProjectID: "9df1a02f5eb2416a9781e8b0c022d3ae",
}
allPages, err := roles.ListAssignments(identityClient, listOpts).AllPages()
if err != nil {
panic(err)
}
allRoles, err := roles.ExtractRoleAssignments(allPages)
if err != nil {
panic(err)
}
for _, role := range allRoles {
fmt.Printf("%+v\n", role)
}
Example to List Role Assignments for a User on a Project
projectID := "a99e9b4e620e4db09a2dfb6e42a01e66"
userID := "9df1a02f5eb2416a9781e8b0c022d3ae"
listAssignmentsOnResourceOpts := roles.ListAssignmentsOnResourceOpts{
UserID: userID,
ProjectID: projectID,
}
allPages, err := roles.ListAssignmentsOnResource(identityClient, listAssignmentsOnResourceOpts).AllPages()
if err != nil {
panic(err)
}
allRoles, err := roles.ExtractRoles(allPages)
if err != nil {
panic(err)
}
for _, role := range allRoles {
fmt.Printf("%+v\n", role)
}
Example to Assign a Role to a User in a Project
projectID := "a99e9b4e620e4db09a2dfb6e42a01e66"
userID := "9df1a02f5eb2416a9781e8b0c022d3ae"
roleID := "9fe2ff9ee4384b1894a90878d3e92bab"
err := roles.Assign(identityClient, roleID, roles.AssignOpts{
UserID: userID,
ProjectID: projectID,
}).ExtractErr()
if err != nil {
panic(err)
}
Example to Unassign a Role From a User in a Project
projectID := "a99e9b4e620e4db09a2dfb6e42a01e66"
userID := "9df1a02f5eb2416a9781e8b0c022d3ae"
roleID := "9fe2ff9ee4384b1894a90878d3e92bab"
err := roles.Unassign(identityClient, roleID, roles.UnassignOpts{
UserID: userID,
ProjectID: projectID,
}).ExtractErr()
if err != nil {
panic(err)
}
*/
package roles