curl --request DELETE \
--url https://api.ornn.com/v1/orchestrator/controllers/{controller_id}/virtual-machines/{virtual_machine_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ornn.com/v1/orchestrator/controllers/{controller_id}/virtual-machines/{virtual_machine_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ornn.com/v1/orchestrator/controllers/{controller_id}/virtual-machines/{virtual_machine_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ornn.com/v1/orchestrator/controllers/{controller_id}/virtual-machines/{virtual_machine_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ornn.com/v1/orchestrator/controllers/{controller_id}/virtual-machines/{virtual_machine_id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.ornn.com/v1/orchestrator/controllers/{controller_id}/virtual-machines/{virtual_machine_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ornn.com/v1/orchestrator/controllers/{controller_id}/virtual-machines/{virtual_machine_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"controller_id": "44444444-4444-4444-8444-444444444444",
"virtual_machine_id": "66666666-6666-4666-8666-666666666666",
"state": "draining"
}Remove a VM worker
Starts removing a VM worker from an owned cluster. Workloads on it stop, and its local data can be lost. The 200 response with state draining means cleanup was sent, not finished. The cluster list reports host node_id values, not virtual_machine_id, so it cannot confirm removal of this VM by its ID. Repeating the request after the VM has left the cluster returns 404 virtual_machine_not_in_cluster. Confirm cleanup with Ornn before reusing the VM. Removing a worker does not cancel its reservation.
curl --request DELETE \
--url https://api.ornn.com/v1/orchestrator/controllers/{controller_id}/virtual-machines/{virtual_machine_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ornn.com/v1/orchestrator/controllers/{controller_id}/virtual-machines/{virtual_machine_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ornn.com/v1/orchestrator/controllers/{controller_id}/virtual-machines/{virtual_machine_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ornn.com/v1/orchestrator/controllers/{controller_id}/virtual-machines/{virtual_machine_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ornn.com/v1/orchestrator/controllers/{controller_id}/virtual-machines/{virtual_machine_id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.ornn.com/v1/orchestrator/controllers/{controller_id}/virtual-machines/{virtual_machine_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ornn.com/v1/orchestrator/controllers/{controller_id}/virtual-machines/{virtual_machine_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"controller_id": "44444444-4444-4444-8444-444444444444",
"virtual_machine_id": "66666666-6666-4666-8666-666666666666",
"state": "draining"
}Authorizations
Create an organization API key in Account Settings > Developer. Do not send this key to the Kubernetes API server.
Path Parameters
Cluster id returned by create or list; not a reservation ID.
An existing owned VM worker ID.
Response
VM removal started; draining and cleanup are asynchronous.
On a new addition, cleaning while Ornn prepares the host or joining when it attaches directly. On a repeated addition, the current membership state, such as joining or ready, or cleaning while preparation is still pending. On removal, draining.
Was this page helpful?