Support showing extra fields in server list

Adds a --fields argument that sets the fields to display.
ID is always displayed.

Fixes bug #1076473

Change-Id: If3462e6a490ea16da4834a7f40f96b111c9e8227
Fix run_tests.sh --coverage

Looks like a couple of typos crept in here preventing coverage
generation.

Change-Id: I08a61a67dadc5dcd334f9f288d8ee6719d469ca1
Merge "Fix run_tests.sh --coverage"
Add format options to 'nova coverage-report'.

This adds --html and --xml options to 'nova coverage-report'
to enable selection of coverage report format.
If specifying none of these, text-formatted report will be created.

This also adds --combine option to 'nova coverage-start' to make sure
that 'nova coverage-report --html' works fine.

Fixes bug 1114766

Change-Id: I9fee26bd5c45cac35f425ac7abbced4e2f3ff4df
Corrects 2nd argument type for logging

Fixes a regression introduced in commit
c73afa9fd1df14bff9186c1e73ac8f3593ef81db.

This completely breaks Horizon in last
DevStack version.

Change-Id: Ib754c6ea325534399a34ff76a290475ac652fea9
Fixes: bug #1122958
Make availability_zone in aggregate_create optional

Aggregates do not require an availability zone any more, but in order to
keep the current API, allow for availability zone to be set to None (the new
default value)

Fixes bug 1123468

Change-Id: I216c4fc808a91b0a5f602ee02ae1bca46adb73f4
Fix nova availability-zone-list for admin users

Don't need to convert returned timestamp

Fix bug 1123381

Change-Id: I1dbc82475b44b8d321fffb512083fc7a3b13153d
Merge "Corrects 2nd argument type for logging"
Expand and improve baremetal API.

This adds an additional command to list the interfaces associated with a
baremetal node.

It also fixes some docstrings and renames the existing interface
commands to be more consistent with the node commands.

Change-Id: Ia6ae383d76adb1c9d632bf69ec22438f1412c66f
Fix IOError with gnomekeyring.find_network_password_sync

find_network_password_sync throws a gnomekeyring.IOError
when a non-root user tries to run nova client
from a ssh console. If we don't catch this exception nova client
throws the traceback (shown in the bug report) and stops.
If we catch this exception (just like we catch ValueError),
and return None, Nova client executes just fine.

Fixes LP# 1116302

Change-Id: If6937b3f8eafb1dc55224b2ca2bd0f93ae07f8c6
Allow extensions to provide a name when discovered on the python path.

Using novaclient with some extensions via python code, you might have an
invocation like this:

    extensions = shell.OpenStackComputeShell()._discover_extensions("1.1")
    novaclient = Client("1.1", user, apikey, project, authurl, extensions=extensions,
                        endpoint_type=shell.DEFAULT_NOVA_ENDPOINT_TYPE,
                        service_type=shell.DEFAULT_NOVA_SERVICE_TYPE)

If you have an extension like 'myextension.py' in the v1_1/contrib directory, you'll
end up with a very sensible attribute on the resulting novaclient object, i.e.

    novaclient.myextension

If you have a package distributed in the package myextension_python_novaclient_ext,
then it'll automatically be picked up as an extension (awesome!) but the name is not
as intuitive.

    novaclient.myextension_python_novaclient_ext

This patch simply changes this to allow the Extension to provide a name for itself.
The possibility of collisions exists, but is not really any more significant than
before (where you might have different versions of the same package installed in the
system or heck, even a bizarrely named 'myextension_python_novaclient_ext.py' in the
contrib/ directory).

Fixes bug 1058366

Change-Id: Ie68463ffd7a939744e035b20fd50a7dc8da605de
Avoid doing a deep copy on the availability zone manager

When novaclient is in debug mode then the HTTPClient will
configure its logger with a StreamHandler that holds an
instance of thread.lock, which cannot be copied. As a result
running novaclient with the --debug flag will cause errors
and mask real issues being debugged.

Fixes bug 1123561

Change-Id: Idf19d62ff3e5b02b029f9089f403a697164231ac
Issue when gnomekeyring is present but not the current backend

Issue was identified in the review for the previous
patch for bug 1116302. Took this chance to rename _IOError
to a better name (KeyringIOError)

Change-Id: I321353d519eaebea27617702f92ecafe2052eb8e
Merge "Make availability_zone in aggregate_create optional"
Merge "Fix nova availability-zone-list for admin users"
Merge "Expand and improve baremetal API."
Merge "Allow extensions to provide a name when discovered on the python path."
Merge "Avoid doing a deep copy on the availability zone manager"
Merge "Support showing extra fields in server list"
Extend test coverage (shell, fping)

Added unit tests for shell code, that wasn't covered before.

Implements: bp/python-novaclient-unittests
Change-Id: I76e3df05d53e6c08e224feb30eb90ae819d8cdce