Hide Forgot
Description of problem: We have network validation code that calls into ironicclient, node.get_by_instance_uuid(). This has worked in the past, but is now failing with the following stack trace: Traceback (most recent call last): File "./validate_networks.py", line 314, in <module> network_validation.build_node_list() File "./validate_networks.py", line 155, in build_node_list nova_server.id) File "/usr/lib/python2.7/site-packages/ironicclient/v1/node.py", line 202, in get_by_instance_uuid nodes = self._list(self._path(path), 'nodes') File "/usr/lib/python2.7/site-packages/ironicclient/common/base.py", line 154, in _list resp, body = self.api.json_request('GET', url) File "/usr/lib/python2.7/site-packages/ironicclient/common/http.py", line 560, in json_request resp = self._http_request(url, method, **kwargs) File "/usr/lib/python2.7/site-packages/ironicclient/common/http.py", line 190, in wrapper return func(self, url, method, **kwargs) File "/usr/lib/python2.7/site-packages/ironicclient/common/http.py", line 532, in _http_request resp = self.session.request(url, method, AttributeError: 'str' object has no attribute 'request' Printing self.session immediately before the session.request call yields: ### self.session: ba6f13201dec7d0ad6d86c73ddad34d71139bcd8 Version-Release number of selected component (if applicable): python-ironicclient-1.7.0-1.el7ost.noarch How reproducible: Call ironic_client.node.get_by_instance_uuid(<uuid) Steps to Reproduce: 1. See above. Actual results: Call blows up with stack trace because expected session object and got a string. Expected results: Call should succeed. Additional info:
I tried changing the code to use ironic_client.node.list(), and it blows up with the same error, so it looks like the ironic client api is just plain broken. Stack trace is below. [stack@director network-validation]$ ./validate_networks.py WARNING:ironicclient.common.http:The following arguments are ignored when using the session to construct a client: auth_ref, token Traceback (most recent call last): File "./validate_networks.py", line 322, in <module> network_validation.build_node_list() File "./validate_networks.py", line 151, in build_node_list for ironic_server in ironic.node.list(): File "/usr/lib/python2.7/site-packages/ironicclient/v1/node.py", line 132, in list return self._list(self._path(path), "nodes") File "/usr/lib/python2.7/site-packages/ironicclient/common/base.py", line 154, in _list resp, body = self.api.json_request('GET', url) File "/usr/lib/python2.7/site-packages/ironicclient/common/http.py", line 553, in json_request resp = self._http_request(url, method, **kwargs) File "/usr/lib/python2.7/site-packages/ironicclient/common/http.py", line 190, in wrapper return func(self, url, method, **kwargs) File "/usr/lib/python2.7/site-packages/ironicclient/common/http.py", line 525, in _http_request resp = self.session.request(url, method, AttributeError: 'str' object has no attribute 'request'