Complete mocking for test_extensions

The current implementation of trove.tests.unittests.api.
common.test_extensions does not fully mock the
test_default_extensions method. As a result trove UTs run without
trove being installed fail in this method as it assumes the
entry points have been installed into the egg for trove.

This patch completes mocking of that method so that the
test_extensions class can be run in a UT environment in
which trove is not installed and thus may not have the entry
points installed to the egg.

Change-Id: I2543f17fe087cf98d1a11ef47a07b4addfd32cd4
Closes-Bug: 1372950
Check for server attributes before using them

Sets server attributes only after verifying that
they exist.

Risk of fix: With this fix the server.host, server.local_id,
server.deleted, server.deleted_at values could get set with
values from information loaded per
client.servers.get(instance.server_id). See bug notes for
more details

Change-Id: I6d8303fee0ab685bdbe66b044174a7bd9f0807a4
Closes-Bug:1376525
remove keystonemiddleware settings from api-paste.ini

They can/should be set in the trove.conf instead, to
centralize all user-preserved/editable changes in the main
configuration file, and allow the ability to track api-paste.ini
unmodified from master.

Change-Id: I9eae06f564c4f99255fc627dbd26006d9048be46
Poll for replica read_only status in test

There is a time lag for the read_only system variable in the
detached replica to change from true to false, causing the test
to fail many times.Make the test_slave_is_not_read_only
poll unitl the value changes.

Change-Id: I6191cb7f85e18b30a16383675490a6186185ba5b
Closes-Bug: #1393914
Remove Python 2.6 classifier

Trove does not support Python 2.6 anymore starting with Kilo and might
not work correctly with it, so remove the classifier.

Change-Id: Ida17ce3ce76258442222b591846e1e1717119eed
Add missing api example for incremental backups

* Added Incremental backup test and resulting sample files.
* Fixed the example generator tests to actually fail when api
  changes.
* Added changes since the last example generation was run.
* Added a --fix-examples flag to the example generator to
  automatically correct the sample files.

Change-Id: I7ac355c80b251b0eccd3bd5b8d76d2287c255705
Closes-Bug: #1398119
Legacy MySQL datastore is shown on datastore-list

  On the 019_datastore_fix.py migration script the upgrade method was
calling the has_instances_wo_datastore_version as a function pointer
instead of passing the instance_table in and calling the function. This
meant the if block was always true because it was just checking if the
function exists and the create_legacy_version method was called everytime
causing the "Legacy MySQL" datastore to be inserted even if there was no
legacy trove instances. Now inject the instace_table into the
has_instances_wo_datastore_version and everything works as expected.

  Updated the datastore integration tests to not rely on the Legacy MySQL
datastore to exist by using the 10000000-0000-0000-0000-000000000001 GUID.
Instead the test now asserts against the data_store by the name
"Test_Datastore_1" which is the datastore the integration test
intended to validate against.

Closes-Bug: 1396427
Change-Id: Ifff33a962cc8d6ea150f6408d63b81412e196939
Merge "Poll for replica read_only status in test"
Forbid replica provisioning from replica site

Reasons:
- Replication V1 should allow only flat hierarchy - one root replica
  with multiple read replicas. Trove should forbid attempts to create
  slave of slave of slave and so on.

Changes:
 - adding validation step that forbids read replica provisioning if passed
   replica source (slave_if_id) is not an actual source (is a read replica any
   other replica source)
 - unit test added

Co-Authored-By: Iccha Sethi <iccha.sethi@rackspace.com>

Change-Id: Ic467b2eb01194f95a30f7ce9d921d3fa942b086e
Closes-Bug: #1357707
Merge "Check for server attributes before using them"
Merge "Remove Python 2.6 classifier"
Merge "Legacy MySQL datastore is shown on datastore-list"
Merge "Add missing api example for incremental backups"
Eliminate duplicated LoopingCall and LoopingCallDone code

Bug 1307560 cleaned up some parts of this particular use of deprecated
code. However there is still one instance left in
trove/common/utils.py which needs to be cleaned out. This change
removes LoopingCall and LoopingCallDone from utils.py and references
the openstack code from loopingcall.py.

Change-Id: Ice69626d4e6cbb1186aba8d84cfd6109569eba8f
Closes-Bug: #1314766
Obsolete oslo-incubator modules - importutils

This change is part of a multi-part change set to handle obsolete and
graduated oslo modules. This change addresses import utils that is now
part of oslo.utils.

The file importutils is not being deleted because of dependencies
within oslo-incubator

Partial-Bug: #1380789
Change-Id: I8bd0275c2fb33fc3ebcea578a2746bfe755ce1e8
blueprint: retire-unused-oslo-incubator-modules
Workflow documentation is now in infra-manual

Replace URLs for workflow documentation to appropriate parts of the
OpenStack Project Infrastructure Manual.

Change-Id: Ic33174d053274ab980c14da03b8394bfaf5375d3
Merge "Complete mocking for test_extensions"
Fix timeout in test_slave_user_removed int-test

The test_slave_user_removed int-test polls to check that the
slave user account is removed, but doesn't currently have a time
out set. This means that a failure in this test causes the entire
suite to spin, and ultimately time out. Fix this by adding a 3 min
timeout to this test.

Change-Id: I5f869c7d3cb0587409b5a12a89ed673e57552b82
Closes-bug: 1399583
Merge "Workflow documentation is now in infra-manual"
Clean up github references from docs

OpenStack hosts things in places that are not github. Also, it seems
that there is a big blob of unrelated readme in the README file.

Closes-Bug: 1399839
Change-Id: I70cc6772b50591c4b3badd6c92567a7a6541bacf