github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/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(context.TODO())
    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]any{
    31  			"description": "this role grants read-only privilege cross tenant",
    32  		}
    33  	}
    34  
    35  	role, err := roles.Create(context.TODO(), 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(context.TODO(), 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(context.TODO(), 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(context.TODO())
    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(context.TODO())
    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(context.TODO(), 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(context.TODO(), identityClient, roleID, roles.UnassignOpts{
   127  		UserID:    userID,
   128  		ProjectID: projectID,
   129  	}).ExtractErr()
   130  
   131  	if err != nil {
   132  		panic(err)
   133  	}
   134  
   135  Example to Create a Role Inference Rule
   136  
   137  	priorRoleID := "7ceab6192ea34a548cc71b24f72e762c"
   138  	impliedRoleID := "97e2f5d38bc94842bc3da818c16762ed"
   139  
   140  	actual, err := roles.CreateRoleInferenceRule(context.TODO(), identityClient, priorRoleID, impliedRoleID).Extract()
   141  
   142  	if err != nil {
   143  		panic(err)
   144  	}
   145  
   146  Example to Get a Role Inference Rule
   147  
   148  	priorRoleID := "7ceab6192ea34a548cc71b24f72e762c"
   149  	impliedRoleID := "97e2f5d38bc94842bc3da818c16762ed"
   150  
   151  	actual, err := roles.GetRoleInferenceRule(context.TODO(), identityClient, priorRoleID, impliedRoleID).Extract()
   152  
   153  	if err != nil {
   154  		panic(err)
   155  	}
   156  
   157  Example to Delete a Role Inference Rule
   158  
   159  	priorRoleID := "7ceab6192ea34a548cc71b24f72e762c"
   160  	impliedRoleID := "97e2f5d38bc94842bc3da818c16762ed"
   161  
   162  	actual, err := roles.DeleteRoleInferenceRule(context.TODO(), identityClient, priorRoleID, impliedRoleID).ExtractErr()
   163  
   164  	if err != nil {
   165  		panic(err)
   166  	}
   167  
   168  Example to List Role Inference Rules
   169  
   170  	actual, err := roles.ListRoleInferenceRules(context.TODO(), identityClient).Extract()
   171  
   172  	if err != nil {
   173  		panic(err)
   174  	}
   175  */
   176  package roles