github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/examples/container/V2containers/UpdateAlbV2/main.go (about)

     1  package main
     2  
     3  import (
     4  	"flag"
     5  	"fmt"
     6  	"log"
     7  	"os"
     8  	"time"
     9  
    10  	bluemix "github.com/IBM-Cloud/bluemix-go"
    11  	v1 "github.com/IBM-Cloud/bluemix-go/api/container/containerv1"
    12  	"github.com/IBM-Cloud/bluemix-go/session"
    13  	"github.com/IBM-Cloud/bluemix-go/trace"
    14  
    15  	v2 "github.com/IBM-Cloud/bluemix-go/api/container/containerv2"
    16  )
    17  
    18  func main() {
    19  
    20  	var clusterID, albID, albVersion string
    21  	flag.StringVar(&clusterID, "clusterNameOrID", "", "cluster name or ID")
    22  	flag.StringVar(&albID, "albID", "", "ALB ID")
    23  	flag.StringVar(&albVersion, "albVersion", "", "target ALB build version")
    24  	flag.Parse()
    25  
    26  	trace.Logger = trace.NewLogger("true")
    27  
    28  	if clusterID == "" || albID == "" || albVersion == "" {
    29  		flag.Usage()
    30  		os.Exit(1)
    31  	}
    32  
    33  	c := new(bluemix.Config)
    34  
    35  	sess, err := session.New(c)
    36  	if err != nil {
    37  		log.Fatal(err)
    38  	}
    39  
    40  	if err != nil {
    41  		log.Fatal(err)
    42  	}
    43  
    44  	updateReq := v2.UpdateALBReq{
    45  		ClusterID: clusterID,
    46  		ALBBuild:  albVersion,
    47  		ALBList: []string{
    48  			albID,
    49  		},
    50  	}
    51  
    52  	targetV2 := v2.ClusterTargetHeader{}
    53  
    54  	clusterClientV2, err := v2.New(sess)
    55  	if err != nil {
    56  		log.Fatal(err)
    57  	}
    58  
    59  	targetV1 := v1.ClusterTargetHeader{}
    60  
    61  	clusterClientV1, err := v1.New(sess)
    62  	if err != nil {
    63  		log.Fatal(err)
    64  	}
    65  
    66  	albAPIV2 := clusterClientV2.Albs()
    67  	albAPIV1 := clusterClientV1.Albs()
    68  
    69  	autoUpdateOff := false
    70  	albUpdatePolicy := v1.ALBUpdatePolicy{
    71  		AutoUpdate: autoUpdateOff,
    72  	}
    73  
    74  	fmt.Println("turn off auto update")
    75  	updatePolicyErr := albAPIV1.ChangeALBUpdatePolicy(clusterID, albUpdatePolicy, targetV1)
    76  	if updatePolicyErr != nil {
    77  		log.Fatal(updatePolicyErr)
    78  	}
    79  
    80  	albConf, getErr := albAPIV2.GetAlb(albID, targetV2)
    81  	if err != nil {
    82  		log.Fatal(getErr)
    83  	}
    84  	fmt.Println("before update version: ", albConf.AlbBuild)
    85  
    86  	updateErr := albAPIV2.UpdateAlb(updateReq, targetV2)
    87  	fmt.Println("updateErr: ", updateErr)
    88  
    89  	fmt.Println("wait 60 sec...")
    90  	time.Sleep(60 * time.Second)
    91  
    92  	albConf, getErr = albAPIV2.GetAlb(albID, targetV2)
    93  	if err != nil {
    94  		log.Fatal(getErr)
    95  	}
    96  	fmt.Println("after update version: ", albConf.AlbBuild)
    97  }