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 }