github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/container/containerv1/workers.go (about) 1 package containerv1 2 3 import ( 4 "fmt" 5 6 "github.com/IBM-Cloud/bluemix-go/client" 7 ) 8 9 //Worker ... 10 type Worker struct { 11 Billing string `json:"billing,omitempty"` 12 ErrorMessage string `json:"errorMessage"` 13 ID string `json:"id"` 14 Isolation string `json:"isolation"` 15 KubeVersion string `json:"kubeVersion"` 16 MachineType string `json:"machineType"` 17 PrivateIP string `json:"privateIP"` 18 PrivateVlan string `json:"privateVlan"` 19 PublicIP string `json:"publicIP"` 20 PublicVlan string `json:"publicVlan"` 21 Location string `json:"location"` 22 PoolID string `json:"poolid"` 23 PoolName string `json:"poolName"` 24 TrustedStatus string `json:"trustedStatus"` 25 ReasonForDelete string `json:"reasonForDelete"` 26 VersionEOS string `json:"versionEOS"` 27 MasterVersionEOS string `json:"masterVersionEOS"` 28 State string `json:"state"` 29 Status string `json:"status"` 30 TargetVersion string `json:"targetVersion"` 31 } 32 33 //WorkerParam ... 34 type WorkerParam struct { 35 MachineType string `json:"machineType,omitempty" description:"The worker's machine type"` 36 PrivateVlan string `json:"privateVlan,omitempty" description:"The worker's private vlan"` 37 PublicVlan string `json:"publicVlan,omitempty" description:"The worker's public vlan"` 38 Isolation string `json:"isolation,omitempty" description:"Can be 'public' or 'private'"` 39 WorkerNum int `json:"workerNum,omitempty" binding:"required" description:"The number of workers"` 40 Prefix string `json:"prefix,omitempty" description:"hostname prefix for new workers"` 41 Action string `json:"action,omitempty"` 42 Count int `json:"count,omitempty"` 43 } 44 45 //WorkerUpdateParam ... 46 type WorkerUpdateParam struct { 47 Action string `json:"action" binding:"required" description:"Action to perform of the worker"` 48 } 49 50 //Workers ... 51 type Workers interface { 52 List(clusterName string, target ClusterTargetHeader) ([]Worker, error) 53 ListByWorkerPool(clusterIDOrName, workerPoolIDOrName string, showDeleted bool, target ClusterTargetHeader) ([]Worker, error) 54 Get(clusterName string, target ClusterTargetHeader) (Worker, error) 55 Add(clusterName string, params WorkerParam, target ClusterTargetHeader) error 56 Delete(clusterName string, workerD string, target ClusterTargetHeader) error 57 Update(clusterName string, workerID string, params WorkerUpdateParam, target ClusterTargetHeader) error 58 } 59 60 type worker struct { 61 client *client.Client 62 } 63 64 func newWorkerAPI(c *client.Client) Workers { 65 return &worker{ 66 client: c, 67 } 68 } 69 70 //Get ... 71 func (r *worker) Get(id string, target ClusterTargetHeader) (Worker, error) { 72 rawURL := fmt.Sprintf("/v1/workers/%s", id) 73 worker := Worker{} 74 _, err := r.client.Get(rawURL, &worker, target.ToMap()) 75 if err != nil { 76 return worker, err 77 } 78 79 return worker, err 80 } 81 82 func (r *worker) Add(name string, params WorkerParam, target ClusterTargetHeader) error { 83 rawURL := fmt.Sprintf("/v1/clusters/%s/workers", name) 84 _, err := r.client.Post(rawURL, params, nil, target.ToMap()) 85 return err 86 } 87 88 //Delete ... 89 func (r *worker) Delete(name string, workerID string, target ClusterTargetHeader) error { 90 rawURL := fmt.Sprintf("/v1/clusters/%s/workers/%s", name, workerID) 91 _, err := r.client.Delete(rawURL, target.ToMap()) 92 return err 93 } 94 95 //Update ... 96 func (r *worker) Update(name string, workerID string, params WorkerUpdateParam, target ClusterTargetHeader) error { 97 rawURL := fmt.Sprintf("/v1/clusters/%s/workers/%s", name, workerID) 98 _, err := r.client.Put(rawURL, params, nil, target.ToMap()) 99 return err 100 } 101 102 //List ... 103 func (r *worker) List(name string, target ClusterTargetHeader) ([]Worker, error) { 104 rawURL := fmt.Sprintf("/v1/clusters/%s/workers", name) 105 workers := []Worker{} 106 _, err := r.client.Get(rawURL, &workers, target.ToMap()) 107 if err != nil { 108 return nil, err 109 } 110 return workers, err 111 } 112 113 //ListByWorkerPool ... 114 func (r *worker) ListByWorkerPool(clusterIDOrName, workerPoolIDOrName string, showDeleted bool, target ClusterTargetHeader) ([]Worker, error) { 115 rawURL := fmt.Sprintf("/v1/clusters/%s/workers?showDeleted=%t", clusterIDOrName, showDeleted) 116 if len(workerPoolIDOrName) > 0 { 117 rawURL += "&pool=" + workerPoolIDOrName 118 } 119 workers := []Worker{} 120 _, err := r.client.Get(rawURL, &workers, target.ToMap()) 121 if err != nil { 122 return nil, err 123 } 124 return workers, err 125 }