github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/examples/iam/service_roles/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 "log" 6 7 "github.com/IBM-Cloud/bluemix-go/models" 8 9 "github.com/IBM-Cloud/bluemix-go/api/iam/iamv1" 10 "github.com/IBM-Cloud/bluemix-go/api/resource/resourcev1/catalog" 11 "github.com/IBM-Cloud/bluemix-go/session" 12 "github.com/IBM-Cloud/bluemix-go/trace" 13 ) 14 15 func main() { 16 17 var service string 18 flag.StringVar(&service, "service", "", "Name of the service offering") 19 20 flag.Parse() 21 trace.Logger = trace.NewLogger("true") 22 sess, err := session.New() 23 if err != nil { 24 log.Fatal(err) 25 } 26 27 iamClient, err := iamv1.New(sess) 28 if err != nil { 29 log.Fatal(err) 30 } 31 serviceRolesAPI := iamClient.ServiceRoles() 32 var roles []models.PolicyRole 33 34 if service == "" { 35 roles, err = serviceRolesAPI.ListSystemDefinedRoles() 36 if err != nil { 37 log.Fatal(err) 38 } 39 40 } else { 41 42 catalogClient, err := catalog.New(sess) 43 44 if err != nil { 45 log.Fatal(err) 46 } 47 resCatalogAPI := catalogClient.ResourceCatalog() 48 49 service, err := resCatalogAPI.FindByName(service, true) 50 if err != nil { 51 log.Fatal(err) 52 } 53 roles, err = serviceRolesAPI.ListServiceRoles(service[0].Name) 54 if err != nil { 55 log.Fatal(err) 56 } 57 log.Println(roles) 58 59 roles, err = serviceRolesAPI.ListAuthorizationRoles("cloud-object-storage", "kms") 60 if err != nil { 61 log.Fatal(err) 62 } 63 log.Println(roles) 64 65 } 66 67 }