Add wrapper for keystone service catalog

This patch designed for receiving url of any
openstack service from keystone service catalog.
Examples: Ironic conductor and api are on different
hosts, conductor needs api url for deploy image,
get Glance service api for Ironic.

Change-Id: I3dc7475e10c7a464541be64d69ce97c41be7a650
Fix i18N compliance

We should use '_("STRING ...")' to enable i18n support

Change-Id: I7db7005dc228c1568de5e72c4c20079024e6e8be
Partial-Bug: #1240402
Merge "Add wrapper for keystone service catalog"
Updated from global requirements

Change-Id: I6e75348a75d0aad38804a7e11097aa0944ee1158
Improve the API doc spec for node

Improve the API doc spec for node and fix some other format problems in
the document.

Change-Id: Iefa645552d55743cad553d1ab9bbaff6612343e2
Partial-Bug: #1202748
Improve the API doc spec for chassis

Change-Id: I2b7604c756a474bafd8f48b0c4b8d848aa9fd539
Partial-Bug: #1202748
Comply with new hacking requirements

With new hacking>=0.8.0,<0.9 requirements, some functions are
now deprecated.

assertEquals -> assertEqual
assertNotEquals -> assertNotEqual
assert_ -> assertTrue

Change-Id: If666b68e6af5fcb9565f10c645b4e13dca16a141
Don't use deprecated module commands

The commands module was deprecated since version 2.6 and it has been
removed in Python 3. Use the subprocess module instead.
See http://docs.python.org/2/library/commands#module-commands

Closes-Bug: #1248216
Change-Id: I16d6baa77637f84b878df3ee6f964ddb9446d7bf
Fix a typo in the name of logger method exception

LOG has no attribute Exception. Should be LOG.exception insetead
of LOG.Exception.

Change-Id: I217dac398ebeb4e289b9b171333c0898f00e4314
Allows unicode description for chassis

str_or_none method in objects utils changed for handling
unicode data.

Closes-Bug: #1246680
Change-Id: Iea97c6361307abcca86fb5282b4b01766ef761a9
Remove 'basestring' from objects utils

'basestring' type is not compatible with Python 3,
type from six library used. Also allows unicode
literals instead of str().

Change-Id: I2a8e9e3b36d58146386eaa700dba0227faed896e
Pass Ironic API url to deploy ramdisk in PXE driver

Ironic's API url should be passed to deploy ramdisk for callback
via vendor passthru interface. API url gets from config option or
Keystone catalog.
Also node uuid used for deployment_id instead of id.

Change-Id: I8d190e107e73466fc96dd8896a8282bae22a020e
Merge "Comply with new hacking requirements"
Merge "Allows unicode description for chassis"
Merge "Updated from global requirements"
Merge "Don't use deprecated module commands"
Merge "Remove 'basestring' from objects utils"
Supporting both Python 2 and Python 3 with six

As we know python3 will not support built-in basestring, so we
should use 'six' to support both python2 and python3.

Change-Id: I9bad381f175602322cb750d6c1b62beeee222cb2
Partial-Bug: #1249886
Replace __metaclass__

The __metaclass__ syntax is not compatible with Python 3, this patch will
replace it with the add_metaclass decorator provided by the six library
which make it easier to add metaclasses that works on both Python 2 and 3.

The patch also grouped some imports as per PEP8.

Change-Id: If4fcee8ec4bb5e7d6971ea5a4143fba6500a09e9
Partial-Bug: #1249886
Fix error handling in ssh driver

_get_power_status() of ironic.drivers.modules.ssh driver
should raise an exception NodeNotFound instead of returning
states.ERROR, when the node is actually not found.

Closes-Bug: #1201964
Change-Id: I1193b0efef93dd7bf5e99cfa009da47882d53057