Поиск VM с одинаковыми MAC-адресами с помощью API
Чтобы сравнить MAC-адреса и найти среди них одинаковые потребуются дополнительные инструменты.
MAС-адреса отображаются в XML-представлениях каждой из VM и вложены в XML-объекты NetworkConnectionSection — NetworkConnection — MACAddress. Чтобы получить список MAC-адресов, необходимо запросить список VM, а затем поочередно отправлять GET-запросы на URL каждой из VM и извлекать соответствующий MAC-адрес.
Есть разные способы решения задач такого типа, например, разработка скрипта на Python. В этом документе предложен другой вариант решения задачи, для реализации которого вам понадобится только Postman и Excel (или другой подходящий инструмент).
Выполните следующие шаги:
Postman: аутентификация
Пройдите аутентификацию, если вы еще не сделали этого. При создании следующих запросов на вкладках Headers и Authorization должны быть актуальные версия API и токен.
После повторной аутентификации актуализируйте версию API и токен в сохраненных запросах.
Postman: создание запроса списка VM
Создайте 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 отфильтровываются.
На вкладке 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.
Принцип получения пути до объектаНажмите Save → Save As ….
В поле Request name укажите название запроса, например «Request-VM-List».
В поле Select a collection or folder to save to: нажмите + Create Collection и укажите название коллекции, например «First Request».
Нажмите Save/Save to ….
Сохраненный запрос появится в разделе Collections в указанной коллекции.
Если вы сохранили запрос, а потом авторизовались заново, актуализируйте версию API и токен на вкладках Headers и Authorization.
Postman: создание запроса MAC-адресов VM
Создайте GET-запрос c переменной {{vm-id}} вместо URL.
GET {{ vm-id }}На вкладке 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 из этих переменных.
На вкладке 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.
Нажмите Save → Save As ….
В поле Request name укажите название запроса, например «Request-MAC».
В поле Select a collection or folder to save to: нажмите + Create Collection и укажите название коллекции, например «Second Request».
Нажмите Save/Save to ….
Сохраненный запрос появится в разделе Collections в указанной коллекции.
Если вы сохранили запрос, а потом прощли аутентификацию заново, актуализируйте версию API и токен на вкладках Headers и Authorization.
Postman: запрос списка VM
Откройте запрос списка VM в созданной ранее коллекции.
Нажмите Send.
Нажмите Console на нижней панели.
Уточните количество VM, которое появится в консоли после выполнения запроса.

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

Excel: создание CSV-файла со входными данными
Откройте Блокнот, Excel или другой редактор, в котором можно создать CSV-файл.
В первой ячейке/строке укажите «value».
Под «value» укажите в столбец числа от 0 до (количество VM - 1). Например, если количество VM = 3, файл должен выглядеть так:
Сохраните файл в формате CSV.
Вы подготовили входные данные для серии запросов MAC-адресов VM.
Postman: запуск серии запросов MAC-адресов
Нажмите на название коллекции с запросом MAC.
Нажмите Run в окне коллекции сверху.
Если ваши запросы хранятся в одной коллекции, уберите флаг из чекбокса запроса списка VM. Запускаться должен только запрос MAC-адресов.
Нажмите Select File и выберите созданный ранее CSV-файл.
В поле Iterations появится количество запусков запроса, что соответствует количеству VM. Данные из CSV-файла определяют, для какой VM отправляется очередной GET-запрос из серии.
Нажмите Run….
Нажмите Console на нижней панели.
Ознакомьтесь со списком MAC-адресов. Для удобства просмотра нажмите на три точки сверху от консоли и выберите Hide Network.
Если MAC-адресов много и невозможно быстро определить, какие их них одинаковые, перейдите к следующему шагу.
Excel: поиск одинаковых MAC-адресов
Рассмотрим вариант поиска через Excel. Вы можете воспользоваться любым инструментом, который подходит для решения этой задачи.
Скопируйте список MAC-адресов из консоли Postman в Excel.
Отделите MAC-адрес от названия VM.
Выделите список.
В меню сверху нажмите Данные → Текст по столбцам.
Выберите «с разделителем» и нажмите Далее.
Выберите «запятая» и нажмите Далее. В предложенных скриптах настроен вывод на консоль в формате <MAC>,<,>,<VM name> с разделителем «запятая». Если в вашем варианте скрипта другой разделитель, укажите его.
Нажмите Готово.
Названия VM отделятся от MAC-адресов и появятся в столбце справа.
Преобразуйте данные в таблицу. Выделите полученные столбцы и в меню сверху нажмите Вставка → Таблица.
Это необходимо, чтобы при дальнейшей сортировке сохранялась привязка MAC к названию VM.
Отсортируйте столбец с MAC-адресами. Выделите МАС-адреса и в меню сверху нажмите Главная → Сортировка и фильтр → Сортировка от A до Я.
Настройте автоматическое определение одинаковых MAC-адресов. Выделите МАС-адреса и в меню сверху нажмите Главная → Условное форматирование → Правила выделения ячеек → Повторяющиеся значения. Нажмите ОК.
Одинаковые значения MAC-адресов располагаются рядом и выделены цветом.
Полное описание конечных точек, методов и параметров запросов можно посмотреть по ссылке https://{SITE}/docs/.
- Postman: аутентификация
- Postman: создание запроса списка VM
- Postman: создание запроса MAC-адресов VM
- Postman: запрос списка VM
- Excel: создание CSV-файла со входными данными
- Postman: запуск серии запросов MAC-адресов
- Excel: поиск одинаковых MAC-адресов