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  }