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
This commit is contained in:
Edmond Kotowski 2014-12-02 14:10:49 -08:00
parent 3864816fd6
commit a6358494d1
4 changed files with 11 additions and 11 deletions

View File

@ -24,6 +24,7 @@ import sys
import traceback
from trove.common import cfg
from trove.common import utils
from trove.openstack.common import log as logging
from trove.tests.config import CONFIG
from wsgi_intercept.httplib2_intercept import install as wsgi_install
@ -82,8 +83,8 @@ def datastore_init():
default_version_id=
CONFIG.dbaas_datastore_version_id)
models.DBDatastore.create(id=CONFIG.dbaas_datastore_id_no_versions,
name='Test_Datastore_1',
models.DBDatastore.create(id=utils.generate_uuid(),
name=CONFIG.dbaas_datastore_name_no_versions,
default_version_id=None)
main_dsv = models.DBDatastoreVersion.create(

View File

@ -89,7 +89,7 @@ def upgrade(migrate_engine):
instance_table = Table('instances', meta, autoload=True)
if has_instances_wo_datastore_version:
if has_instances_wo_datastore_version(instance_table):
instances = find_all_instances_wo_datastore_version(instance_table)
image_id = find_image("mysql")

View File

@ -88,16 +88,16 @@ class Datastores(object):
@test
def test_datastore_with_no_active_versions_is_hidden(self):
datastores = self.rd_client.datastores.list()
id_list = [datastore.id for datastore in datastores]
id_no_versions = test_config.dbaas_datastore_id_no_versions
assert_true(id_no_versions not in id_list)
name_list = [datastore.name for datastore in datastores]
name_no_versions = test_config.dbaas_datastore_name_no_versions
assert_true(name_no_versions not in name_list)
@test
def test_datastore_with_no_active_versions_is_visible_for_admin(self):
datastores = self.rd_admin.datastores.list()
id_list = [datastore.id for datastore in datastores]
id_no_versions = test_config.dbaas_datastore_id_no_versions
assert_true(id_no_versions in id_list)
name_list = [datastore.name for datastore in datastores]
name_no_versions = test_config.dbaas_datastore_name_no_versions
assert_true(name_no_versions in name_list)
@test(groups=[tests.DBAAS_API, GROUP, tests.PRE_INSTANCES],

View File

@ -72,8 +72,7 @@ class TestConfig(object):
'nova_url': "http://localhost:8774/v1.1",
'dbaas_datastore': "mysql",
'dbaas_datastore_id': "a00000a0-00a0-0a00-00a0-000a000000aa",
'dbaas_datastore_id_no_versions': "10000000-0000-0000-0000-"
"000000000001",
'dbaas_datastore_name_no_versions': "Test_Datastore_1",
'dbaas_datastore_version': "5.5",
'dbaas_datastore_version_id': "b00000b0-00b0-0b00-00b0-"
"000b000000bb",