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