Allow request timeout to be specified.

Add a new cli argument (--timeout) which
is by default 600 seconds which will be
set in the requests library so that timeouts
can occur correctly.

Change-Id: I716ac15fe08f42c9464ee43010bc8fd2667bcbde
Allow for image selection using the metadata properties.

Instead of forcing users to remember a image name and/or uuid
instead allow them to specify a image metadata property to 'key'
off of.

For example:

I want to boot a image of ubuntu. This could now be a property
set in the image metadata and the following could be used to
find said image.

$ nova boot my-vm --image-with type=ubuntu

Now that user does not need to care what ubuntu version is being
selected or what the uuid is or what the image name is, they just
know that some image with ubuntu will likely get selected.

Change-Id: Ifaf71e282b8411d2e303cb52fd2623f6cf0bf32a
make print_dict split strings with newlines into multiple rows

When printing a dict e.g. "nova show" one of the properties
is "fault". When the user is admin, "details" of the fault
is shown, which includes a backtrace. This causes the
printing of the table to be unreadable as the backtrace
overflows the table row. This patch adds a separate row
for each substring after splitting on newlines.

Change-Id: I4c1bc8725a2bb6970be2c884c5e044d9eade8302
RateLimit does not have method attribute

Fixes Bug #1103220.
RateLimit class raises Exceptions anytime __repr__
is called because cls does not have method attribute.

Change-Id: I7db2e1a3afddaae18d006e0cc884e9910afb8eaf
Adds baremetal nova API support

This implements the various REST API calls that BareMetal adds to Nova.
(The nova API is implemented in review 19077)

Change-Id: I187862e9aa5dea41a7edf716aa75cc3d9982fbc8
ClientExceptions should include url and method

Fixes Bug 1103557.
novaclient abstracts out http request from user/client
making it unknown to user what root cause behind nova client
exceptions being raised. By including url and method in exception
handling, this allows user to handle accordingly.

Change-Id: I1a509bb932b3fd029bd0870ab699a39e21da19bb
Check tenant_id's format in "nova quota-update"

Fix bug 1088835
"nova quota-update" command is executed without checking the format of
the tenant_id argument. The tenant_id should be in the format of UUID.
The tenant_id of quotas should be in accord with the form of keystone's
tenant_id. So this patch checks the format of the tenant_id when "nova
quota-update" command is executed.

Change-Id: I47c4f2ff9adbab5da4697270dcf024ac88e24529
_get_secgroup returns first group even if multiple groups match

Nova's security group api layer ensures that a given tenant is not able to
create multiple security groups with the same name. That said, if one is the
admin user and does:
"nova secgroup-delete <secgroup that has a duplicate name as another tenant>"
The first security group that is returned with that name will be removed,
which might not have been what the user intended to do. In addition, quantum
allows multiple security groups to be created with the same name therefore
this change is needed to ensure the correct behavior when nova has a quantum
security group proxy.

Fixes bug 1105542

Change-Id: I99734355026e2ad18056c2f4180b5740fda8775a
Merge "Allow request timeout to be specified."
Merge "Allow for image selection using the metadata properties."
Merge "make print_dict split strings with newlines into multiple rows"
Merge "RateLimit does not have method attribute"
Merge "ClientExceptions should include url and method"
Merge "Check tenant_id's format in "nova quota-update""
Merge "Adds baremetal nova API support"
Merge "_get_secgroup returns first group even if multiple groups match"
Added homedir path expansion for keypair-add.

Change-Id: I76c5454952824dc9c238d82af74f82ae5fc888b5
Fixes: Bug #1065366
Merge "Added homedir path expansion for keypair-add."