github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/examples/container/custom_container_endpoint/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/helpers"
    11  	"github.com/IBM-Cloud/bluemix-go/session"
    12  
    13  	"github.com/IBM-Cloud/bluemix-go/api/account/accountv2"
    14  	v1 "github.com/IBM-Cloud/bluemix-go/api/container/containerv1"
    15  	"github.com/IBM-Cloud/bluemix-go/api/mccp/mccpv2"
    16  )
    17  
    18  var clusterInfo = v1.ClusterCreateRequest{
    19  	Name:        "my_cluster",
    20  	Datacenter:  "dal10",
    21  	MachineType: "u2c.2x4",
    22  	WorkerNum:   1,
    23  	PrivateVlan: "vlan",
    24  	PublicVlan:  "vlan",
    25  	Isolation:   "public",
    26  }
    27  
    28  func main() {
    29  	c := new(bluemix.Config)
    30  	flag.StringVar(&c.IBMID, "ibmid", "", "The IBM ID. You can also source it from env IBMID")
    31  	flag.StringVar(&c.IBMIDPassword, "ibmidpass", "", "The IBMID Password. You can also source it from IBMID_PASSWORD")
    32  	flag.StringVar(&c.Region, "region", "us-south", "The Bluemix region. You can source it from env IC_REGION or BLUEMIX_REGION")
    33  	flag.BoolVar(&c.Debug, "debug", false, "Show full trace if on")
    34  
    35  	var org string
    36  	flag.StringVar(&org, "org", "", "Bluemix Organization")
    37  
    38  	var space string
    39  	flag.StringVar(&space, "space", "", "Bluemix Space")
    40  
    41  	var endpoint string
    42  	flag.StringVar(&endpoint, "endpoint", "", "Cluster endpoint")
    43  
    44  	var skipDeletion bool
    45  	flag.BoolVar(&skipDeletion, "no-delete", false, "If provided will delete the resources created")
    46  
    47  	flag.Parse()
    48  
    49  	if org == "" || space == "" || endpoint == "" {
    50  		flag.Usage()
    51  		os.Exit(1)
    52  	}
    53  
    54  	sess, err := session.New(c)
    55  	if err != nil {
    56  		log.Fatal(err)
    57  	}
    58  
    59  	client, err := mccpv2.New(sess)
    60  
    61  	if err != nil {
    62  		log.Fatal(err)
    63  	}
    64  
    65  	region := sess.Config.Region
    66  	orgAPI := client.Organizations()
    67  	myorg, err := orgAPI.FindByName(org, region)
    68  
    69  	if err != nil {
    70  		log.Fatal(err)
    71  	}
    72  
    73  	spaceAPI := client.Spaces()
    74  	myspace, err := spaceAPI.FindByNameInOrg(myorg.GUID, space, region)
    75  
    76  	if err != nil {
    77  		log.Fatal(err)
    78  	}
    79  
    80  	accClient, err := accountv2.New(sess)
    81  	if err != nil {
    82  		log.Fatal(err)
    83  	}
    84  	accountAPI := accClient.Accounts()
    85  	myAccount, err := accountAPI.FindByOrg(myorg.GUID, c.Region)
    86  	if err != nil {
    87  		log.Fatal(err)
    88  	}
    89  
    90  	target := v1.ClusterTargetHeader{
    91  		OrgID:     myorg.GUID,
    92  		SpaceID:   myspace.GUID,
    93  		AccountID: myAccount.GUID,
    94  	}
    95  
    96  	clusterClient, err := v1.New(sess.Copy(&bluemix.Config{
    97  		Endpoint: helpers.String(endpoint),
    98  	}))
    99  	if err != nil {
   100  		log.Fatal(err)
   101  	}
   102  	clustersAPI := clusterClient.Clusters()
   103  
   104  	out, err := clustersAPI.Create(clusterInfo, target)
   105  	if err != nil {
   106  		log.Fatal(err)
   107  	}
   108  	fmt.Println(out)
   109  }