More specifically, what is the best way to extend or customize OpenStack
for integration with 3rd party products or APIs external to OpenStack?  For
example, performing CRUD against a external database for determining and
auto-generating a machine name, and its update or removal in line with when
a machine is provisioned, updated, or removed?  Another example, invoking
SOAP and REST APIs to interact with products outside of OpenStack during a
number of OpenStack API requests.

The most clear method from a non-OpenStack approach appears to implement an
API proxy , a wrapper in front of OpenStack. In this case, OpenStack
remains unchanged for the most part, and the proxy can expose exactly the
same operations. The proxy can also provide abstraction in that one can
expose net new operations which comprise an entire flow of which several
OpenStack API calls are made in sequence. In any of these examples, an
entire intermediary workflow can be prepared in which during a request, one
may run custom logic with asynchronous communication with other external
3rd party applications, and then update or alter the request in flight such
that the API request to OpenStack now has been tailored. For example, one
can auto-generate machine names and then supply the machine name in the
machine create request, implement approval workflows as part of on-boarding
new tenants, etc. Because it is done in line during a request, it achieves
real-time integration, as well as supporting waiting, per a schedule or
trigger and can further integrate with ESBs as part of that design.

Is this achieved with Scheduler customization, Mistral, or other, and/or
are there several other methodologies and options for achieving this
natively in OpenStack?

OpenStack-dev mailing list

Reply via email to