allow both ipv4 and ipv6 hostnames by default

Refactored the code to use netaddr rather than re-implementing IP
address validation. This gives us IPv6 support for free.

DocImpact
The hostname_require_ipv4 configuration option is being
removed in favor of hostname_require_valid_ip. The latter is more
inclusive and validates both IPv4 and IPv6 addresses.

Change-Id: I36c76169f2ab3bb7f54f67db522309a49ae61f7a
Closes-Bug: #1343192
Load trove API extensions using stevedore

The current trove impl loads trove API extensions by searching on a
single file path which is exposed as a conf property. This results in a
less than optimal approach from a consumer extension POV. This change
replaces the single extension path approach with dyanmic loading  using
stevedore. Consumers can now bind into the API extensions using the
'trove.api.extensions' entry point; a standard means to define extension
points. Moreover this change refactors to the
trove.openstack.common.extensions logic into trove.common.extensions.

In addition this change includes base unit tests to ensure the
existing trove proper extension points are loaded and that some basic
checks are in place W/R/T validating trove extension points.

Change-Id: Id3e712b536aef3bc9c9d1603367cdc0d4816b970
Implements: blueprint dynamic-extension-loading
Unit Tests for Mysql replication functionality

Implemented unit tests for the API methods in mysql manager.

Partially implements: blueprint replication-v1

Change-Id: Ifa64630457ddd771d98985823d92b4bab3412890
Adjusted audit logging for trove.instance module

The trove.instance module is logging some verbose debug data at the
info level, and some info messages at the debug level. Some log
entries are also lacking context because of missing identifiers such
as InstanceID and TenantID.

Changed logging level of various messages to conform to standard,
added references to various ID's as needed.

Change-Id: I3bb569529befa2b2497d2d5a094e3306e569422c
Partial-Bug: #1324206
show stdout/err from failed command execution

When executing a command the mysql service status command it is useful
to see the actual output of the failing command in debug mode, not just
the exit status.

Add a log_output_on_error parameter to execute_with_timeout() so this
can be reused.

Change-Id: Iff931d0489754303e099e8567bca3237fd476f8f
Closes-Bug: #1340124
Move usage_timeout out of guest options

In an effort to further separate the guest and task manager,
the usage_timeout has been moved into the common cfg. The
datastores have no need for this. the default is now set as
the largest timeout, cassandra.

DocImpact: This change modifies a configuration parameter.
partially implements: blueprint refactoring-datastore-options-in-cfg
Co-Author: Michael Basnight <mbasnight@gmail.com>

Change-Id: I3b4b2a9bffb40df4531a78c29d1e155e59436948
Added the bind_host configuration option when launching the API

Closes-bug: 1356411
Change-Id: Iad69754d60fc88d503ac7f87621ae7b5d561f9c2
Use netifaces to lookup IP address on guest agent

The current way of looking up the IP address on the guest
doesn't correctly work across all platforms. Use netifaces
instead which works correctly across all platforms.

Change-Id: I3d5febb1dd801fdf7801613cd843e7c00f308016
handle repeating mysqld options containing equals

Let load_mysqld_options handle repeating options such as:
"--plugin-load=blackhole=ha_blackhole.so
--plugin-load=federated=ha_federated.so" without crashing by storing all
the mysql_options we get in a dictionary with lists as values.

Change-Id: I634532e13bab80d476e4a1e8558b23da33656f60
Closes-Bug: #1348652
Snapshot component for replication

Implements the snapshot capability for replication by
taking a backup of the master site, then using it
to populate the slave, then turning on replication.

Co-Authored-By: Greg Lucas <glucas@tesora.com>
Co-Authored-By: Nikhil Manchanda <SlickNik@gmail.com>

Partially implements: blueprint replication-v1
Change-Id: Ibd3214b2ffafb250f0cc794c6ee0ff6b0d2ed7da
Look up trove instance by ID instead of name

update_statuses_on_time_out looks up the instance by name instead of ID.
This potentially means that we update the wrong instance to ERROR, since
instance name is not unique. This patchset fixes this issue by looking
up the trove instance by ID instead of name.

Change-Id: If9c7a518f50098390567d8e4df0f948b7d3be2c6
Closes-bug: 1356647
Add replication slave info to instance show

Update the 'show' response for an instance:

 - If the instance is a replication slave, include the slave_of id.
 - If the instance is a replication master, include the list of slave
   instance ids.

Update the 'list' response to include the slave_of id.
Add CheckInstance tests for slave/slave_of info.

(Unrelated: remove a #TODO comment that has already been addressed.)

Partially Implements: blueprint replication-v1
Closes-Bug: #1340359
Change-Id: If8a154083d0095606fb3ee115cc9b66ab788cbb4
Removing the XML info from the docs

We don't support XML anymore, so these need to go.

Closes-Bug: 1361381
Change-Id: I84a84288f0d76408584d2dc4b18a5d7ca370871e
Merge "Move usage_timeout out of guest options"
Merge "Removing the XML info from the docs"
Merge "Snapshot component for replication"
Merge "Unit Tests for Mysql replication functionality"
Merge "Add replication slave info to instance show"
Imported Translations from Transifex

Change-Id: I172bcb2c3e9ef58e874e01a5e16868cdb73bb761
Merge "Load trove API extensions using stevedore"