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 }