Adds API for bulk creation/deletion of floating IPs

This adds an extension that provides a REST API for the bulk creation,
deletion and listing of floating IPs. The interface is accessed via

/v2/{tenant_id}/os-floating-ips-bulk

This forms part of the work to provide APIs for functionality currently
implemented by nova-manage that needs direct db access so nova-manage
can eventually be removed

Implements: blueprint apis-for-nova-manage
DocImpact

Change-Id: I621e2b070a896f7230cdf3f26f78ded85e72cf16
Don't hard code the xen hvmloader path.

Both Ubuntu and Debian place the hvmloader in a
different path which depends on the version is installed.
The reason why this done is so you can different versions
of Xen installed.

As a result change the hvmloader to a configurable option
for libvirt called xen_hvmloader_path.

Change-Id: Ic407d14f56a2518de4cd4ab8872ac2055d20adcd
Signed-off-by: Chuck Short <chuck.short@canonical.com>
Cleanup compute multi-node assignment of node

Move assignment of the node field on the instance to the compute host
to be more consistent with how the host field is assigned and handled
by the resource tracker.

Change-Id: Id3086585a99350abbab387932e689825b33ab6b5
Rename instance_info_cache unique key constraints.

Rename (via drop and recreate) the instance_uuid unique
constraints on the instance_info_cache table so they reflect
the column change name (UUID conversion) we complete in Folsom.

Fixes LP Bug #1080837.

Change-Id: I9dd01ebc896c1d7b51c212980e48db16bad18dec
Make nova-dhcpbridge use CONFIG_FILE over FLAGFILE

nova-dhcpbridge's FLAGFILE environment variable is one of the few
remaining references we have to "flags".

Switching to use a new environment variable is easy, but we need
to take care that when you upgrade the code the compute and network
services might not be restarted immediately.

If this happens, the services may launch a new dnsmasq (so rootwrap
needs to continue to support FLAGFILE) or an existing dnsmasq might run
the lease script (so the script needs to support FLAGFILE).

Change-Id: Ieb55daa2507abb8327c7f5a2ef2f682740f31a5d
Missing instance_uuid in floating_ip notifications

* Addresses bug 1073212

Change-Id: I50327a9d7051d9ddb0a95a89b50037873011aff4
Make compute manager use nova-conductor for instance_update

Several tests require changes to ensure that the conductor service
is started (or set to local mode) before they ask the compute
manager to do instance updates.

Changes were required to some of the tests that check the value
of the timestamps by converting to strings. After passing the instances
through jsonutils.to_primitive(), the strings are a bit different.

Change-Id: I660e471178f3e5b36c4be27d47047fb4e4e1f851
Merge "Make nova-dhcpbridge use CONFIG_FILE over FLAGFILE"
Merge "Adds API for bulk creation/deletion of floating IPs"
Merge "Cleanup compute multi-node assignment of node"
Merge "Make compute manager use nova-conductor for instance_update"
Add eventlet db_pool use for mysql

This adds the use of eventlet's db_pool module so that we can make mysql
calls without blocking the whole process.

New config options are introduced:

sql_dbpool_enable -- Enables the use of eventlet's db_pool
sql_min_pool_size -- Set the minimum number of SQL connections

The default for sql_dbpool_enable is False for now, so there is
no forced behavior changes for those using mysql.  sql_min_pool_size
is defaulted to 1 to match behavior if not using db_pool.

Adds a new test module for our sqlalchemy code, testing this new option
as much as is possible without requiring mysql server to be running.

DocImpact

Change-Id: I99833f447df05c1beba5a3925b201dfccca72cae
Add SSL support to utils.generate_glance_url().

Since glance now supports SSL, we need to take
this into consideration when generating the URL.
Also updates and adds a test.

A new config option 'glance_protocol' was added
that defaults to 'http' since that's what the
glance options, '*_client_protocol', default to.
Set to 'https' for SSL.

Change-Id: Id231a1fd4c4d8e221ae0cf6541181e5572dff02b
Merge "Rename instance_info_cache unique key constraints."
Add pluggable ServiceGroup monitoring APIs

Summary:
* provide a pluggable ServiceGroup monitoring API
* refactor the old DB-based implementation to the new API

Currently nova compute nodes periodically write to the database (every
10 seconds by default) to report their liveness.  This implementation
factors out this functionality and make it a set of abstract internal
APIs with a pluggable backend implementation.  Currently it's named as
ServiceGroup APIs.

With this effort, we are hopeful to see the following benefits:

 * We expect to see more backend implementations in addition to the
default database-based one, such as ZooKeeper (as described in
blueprint zk-service-heartbeat) or rabbitmq heartbeat based.

 * We expect the code to live in openstack-common so projects other
than Nova can take advantage of the internal APIs.

 * Lay the foundations to use lower overhead heartbeat mechanisms
which scale better.

 * Other than reporting whether a node in a service group is up or
down, the code may also be used to query for members.  Other parts of
the code could also take advantage of the new APIs. One noteable
example is the MatchMaker in the rpc library, which may even become
redundant. We have been working with Eric at Cloudscaling to see how
this fits with the matchmaker. It is likely that this code will need
to be used, at least by the peer-to-peer based RPC mechanisms, to
implement the new create_worker method.

DocImpact: new config options

Co-authored-by: Pavel Kravchenco <kpavel@il.ibm.com>
Co-authored-by: Alexey Roytman <roytman@il.ibm.com>

Change-Id: I51645687249c75e7776a684f19529a1e78f33a41
Remove unnecessary topic argument.

The instance_update method was setting the topic to self.call(), but the
value being passed is the default, so it's unnecessary.  Just remove it.

Change-Id: Iaabd246b8528a0858ee239e790bfcb13e919399a
Add migration_update to conductor.

This patch adds a migration_update method to the conductor API.  This is
used by the compute manager to push off db access to nova-conductor.
The only field that compute was updating was the status, so that is the
only field allowed by the API.

Instead of just sending the miration_id to the conductor, we are sending
all of the migration data.  This is done in the spirit of
'no-db-messaging'.  While no other data is needed right now, it's easier
to send it all now than have to change the API later.

Change-Id: Ic3150fbc6d5e7b0c9e41681950a7424129cbc968
Add blank nova/virt/baremetal/__init__.py

Without this file in place I was seeing some test failures from the
baremetal unit tests.  The failure was:

    ImportError: No module named baremetal.db

Change-Id: I7596e7916796d5cb382d3856918b35c01814a455
Merge "Add pluggable ServiceGroup monitoring APIs"
Imported Translations from Transifex

Change-Id: I724ac38f1f98b27ed30382dc5f8c1789d0cc42f9