Add ability of nova client to display availability zones when listing hosts

Implements the one workitem of blueprint apis-for-nova-manage

Add an optional parameter for nova host-list
Now, we can use the command: nova host-list --zone nova
It will return the hosts that availability_zone=nova.
This patch depends on https://review.openstack.org/#/c/14741/

Change-Id: Ide41e75e7d1471e23d19f51e63a8d9951337a411
Allows deletion of multiple servers through CLI

Adds nargs to argparse for delete command to allow
multiple (optional) positional server argument. This
allows users to delete multiple servers using nova delete.
For example:
nova delete xxx yyy aaa zzz will delete valid servers
xxx, yyy and zzz and print exception msg for invalid
delete of server aaa.

Fixes bug892061

Change-Id: I2abe6329e489bfbd3e5ae699e97ef098b38c4537
Fixes utils.findresource checking for integer

Fixes the novaclient.utils.find_resource function to properly handle
non integer values and not break with an AttributeError.

Adds a test case to test a few more non valid inputs.

Fixes bug #1065367

Change-Id: Iaa2025f4eb580234f754596c3572e2f87872170e
include projectid in the cache key

fixes bug #1074771

Change-Id: I0fc1638405c2f4de61255d3efc1b6096ead0742b
Fixes setup compatibility issue on Windows

Fixes Bug #1052161

"python setup.py build" fails on Windows due to a hardcoded shell path:
/bin/sh

setup.py updated using openstack-common/update.py

Change-Id: I9c8cf84ada189d8f27448ecda23f51c021d08818
Updated the help text for nova list command.

Few options in the nova list command are admin specific. Updated the help text
to specify the admin only options explitcitly.

Fixes LP: #1055983

Change-Id: Icf8a76e79b9d5399298dacce31b1cc0873f63d71
Merge "Fixes setup compatibility issue on Windows"
Merge "Updated the help text for nova list command."
Merge "Add ability of nova client to display availability zones when listing hosts"
Merge "Allows deletion of multiple servers through CLI"
Add nova client support for nova-manage service command

Implements the one workitem of blueprint apis-for-nova-manage

This add three CLI (service-list/sevice-enable/service-diabel) in
nova-client.

So we can use:
"nova service-list" like "nova-manage service list" with two optional
parameters. Show a list of all running services. Filter by host and
service name.

"nova service-enable hostname servicename" like "nova-manage service
enable hostname servicename". It will enable the service specified by
hostname and serviename.

"nova service-disable hostname servicename" like "nova-manage service
diable hostname servicename". It will disable the service specified by
hostname and serviename.

This patch depends on https://review.openstack.org/#/c/15206/

Change-Id: I01d4cee4ef95c1783f6181f8b840244e748387e5
show help when calling without arguments

When calling nova without arguments you'll receive the following
output:

error: too few arguments
Try 'nova help ' for more information.

Changing 'and' to 'or' the help is also shown when calling nova
without arguments. I think that's the expected behavior.

Change-Id: Id14f0292ad00e6e45ad66dd010f449c3abbf3871
discover extensions via entry points

Currently, nova client can only discover extensions in two ways:

1. Installing the extension in the novaclient/v1_1/contrib/ directory.
2. Installing the extension in the top-level python path or modifying
   the path to be picked up by pkgutils.iter_modules()

This patch allows a third, more flexible option of discovering
extensions via entry points. This means the extension can be
installed anywhere and entry points can be registered with python
to be picked up by pkg_resources.iter_entry_points().
To register an entry point, simply add the extension module to
the setup() call in setup.py like this:

setuptools.setup(
    name='mydistribution',
    packages=setuptools.find_packages(),
    entry_points={
        'novaclient.extension' : [
            'foo = mydistribution.mynovaclientexts.foo'
        ]
    },
)

Change-Id: Ic1e223a9173546131e742506897f585f4ac65767
fix hypervisor-servers for hypervisors without servers

At the moment hypervisor-servers throws an AttributeError for
hypervisors with no assigned instances. This patch checks first
if there are assigned instances before looping through them to
avoid the exception.

fixes bug 1076435

Change-Id: I504e3f234fd041325b63295fab77f9ed3f704db0
make tenant id optional for quota-defaults and quota-show

When using quota-defaults or quota-show without specifing a tenant
the currently used tenant should be used.

Change-Id: I1ef71b68673dd4a95cbf8b5a8dc901fb6eb06865
Make sure create_image returns result

manager.servers.create_image() returned uuid of the snapshot, but
Server.create_image() didn't. Make them work the same.

Change-Id: I763197ac8ae542e7ce13569d8ce7e98ec92ccc63
Adding support to filter instances by tenant from the admin api

Change-Id: I37a2c5ad7bbe3e005e96416ea974051a82879adc
Cleans up the flavor creation code. Fixes bug 1080891.

Change-Id: Idc76cd01d1537ab87723a05ab8dd81015284e3c8
Added --extra-opts to the nova ssh command

This will allow for remote command execution and advanced ssh options
like portforwarding and connection sharing.
The goal is to support ssh commands like
nova ssh fe55adc9-cb1e-44a4-bd36-6a537b238172 --extra-opts='-NfnMS ~/.ssh/master-fe55adc9-cb1e-44a4-bd36-6a537b238172'
and ssh fe55adc9-cb1e-44a4-bd36-6a537b238172 --extra-opts='-t "sudo puppet agent --test"'
This will alow easier scripting of the cli... It is not intended
however to replace using the nova python api. Therefore I kept it simple.

Change-Id: Icce811caf637fc92c6d6374bfb846ea9525a7e05
Boot from volume without image supplied

Allow for booting instances from volume without the image parameter
supplied. This change is related to the change
I530760cfaa5eb0cae590c7383e0840c6b3f896b9
in opnestack/nova. It allows for boot to work with no image supplied
to accommodate booting from volumes only.

It also makes it possible to interpret show servers that were started
without images, so from volumes only

Change-Id: I5ba9b0f35a5084aa91eca260f46cac83b8b6591e