Extend Vendor Passthru

Registered by Lucas Alvares Gomes on 2014-10-23

The VendorPassthru and DriverVendorPassthru are inconsistent. VendorPassthru
methods are asynchronous and DriverVendorPassthru methods are synchronous.

In addition, right now each driver is responsible for implementing
their own method that will invoke their vendor methods and they ended up
duplicating a lot of code and also doing things like raising different
exceptions for the same type of error. Also, some of them are logging the
errors raised by the vendor methods or converting non-Ironic exceptions
to Ironic exceptions and others are not.

Apart from that both endpoints only support one HTTP method: POST. It
would be good to extend it to support other HTTP method because some
drivers may want to use them. One example would be the iPXE driver where
supporting GET would be beneficial because the iPXE script could request
a GET in the Ironic API which would return what kernel and ramdisk should
be booted and the script can chainload it from there.

Another problem is that currently the vendor methods are not discoverable
via out API, there's no way to know what are the methods being currently
exposed by the drivers.

Blueprint information

Status:
Complete
Approver:
aeva black
Priority:
Medium
Drafter:
Lucas Alvares Gomes
Direction:
Approved
Assignee:
Lucas Alvares Gomes
Definition:
Approved
Series goal:
Accepted for kilo
Implementation:
Implemented
Milestone target:
milestone icon 2015.1.0
Started by
aeva black on 2014-11-26
Completed by
aeva black on 2014-11-26

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/extended-vendor-passthru,n,z

Addressed by: https://review.openstack.org/129261
    Add a mechanism to route vendor methods

Gerrit topic: https://review.openstack.org/#q,topic:bug/1372979,n,z

Addressed by: https://review.openstack.org/129298
    Add logging to driver vendor_passthru functions

Addressed by: https://review.openstack.org/129662
    Add sync and async support for passthru methods

Addressed by: https://review.openstack.org/129942
    Vendor endpoints to support different HTTP methods

Addressed by: https://review.openstack.org/133533
    Make vendor methods discoverable via the Ironic API

Addressed by: https://review.openstack.org/134569
    Add documentation about Vendor Methods

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.