Settings

Settings that apply to the whole subsystem rather than to one object.

Settings

GET /ipvsDirector/settings

Returns the global settings for IPVSDirector.

curl
curl -X GET "https://appliance.example.com/api/v1/ipvsDirector/settings" \
  -H "Authorization: Bearer $TOKEN"
PHP
<?php

$url = 'https://appliance.example.com/api/v1/ipvsDirector/settings';
$headers = [
    'Authorization: Bearer ' . $token,
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests

headers = {"Authorization": f"Bearer {token}"}

response = requests.get("https://appliance.example.com/api/v1/ipvsDirector/settings", headers=headers)
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/ipvsDirector/settings', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${token}`,
  },
});

const data = await response.json();
Response
{
  "status": "success",
  "message": "Settings retrieved successfully",
  "data": {
    "checkInterval": 5,
    "checkTimeout": 3,
    "failureCount": 2,
    "quiescent": false,
    "autonatInterface": "",
    "autonatRestrict": "none",
    "autonatSubnet": ""
  }
}

PUT /ipvsDirector/settings

Set IPVS Director Settings negotiateTimeout, tcpFinTimeout and udpTimeout were removed: they were validated and stored, and never applied. Connection state timeouts are appliance-wide rather than Layer 4 settings and live on system/conntrack; there were never any negotiate health checks to time out, since Layer 4 health checks are external programs timed by checkTimeout. Sending them is harmless — they are ignored.

This change is staged. Send PUT /services/apply to apply it.

Body parameters
checkInterval integer default: "5"

Time in seconds between health checks.

checkTimeout integer default: "3"

Time in seconds before a health check is aborted.

failureCount integer default: "2"

The number of failures before a real server is marked down.

quiescent boolean default: "false"

Drain instead of Halting Real Servers that fail health checks.

autonatInterface string

Interface whose outgoing traffic has its source address rewritten, so a Real Server using this appliance as its gateway can reach a network beyond it. Empty turns autonat off. The interface need not exist yet: the rule matches on the name and does nothing until a device of that name appears.

autonatRestrict default: "none" none | real_servers | subnet | exclude_local

Which traffic leaving the interface is rewritten. none is everything; real_servers only traffic from a Real Server the load balancer holds; subnet only traffic from autonatSubnet; exclude_local everything except traffic this appliance originates. A restriction narrows what is rewritten and never where traffic goes.

autonatSubnet string

Source prefix in CIDR notation, required when autonatRestrict is subnet and refused otherwise. Its address family also selects which table the rule is written to.

curl
curl -X PUT "https://appliance.example.com/api/v1/ipvsDirector/settings" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "checkInterval": "5",
  "checkTimeout": "3",
  "failureCount": "2",
  "quiescent": "false",
  "autonatInterface": "<autonatInterface>",
  "autonatRestrict": "none",
  "autonatSubnet": "<autonatSubnet>"
}'
PHP
<?php

$url = 'https://appliance.example.com/api/v1/ipvsDirector/settings';
$headers = [
    'Authorization: Bearer ' . $token,
    'Content-Type: application/json',
];

$payload = [
    'checkInterval' => '5',
    'checkTimeout' => '3',
    'failureCount' => '2',
    'quiescent' => 'false',
    'autonatInterface' => '<autonatInterface>',
    'autonatRestrict' => 'none',
    'autonatSubnet' => '<autonatSubnet>',
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'PUT',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => json_encode($payload),
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python
import requests

headers = {"Authorization": f"Bearer {token}"}
payload = {
    "checkInterval": "5",
    "checkTimeout": "3",
    "failureCount": "2",
    "quiescent": "false",
    "autonatInterface": "<autonatInterface>",
    "autonatRestrict": "none",
    "autonatSubnet": "<autonatSubnet>"
}

response = requests.put("https://appliance.example.com/api/v1/ipvsDirector/settings", headers=headers, json=payload)
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch('https://appliance.example.com/api/v1/ipvsDirector/settings', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${token}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "checkInterval": "5",
  "checkTimeout": "3",
  "failureCount": "2",
  "quiescent": "false",
  "autonatInterface": "<autonatInterface>",
  "autonatRestrict": "none",
  "autonatSubnet": "<autonatSubnet>"
}),
});

const data = await response.json();
Response
{
  "status": "success",
  "message": "Settings updated successfully",
  "data": []
}