github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/examples/icd/icdv4/user/main.go (about)

     1  package main
     2  
     3  import (
     4  	"flag"
     5  	"log"
     6  	"net/url"
     7  	"os"
     8  
     9  	"github.com/IBM-Cloud/bluemix-go/api/icd/icdv4"
    10  	"github.com/IBM-Cloud/bluemix-go/session"
    11  	"github.com/IBM-Cloud/bluemix-go/trace"
    12  )
    13  
    14  func main() {
    15  
    16  	var icdId string
    17  	var userId string
    18  	var password string
    19  	var count int
    20  	flag.StringVar(&icdId, "icdId", "", "CRN of the IBM Cloud Database service instance")
    21  	flag.StringVar(&userId, "userId", "", "User name")
    22  	flag.StringVar(&password, "password", "", "Password")
    23  	flag.Parse()
    24  
    25  	if icdId == "" || userId == "" || password == "" {
    26  		flag.Usage()
    27  		os.Exit(1)
    28  	}
    29  	icdId = url.PathEscape(icdId)
    30  
    31  	trace.Logger = trace.NewLogger("true")
    32  	sess, err := session.New()
    33  	if err != nil {
    34  		log.Fatal(err)
    35  	}
    36  
    37  	icdClient, err := icdv4.New(sess)
    38  	if err != nil {
    39  		log.Fatal(err)
    40  	}
    41  	taskAPI := icdClient.Tasks()
    42  	userAPI := icdClient.Users()
    43  	params := icdv4.UserReq{
    44  		User: icdv4.User{
    45  			UserName: userId,
    46  			Password: password,
    47  		},
    48  	}
    49  	task, err := userAPI.CreateUser(icdId, params)
    50  	if err != nil {
    51  		log.Fatal(err)
    52  	}
    53  	log.Println("Task 1 Create:", task)
    54  
    55  	count = 0
    56  	for {
    57  		innerTask, err := taskAPI.GetTask(task.Id)
    58  		if err != nil {
    59  			log.Fatal(err)
    60  		}
    61  		count = count + 1
    62  		log.Printf("Task : %v     %v\n", count, innerTask)
    63  		if innerTask.Status != "running" {
    64  			break
    65  		}
    66  	}
    67  
    68  	log.Println(">>>>>>>>>> Update User")
    69  
    70  	task, err = userAPI.UpdateUser(icdId, userId, params)
    71  	if err != nil {
    72  		log.Fatal(err)
    73  	}
    74  	count = 0
    75  	for {
    76  		innerTask, err := taskAPI.GetTask(task.Id)
    77  		if err != nil {
    78  			log.Fatal(err)
    79  		}
    80  		count = count + 1
    81  		log.Printf("Task : %v     %v\n", count, innerTask)
    82  		if innerTask.Status == "completed" || innerTask.Status == "failed" || innerTask.Status == "" {
    83  			break
    84  		}
    85  	}
    86  
    87  	log.Println(">>>>>>>>>> Delete User")
    88  	task, err = userAPI.DeleteUser(icdId, userId)
    89  	if err != nil {
    90  		log.Fatal(err)
    91  	}
    92  	count = 0
    93  	for {
    94  		innerTask, err := taskAPI.GetTask(task.Id)
    95  		if err != nil {
    96  			log.Fatal(err)
    97  		}
    98  		count = count + 1
    99  		log.Printf("Task : %v     %v\n", count, innerTask)
   100  		// Querying status after completion returns ''. So 'completed' or '' as completed
   101  		if innerTask.Status != "running" {
   102  			break
   103  		}
   104  	}
   105  	log.Println(">>>>>>>>>> End of run")
   106  }