|
| 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 | +} |
0 commit comments