获取依赖映射 API [pact-broker]
Get dependency map API [pact-broker]
有没有办法从 Pact Broker 获取所有合约的完整依赖关系图(最好是 json 格式)?
图表中使用了一个 API 调用:https://<broker-url>/groups/<service>.csv
来获取数据来绘制图表,但这对解析来说不是很好,需要调用来查找所有服务,然后调用每个服务以获取依赖项。
最好能有一次调用 json 格式的完整依赖映射。
是的!代理内置了一个 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
这幅美丽的图画:
有没有办法从 Pact Broker 获取所有合约的完整依赖关系图(最好是 json 格式)?
图表中使用了一个 API 调用:https://<broker-url>/groups/<service>.csv
来获取数据来绘制图表,但这对解析来说不是很好,需要调用来查找所有服务,然后调用每个服务以获取依赖项。
最好能有一次调用 json 格式的完整依赖映射。
是的!代理内置了一个 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
这幅美丽的图画: