Поиск 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/.