vCenter REST API - развертывание шаблона с параметрами сети - PullRequest
0 голосов
/ 27 февраля 2019

Я проснулся на инструменте php для развертывания шаблонов ovf из vCenter (vmWare) через CURL и JSON.Инструмент уже работает и успешно развертывает шаблон ovf.Моя проблема в том, что сетевые параметры полностью игнорируются.

Огромная информация в документальном фильме vmWare не помогает мне.Я думаю, что решение состоит в том, чтобы найти правильный "ключ" -интегратор.

Вот некоторые Dokus, которые я использовал:

Кроме того, мой поиск в Google не очень помог.

Мой текущий json-код:

    {
"deployment_spec": {
    "accept_all_EULA": true,
    "default_datastore_id": "datastore-30598",
    "network_mappings": [
    {
        "key": "4000",
        "value": "network-154"
    }
],
    "name": "AATest08"
},
"target": {
    "folder_id": "group-v5920",
    "host_id": "host-1934",
    "resource_pool_id": "resgroup-43"
}}

Я надеюсь, что кто-то может мне помочь.

1 Ответ

0 голосов
/ 15 марта 2019

Я не нашел никакого решения для этого случая.Обходной путь, который я использую сейчас, заключается в изменении сети после развертывания виртуальной машины.Если кто-то заинтересован в коде для изменения сети существующей виртуальной машины в vCenter с помощью API REST, я отправлю код ниже.

    function updateNetwork($IdFromTheVM, $NewNetworkID)
{
    $requestUrl = 'https://' . $yourVCenterHost . '/rest/vcenter/vm/' . $IdFromTheVM . '/hardware/ethernet/4000';

    $data = array(
        'spec' => array(
            'backing' => array(
                'type' => 'STANDARD_PORTGROUP',
                'network' => $NewNetworkID,
            )
        ));

    $dataJson = json_encode($data);

    $ch = curl_init();
    $header = array(
        'vmware-api-session-id: ' . $yourVCenterSessionID,
        'content-Type: application/json',
        'Accept: application/json'
    );
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $dataJson);
    curl_setopt($ch, CURLOPT_URL, $requestUrl);

    curl_exec($ch);
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($httpcode != 200){
        return false;
    }

    return true;

}
...