Приложение 4. Руководство по API
Методы¶
1. cluster-add¶
Метод добавления кластера с изначальным статусом disable (для включения кластера используется метод cluster-enable). Пароль учетной записи хранится в ГИ в зашифрованном виде.
Запрос:
{
"jsonrpc": "2.0",
"method": "cluster-add",
"params": {
"name": "q7",
"url": "https://mgmtvm.q7.z.vstack.com",
"username": "Federation_User",
"password": "YD4Bt..."
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Ответ:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"message": "The cluster has been successfully added"
}
}
2. cluster-enable¶
Метод включения кластера в ГИ vStack.
Метод также выполняет синхронизацию кластера с ГИ в фоновом процессе после получения ответа. Если синхронизация завершится успешно, кластер получит нужную инкарнацию и будет участвовать в ГИ, иначе останется включенным без актуальной инкарнации и будет ограничен/проигнорирован при дальнейшей работе с ГИ до момента пока его инкарнация не будет доведена до актуальной.
id - идентификатор кластера.
Запрос:
{
"jsonrpc": "2.0",
"method": "cluster-enable",
"params": {
"id": "59ece709-5731-4fe8-88aa-682633e53a3a"
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Ответ:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"message": "Cluster enabled"
}
}
3. federation-overview¶
Метод для получения информации о ГИ и кластерах.
Поле data -> clusters_info -> cluster_id -> enabled указывает, что кластер включен и может быть использован ГИ.
Посмотреть состояние синхронизации кластера можно в структуре data -> clusters_info -> cluster_id -> sync:
- completed - статус последней синхронизации. true - успешно, false - возникла проблема, null - кластер еще ни разу не был включен в ГИ.
- incarnation - индивидуальная инкарнация кластера. При добавлении кластера по дефолту 0.
- notice - дополнительная текстовая строка состояния синхронизации в текущем времени, может быть null.
- operated_now - статус выполнения синхронизации в текущий момент времени. true - выполняется сейчас, false- не выполняется сейчас.
- updated_ts - временная метка последнего обновления информации по синхронизации этого кластера. null - если кластер ни разу не синхронизировался.
Поле data -> federation_info -> incarnation указывает на текущую актуальную инкарнацию ГИ. Кластера должны достигнуть этого значения, чтобы синхронизироваться.
Запрос:
Ответ:
{
"jsonrpc": "2.0",
"id": "fac00476-19fa-4661-be47-0ab07a554b37",
"result": {
"code": 1,
"data": {
"clusters_info": {
"44a839bc-6b25-4b77-a277-1b749b617c79": {
"1": {
"cores": 138,
"node_cpu_cores": 40,
"node_name": "q7u001.z.vstack.com",
"node_ram": 68719476736,
"pools": [
{
"capacity_pct": 41,
"consuming": 1,
"guid": "2683667900545383255",
"name": "z01",
"provisioned_pct": 295
}
],
"ram": 75,
"utilization_cores_pct": "0.95",
"utilization_ram_pct": "42.62"
},
"2": {
"cores": 75,
"node_cpu_cores": 40,
"node_name": "q7u002.z.vstack.com",
"node_ram": 68719476736,
"pools": [
{
"capacity_pct": 32,
"consuming": 1,
"guid": "6464944238762320705",
"name": "z05",
"provisioned_pct": 446
}
],
"ram": 58,
"utilization_cores_pct": "2.35",
"utilization_ram_pct": "13.77"
}
"enabled": true,
"sync": {
"completed": false,
"incarnation": 832,
"notice": null,
"operated_now": false,
"updated_ts": 1714163835
}
},
"fefa5efe-73c9-11ed-8409-c38eafb91e77": {
"1": {
"cores": 0,
"node_cpu_cores": 40,
"node_name": "q9u001.z.vstack.com",
"node_ram": 35433480192,
"pools": [
{
"capacity_pct": 52,
"consuming": 1,
"guid": "14523019082101348142",
"name": "z03",
"provisioned_pct": 359
}
],
"ram": 0,
"utilization_cores_pct": "0.07",
"utilization_ram_pct": "0.61"
},
"2": {
"cores": 95,
"node_cpu_cores": 20,
"node_name": "q9u002.z.vstack.com",
"node_ram": 35433480192,
"pools": [
{
"capacity_pct": 26,
"consuming": 1,
"guid": "9286176334769597033",
"name": "z04",
"provisioned_pct": 373
}
],
"ram": 48,
"utilization_cores_pct": "0.35",
"utilization_ram_pct": "29.51"
},
"enabled": true,
"sync": {
"completed": false,
"incarnation": 13800,
"notice": null,
"operated_now": false,
"updated_ts": null
}
}
},
"federation_info": {
"id": "37ac33b4-1edc-442c-8f38-c7a969a42003",
"incarnation": 13800,
"name": "Federation"
}
}
}
}
4. cluster-crosscheck¶
Метод проверки синхронизации кластеров.
Параметр cluster_id опционален. При отсутствии cluster_id будет выполнена проверка всех включенных в ГИ vStack кластеров.
Запрос:
{
"jsonrpc": "2.0",
"method": "cluster-crosscheck",
"params": {
"id": "44a839bc-6b25-4b77-a277-1b749b617c79"
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Ответ:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"44a839bc-6b25-4b77-a277-1b749b617c79": {
"reports": {
// Назначения сетей в vDC
"assign": {
// `true` если проблемных обьектов назначений сетей
// в `missing` и `sync_diff` нет
"success": false,
// OPTIONAL (обьекты назначений сетей которые были удалены локально на кластере без участия федерации)
"missing": [
{
"global_net_id": 851,
"global_vdc_id": 1,
"local_net_id": 96608,
"local_vdc_id": 2116
},
{
"global_net_id": 762,
"global_vdc_id": 1,
"local_net_id": 96483,
"local_vdc_id": 2116
}
],
// OPTIONAL (Обьекты назначений сетей которые требуют синхронизации в федерации, см. метод `cluster-enable`)
"sync_diff": [
{
"global_net_id": 4676,
"global_vdc_id": 1
},
{
"global_net_id": 4721,
"global_vdc_id": 1
},
],
// Временная метка состояния кластера
"ts": 1715523519
},
// Сети
"nets": {
// OPTIONAL (обьекты сетей которые были удалены локально на кластере без участия федерации)
"missing": [
{
"global_net_id": 1971,
"local_net_id": 4354
},
{
"global_net_id": 1972,
"local_net_id": 4090
}
],
// OPTIONAL (Обьекты сетей которые требуют синхронизации в федерации, см. метод `cluster-enable`)
"sync_diff": [
{
"global_net_id": 4676,
"local_net_id": 2353
},
{
"global_net_id": 4721,
"local_net_id": 6892
},
],
// `true` если проблемных обьектов сетей
// в `missing` и `sync_diff` нет
"success": false,
// Временная метка состояния кластера
"ts": 1715523519
},
// vDC
"vdc": {
// OPTIONAL (обьекты vDC которые были удалены локально на кластере без участия федерации)
"missing": [
{
"global_vdc_id": 3,
"local_vdc_id": 241
},
{
"global_vdc_id": 5,
"local_vdc_id": 456
}
],
// OPTIONAL (Обьекты vDC которые требуют синхронизации в федерации, см. метод `cluster-enable`)
"sync_diff": [
{
"global_vdc_id": 4676,
"local_vdc_id": 3
},
{
"global_vdc_id": 4721,
"local_vdc_id": 5
},
],
// `true` если проблемных обьектов vDC
// в `missing` и `sync_diff` нет
"success": false,
// Временная метка состояния кластера
"ts": 1715523519
}
}
}
}
}
}
5. cluster-disable¶
Метод отключения кластера из ГИ.
id - идентификатор кластера.
Запрос:
{
"jsonrpc": "2.0",
"method": "cluster-disable",
"params": {
"id": "59ece709-5731-4fe8-88aa-682633e53a3a"
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Ответ:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"message": "Cluster disabled"
}
}
6. cluster-remove¶
Метод удаления кластера из ГИ.
Для успешного удаления требуется отсутствие любых объектов ГИ в данном кластере.
id - идентификатор кластера (UUID).
Запрос:
{
"jsonrpc": "2.0",
"method": "cluster-remove",
"params": {
"id": "cbf4478c-84b5-45ac-97cd-0390d714698a"
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Ответ: