github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/examples/icd/icdv4/scalingUpdate/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 "log" 6 "os" 7 8 "github.com/IBM-Cloud/bluemix-go/api/icd/icdv4" 9 "github.com/IBM-Cloud/bluemix-go/session" 10 "github.com/IBM-Cloud/bluemix-go/trace" 11 ) 12 13 func main() { 14 15 var icdId string 16 var memory int 17 var cpu int 18 var disk int 19 flag.StringVar(&icdId, "icdId", "", "CRN of the IBM Cloud Database service instance") 20 flag.IntVar(&memory, "memory", 0, "Memory size in increments of memory scaling factor") 21 flag.IntVar(&cpu, "cpu", 0, "Number of CPUs in increments of cpu scaling factor") 22 flag.IntVar(&disk, "disk", 0, "Disk size in increments of disk scaling factor") 23 flag.Parse() 24 25 if icdId == "" { 26 flag.Usage() 27 os.Exit(1) 28 } 29 30 trace.Logger = trace.NewLogger("true") 31 sess, err := session.New() 32 if err != nil { 33 log.Fatal(err) 34 } 35 36 icdClient, err := icdv4.New(sess) 37 if err != nil { 38 log.Fatal(err) 39 } 40 taskAPI := icdClient.Tasks() 41 42 groupAPI := icdClient.Groups() 43 params := icdv4.GroupReq{} 44 if memory != 0 { 45 memoryReq := icdv4.MemoryReq{AllocationMb: memory} 46 params.GroupBdy.Memory = &memoryReq 47 } 48 if cpu != 0 { 49 cpuReq := icdv4.CpuReq{AllocationCount: cpu} 50 params.GroupBdy.Cpu = &cpuReq 51 } 52 if disk != 0 { 53 diskReq := icdv4.DiskReq{AllocationMb: disk} 54 params.GroupBdy.Disk = &diskReq 55 } 56 task, err := groupAPI.UpdateGroup(icdId, "member", params) 57 if err != nil { 58 log.Fatal(err) 59 } 60 count := 0 61 for { 62 innerTask, err := taskAPI.GetTask(task.Id) 63 if err != nil { 64 log.Fatal(err) 65 } 66 count = count + 1 67 log.Printf("Task : %v %v\n", count, innerTask.Status) 68 69 // Querying status after completion returns ''. So 'completed' or '' as completed 70 if innerTask.Status != "running" { 71 break 72 } 73 } 74 75 group, err := groupAPI.GetGroups(icdId) 76 if err != nil { 77 log.Fatal(err) 78 } 79 log.Println("Groups :", group) 80 81 }