Ansible: Impossible de rendre JSON dans Ansible et POST via le module uri

Créé le 26 nov. 2015  ·  3Commentaires  ·  Source: ansible/ansible

Type de problème : Rapport de bogue
Version Ansible : 1.9.4
Environnement : OSX 10.11.1

Résumé : L'utilisation de lookup pour rendre un modèle qui est passé dans le paramètre uri module body ne fonctionne pas. Il renvoie une erreur TypeError: unhashable type . J'ai ouvert une question StackOverflow à ce sujet et j'ai pensé qu'il était logique de la poster ici également.

Étapes à reproduire :

Exécutez cette tâche :

- 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) }}"

avec ceci en my.json.j2 :

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

Plier le JSON en une seule ligne dans le modèle a le même effet. Diriger la réponse lookup via to_json ne fonctionne pas non plus. Cependant, prendre le JSON plié et l'utiliser _directement_ dans le jeu fonctionne.

Résultat attendu : JSON approprié envoyé au point de terminaison

Résultat réel : erreur TypeError: unhashable type ; également, dans certaines circonstances, une erreur not valid JSON est renvoyée par le point de terminaison, ce qui indique que les données ne sont pas envoyées correctement.

Commentaire le plus utile

Cela a été corrigé dans la version 2.0 : ajoutez simplement _body_format : json_ au module uri (et supprimez _convert_data=False_)
De plus, vous n'avez pas besoin de définir vous-même l'en-tête Content-Type lorsque vous définissez body_format sur json.

Tous les 3 commentaires

Informations sur la liste

Salut!

Merci beaucoup de l'intérêt que vous portez à Ansible. Cela signifie sincèrement beaucoup pour nous.

Cela semble être une question d'utilisateur, et nous aimerions diriger ce genre de choses vers la liste de diffusion ou le canal IRC.

Si vous pouvez vous y arrêter, nous vous en serions reconnaissants. Cela nous permet de garder le suivi des problèmes pour les bogues, les demandes d'extraction, les RFE et autres.

Merci encore et au plaisir de vous voir sur la liste ou sur IRC. Merci!

Cela a été corrigé dans la version 2.0 : ajoutez simplement _body_format : json_ au module uri (et supprimez _convert_data=False_)
De plus, vous n'avez pas besoin de définir vous-même l'en-tête Content-Type lorsque vous définissez body_format sur json.

Cette page vous a été utile?
0 / 5 - 0 notes