Exemplo de como utilizar chamadas REST API no vRealize Automation 8.x

Exemplo de como utilizar chamadas REST API no vRealize Automation 8.x

Recentemente escrevi um artigo mostrando alguns exemplos de como utilizar chamadas API nas actions do vRealize Automation 8.x com Python e como vimos, foi necessário configurar um environment no vRO para instalarmos alguns requisitos e por este motivo alguns clientes preferem utilizar o Javascript, visto que a maioria das coisas são nativas. Dito isso, vamos ver um exemplo de como fazer chamadas REST API utilizando Javascript. 

Lembrando que para nos autenticarmos no vRA, ou seja, a partir do vRO utilizarmos recursos do vRA por meio da API, é necessário primeiro obtermos o refresh token e com isso geramos o bearer token.

O primeiro passo é criar um workflow e adicionarmos os inputs para o vRA REST host e credenciais do vRA. Como output teremos apenas o bearer token. A unica variável será o refresh token. Veja aqui como adicionar um REST Host no vRO.

Agora vamos adicionar duas scriptable tasks: uma chamada de refresh_token e outra bearer_token. Começando pelo código do refresh_token. Lembre-se de adicionar os inputs e outputs de acordo com o campo reference das imagens acima.

var operation = "/csp/gateway/am/api/login?access_token";
var method = "POST";
var body = {username: vraUser, password: vraPass};
var request = vraRestHost.createRequest(method, operation, JSON.stringify(body));
request.contentType = "application/json";

var response = request.execute();
var content = JSON.parse(response.contentAsString);
refreshToken = content.refresh_token;

//System.log(response.statusCode); //log
//System.log(token); //log

E agora o código do bearer_token. Apenas reforçando: lembre-se de adicionar os inputs e outputs de acordo com o campo reference das imagens acima.

var operation = "/iaas/api/login";
var method = "POST";
var body = {"refreshToken": refreshToken};
var request = vraRestHost.createRequest(method, operation, JSON.stringify(body));
request.contentType = "application/json";

var response = request.execute();
var content = JSON.parse(response.contentAsString);

bearerToken = content.tokenType + " " + content.token;

//System.log(response.statusCode); //log
//System.log(bearerToken); //log

Antes de continuarmos, execute o workflow para garantir que está funcionando corretamente. Insira as informações básicas configuradas no input e valide que o output bearerToken está com o valor do token.

Se tudo estiver correto, então podemos seguir para o próximo workflow. Basicamente o que fizemos aqui foi criar um workflow para se autenticar no vRA, neste caso, o próximo passo é passar esta autenticação (bearerToken) para o workflow que irá executar alguma ação no vRA via API. Neste exemplo, vamos criar um workflow para listar todos os deplyoments do vRA.

Vamos começar criando um novo workflow. Dentro dele, adicione um workflow elements e aponte para o workflow de autenticação que criamos anteriormente (aqui chamei de Get vRA Token – Policy JS). Promova os inputs e outputs como variáveis e defina os valores. Este é um ponto importante, visto que não queremos enviar informações de vRA REST host, usuário e senha em toda a execução.

Atente-se ao fato de que o output vraDeployment é um array.

Agora vamos criar uma scriptable task e chamar de get-deployment. Lembre-se de adicionar os inputs e outputs de acordo com o campo reference das imagens acima. E agora vamos ao código:

var operation = "/deployment/api/deployments";
var method = "GET";
var request = vraRestHost.createRequest(method, operation);
request.contentType = "application/json";
request.setHeader("Authorization", bearerToken);

var response = request.execute();
var content = JSON.parse(response.contentAsString);
//System.log(response.statusCode); //log

var result = [];
for (var i = 0; i < content.content.length; i++) {
    //System.log(content.content[i].name); //log
    result.push(content.content[i].name);
}

vraDeployments = result;

Agora vem a parte fácil, apenas executar o workflow 🙂

Além do óbvio status completed, queremos que o nome dos deployments do vRA sejam listados no output vraDeployment.  

Aproveitando, quero compartilhar também um exemplo de como se autenticar no NSX-T e no vCenter, primeiro passo usar a API no vRA/vRO.

vCenter Server

var host = RESTHostManager.getHost(vcenterHost);
var authParams = ["Shared Session", vcenterUser, vcenterPass];
var authObject = RESTAuthenticationManager.createAuthentication("Basic", authParams);
host.authentication = authObject;
var request = host.createRequest("POST", "/api/session");
var response = request.execute();
var content = JSON.parse(response.contentAsString);
var token = content;

NSX-T

var authParams = ["Shared Session", nsxUser, nsxPass];
var authObject = RESTAuthenticationManager.createAuthentication("Basic", authParams);
nsxHost.authentication = authObject;
var request = nsxHost.createRequest("POST", "/api/v1/aaa/registration-token");
var response = request.execute();
var content = JSON.parse(response.contentAsString);
var token = content.token;

É isso aí, pessoal. Até a próxima!

Apenas para esclarecer: VMware Aria Automation é o novo nome do vRealize Automation. Aqui, para fins didáticos, continuo utilizando o termo vRA.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *