Skip to content

Commit e368309

Browse files
authored
feat(k8s): add cluster types compatibility (#1771)
1 parent 10731c5 commit e368309

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

api/k8s/v1/k8s_sdk.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
804812
type 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+
14821530
type 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

Comments
 (0)