github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/container/containerv1/addons.go (about)

     1  package containerv1
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/IBM-Cloud/bluemix-go/client"
     7  )
     8  
     9  // AddOn ...
    10  type AddOn struct {
    11  	AllowedUpgradeVersion  []string    `json:"allowed_upgrade_versions,omitempty"`
    12  	Deprecated             bool        `json:"deprecated"`
    13  	HealthState            string      `json:"healthState,omitempty"`
    14  	HealthStatus           string      `json:"healthStatus,omitempty"`
    15  	MinKubeVersion         string      `json:"minKubeVersion,omitempty"`
    16  	MinOCPVersion          string      `json:"minOCPVersion,omitempty"`
    17  	Name                   string      `json:"name"`
    18  	Options                interface{} `json:"options,omitempty"`
    19  	SupportedKubeRange     string      `json:"supportedKubeRange,omitempty"`
    20  	TargetVersion          string      `json:"targetVersion,omitempty"`
    21  	Version                string      `json:"version,omitempty"`
    22  	VlanSpanningRequired   bool        `json:"vlan_spanning_required"`
    23  	InstallOptionsTemplate interface{} `json:"installOptionsTemplate,omitempty"`
    24  }
    25  
    26  // GetAddOns ...
    27  type GetAddOns struct {
    28  	AddonsList []AddOn `json:"addons"`
    29  }
    30  
    31  // ConfigureAddOns ...
    32  type ConfigureAddOns struct {
    33  	AddonsList []AddOn `json:"addons"`
    34  	Enable     bool    `json:"enable"`
    35  	Update     bool    `json:"update"`
    36  }
    37  
    38  // AddOnsResponse ...
    39  type AddOnsResponse struct {
    40  	MissingDeps    interface{} `json:"missingDeps,omitempty"`
    41  	OrphanedAddons interface{} `json:"orphanedAddons,omitempty"`
    42  }
    43  
    44  // AddOns ...
    45  type AddOns interface {
    46  	GetAddons(clusterName string, target ClusterTargetHeader) ([]AddOn, error)
    47  	ConfigureAddons(clusterName string, params *ConfigureAddOns, target ClusterTargetHeader) (AddOnsResponse, error)
    48  	ListAddons() ([]AddOn, error)
    49  }
    50  
    51  type addons struct {
    52  	client *client.Client
    53  }
    54  
    55  func newAddOnsAPI(c *client.Client) AddOns {
    56  	return &addons{
    57  		client: c,
    58  	}
    59  }
    60  
    61  // GetAddon ...
    62  func (r *addons) GetAddons(clusterName string, target ClusterTargetHeader) ([]AddOn, error) {
    63  	rawURL := fmt.Sprintf("/v1/clusters/%s/addons", clusterName)
    64  	addonsList := GetAddOns{}
    65  	_, err := r.client.Get(rawURL, &addonsList.AddonsList, target.ToMap())
    66  	if err != nil {
    67  		return addonsList.AddonsList, err
    68  	}
    69  
    70  	return addonsList.AddonsList, err
    71  }
    72  
    73  // ListAddon
    74  func (r *addons) ListAddons() ([]AddOn, error) {
    75  	addonsList := GetAddOns{}
    76  	_, err := r.client.Get("/v1/addons", &addonsList.AddonsList)
    77  	if err != nil {
    78  		return addonsList.AddonsList, err
    79  	}
    80  
    81  	return addonsList.AddonsList, err
    82  }
    83  
    84  // ConfigureAddon ...
    85  func (r *addons) ConfigureAddons(clusterName string, params *ConfigureAddOns, target ClusterTargetHeader) (AddOnsResponse, error) {
    86  	rawURL := fmt.Sprintf("/v1/clusters/%s/addons", clusterName)
    87  	resp := AddOnsResponse{}
    88  	_, err := r.client.Patch(rawURL, params, &resp, target.ToMap())
    89  	return resp, err
    90  }