- tocdepth
2
Поиск 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 Directorhttps://{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.
Принцип получения пути до объекта
На вкладке Test запросите вывод всего Body ответа:
var jsonObject = xml2Json(responseBody); console.log(jsonObject);
Отправьте запрос.
Нажмите Console на нижней панели.
Поочередно раскрывайте объекты, пока не найдете то, что вам нужно.
Например, чтобы найти URL определенной VM, нужно раскрыть QueryResultRecords, первый элемент массива VMRecord и $. Искомый URL указана в атрибуте
href
.Допишите к jsonObject через точки все пройденные объекты. В примере выше путь будет выглядеть так: jsonObject.QueryResultRecords.VMRecord[1].$.href.
Нажмите
.В поле 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.
Нажмите
.В поле 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, которое появится в консоли после выполнения запроса.
![../../_images/s__first-req.png](../../_images/s__first-req.png)
Это значение необходимо для формирования CSV-файла.
Кроме вывода количества VM, скрипт сохраняет URL всех VM из списка в переменные. Чтобы посмотреть переменные, перейдите в раздел Environments и откройте ваше окружение.
![../../_images/s__environment.png](../../_images/s__environment.png)
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-адресами. Выделите МАС-адреса и в меню сверху нажмите
.Настройте автоматическое определение одинаковых MAC-адресов. Выделите МАС-адреса и в меню сверху нажмите ОК.
. Нажмите
Одинаковые значения MAC-адресов располагаются рядом и выделены цветом.
См.также
Полное описание конечных точек, методов и параметров запросов можно посмотреть по ссылке https://{SITE}/docs/
.
Была ли статья полезной?
для Dev & Test