Как фильтровать виртуальных гостей с помощью тегов A и B с помощью Softlayer API

#filter #ibm-cloud-infrastructure

#Фильтр #ibm-cloud-инфраструктура

Вопрос:

Я добавил теги к своим виртуальным гостям, например, я добавил тег A в VM1 и добавил тег A и B в VM2, я знаю, как получить все виртуальные машины с тегом A:

https://api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests.json?objectMask=mask[tagReferences[tag[name]]]amp;objectFilter={"virtualGuests":{"tagReferences":{"tag":{"name":{"operation":"*=A"}}}}}

Но я не уверен, как фильтровать виртуальные машины с помощью тегов A и B. Есть ли образец для справки. Спасибо.

Ответ №1:

попробуйте:

 URL : https://$USERNAME:$APIKEY@api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests?objectFilter={"virtualGuests":{"tagReferences":{"tag":{"name":{"operation":"in","options":[{"name":"data","value":["$tag1","$tag2"]}]}}}}}

Method: GET

Note: replace $tag1 and $tag2 with the tags you wish 
  

Комментарии:

1. Хорошо, проблема в том, что объектный фильтр не применяется, вероятно, для используемого вами клиента REST (некоторым клиентам необходимо включить objectFilter) Я рекомендую вам попробовать с клиентами Insomi или Postman

2. Я просто запускал команды из браузера, я могу заставить его работать с одним тегом, выполнив команду из браузера.

3. Да, я также запустил его через Chrome, сегодня я попробовал это с postman, в результате, похоже, все виртуальные машины имеют отношение ИЛИ к тегу A и тегу B, но не отношение И . Как вы думаете, правильно ли «in» для «operation» или что-то еще? Спасибо.

4. текущий результат — это лучшее, что вы можете получить с помощью objectFilter, если вам нужен другой случай, вам нужно использовать свой собственный код для фильтрации данных

5. Хорошо, вы имеете в виду, что можно фильтровать только виртуальные машины с тегом A ИЛИ тегом B, но невозможно фильтровать виртуальные машины, которые должны иметь как тег A, так и тег B, верно? Спасибо.