Получить API карты зависимостей [pact-broker]

Есть ли способ получить полную карту зависимостей всех контрактов от Pact Broker (желательно в формате json)?

В графике используется вызов API: https://<broker-url>/groups/<service>.csv для получения данных для построения графика, но он не подходит для синтаксического анализа и требует вызова для поиска всех служб, а затем вызова каждой службы для получения зависимостей.

Было бы неплохо иметь один вызов с полной картой зависимостей в формате json.


person Ilya B.    schedule 13.06.2018    source источник


Ответы (1)


Да! В брокер встроен браузер HAL, который позволяет вам программно следить за графиком.

Например, вы можете запустить такой запрос и отфильтровать с jq нужное вам подмножество свойств и изменить порядок вывода:

curl -v -u 'dXfltyFMgNOFZAxr8io9wJ37iUpY42M:O5AIZWxelWbLvqMd8PkAVycBJh2Psyg1' https://test.pact.dius.com.au/pacts/latest | jq '.pacts[]._embedded | select(.consumer.name | contains("AWSSummiteer")) | .consumer.name + "->" + .provider.name'

Что дает что-то вроде:

"AWSSummiteerSentimentSNSProvider->AWSSummiteerTwitterSNSProvider"
"AWSSummiteerTwitterSNSConsumer->AWSSummiteerTwitterSNSProvider"
"AWSSummiteerTwitterSNSProvider->Twitter"
"AWSSummiteerWeb->AWSSummiteerIoT"
"AWSSummiteerWeb->AWSSummiteerIoTPresignedUrl"
"AWSSummiteerWeb->AWSSummiteerSentimentSNSProvider"
"AWSSummiteerWeb->AWSSummiteerTwitterSNSConsumer"
"AWSSummiteerWeb->AWSSummiteerWeb"

которые вы можете передать в graphviz для создания красивых диаграмм, но, конечно, вы можете перевести это в любой формат, который вам нравится.

Вот полная визуализация graphviz:

echo "digraph { ranksep=3; ratio=auto; overlap=false; node [  shape = plaintext, fontname = "Helvetica" ];" > latest.dot ; curl -v -u 'dXfltyFMgNOFZAxr8io9wJ37iUpY42M:O5AIZWxelWbLvqMd8PkAVycBJh2Psyg1' https://test.pact.dius.com.au/pacts/latest | jq '.pacts[]._embedded | select(.consumer.name | contains("AWSSummiteer")) | .consumer.name + "->" + .provider.name' | tr -d '"' |  sed 's/-/_/g' | sed 's/_>/->/g' >> latest.dot; echo "}" >> latest.dot
dot latest.dot -otest.png -Tpng

что создает эту красивую картинку:

Пустая архитектура

person Matthew Fellows    schedule 14.06.2018