github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/examples/container/V2containers/AttachStorageV2/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 "github.com/IBM-Cloud/bluemix-go/session" 12 "github.com/IBM-Cloud/bluemix-go/trace" 13 14 v2 "github.com/IBM-Cloud/bluemix-go/api/container/containerv2" 15 ) 16 17 func main() { 18 19 var clusterID string 20 flag.StringVar(&clusterID, "clusterID", "", "Cluster ID or Name") 21 22 var workerID string 23 flag.StringVar(&workerID, "workerID", "", "worker ID of the worker node in the cluster") 24 25 var volumeID string 26 flag.StringVar(&volumeID, "volumeID", "", "volumeID of the volume to be attched to the worker") 27 28 flag.Parse() 29 30 if clusterID == "" || workerID == "" || volumeID == "" { 31 flag.Usage() 32 os.Exit(1) 33 } 34 c := new(bluemix.Config) 35 36 trace.Logger = trace.NewLogger("true") 37 38 sess, err := session.New(c) 39 if err != nil { 40 log.Fatal(err) 41 } 42 43 if err != nil { 44 log.Fatal(err) 45 } 46 47 target := v2.ClusterTargetHeader{} 48 49 clusterClient, err := v2.New(sess) 50 if err != nil { 51 log.Fatal(err) 52 } 53 workersAPI := clusterClient.Workers() 54 55 attachVolumeRequest := v2.VolumeRequest{ 56 Cluster: clusterID, 57 VolumeID: volumeID, 58 Worker: workerID, 59 } 60 volumeattached, errC := workersAPI.CreateStorageAttachment(attachVolumeRequest, target) 61 if errC != nil { 62 fmt.Println(errC) 63 return 64 } 65 fmt.Println("Volume attached: ", volumeattached) 66 volumeAttachmentID := volumeattached.Id 67 time.Sleep(10 * time.Second) 68 69 volumeAttachment, errG := workersAPI.GetStorageAttachment(clusterID, workerID, volumeAttachmentID, target) 70 if errG != nil { 71 fmt.Println(errG) 72 return 73 } 74 fmt.Println("Volume attachment with worker nodes: ", volumeAttachment) 75 time.Sleep(5 * time.Second) 76 77 detachVolumeRequest := v2.VolumeRequest{ 78 Cluster: clusterID, 79 VolumeAttachmentID: volumeAttachmentID, 80 Worker: workerID, 81 } 82 out, errD := workersAPI.DeleteStorageAttachment(detachVolumeRequest, target) 83 if errD != nil { 84 fmt.Println(errD) 85 return 86 } 87 fmt.Println("Volume attachment removed", out) 88 }