github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/examples/container/create/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  	v1 "github.com/IBM-Cloud/bluemix-go/api/container/containerv1"
    13  	"github.com/IBM-Cloud/bluemix-go/trace"
    14  )
    15  
    16  func main() {
    17  
    18  	c := new(bluemix.Config)
    19  
    20  	var zone string
    21  	flag.StringVar(&zone, "zone", "", "Zone")
    22  
    23  	var privateVlan string
    24  	flag.StringVar(&privateVlan, "privateVlan", "", "Zone Private Vlan")
    25  
    26  	var publicVlan string
    27  	flag.StringVar(&publicVlan, "publicVlan", "", "Zone Public vlan")
    28  
    29  	var updatePrivateVlan string
    30  	flag.StringVar(&updatePrivateVlan, "updatePrivateVlan", "", "Zone Private vlan to be updated")
    31  
    32  	var updatePublicVlan string
    33  	flag.StringVar(&updatePublicVlan, "updatePublicVlan", "", "Zone Public vlan to be updated")
    34  
    35  	var location string
    36  	flag.StringVar(&location, "location", "", "location")
    37  
    38  	var region string
    39  	flag.StringVar(&location, "region", "us-south", "region")
    40  
    41  	var skipDeletion bool
    42  	flag.BoolVar(&skipDeletion, "no-delete", false, "If provided will delete the resources created")
    43  
    44  	flag.Parse()
    45  
    46  	trace.Logger = trace.NewLogger("true")
    47  	if privateVlan == "" || publicVlan == "" || updatePrivateVlan == "" || updatePublicVlan == "" || zone == "" || location == "" {
    48  		flag.Usage()
    49  		os.Exit(1)
    50  	}
    51  
    52  	var clusterInfo = v1.ClusterCreateRequest{
    53  		Name:        "my_cluster",
    54  		Datacenter:  location,
    55  		MachineType: "u2c.2x4",
    56  		WorkerNum:   1,
    57  		PrivateVlan: privateVlan,
    58  		PublicVlan:  publicVlan,
    59  		Isolation:   "public",
    60  	}
    61  
    62  	sess, err := session.New(c)
    63  	if err != nil {
    64  		log.Fatal(err)
    65  	}
    66  
    67  	if err != nil {
    68  		log.Fatal(err)
    69  	}
    70  
    71  	target := v1.ClusterTargetHeader{}
    72  
    73  	target.Region = region
    74  
    75  	clusterClient, err := v1.New(sess)
    76  	if err != nil {
    77  		log.Fatal(err)
    78  	}
    79  	clustersAPI := clusterClient.Clusters()
    80  
    81  	out, err := clustersAPI.Create(clusterInfo, target)
    82  	if err != nil {
    83  		log.Fatal(err)
    84  	}
    85  
    86  	workerPoolAPI := clusterClient.WorkerPools()
    87  	workerPoolRequest := v1.WorkerPoolRequest{
    88  		WorkerPoolConfig: v1.WorkerPoolConfig{
    89  			Name:        "test-workerpool",
    90  			Size:        2,
    91  			MachineType: "u2c.2x4",
    92  			Isolation:   "public",
    93  		},
    94  		DiskEncryption: true,
    95  	}
    96  	resp, err := workerPoolAPI.CreateWorkerPool(out.ID, workerPoolRequest, target)
    97  	if err != nil {
    98  		log.Fatal(err)
    99  	}
   100  	workerPoolZone := v1.WorkerPoolZone{
   101  		ID: zone,
   102  		WorkerPoolZoneNetwork: v1.WorkerPoolZoneNetwork{
   103  			PrivateVLAN: privateVlan,
   104  			PublicVLAN:  publicVlan,
   105  		},
   106  	}
   107  	err = workerPoolAPI.AddZone(out.ID, resp.ID, workerPoolZone, target)
   108  	if err != nil {
   109  		log.Fatal(err)
   110  	}
   111  	err = workerPoolAPI.UpdateZoneNetwork(out.ID, zone, resp.ID, updatePrivateVlan, updatePublicVlan, target)
   112  	if err != nil {
   113  		log.Fatal(err)
   114  	}
   115  
   116  	pool, err := workerPoolAPI.GetWorkerPool(out.ID, resp.ID, target)
   117  	if err != nil {
   118  		log.Fatal(err)
   119  	}
   120  	fmt.Println("Pool id is ", pool.ID)
   121  }