Ansible: Não é possível renderizar JSON no Ansible e POST via módulo uri

Criado em 26 nov. 2015  ·  3Comentários  ·  Fonte: ansible/ansible

Tipo de problema : relatório de bug
Versão Ansible : 1.9.4
Ambiente : OSX 10.11.1

Resumo : Usar lookup para renderizar um modelo que é passado para o parâmetro uri módulo body não funciona. Ele lança um erro de TypeError: unhashable type . Abri uma pergunta StackOverflow sobre isso e achei que faria sentido postá-la aqui também.

Passos para reproduzir :

Execute esta tarefa:

- name: Post
  uri:
    url: https://hooks.slack.com/endpoint
    method: POST
    return_content: no
    HEADER_Content-Type: "application/json"
    body: "{{ lookup('template', '../templates/my.json.j2', convert_data=False) }}"

com isso em my.json.j2 :

{
  "channel": "chatops",
  "username": "Deploy",
  "text": "TEST Deploy!",
  "icon_emoji": ":ghost:"
}

Dobrar o JSON em uma única linha dentro do modelo tem o mesmo efeito. Canalizar a resposta lookup por meio de to_json também não funciona. Pegar o JSON dobrado e usá-lo _diretamente_ na peça funciona, no entanto.

Resultado esperado : JSON adequado enviado ao endpoint

Resultado real : TypeError: unhashable type erro; também, em certas circunstâncias, um erro not valid JSON é retornado pelo endpoint, o que indica que os dados não estão sendo enviados corretamente.

Comentários muito úteis

Isso foi corrigido no 2.0: basta adicionar _body_format: json_ ao módulo uri (e remover _convert_data = False_)
Além disso, você não precisa definir o cabeçalho Content-Type ao definir body_format para json.

Todos 3 comentários

Informações da lista

Oi!

Muito obrigado pelo seu interesse no Ansible. Sinceramente, significa muito para nós.

Esta parece ser uma pergunta do usuário, e gostaríamos de direcionar esse tipo de coisa para a lista de discussão ou para o canal IRC.

Se você puder passar por aí, nós agradeceríamos. Isso nos permite manter o rastreador de problemas para bugs, solicitações de pull, RFEs e similares.

Obrigado mais uma vez e esperamos vê-lo na lista ou IRC. Obrigado!

Isso foi corrigido no 2.0: basta adicionar _body_format: json_ ao módulo uri (e remover _convert_data = False_)
Além disso, você não precisa definir o cabeçalho Content-Type ao definir body_format para json.

Esta página foi útil?
0 / 5 - 0 avaliações