import requests
url = "https://platform.ankra.app/api/v1/clusters/scaleway/{cluster_id}/control-plane/instance-type"
payload = {
"abandon_pending_resize": False,
"force_drain": False,
"instance_type": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({abandon_pending_resize: false, force_drain: false, instance_type: '<string>'})
};
fetch('https://platform.ankra.app/api/v1/clusters/scaleway/{cluster_id}/control-plane/instance-type', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request PUT \
--url https://platform.ankra.app/api/v1/clusters/scaleway/{cluster_id}/control-plane/instance-type \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"abandon_pending_resize": false,
"force_drain": false,
"instance_type": "<string>"
}
'{
"mode": "offline",
"new_instance_type": "<string>",
"previous_instance_type": "<string>",
"updated": 123,
"operation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "Cluster not found"
}Resize control-plane nodes
Bearer PAT authentication; RBAC permission clusters.write. PAT mutations support wait=false where implemented; browser mutations require CSRF.
import requests
url = "https://platform.ankra.app/api/v1/clusters/scaleway/{cluster_id}/control-plane/instance-type"
payload = {
"abandon_pending_resize": False,
"force_drain": False,
"instance_type": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({abandon_pending_resize: false, force_drain: false, instance_type: '<string>'})
};
fetch('https://platform.ankra.app/api/v1/clusters/scaleway/{cluster_id}/control-plane/instance-type', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request PUT \
--url https://platform.ankra.app/api/v1/clusters/scaleway/{cluster_id}/control-plane/instance-type \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"abandon_pending_resize": false,
"force_drain": false,
"instance_type": "<string>"
}
'{
"mode": "offline",
"new_instance_type": "<string>",
"previous_instance_type": "<string>",
"updated": 123,
"operation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "Cluster not found"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
PAT organisation override.
Path Parameters
Body
Abandon the resize the group has pending instead of asking for one: each server's definition goes back to the type it actually runs and its resize markers are cleared, with nothing drained or powered off. Use it for a resize that cannot land (a drain the PodDisruptionBudgets block, a disk the provider will not shrink). instance_type is not needed when this is true; a group with no pending resize answers 409.
Bypass PodDisruptionBudgets when draining each node before it is power-cycled. Off by default: a budget is a workload owner's stated availability requirement.
The new instance type for every node in the group. Changing it power-cycles each node, so the nodes are rolled in bounded lanes and each is drained before it goes down.
Response
Successful response
Which lane the request took: 'offline' rewrote a stopped cluster's plan, 'rolling' is the live one-controller-at-a-time path on a running cluster. It describes the lane, not whether work was dispatched - read operation_id for that.
offline, rolling The operation to poll, when the request dispatched one. Null whenever nothing was dispatched: on the offline lane, which applies the new size at the next cluster start (its own operation), and on either lane when the control planes already run the requested type (updated is 0). Decide whether to poll by testing operation_id for null, not by reading mode.