Skip to content

Приложение 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",
    "method": "federation-overview",
    "id": "571278b5-a002-49c9-8424-73c720f0dd8"
}

Ответ:

{
    "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"
}

Ответ:

{
    "jsonrpc": "2.0",
    "id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
    "result": {
        "code": 1,
        "message": "The cluster has been successfully removed"
    }
}