@@ -800,6 +800,14 @@ type ExternalNode struct {
800800 ExternalIP string `json:"external_ip"`
801801}
802802
803+ // ListClusterAvailableTypesResponse: list cluster available types response.
804+ type ListClusterAvailableTypesResponse struct {
805+ // ClusterTypes: available cluster types for the cluster.
806+ ClusterTypes []* ClusterType `json:"cluster_types"`
807+ // TotalCount: total number of types.
808+ TotalCount uint32 `json:"total_count"`
809+ }
810+
803811// ListClusterAvailableVersionsResponse: list cluster available versions response.
804812type ListClusterAvailableVersionsResponse struct {
805813 // Versions: available Kubernetes versions for the cluster.
@@ -1479,6 +1487,46 @@ func (s *API) ListClusterAvailableVersions(req *ListClusterAvailableVersionsRequ
14791487 return & resp , nil
14801488}
14811489
1490+ type ListClusterAvailableTypesRequest struct {
1491+ // Region: region to target. If none is passed will use default region from the config.
1492+ Region scw.Region `json:"-"`
1493+ // ClusterID: cluster ID for which the available Kubernetes types will be listed.
1494+ ClusterID string `json:"-"`
1495+ }
1496+
1497+ // ListClusterAvailableTypes: list available cluster types for a cluster.
1498+ // List the cluster types that a specific Kubernetes cluster is allowed to switch to.
1499+ func (s * API ) ListClusterAvailableTypes (req * ListClusterAvailableTypesRequest , opts ... scw.RequestOption ) (* ListClusterAvailableTypesResponse , error ) {
1500+ var err error
1501+
1502+ if req .Region == "" {
1503+ defaultRegion , _ := s .client .GetDefaultRegion ()
1504+ req .Region = defaultRegion
1505+ }
1506+
1507+ if fmt .Sprint (req .Region ) == "" {
1508+ return nil , errors .New ("field Region cannot be empty in request" )
1509+ }
1510+
1511+ if fmt .Sprint (req .ClusterID ) == "" {
1512+ return nil , errors .New ("field ClusterID cannot be empty in request" )
1513+ }
1514+
1515+ scwReq := & scw.ScalewayRequest {
1516+ Method : "GET" ,
1517+ Path : "/k8s/v1/regions/" + fmt .Sprint (req .Region ) + "/clusters/" + fmt .Sprint (req .ClusterID ) + "/available-types" ,
1518+ Headers : http.Header {},
1519+ }
1520+
1521+ var resp ListClusterAvailableTypesResponse
1522+
1523+ err = s .client .Do (scwReq , & resp , opts ... )
1524+ if err != nil {
1525+ return nil , err
1526+ }
1527+ return & resp , nil
1528+ }
1529+
14821530type GetClusterKubeConfigRequest struct {
14831531 // Region: region to target. If none is passed will use default region from the config.
14841532 Region scw.Region `json:"-"`
0 commit comments