Поиск VM с одинаковыми MAC-адресами с помощью API

Чтобы сравнить MAC-адреса и найти среди них одинаковые потребуются дополнительные инструменты.

MAС-адреса отображаются в XML-представлениях каждой из VM и вложены в XML-объекты NetworkConnectionSectionNetworkConnectionMACAddress. Чтобы получить список MAC-адресов, необходимо запросить список VM, а затем поочередно отправлять GET-запросы на URL каждой из VM и извлекать соответствующий MAC-адрес.

Есть разные способы решения задач такого типа, например, разработка скрипта на Python. В этом документе предложен другой вариант решения задачи, для реализации которого вам понадобится только Postman и Excel (или другой подходящий инструмент).

Postman: аутентификация

Пройдите аутентификацию, если вы еще не сделали этого. При создании следующих запросов на вкладках Headers и Authorization должны быть актуальные версия API и токен.

Примечание

После повторной аутентификации актуализируйте версию API и токен в сохраненных запросах.

Postman: создание запроса списка VM

  1. Создайте GET-запрос для вывода списка VM:

    GET https:// { SITE } /api/query?type = vm & fields = name & filter = isVAppTemplate == false
    • {SITE} — зависит от региона, в котором размещается ваш виртуальный ЦОД. Он отображается в ссылке на VMware Cloud Director https://{SITE}/tenant/my-tenant/. Ее мы отправляем при подключении услуги. Например, для региона PD01 параметр {SITE} принимает значение vcd01-01.cloud.ru, для PD11 — vcd11-01.cloud.ru.

    • type=vm — список VM.

    • fields=name — для каждой VM отображаются только атрибут name.

    • filter=isVAppTemplate==false — отображаются только развернутые VM, а шаблоны VM отфильтровываются.

  2. На вкладке Test добавьте скрипт:

    var jsonObject = xml2Json ( responseBody );
    var length = jsonObject . QueryResultRecords . VMRecord . length ;
    pm . environment . set ( "length" , length );
    for ( var counter = 0 ; counter < length ; counter ++ ) {
    pm . environment . set ( "vm-id-" + [ counter ], jsonObject . QueryResultRecords . VMRecord [ counter ]. $ . href )
    }
    console . log ( "VM Num" , length );

    Это скрипт:

    • Считывает ответ сервера.

    • Сохраняет URL всех VM в переменные в разделе Environments.

    • Выводит на консоль количество VM.

  3. Нажмите Save → Save As ….

  4. В поле Request name укажите название запроса, например «Request-VM-List».

  5. В поле Select a collection or folder to save to: нажмите + Create Collection и укажите название коллекции, например «First Request».

  6. Нажмите Save/Save to ….

Сохраненный запрос появится в разделе Collections в указанной коллекции.

Примечание

Если вы сохранили запрос, а потом авторизовались заново, актуализируйте версию API и токен на вкладках Headers и Authorization.

Postman: создание запроса MAC-адресов VM

  1. Создайте GET-запрос c переменной {{vm-id}} вместо URL.

    GET {{ vm-id }}
  2. На вкладке Pre-request Script добавьте скрипт:

    var input_data = pm . iterationData . get ( "value" );
    pm . environment . set ( "vm-id" , pm . environment . get ( "vm-id-" + input_data ))

    Этот скрипт считывает значение из входного CSV-файла перед отправкой запроса. На основе данных из CSV-файла скрипт меняет {{vm-id}} на URL VM.

    URL всех VM хранятся в переменных в разделе Environments после выполнения первого запроса. Скрипт берет URL из этих переменных.

  3. На вкладке Test добавьте скрипт:

    var jsonObject = xml2Json ( responseBody );
    var length = jsonObject . Vm . NetworkConnectionSection . NetworkConnection . length ;
    if ( length == undefined ) {
    console . log ( jsonObject . Vm . NetworkConnectionSection . NetworkConnection . MACAddress , "," , jsonObject . Vm . $ . name );
    }
    else {
    for ( var counter = 0 ; counter < length ; counter ++ ) {
    console . log ( jsonObject . Vm . NetworkConnectionSection . NetworkConnection [ counter ]. MACAddress , "," , jsonObject . Vm . $ . name );
    }
    }

    Этот скрипт:

    • Считывает ответ сервера.

    • Выводит на консоль MAC-адрес и название VM. Если VM подключена к нескольким сетям, у нее может быть несколько MAC-адресов. На консоль выводятся все MAC-адреса VM.

  4. Нажмите Save → Save As ….

  5. В поле Request name укажите название запроса, например «Request-MAC».

  6. В поле Select a collection or folder to save to: нажмите + Create Collection и укажите название коллекции, например «Second Request».

  7. Нажмите Save/Save to ….

