<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Hi all,
<div class=""><br class="">
</div>
<div class="">I proposed <a href="https://review.openstack.org/#/c/143193" class="">https://review.openstack.org/#/c/143193</a> to ironic-python-agent, in an attempt to make Hardware Manager loading more sane. As it works today, the most specific hardware manager
 is the only one chosen. This means in order to use a mix of hardware managers, you have to compose a custom interface. This is not the way I originally thought it worked, and not the way Josh and I presented it at the summit[1].</div>
<div class=""><br class="">
</div>
<div class="">This change makes it so we will try each method, in priority order (from most specific to least specific hardware manager). If the method exists and doesn’t throw NotImplementedError, it will be allowed to complete and errors bubble up. If an
 AttributeError or NotImplementedError is thrown, the next most generic method is called until all methods have been attempted (in which case we fail) or a method does not raise the exceptions above.</div>
<div class=""><br class="">
</div>
<div class="">The downside to this is that it will change behavior for anyone using hardware managers downstream. As of today, the only hardware manager that I know of external to Ironic is the one we use at Rackspace for OnMetal[2]. I’m sending this email
 to check and see if anyone has objection to this interface changing in this way, and generally asking for comment. </div>
<div class=""><br class="">
</div>
<div class="">Thanks,</div>
<div class="">Jay Faulkner</div>
<div class=""><br class="">
</div>
<div class="">1: <a href="https://www.youtube.com/watch?v=2Oi2T2pSGDU" class="">https://www.youtube.com/watch?v=2Oi2T2pSGDU</a></div>
<div class="">2: <a href="https://github.com/rackerlabs/onmetal-ironic-hardware-manager" class="">https://github.com/rackerlabs/onmetal-ironic-hardware-manager</a></div>
</body>
</html>