Hardware introspection daemon for OpenStack Ironic
Go to file
Julia Kreger 8f9707699f Return a content-length on HTTP204 to prevent client failures
It turns out that eventlet has been injecting a
``Transfer-Encoding`` header as of recent into WSGI application
response headers. The result of this ultimately depends on how
the HTTP client which is passing the request to the server is
written to handle data.

Apache, for example, will return that an invalid response was
received. In part because it sees the request end, with an HTTP
204 response code, but also an encoding indicating there is
a multipart body encoding inbound. Which is confusing.

Other C based HTTP clients can have any number of reactions up to
and including disconnecting sessions. Curl, depending on the
headers present either returns success but notes body weirdness
or actually returns return code 18.

Python-Requests kind of has it a little worse, and we see this
with clients. With it, it tries to prepare a respones content
body based upon the presence of the header indicating there is
a body. But it blows up thinking there is more data to read on
the socket when there is not more data to read.

Regardless, all of this is an RFC7230 violation.

Neither Content-Length nor Transfer-Encoding should be on an HTTP
204 response. However, Content-Length is the lesser evil, and we
have a similar endpoing in Ironic which *does* explicitly get
returned with a zero length content-length, and does not
demonstrate such issues.

As such, in the interest of the lesser evils until Eventlet's evil
ways of header injection are remedied, we're explicitly going to
force a Content-Length header to be sent indicating a zero length
response.

For more information, please see: https://github.com/eventlet/eventlet/issues/746

Change-Id: I014cc65c79222f4d4d7c2b6ff11a76e56659340c
(cherry picked from commit 55e47c630b)
2022-01-14 20:00:38 +00:00
api-ref/source Merge "CI: run doc8 on api-ref" 2020-08-12 08:08:45 +00:00
devstack Merge "Add upgrade check, and json2yaml policy handling" 2021-02-17 14:36:57 +00:00
doc [doc] Improvements in processing_hooks docs 2021-06-04 13:37:54 +00:00
ironic_inspector Return a content-length on HTTP204 to prevent client failures 2022-01-14 20:00:38 +00:00
releasenotes Return a content-length on HTTP204 to prevent client failures 2022-01-14 20:00:38 +00:00
rootwrap.d Support ip6tables for iptables pxe filter 2018-11-07 09:53:47 +08:00
tools Fix l-c and mysql GRANT syntex for Ubuntu Focal 2020-09-11 14:36:56 -05:00
zuul.d Increase memory of ironic vm in grenade 2021-03-23 09:17:37 +01:00
.gitignore Add request context and policy enforcement 2017-10-13 11:55:52 +00:00
.gitreview Update .gitreview for stable/wallaby 2021-03-30 18:43:36 +00:00
.stestr.conf Use ostestr unit test runner 2017-10-02 14:28:58 +00:00
CONTRIBUTING.rst Replaced openstack baremetal to baremetal in the documentation 2020-10-19 14:11:36 +05:30
LICENSE Apache license 2014-10-03 17:15:55 +02:00
README.rst update source link in readme 2019-10-15 19:08:28 +08:00
bindep.txt Add librsvg2* to bindep and bindep env 2019-12-24 13:03:35 +05:30
ironic-inspector.8 Trivial: Update pypi url to new url 2018-04-24 09:57:43 +08:00
requirements.txt Add upgrade check, and json2yaml policy handling 2021-01-04 13:56:28 -08:00
rootwrap.conf TrivialFix: Fix typo in the configuration file 2016-09-30 10:56:53 +07:00
setup.cfg Add upgrade check, and json2yaml policy handling 2021-01-04 13:56:28 -08:00
setup.py Cleanup py27 support 2020-04-20 08:18:51 +02:00
test-requirements.txt Avoid a full install in tox environments that do not need it 2020-12-14 14:18:46 +01:00
tox.ini Update TOX_CONSTRAINTS_FILE for stable/wallaby 2021-03-30 18:43:40 +00:00

README.rst

Hardware introspection for OpenStack Bare Metal

Introduction

image

This is an auxiliary service for discovering hardware properties for a node managed by Ironic. Hardware introspection or hardware properties discovery is a process of getting hardware parameters required for scheduling from a bare metal node, given its power management credentials (e.g. IPMI address, user name and password).

Note

ironic-inspector was called ironic-discoverd before version 2.0.0.

Release Notes

For information on any current or prior version, see the release notes.