github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/examples/iamuum/access_group_member/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 "log" 6 "os" 7 8 "github.com/IBM-Cloud/bluemix-go/models" 9 "github.com/IBM-Cloud/bluemix-go/utils" 10 11 "github.com/IBM-Cloud/bluemix-go/api/account/accountv1" 12 "github.com/IBM-Cloud/bluemix-go/api/account/accountv2" 13 "github.com/IBM-Cloud/bluemix-go/api/iam/iamv1" 14 "github.com/IBM-Cloud/bluemix-go/api/iamuum/iamuumv2" 15 "github.com/IBM-Cloud/bluemix-go/api/mccp/mccpv2" 16 "github.com/IBM-Cloud/bluemix-go/session" 17 "github.com/IBM-Cloud/bluemix-go/trace" 18 ) 19 20 func main() { 21 var org string 22 flag.StringVar(&org, "org", "", "Bluemix Organization") 23 24 var accessGroup string 25 flag.StringVar(&accessGroup, "accessGroup", "", "Bluemix access group name") 26 27 var user string 28 flag.StringVar(&user, "user", "", "IBM-id or email id of the user to be added") 29 30 var serviceID string 31 flag.StringVar(&serviceID, "serviceID", "", "Bluemix service id name") 32 33 flag.Parse() 34 if org == "" || accessGroup == "" || user == "" || serviceID == "" { 35 flag.Usage() 36 os.Exit(1) 37 } 38 39 trace.Logger = trace.NewLogger("true") 40 sess, err := session.New() 41 if err != nil { 42 log.Fatal(err) 43 } 44 45 client, err := mccpv2.New(sess) 46 47 if err != nil { 48 log.Fatal(err) 49 } 50 orgAPI := client.Organizations() 51 myorg, err := orgAPI.FindByName(org, sess.Config.Region) 52 53 if err != nil { 54 log.Fatal(err) 55 } 56 57 accClient, err := accountv2.New(sess) 58 if err != nil { 59 log.Fatal(err) 60 } 61 accountAPI := accClient.Accounts() 62 myAccount, err := accountAPI.FindByOrg(myorg.GUID, sess.Config.Region) 63 if err != nil { 64 log.Fatal(err) 65 } 66 67 iamuumClient, err := iamuumv2.New(sess) 68 if err != nil { 69 log.Fatal(err) 70 } 71 accessGroupAPI := iamuumClient.AccessGroup() 72 73 data := models.AccessGroupV2{ 74 AccessGroup: models.AccessGroup{ 75 Name: accessGroup, 76 }, 77 } 78 agID, err := accessGroupAPI.Create(data, myAccount.GUID) 79 if err != nil { 80 log.Fatal(err) 81 } 82 log.Println(agID) 83 84 regionAPI := client.Regions() 85 region, err := regionAPI.FindRegionByName(sess.Config.Region) 86 if err != nil { 87 log.Fatal(err) 88 } 89 90 iamClient, err := iamv1.New(sess) 91 if err != nil { 92 log.Fatal(err) 93 } 94 serviceIdAPI := iamClient.ServiceIds() 95 96 boundTo := utils.GenerateBoundToCRN(*region, myAccount.GUID).String() 97 98 serviceData := models.ServiceID{ 99 Name: serviceID, 100 BoundTo: boundTo, 101 } 102 sID, err := serviceIdAPI.Create(serviceData) 103 if err != nil { 104 log.Fatal(err) 105 } 106 log.Println(sID) 107 108 accClient1, err := accountv1.New(sess) 109 if err != nil { 110 log.Fatal(err) 111 } 112 accountAPIV1 := accClient1.Accounts() 113 //Get list of users under account 114 userres, err := accountAPIV1.InviteAccountUser(myAccount.GUID, user) 115 if err != nil { 116 log.Fatal(err) 117 } 118 log.Println(userres) 119 120 userDetails, err := accountAPIV1.FindAccountUserByUserId(myAccount.GUID, user) 121 if err != nil { 122 log.Fatal(err) 123 } 124 125 accessGroupMemAPI := iamuumClient.AccessGroupMember() 126 127 var members []models.AccessGroupMemberV2 128 129 grpmem1 := models.AccessGroupMemberV2{ 130 ID: userDetails.IbmUniqueId, 131 Type: iamuumv2.AccessGroupMemberUser, 132 } 133 134 members = append(members, grpmem1) 135 136 grpmem2 := models.AccessGroupMemberV2{ 137 ID: sID.IAMID, 138 Type: iamuumv2.AccessGroupMemberService, 139 } 140 141 members = append(members, grpmem2) 142 143 addRequest := iamuumv2.AddGroupMemberRequestV2{ 144 Members: members, 145 } 146 147 resp, err := accessGroupMemAPI.Add(agID.ID, addRequest) 148 if err != nil { 149 log.Fatal(err) 150 } 151 152 err = accessGroupMemAPI.Remove(agID.ID, resp.Members[0].ID) 153 if err != nil { 154 log.Fatal(err) 155 } 156 157 err = accessGroupMemAPI.Remove(agID.ID, resp.Members[1].ID) 158 if err != nil { 159 log.Fatal(err) 160 } 161 162 err = accessGroupAPI.Delete(agID.ID, false) 163 if err != nil { 164 log.Fatal(err) 165 } 166 167 err = accountAPIV1.DeleteAccountUser(myAccount.GUID, userDetails.Id) 168 if err != nil { 169 log.Fatal(err) 170 } 171 172 }