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  }