Партиции в API
Все операции с DNS-зонами и записями в API elles-dns-api требуют явного или неявного указания партиции — раздела Active Directory, в котором хранится объект. Партиция определяет логическое пространство размещения зоны или записи.
Способы указания партиции
Поддерживается четыре типа партиций, задаваемых через параметр partition в URL-запросе:
| Тип партиции | Параметры запроса | Описание |
|---|---|---|
Домен (domain) |
|
Стандартная партиция домена ( |
Лес (forest) |
|
Стандартная партиция леса ( |
Устаревшая (legacy) |
|
Устаревшая партиция Windows 2000 ( |
Пользовательская (custom) |
|
Обязательно требует два параметра: |
Особенности работы с пользовательскими партициями
Для работы с пользовательскими партициями необходимо обязательно передавать два параметра:
-
partition=custom— тип партиции; -
partitionName=<имя>— имя конкретной партиции.
Чтобы узнать имя партиции, используйте запрос:
curl -k --negotiate -u : \
"https://server:9443/api/v1/dns/partitions" | jq
Примеры использования параметров в запросе:
-
стандартная партиция — достаточно
partition:curl -k --negotiate -u : \ "https://server:9443/api/v1/dns/zone/example.com?partition=domain" -
пользовательская партиция — обязательно
partition=customиpartitionName=<имя>:curl -k --negotiate -u : \ "https://server:9443/api/v1/dns/zone/example.com?partition=custom&partitionName=MyAppPartition"
Пример на Python (requests):
import requests
base_url = "https://server:9443/api/v1/dns"
# Стандартная партиция
response = requests.get(
f"{base_url}/zone/example.com",
params={"partition": "domain"}
)
# Пользовательская партиция
response = requests.get(
f"{base_url}/zone/example.com",
params={
"partition": "custom",
"partitionName": "MyAppPartition"
}
)
Автоматический выбор партиции (disambiguation)
Если параметр partition не указан, сервер выполняет поиск зоны или записи во всех доступных партициях:
-
0 совпадений → возвращается
404 Not Found; -
1 совпадение → операция выполняется успешно;
-
≥2 совпадений → возвращается
409 Conflictс деталями в теле ответа, содержащем список доступных партиций.
Пример ответа при конфликте:
{
"error": "zone exists in multiple partitions, explicit partition selection is required",
"code": 409,
"request_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"details": {
"availablePartitions": ["domain", "forest"]
}
}
Для операций, требующих однозначности, всегда рекомендуется явно указывать partition, чтобы избежать ошибок конфликта и повысить предсказуемость.
|
При создании зоны параметр directoryPartition в теле запроса определяет, в какую партицию будет помещена новая зона. При обновлении, удалении или чтении записи партиция должна быть указана явно, если зона существует в нескольких разделах.
Обновлено: