Documentation ¶
Overview ¶
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) }
Index ¶
- func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager
- func ListAssignments(client *gophercloud.ServiceClient, opts ListAssignmentsOptsBuilder) pagination.Pager
- func ListAssignmentsOnResource(client *gophercloud.ServiceClient, opts ListAssignmentsOnResourceOpts) pagination.Pager
- type AssignOpts
- type AssignedRole
- type AssignmentResult
- type CreateOpts
- type CreateOptsBuilder
- type CreateResult
- type DeleteResult
- type Domain
- type GetResult
- type Group
- type InvalidListFilter
- type ListAssignmentsOnResourceOpts
- type ListAssignmentsOpts
- type ListAssignmentsOptsBuilder
- type ListOpts
- type ListOptsBuilder
- type Project
- type Role
- type RoleAssignment
- type RoleAssignmentPage
- type RolePage
- type Scope
- type UnassignOpts
- type UnassignmentResult
- type UpdateOpts
- type UpdateOptsBuilder
- type UpdateResult
- type User
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func List ¶
func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager
List enumerates the roles to which the current token has access.
func ListAssignments ¶
func ListAssignments(client *gophercloud.ServiceClient, opts ListAssignmentsOptsBuilder) pagination.Pager
ListAssignments enumerates the roles assigned to a specified resource.
func ListAssignmentsOnResource ¶
func ListAssignmentsOnResource(client *gophercloud.ServiceClient, opts ListAssignmentsOnResourceOpts) pagination.Pager
ListAssignmentsOnResource is the operation responsible for listing role assignments for a user/group on a project/domain.
Types ¶
type AssignOpts ¶
type AssignOpts struct { // UserID is the ID of a user to assign a role // Note: exactly one of UserID or GroupID must be provided UserID string `xor:"GroupID"` // GroupID is the ID of a group to assign a role // Note: exactly one of UserID or GroupID must be provided GroupID string `xor:"UserID"` // ProjectID is the ID of a project to assign a role on // Note: exactly one of ProjectID or DomainID must be provided ProjectID string `xor:"DomainID"` // DomainID is the ID of a domain to assign a role on // Note: exactly one of ProjectID or DomainID must be provided DomainID string `xor:"ProjectID"` }
AssignOpts provides options to assign a role
type AssignedRole ¶
AssignedRole represents a Role in an assignment.
type AssignmentResult ¶
type AssignmentResult struct {
gophercloud.ErrResult
}
AssignmentResult represents the result of an assign operation. Call ExtractErr method to determine if the request succeeded or failed.
func Assign ¶
func Assign(client *gophercloud.ServiceClient, roleID string, opts AssignOpts) (r AssignmentResult)
Assign is the operation responsible for assigning a role to a user/group on a project/domain.
type CreateOpts ¶
type CreateOpts struct { // Name is the name of the new role. Name string `json:"name" required:"true"` // DomainID is the ID of the domain the role belongs to. DomainID string `json:"domain_id,omitempty"` // Extra is free-form extra key/value pairs to describe the role. Extra map[string]interface{} `json:"-"` }
CreateOpts provides options used to create a role.
func (CreateOpts) ToRoleCreateMap ¶
func (opts CreateOpts) ToRoleCreateMap() (map[string]interface{}, error)
ToRoleCreateMap formats a CreateOpts into a create request.
type CreateOptsBuilder ¶
CreateOptsBuilder allows extensions to add additional parameters to the Create request.
type CreateResult ¶
type CreateResult struct {
// contains filtered or unexported fields
}
CreateResult is the response from a Create operation. Call its Extract method to interpret it as a Role
func Create ¶
func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult)
Create creates a new Role.
type DeleteResult ¶
type DeleteResult struct {
gophercloud.ErrResult
}
DeleteResult is the response from a Delete operation. Call its ExtractErr to determine if the request succeeded or failed.
func Delete ¶
func Delete(client *gophercloud.ServiceClient, roleID string) (r DeleteResult)
Delete deletes a role.
type GetResult ¶
type GetResult struct {
// contains filtered or unexported fields
}
GetResult is the response from a Get operation. Call its Extract method to interpret it as a Role.
func Get ¶
func Get(client *gophercloud.ServiceClient, id string) (r GetResult)
Get retrieves details on a single role, by ID.
type Group ¶
type Group struct { Domain Domain `json:"domain,omitempty"` ID string `json:"id,omitempty"` Name string `json:"name,omitempty"` }
Group represents a group in a role assignment scope.
type InvalidListFilter ¶
type InvalidListFilter struct {
FilterName string
}
InvalidListFilter is returned by the ToUserListQuery method when validation of a filter does not pass
func (InvalidListFilter) Error ¶
func (e InvalidListFilter) Error() string
type ListAssignmentsOnResourceOpts ¶
type ListAssignmentsOnResourceOpts struct { // UserID is the ID of a user to assign a role // Note: exactly one of UserID or GroupID must be provided UserID string `xor:"GroupID"` // GroupID is the ID of a group to assign a role // Note: exactly one of UserID or GroupID must be provided GroupID string `xor:"UserID"` // ProjectID is the ID of a project to assign a role on // Note: exactly one of ProjectID or DomainID must be provided ProjectID string `xor:"DomainID"` // DomainID is the ID of a domain to assign a role on // Note: exactly one of ProjectID or DomainID must be provided DomainID string `xor:"ProjectID"` }
ListAssignmentsOnResourceOpts provides options to list role assignments for a user/group on a project/domain
type ListAssignmentsOpts ¶
type ListAssignmentsOpts struct { // GroupID is the group ID to query. GroupID string `q:"group.id"` // RoleID is the specific role to query assignments to. RoleID string `q:"role.id"` // ScopeDomainID filters the results by the given domain ID. ScopeDomainID string `q:"scope.domain.id"` // ScopeProjectID filters the results by the given Project ID. ScopeProjectID string `q:"scope.project.id"` // UserID filterst he results by the given User ID. UserID string `q:"user.id"` // Effective lists effective assignments at the user, project, and domain // level, allowing for the effects of group membership. Effective *bool `q:"effective"` // IncludeNames indicates whether to include names of any returned entities. // Requires microversion 3.6 or later. IncludeNames *bool `q:"include_names"` // IncludeSubtree indicates whether to include relevant assignments in the project hierarchy below the project // specified in the ScopeProjectID. Specify DomainID in ScopeProjectID to get a list for all projects in the domain. // Requires microversion 3.6 or later. IncludeSubtree *bool `q:"include_subtree"` }
ListAssignmentsOpts allows you to query the ListAssignments method. Specify one of or a combination of GroupId, RoleId, ScopeDomainId, ScopeProjectId, and/or UserId to search for roles assigned to corresponding entities.
func (ListAssignmentsOpts) ToRolesListAssignmentsQuery ¶
func (opts ListAssignmentsOpts) ToRolesListAssignmentsQuery() (string, error)
ToRolesListAssignmentsQuery formats a ListAssignmentsOpts into a query string.
type ListAssignmentsOptsBuilder ¶
ListAssignmentsOptsBuilder allows extensions to add additional parameters to the ListAssignments request.
type ListOpts ¶
type ListOpts struct { // DomainID filters the response by a domain ID. DomainID string `q:"domain_id"` // Name filters the response by role name. Name string `q:"name"` // Filters filters the response by custom filters such as // 'name__contains=foo' Filters map[string]string `q:"-"` }
ListOpts provides options to filter the List results.
func (ListOpts) ToRoleListQuery ¶
ToRoleListQuery formats a ListOpts into a query string.
type ListOptsBuilder ¶
ListOptsBuilder allows extensions to add additional parameters to the List request
type Project ¶
type Project struct { Domain Domain `json:"domain,omitempty"` ID string `json:"id,omitempty"` Name string `json:"name,omitempty"` }
Project represents a project in a role assignment scope.
type Role ¶
type Role struct { // DomainID is the domain ID the role belongs to. DomainID string `json:"domain_id"` // ID is the unique ID of the role. ID string `json:"id"` // Links contains referencing links to the role. Links map[string]interface{} `json:"links"` // Name is the role name Name string `json:"name"` // Extra is a collection of miscellaneous key/values. Extra map[string]interface{} `json:"-"` }
Role grants permissions to a user.
func ExtractRoles ¶
func ExtractRoles(r pagination.Page) ([]Role, error)
ExtractProjects returns a slice of Roles contained in a single page of results.
func (*Role) UnmarshalJSON ¶
type RoleAssignment ¶
type RoleAssignment struct { Role AssignedRole `json:"role,omitempty"` Scope Scope `json:"scope,omitempty"` User User `json:"user,omitempty"` Group Group `json:"group,omitempty"` }
RoleAssignment is the result of a role assignments query.
func ExtractRoleAssignments ¶
func ExtractRoleAssignments(r pagination.Page) ([]RoleAssignment, error)
ExtractRoleAssignments extracts a slice of RoleAssignments from a Collection acquired from List.
type RoleAssignmentPage ¶
type RoleAssignmentPage struct {
pagination.LinkedPageBase
}
RoleAssignmentPage is a single page of RoleAssignments results.
func (RoleAssignmentPage) IsEmpty ¶
func (r RoleAssignmentPage) IsEmpty() (bool, error)
IsEmpty returns true if the RoleAssignmentPage contains no results.
func (RoleAssignmentPage) NextPageURL ¶
func (r RoleAssignmentPage) NextPageURL() (string, error)
NextPageURL uses the response's embedded link reference to navigate to the next page of results.
type RolePage ¶
type RolePage struct {
pagination.LinkedPageBase
}
RolePage is a single page of Role results.
func (RolePage) NextPageURL ¶
NextPageURL extracts the "next" link from the links section of the result.
type Scope ¶
type Scope struct { Domain Domain `json:"domain,omitempty"` Project Project `json:"project,omitempty"` }
Scope represents a scope in a Role assignment.
type UnassignOpts ¶
type UnassignOpts struct { // UserID is the ID of a user to unassign a role // Note: exactly one of UserID or GroupID must be provided UserID string `xor:"GroupID"` // GroupID is the ID of a group to unassign a role // Note: exactly one of UserID or GroupID must be provided GroupID string `xor:"UserID"` // ProjectID is the ID of a project to unassign a role on // Note: exactly one of ProjectID or DomainID must be provided ProjectID string `xor:"DomainID"` // DomainID is the ID of a domain to unassign a role on // Note: exactly one of ProjectID or DomainID must be provided DomainID string `xor:"ProjectID"` }
UnassignOpts provides options to unassign a role
type UnassignmentResult ¶
type UnassignmentResult struct {
gophercloud.ErrResult
}
UnassignmentResult represents the result of an unassign operation. Call ExtractErr method to determine if the request succeeded or failed.
func Unassign ¶
func Unassign(client *gophercloud.ServiceClient, roleID string, opts UnassignOpts) (r UnassignmentResult)
Unassign is the operation responsible for unassigning a role from a user/group on a project/domain.
type UpdateOpts ¶
type UpdateOpts struct { // Name is the name of the new role. Name string `json:"name,omitempty"` // Extra is free-form extra key/value pairs to describe the role. Extra map[string]interface{} `json:"-"` }
UpdateOpts provides options for updating a role.
func (UpdateOpts) ToRoleUpdateMap ¶
func (opts UpdateOpts) ToRoleUpdateMap() (map[string]interface{}, error)
ToRoleUpdateMap formats a UpdateOpts into an update request.
type UpdateOptsBuilder ¶
UpdateOptsBuilder allows extensions to add additional parameters to the Update request.
type UpdateResult ¶
type UpdateResult struct {
// contains filtered or unexported fields
}
UpdateResult is the response from an Update operation. Call its Extract method to interpret it as a Role.
func Update ¶
func Update(client *gophercloud.ServiceClient, roleID string, opts UpdateOptsBuilder) (r UpdateResult)
Update updates an existing Role.