create_node() raises HTTP Error 400 Bad Request
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Python Jenkins |
Fix Released
|
Undecided
|
Dong Ma |
Bug Description
after update to version 0.4.9 create_node() function raises error
>>> j.create_
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\
self.
File "C:\Users\
response = urlopen(req, timeout=
File "C:\Users\
return opener.open(url, data, timeout)
File "C:\Users\
response = meth(req, response)
File "C:\Users\
'http', request, response, code, msg, hdrs)
File "C:\Users\
return self._call_
File "C:\Users\
result = func(*args)
File "C:\Users\
raise HTTPError(
urllib.
summary: |
- create_node() raise HTTP Error 400 Bad Request + create_node() raises HTTP Error 400 Bad Request |
description: | updated |
Changed in python-jenkins: | |
status: | New → Confirmed |
We encountered this today using the latest (4.11) version.
The culprit is how the URL is parsed. Jenkins requires 3 queryargs: 'json', 'name', and 'type'. But the url part is getting created as a big dictionary which causes this (truncated for brevity):
https:/ /jenkins. ceph.com/ computer/ doCreateItem?{'json': ...
When it should really be:
https:/ /jenkins. ceph.com/ computer/ doCreateItem? json=...
This is caused by:
Where "params" is a big dictionary of options.
On previous versions where this worked it was actually:
Which correctly parses the query args and constructs the URL that Jenkins is expecting.