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  }