github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/container/containerv2/dedicated_host.go (about) 1 package containerv2 2 3 import ( 4 "fmt" 5 6 "github.com/IBM-Cloud/bluemix-go/client" 7 ) 8 9 // CreateDedicatedHostRequest provides dedicated host data for create call 10 // swagger:model 11 type CreateDedicatedHostRequest struct { 12 Flavor string `json:"flavor" description:""` 13 HostPoolID string `json:"hostPoolID" description:""` 14 Zone string `json:"zone" description:""` 15 } 16 17 // CreateDedicatedHostResponse provides dedicated host id from create call 18 // swagger:model 19 type CreateDedicatedHostResponse struct { 20 ID string `json:"id"` 21 } 22 23 // GetDedicatedHostResponse provides dedicated host data from get call 24 // swagger:model 25 type GetDedicatedHostResponse struct { 26 Flavor string `json:"flavor"` 27 ID string `json:"id"` 28 Lifecycle DedicatedHostLifecycle `json:"lifecycle"` 29 PlacementEnabled bool `json:"placementEnabled"` 30 Resources DedicatedHostResources `json:"resources"` 31 Workers []DedicatedHostWorker `json:"workers"` 32 Zone string `json:"zone"` 33 } 34 35 // DedicatedHostLifecycle ... 36 type DedicatedHostLifecycle struct { 37 ActualState string `json:"actualState"` 38 DesiredState string `json:"desiredState"` 39 Message string `json:"message"` 40 MessageDate string `json:"messageDate"` 41 MessageDetails string `json:"messageDetails"` 42 MessageDetailsDate string `json:"messageDetailsDate"` 43 } 44 45 // DedicatedHostWorker ... 46 type DedicatedHostWorker struct { 47 ClusterID string `json:"clusterID"` 48 Flavor string `json:"flavor"` 49 WorkerID string `json:"workerID"` 50 WorkerPoolID string `json:"workerPoolID"` 51 } 52 53 // DedicatedHostResources ... 54 type DedicatedHostResources struct { 55 Capacity DedicatedHostResource `json:"capacity"` 56 Consumed DedicatedHostResource `json:"consumed"` 57 } 58 59 // DedicatedHostResource ... 60 type DedicatedHostResource struct { 61 MemoryBytes int64 `json:"memoryBytes"` 62 VCPU int64 `json:"vcpu"` 63 } 64 65 // RemoveDedicatedHostRequest provides dedicated host data for remove call 66 // swagger:model 67 type RemoveDedicatedHostRequest struct { 68 HostID string `json:"host" description:""` 69 HostPoolID string `json:"hostPool" description:""` 70 } 71 72 // UpdateDedicatedHostPlacementRequest provides dedicated host data for update call 73 // swagger:model 74 type UpdateDedicatedHostPlacementRequest struct { 75 HostPoolID string `json:"hostPoolID"` 76 HostID string `json:"hostID"` 77 } 78 79 //DedicatedHost ... 80 type DedicatedHost interface { 81 CreateDedicatedHost(dedicatedHostReq CreateDedicatedHostRequest, target ClusterTargetHeader) (CreateDedicatedHostResponse, error) 82 GetDedicatedHost(dedicatedHostID, dedicatedHostPoolID string, target ClusterTargetHeader) (GetDedicatedHostResponse, error) 83 ListDedicatedHosts(dedicatedHostPoolID string, target ClusterTargetHeader) ([]GetDedicatedHostResponse, error) 84 RemoveDedicatedHost(dedicatedHostReq RemoveDedicatedHostRequest, target ClusterTargetHeader) error 85 EnableDedicatedHostPlacement(dedicatedHostReq UpdateDedicatedHostPlacementRequest, target ClusterTargetHeader) error 86 DisableDedicatedHostPlacement(dedicatedHostReq UpdateDedicatedHostPlacementRequest, target ClusterTargetHeader) error 87 } 88 89 type dedicatedhost struct { 90 client *client.Client 91 } 92 93 func newDedicatedHostAPI(c *client.Client) DedicatedHost { 94 return &dedicatedhost{ 95 client: c, 96 } 97 } 98 99 // GetDedicatedHost calls the API to list dedicated host s 100 func (w *dedicatedhost) ListDedicatedHosts(dedicatedHostPoolID string, target ClusterTargetHeader) ([]GetDedicatedHostResponse, error) { 101 successV := []GetDedicatedHostResponse{} 102 _, err := w.client.Get(fmt.Sprintf("/v2/getDedicatedHosts?dedicatedhostpool=%s", dedicatedHostPoolID), &successV, target.ToMap()) 103 return successV, err 104 } 105 106 // GetDedicatedHost calls the API to get a dedicated host 107 func (w *dedicatedhost) GetDedicatedHost(dedicatedHostID, dedicatedHostPoolID string, target ClusterTargetHeader) (GetDedicatedHostResponse, error) { 108 var successV GetDedicatedHostResponse 109 _, err := w.client.Get(fmt.Sprintf("/v2/getDedicatedHost?dedicatedhost=%s&dedicatedhostpool=%s", dedicatedHostID, dedicatedHostPoolID), &successV, target.ToMap()) 110 return successV, err 111 } 112 113 // CreateDedicatedHost calls the API to create a dedicated host 114 func (w *dedicatedhost) CreateDedicatedHost(createDedicatedHostReq CreateDedicatedHostRequest, target ClusterTargetHeader) (CreateDedicatedHostResponse, error) { 115 var successV CreateDedicatedHostResponse 116 _, err := w.client.Post("/v2/createDedicatedHost", createDedicatedHostReq, &successV, target.ToMap()) 117 return successV, err 118 } 119 120 // RemoveDedicatedHost calls the API to remove a dedicated host 121 func (w *dedicatedhost) RemoveDedicatedHost(removeDedicatedHostReq RemoveDedicatedHostRequest, target ClusterTargetHeader) error { 122 // Make the request, don't care about return value 123 _, err := w.client.Post("/v2/removeDedicatedHost", removeDedicatedHostReq, nil, target.ToMap()) 124 return err 125 } 126 127 // EnableDedicatedHostPlacement calls the API to enable placement on a dedicated host 128 func (w *dedicatedhost) EnableDedicatedHostPlacement(updateDedicatedHostReq UpdateDedicatedHostPlacementRequest, target ClusterTargetHeader) error { 129 // Make the request, don't care about return value 130 _, err := w.client.Post("/v2/enableDedicatedHostPlacement", updateDedicatedHostReq, nil, target.ToMap()) 131 return err 132 } 133 134 // DisableDedicatedHostPlacement calls the API to disable placement on a dedicated host 135 func (w *dedicatedhost) DisableDedicatedHostPlacement(updateDedicatedHostReq UpdateDedicatedHostPlacementRequest, target ClusterTargetHeader) error { 136 // Make the request, don't care about return value 137 _, err := w.client.Post("/v2/disableDedicatedHostPlacement", updateDedicatedHostReq, nil, target.ToMap()) 138 return err 139 }