github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/examples/container/bind_service/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "log" 7 "os" 8 9 bluemix "github.com/IBM-Cloud/bluemix-go" 10 "github.com/IBM-Cloud/bluemix-go/session" 11 12 "github.com/IBM-Cloud/bluemix-go/api/account/accountv2" 13 v1 "github.com/IBM-Cloud/bluemix-go/api/container/containerv1" 14 "github.com/IBM-Cloud/bluemix-go/api/mccp/mccpv2" 15 ) 16 17 func main() { 18 c := new(bluemix.Config) 19 flag.StringVar(&c.IBMID, "ibmid", "", "The IBM ID. You can also source it from env IBMID") 20 flag.StringVar(&c.IBMIDPassword, "ibmidpass", "", "The IBMID Password. You can also source it from IBMID_PASSWORD") 21 flag.StringVar(&c.Region, "region", "us-south", "The Bluemix region. You can source it from env IC_REGION or BLUEMIX_REGION") 22 flag.BoolVar(&c.Debug, "debug", false, "Show full trace if on") 23 24 var org string 25 flag.StringVar(&org, "org", "", "Bluemix Organization") 26 27 var space string 28 flag.StringVar(&space, "space", "", "Bluemix Space") 29 30 var skipDeletion bool 31 flag.BoolVar(&skipDeletion, "no-delete", false, "If provided will delete the resources created") 32 33 var clusterName string 34 flag.StringVar(&clusterName, "clustername", "", "The cluster name") 35 36 var serviceInstanceName string 37 flag.StringVar(&serviceInstanceName, "service_instance", "", "The service instance name which is to be bound to the cluster") 38 39 var namespace string 40 flag.StringVar(&namespace, "namespace", "default", "The cluster namespace in which instance will be bound") 41 42 flag.Parse() 43 44 if org == "" || space == "" || clusterName == "" || serviceInstanceName == "" { 45 flag.Usage() 46 os.Exit(1) 47 } 48 49 sess, err := session.New(c) 50 if err != nil { 51 log.Fatal(err) 52 } 53 54 client, err := mccpv2.New(sess) 55 56 if err != nil { 57 log.Fatal(err) 58 } 59 60 region := sess.Config.Region 61 orgAPI := client.Organizations() 62 myorg, err := orgAPI.FindByName(org, region) 63 64 if err != nil { 65 log.Fatal(err) 66 } 67 68 spaceAPI := client.Spaces() 69 myspace, err := spaceAPI.FindByNameInOrg(myorg.GUID, space, region) 70 71 if err != nil { 72 log.Fatal(err) 73 } 74 75 accClient, err := accountv2.New(sess) 76 if err != nil { 77 log.Fatal(err) 78 } 79 accountAPI := accClient.Accounts() 80 myAccount, err := accountAPI.FindByOrg(myorg.GUID, c.Region) 81 if err != nil { 82 log.Fatal(err) 83 } 84 85 target := v1.ClusterTargetHeader{ 86 OrgID: myorg.GUID, 87 SpaceID: myspace.GUID, 88 AccountID: myAccount.GUID, 89 } 90 91 clusterClient, err := v1.New(sess) 92 if err != nil { 93 log.Fatal(err) 94 } 95 clustersAPI := clusterClient.Clusters() 96 97 bindService, err := clustersAPI.BindService(v1.ServiceBindRequest{ClusterNameOrID: clusterName, ServiceInstanceNameOrID: serviceInstanceName, NamespaceID: namespace}, target) 98 if err != nil { 99 log.Fatal(err) 100 } 101 fmt.Println(bindService) 102 103 }