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 }