Strip '/' from api_url string for PXE driver

Because ironic_api_url PXE option used in hardcoded script for posting
callback data we should use only url string without '/' on the end.
It is necessary for case if Ironic API URL option set like
"http://127.0.0.1:6385/".

Change-Id: Iddd237e8aa90fd17f836cfd2060468f34e0de232
Reworks Node validations

This makes use of the mandatory option and complex types of WSME to
remove some of the custom validation code. The patch also includes a
new attribute on Nodes API object called chassis_uuid to store the UUID
of the chassis that Node belongs to, once this field is set it magically
converts the UUID to the numeric ID of the chassis and sets the chassis_id
attribute to be used internally.

Change-Id: Ie51761a3b9a018d101a6335ea7bafb09393816d4
Closes-Bug: #1252213
Partial-Bug: #1223847
Reworks Chassis validations

This makes use of complex types validations of WSME that now works.

Change-Id: I5cd46d5c2caeb3f3c4cd1ef90448e7fd3c81404d
Closes-Bug: #1223847
Refactor /node/<uuid>/state

* Ironic now has a periodic task that checks the current power state of
the nodes[1] and keep the db updated, so the API does not need to call
rpcapi.get_node_power_state,  it can just rely on the current status in
the DB.

* The API will now return all the states in one request, whereas before
two requests were needed (one for power, and one for provision) to get
all the state information.

* Rename /node/<uuid>/state to /node/<uuid>/states (plural) since it
returns information about both states (power and provision)

[1] https://review.openstack.org/#/c/56530/

Change-Id: I9623a378f8743d4146a9b389d28d4f8b02aaf0e0
Merge "Reworks Node validations"
Merge "Refactor /node/<uuid>/state"
Merge "Reworks Chassis validations"
Improve method to get list of active conductors

To facilitate the consistent hash ring, we must know not only what
conductors are active, but also which driver(s) each active conductor
supports. This patch renames list_active_conductor_drivers to
get_active_driver_dict and changes the return value to be a dict,
mapping drivers to the set of hosts which support them.

blueprint instance-mapping-by-consistent-hash

Change-Id: Ie327aa7d9207f6f5da1380631dbbc431dfd7e218
GET /drivers to show a list of active conductors

Make the GET /drivers return not only the name of the drivers but also
a list of active conductors that supports each driver.

Change-Id: I9646b84e266665e23c62ca11cb58c35cf2803c10
Merge "Improve method to get list of active conductors"
Merge "GET /drivers to show a list of active conductors"
Add 'next' link when GET maximum number of items

When GET'ing items from a collection with no limit parameter specified
in the request, the API gets the limit value from the configuration file
(default is max_limit=1000). However, in the case where there are more
than max_limit items, the API was not returning a 'next' link to retrieve
the next subset of items.

It turns out that the max_limit value wasn't being passed to the
*Collection.convert_with_links method. This fixes that issue by moving
the collection call into the same method that determines the limit value.

Change-Id: I81e734a951e4025f64a5d572656d627e4126b353
Closes-Bug: #1250804
Merge "Strip '/' from api_url string for PXE driver"
Merge "Add 'next' link when GET maximum number of items"