Utilizando o Plugin do Aria Automation para fazer chamadas REST API
Hoje vamos ver uma forma bem simples de obter informações do Automation a partir de workflows e actions do Orchestrator. Recentemente escrevi alguns artigos sobre como utilizar chamadas REST API no formato “tradicional”. Aquilo vale para qualquer sistema que possua API, enquanto aqui vou demonstrar como utilizar o plugin do Automation que já vem instalado e configurado por padrão no Orchestrator.
Uma observação rápida: para fins didáticos vamos esquecer dos prefixos de cada produção/solução e apenas chama-los de Automation para o VMware Aria Automation e Orchestrator para o VMware Aria Automation Orchestrator.
Booooora! Toda vez que realizemos uma implementação do Automation, automagicamente temos o Orchestrator junto, ele é um dos vários containers que rodam dentro das appliances do Automation. Além disso, se você acessar o Orchestrator e ir até o inventário, veja que já existe um plugin chamado vRealize Automation and Cloud Services apontando para o endereço do seu Automation. E é exatamente o uso deste plugin que vou demonstrar aqui.
Diferente das chamdas REST API tradicionais que podem precisar de autenticação (tokens e etc), este plugin já está autenticado, então você pode simplesmente fazer as chamadas que deseja. Existem duas formas de utiliza-lo, a primeira é com o uso dos namespaces. Você encontrará uma variedade de opções e os detalhes de cada um podem ser encontrados na API Explorer navegando até o plugin do Automation. No exemplo abaixo eu listo todos os projetos existentes no Automation.
var host = VraHostManager.defaultHostData; var allprojects = VraEntitiesFinder.getProjects(host); for (i = 0; i < allprojects.length; i++) { System.log(allprojects[i].name); }
A outra forma de utilizar este plugin é um pouco mais parecida com as chamadas REST API tradicionais, onde fazemos uso dos namespaces, mas além disso, precisamos informar a URL e o método (GET, POST, etc). O resultado final é identico ao anterior, apenas a forma de obtê-lo é que mudou.
var host = VraHostManager.defaultHostData.createRestClient(); var request = host.createRequest("GET","/iaas/api/projects"); var response = host.execute(request); var content = JSON.parse(response.contentAsString); content = content.content; for (i = 0; i < content.length; i++) { System.log(content[i].name); }
Existem casos de uso para cada uma das formas que mencionei acima, mas particularmente eu prefiro a segunda, pois acredito ter mais opções disponíveis.
Ah, apenas a título de curiosidade, abaixo compartilho um exemplo de como obter a mesma informação usando REST API da forma tradicional. Observem a variável bearerToken que trás justamente o bearer token do vRA diretamente de outro workflow.
var host = RESTHostManager.getHost("2de4e37a-629a-4d5c-b190-03bc61f0be7c"); var request = host.createRequest("GET","/iaas/api/projects"); request.contentType = "application/json"; request.setHeader("Authorization", bearerToken); var response = request.execute(); var content = JSON.parse(response.contentAsString); content = content.content; for (i = 0; i < content.length; i++) { System.log(content[i].name); }
É isso, pessoal. Até a próxima!