ManageIQ/manageiq — pull request #71 by blomquisg (2014-06-23 16:13:37+00:00)
Title: [WIP] Authentication extensions

This PR illustrates how we could update the authentication module to allow for arbitrary extensions.

Authentication extensions attempts to solve the problem where a user might need to override some aspect of a secondary External Management System (EMS) connection. Some examples of secondary EMS connections are:

* RHEV Metrics Database connection (MySQL)
* OpenStack Events connection (AMQP)

Currently, ManageIQ assumes that secondary EMS connections reside at the same IP address as the EMS. For RHEV, this assumes that the metrics database resides on the RHEV-M node. For, OpenStack, this assumes that the AMQP server resides on the same server as the Keystone service. There have been requests for users to be able to override these settings for secondary EMS connections.

This PR presents a solution that does the following:

* Add a new `authentication_extension_type` (static data stored in active_hash) with predefined sets of authentication extension types
* Add new `authentication_extension` to store authentication extension settings provided by the user
* A form-builder style UI for showing arbitrary authentication extension types on the Edit EMS view
* Update `authetication_mixin` to present the list of available extensions by authentication type
* Update `controllers/ems_common` to react to authentication extensions on the form