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  }