bkjones / pyrabbit

A Python module to communicate w/ the RabbitMQ HTTP Management API
http://pyrabbit.readthedocs.org
BSD 3-Clause "New" or "Revised" License
97 stars 86 forks source link

set_vhost_permissions in docker container #44

Closed mastak closed 8 years ago

mastak commented 8 years ago

When I try to set permissions and run script with set_vhost_permissions inside docker container, it is always raise BrokenPipeError. But if I run it without docker everything fine.

Other methods (like create_vhost/delete_vhost) works fine in docker container.

mastak commented 8 years ago

Probably httplib2/http have some issue. I tried to run row requests with httplib2 and request, and variant with request always return success, httplib2 always failed.

import json
import logging

import coloredlogs
coloredlogs.install(logging.DEBUG)

HOST = 'rabbitmq'
PORT = '15672'
USER = 'admin'
PASSW = 'admin'
VHOST = 'some'
DATA = json.dumps({"configure": '.*', "read": '.*', "write": '.*'})
HEADERS = {"Content-Type": "application/json"}
URL = 'http://192.168.155.128:15672/api/permissions/some/admin'

def request():
    import requests

    requests.put(URL, auth=(USER, PASSW), data=DATA, headers=HEADERS)
request()

def http():
    import httplib2

    client = httplib2.Http()
    client.add_credentials(USER, PASSW)
    client.request(URL, "PUT", DATA, headers=HEADERS)
http()

httplib2 traceback:

Traceback (most recent call last):
  File "./tmp.py", line 31, in <module>
    http()
  File "./tmp.py", line 30, in http
    client.request(URL, "PUT", DATA, headers=HEADERS)
  File "/usr/local/lib/python3.5/site-packages/httplib2/__init__.py", line 1314, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
  File "/usr/local/lib/python3.5/site-packages/httplib2/__init__.py", line 1075, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers, )
  File "/usr/local/lib/python3.5/site-packages/httplib2/__init__.py", line 988, in _conn_request
    conn.request(method, request_uri, body, headers)
  File "/usr/local/lib/python3.5/http/client.py", line 1083, in request
    self._send_request(method, url, body, headers)
  File "/usr/local/lib/python3.5/http/client.py", line 1128, in _send_request
    self.endheaders(body)
  File "/usr/local/lib/python3.5/http/client.py", line 1079, in endheaders
    self._send_output(message_body)
  File "/usr/local/lib/python3.5/http/client.py", line 913, in _send_output
    self.send(message_body)
  File "/usr/local/lib/python3.5/http/client.py", line 885, in send
    self.sock.sendall(data)
BrokenPipeError: [Errno 32] Broken pipe

Any idea? :)