перевести команду PUT curl в ANSIBLE URI - PullRequest
0 голосов
/ 01 октября 2018

Я хочу взаимодействовать с сервером seafile с его REST api .

До сих пор у меня не было проблем с переводом запросов POST или GET в модуль ansible uri.Однако у меня есть проблема с получением запроса PUT.

С curl работает следующее:

curl -X PUT -d "share_type=group&group_id=<groupid>&permission=rw" -H 'Authorization: Token <mysecrettoken>' -H 'Accept: application/json; charset=utf-8; indent=4' https://<myserverurl>/api2/repos/<mylibraryid>/dir/shared_items/?p=/

Когда я перевожу это в следующее задание, оно завершается неудачно:

- name: mytask
  uri:
    url: "https://<myserverurl>/api2/repos/<mylibraryid>/dir/shared_items/?p=/"
    method: PUT
    headers: '{ "Authorization": "Token <mysecrettoken>" }'
    body: '{ "share_type": "group", "group_id": "<groupid>", "permission": "rw"}'
    body_format: json
    return_content: yes

Я получаю сообщение об ошибке:

HTTP Error 500: INTERNAL SERVER ERROR", "redirected": false, "server": "nginx", "set_cookie": "SERVERID=<serverid>; path=/", "status": 500, "transfer_encoding": "chunked", "url": "https://<myserverurl>/api2/repos/<mylibraryid>/dir/shared_items/?p=/", "vary": "Accept-Language, Cookie"}

В скрипте Python, использующем библиотеку запросов, я должен был указать окончательный ?p=/ как params={'p': '/'}.Это причина неудачи?Как мне правильно передать параметр тогда?

1 Ответ

0 голосов
/ 02 октября 2018

Вы должны передать headers как хэш YAML, а не как строку JSON:

- name: mytask
  uri:
    url: "https://<myserverurl>/api2/repos/<mylibraryid>/dir/shared_items/?p=/"
    method: PUT
    headers: 
      Authorization: "Token <mysecrettoken>"
    body: '{ "share_type": "group", "group_id": "<groupid>", "permission": "rw"}'
    body_format: json
    return_content: yes

Для справки см. документы , особенно второй к последнемупример:

- uri:
    url: https://your.form.based.auth.example.com/dashboard.php
    method: GET
    return_content: yes
    headers:
      Cookie: "{{ login.set_cookie }}"
...