<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Arial,Helvetica,sans-serif">
<p>Hi Ironic folks, </p>
<p><br>
</p>
<p>Yesterday I come across a weird behaviour in python-ironicclient. I discussed briefly with the problem with Julia and befor creating a bug I would like your opinion on the problem and potential fix.</p>
<p><br>
</p>
<p>When doing nodes.get(resource_id=None), I get back a Node object set with attribute nodes={nodes: [{uuid: 'blah'}, {uuid: 'bleh'}]}. I guess that is not expected which is the bug I found and I know where to fix it if we agree to not change the behavour:
 If resource_id=None the client is doing a GET on /v1/nodes which is expected here : <a href="https://github.com/openstack/python-ironicclient/blob/1.8.0/ironicclient/common/base.py#L55" class="OWAAutoLink" id="LPlnk376222" previewremoved="true">https://github.com/openstack/python-ironicclient/blob/1.8.0/ironicclient/common/base.py#L55</a>.</p>
<p><br>
</p>
<p>The thing is, returning the first item of the list while doing a get on something that doesn't exists is a bit strange. I do not want to do extra validation on my application side to not pass None to the ironicclient. I would it to behave correctly: 404
 or a even a 400.</p>
<p><br>
</p>
<p>What do you think/or prefer?</p>
<p><br>
</p>
<p>A. Fixing the bug and not changing actual behaviour of the API</p>
<p>B. Changing the API behaviour and returning a 404 error since resource None is not found</p>
<p>C. Changing the API behaviour and returning a 400 error because None is not a valid request. The will be identical to the command line that is doing this:</p>
<p></p>
<div>ironic node-show None</div>
<div>Invalid input for field/attribute node_ident. Value: 'None'. unable to convert to uuid_or_name (HTTP 400)</div>
<div><br>
</div>
<div>Thanks</div>
<div>Max</div>
<br>
<p></p>
</div>
</body>
</html>