Support building wheels (PEP-427)

Universal is used to identify pure-Python module(by bdist_wheel). For
these, it is sufficient to build a wheel with _any_ Python ABI version
and publish that to PyPI (by whatever means).

Change-Id: I900a7d2e3777a5c151778679f3049771047855e6
Fix element miss in client request body

Currently the client sends a request with wrong element name
'os-multiple-create:reservation_id' in the body.
The correct element should be 'os-multiple-create:return_reservation_id'.
The information can be got in this website.
https://wiki.openstack.org/wiki/NovaAPIv2tov3

Change-Id: I7d2f006ef6dbbcd6b41c8adbeee0c0e048d35448
Closes-Bug: #1281342
Add service-list show `id` column

In nova this patch https://review.openstack.org/#/c/39998/ can show service's
id. Then user can use the id to delete service.

This patch support show service's id

Change-Id: I9fae88743ab7faea5e3fb64643f0bc9171e5b009
Implements: blueprint support-delete-service
Re-add install_venv_common to openstack-common.conf

Mistakenly removed it in e0272b0578d2a4f5bd75e68baee1b56f49931266.
Was thrown off by the warning saying module not found, the module is
found on the third try (found in tools).

Change-Id: Iaf5a7ba0259d352cb824b2cdb22291ffb7883efc
Remove quota-class subcommand

quota-classes API was already removed.
  Change-Id: I1110022d6f628d03aaf363da707f2d2ef1600437
This patch removed quota-class subcommand from nova client.

Change-Id: I18bf7c255fabdb52c8ce8159f68c3e5c70e54993
Allow user ID for authentication

In Keystone V3 user names are no longer necessarily unique
accross domains.

A user can still authenticate a user in the non default
domain via the V2 API providng they use IDs instead of names.

Tenant_ID is already supported, this change adds support
for user ID

Change-Id: I36ba75f3e67c8cdb959e31923d5e557414ab6f9b
Fix authentication bug when booting an server in V3

Currently when booting a server with V3, novaclient sends an empty
os_password to image_cs. This will cause 401(Unauthorized: Invalid
user/password) when trying to find image. This is is a result of
changes nova's V3 API: nova is no longer used as a proxy for the
image service. So novaclient uses two Client instances: one for
nova, the other for image service. This patch checks os_password
before creating the image Client and assigns it if it's empty.

Change-Id: Ic54cef93e9b823fb98b1edd78776c9a1fc06ba46
Closes-Bug: #1277425
Explain how to delete a metadata in aggregate-set-metadata

nova aggregate-set-metadata not given value of a key means delete the
metadata, so explain this usage in help message.

Change-Id: Ie8215bd8b47ed00e3d4686edab9e3052ae84774d
Show Exception Name in Shell Output

Currently, when the CLI encounters an exception, only the exception
message is shown.  However, the name of the exception can be quite
informative as well.

For instance, an error message might read "Cannot do xyz", which
simply indicates the operation was unsucessful.  However, the attached
exception name (HTTPNotImplemented, for instance) indicates the
*reason* that the call was unsuccessful.

Change-Id: I0298477bd9d40d98c95bb797c68c47dbc952b345
Print a useful message for unknown server errors

If a server error is returned that has an unknown code, novaclient will
end up printing something similar to:

ClientException: <attribute 'message' of 'exceptions.BaseException' objects>

Setting a message for ClientException will ensure that something more
useful than that is printed.

Change-Id: I43a2a33017f9a5c1b79d7fd8af4153e91d296f7b
Closes-bug: 1295293
Correct the help sting of volume-type-delete

Change-Id: I10b1bd6d42e4085dc73572f05ed893385ca3e139
Merge "Re-add install_venv_common to openstack-common.conf"
Merge "Fix element miss in client request body"
Raise exception when poll returns error state

When running nova boot --poll, any error states that occur will be
seen but, an exit code of 0 will be returned indicating success.
This would be problematic for scripts looking to see if an
operation completed successfully.

To fix this, an exception is raised after the nova api indicates to the
poll code that the vm is in an error state. The exceptions signals the shell
main function to exit with code 1.

Change-Id: I48f6b1c82e2f8b221dda898dcb804b0196018505
Fixes-Bug: #1292669
Merge "Allow user ID for authentication"
Merge "Correct the help sting of volume-type-delete"
Merge "Show Exception Name in Shell Output"
Merge "Print a useful message for unknown server errors"
Avoid AttributeError in servers.Server.__repr__

servers.Server represents various object now, and some of them may
don't have attribute 'name', for example, the interface_list() result
object. It will cause AttributeError when we try to format string with
such object, so I add a check for the 'name' attribute in __repr__
method, it will use 'unknown-name' instead when 'name' is not found.

Change-Id: If4757d5d73721774543d58a4cc875710a6013f34
Closes-Bug: #1280453
Merge "Fix authentication bug when booting an server in V3"