Сохраненный запрос появится в разделе Collections в указанной коллекции.

Примечание

Если вы сохранили запрос, а потом прощли аутентификацию заново, актуализируйте версию API и токен на вкладках Headers и Authorization.

Postman: запрос списка VM

  1. Откройте запрос списка VM в созданной ранее коллекции.

  2. Нажмите Send.

  3. Нажмите Console на нижней панели.

  4. Уточните количество VM, которое появится в консоли после выполнения запроса.

../../_images/s__first-req.png

Это значение необходимо для формирования CSV-файла.

Кроме вывода количества VM, скрипт сохраняет URL всех VM из списка в переменные. Чтобы посмотреть переменные, перейдите в раздел Environments и откройте ваше окружение.

../../_images/s__environment.png

Excel: создание CSV-файла со входными данными

  1. Откройте Блокнот, Excel или другой редактор, в котором можно создать CSV-файл.

  2. В первой ячейке/строке укажите «value».

  3. Под «value» укажите в столбец числа от 0 до (количество VM - 1). Например, если количество VM = 3, файл должен выглядеть так:

    ../../_images/s__csv-excel.png ../../_images/s__csv-note.png
  4. Сохраните файл в формате CSV.

Вы подготовили входные данные для серии запросов MAC-адресов VM.

Postman: запуск серии запросов MAC-адресов

  1. Нажмите на название коллекции с запросом MAC.

  2. Нажмите Run в окне коллекции сверху.

    ../../_images/s__run-sec-req.png
  3. Если ваши запросы хранятся в одной коллекции, уберите флаг из чекбокса запроса списка VM. Запускаться должен только запрос MAC-адресов.

  4. Нажмите Select File и выберите созданный ранее CSV-файл.

    В поле Iterations появится количество запусков запроса, что соответствует количеству VM. Данные из CSV-файла определяют, для какой VM отправляется очередной GET-запрос из серии.

  5. Нажмите Run….

    ../../_images/s__select-csv.png
  6. Нажмите Console на нижней панели.

  7. Ознакомьтесь со списком MAC-адресов. Для удобства просмотра нажмите на три точки сверху от консоли и выберите Hide Network.

    ../../_images/s__mac-list.png

Если MAC-адресов много и невозможно быстро определить, какие их них одинаковые, перейдите к следующему шагу.

Excel: поиск одинаковых MAC-адресов

Рассмотрим вариант поиска через Excel. Вы можете воспользоваться любым инструментом, который подходит для решения этой задачи.

  1. Скопируйте список MAC-адресов из консоли Postman в Excel.

  2. Отделите MAC-адрес от названия VM.

    • Выделите список.

    • В меню сверху нажмите Данные → Текст по столбцам.

    • Выберите «с разделителем» и нажмите Далее.

    • Выберите «запятая» и нажмите Далее. В предложенных скриптах настроен вывод на консоль в формате <MAC>,<,>,<VM name> с разделителем «запятая». Если в вашем варианте скрипта другой разделитель, укажите его.

    • Нажмите Готово.

    Названия VM отделятся от MAC-адресов и появятся в столбце справа.

  3. Преобразуйте данные в таблицу. Выделите полученные столбцы и в меню сверху нажмите Вставка → Таблица.

    Это необходимо, чтобы при дальнейшей сортировке сохранялась привязка MAC к названию VM.

  4. Отсортируйте столбец с MAC-адресами. Выделите МАС-адреса и в меню сверху нажмите Главная → Сортировка и фильтр → Сортировка от A до Я.

  5. Настройте автоматическое определение одинаковых MAC-адресов. Выделите МАС-адреса и в меню сверху нажмите Главная → Условное форматирование → Правила выделения ячеек → Повторяющиеся значения. Нажмите ОК.

Одинаковые значения MAC-адресов располагаются рядом и выделены цветом.

См.также

Полное описание конечных точек, методов и параметров запросов можно посмотреть по ссылке https://{SITE}/docs/.

Облако VMware