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  }