From 3be5ff599ef7f41cddf1a64d4e4c0c21be0fe89b Mon Sep 17 00:00:00 2001 From: Saurabh Surana Date: Mon, 21 Sep 2015 14:32:09 -0700 Subject: [PATCH] Corrected error message for unsupported datastore flavors 1. Passing correct variables on raise exception 2. Updated the error message Change-Id: Ia1a302b30b1d7a269d96c41680964404128cfdc3 Closes-Bug: #1496846 --- trove/common/exception.py | 8 ++++---- trove/datastore/models.py | 19 ++++++++++++++----- trove/instance/models.py | 4 +++- .../test_datastore_version_metadata.py | 19 ++++++++++++------- 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/trove/common/exception.py b/trove/common/exception.py index 22ce29f5f1..b59c361ce7 100644 --- a/trove/common/exception.py +++ b/trove/common/exception.py @@ -121,14 +121,14 @@ class DatastoresNotFound(NotFound): class DatastoreFlavorAssociationNotFound(NotFound): - message = _("Datastore '%(datastore)s' version id %(version_id)s " - "and flavor %(flavor_id)s mapping not found.") + message = _("Flavor %(flavor_id)s is not supported for datastore " + "%(datastore)s version %(datastore_version)s") class DatastoreFlavorAssociationAlreadyExists(TroveError): - message = _("Datastore '%(datastore)s' version %(datastore_version)s " - "and flavor %(flavor_id)s mapping already exists.") + message = _("Flavor %(flavor_id)s is already associated with " + "datastore %(datastore)s version %(datastore_version)s") class DatastoreNoVersion(TroveError): diff --git a/trove/datastore/models.py b/trove/datastore/models.py index d23771a6f5..18e157c1f0 100644 --- a/trove/datastore/models.py +++ b/trove/datastore/models.py @@ -549,7 +549,9 @@ def update_datastore_version(datastore, name, manager, image_id, packages, class DatastoreVersionMetadata(object): @classmethod - def _datastore_version_metadata_add(cls, datastore_version_id, + def _datastore_version_metadata_add(cls, datastore_name, + datastore_version_name, + datastore_version_id, key, value, exception_class): """Create an entry in the Datastore Version Metadata table.""" # Do we have a mapping in the db? @@ -567,7 +569,8 @@ class DatastoreVersionMetadata(object): return else: raise exception_class( - datastore_version_id=datastore_version_id, + datastore=datastore_name, + datastore_version=datastore_version_name, flavor_id=value) except exception.NotFound: pass @@ -576,7 +579,9 @@ class DatastoreVersionMetadata(object): key=key, value=value) @classmethod - def _datastore_version_metadata_delete(cls, datastore_version_id, + def _datastore_version_metadata_delete(cls, datastore_name, + datastore_version_name, + datastore_version_id, key, value, exception_class): try: db_record = DBDatastoreVersionMetadata.find_by( @@ -587,10 +592,12 @@ class DatastoreVersionMetadata(object): return else: raise exception_class( - datastore_version_id=datastore_version_id, + datastore=datastore_name, + datastore_version=datastore_version_name, flavor_id=value) except exception.ModelNotFoundError: - raise exception_class(datastore_version_id=datastore_version_id, + raise exception_class(datastore=datastore_name, + datastore_version=datastore_version_name, flavor_id=value) @classmethod @@ -609,6 +616,7 @@ class DatastoreVersionMetadata(object): datastore_version_id = db_dsv_record.id for flavor_id in flavor_ids: cls._datastore_version_metadata_add( + datastore_name, datastore_version_name, datastore_version_id, 'flavor', flavor_id, exception.DatastoreFlavorAssociationAlreadyExists) @@ -627,6 +635,7 @@ class DatastoreVersionMetadata(object): ) datastore_version_id = db_dsv_record.id cls._datastore_version_metadata_delete( + datastore_name, datastore_version_name, datastore_version_id, 'flavor', flavor_id, exception.DatastoreFlavorAssociationNotFound) diff --git a/trove/instance/models.py b/trove/instance/models.py index 14690505f0..e8daaf9217 100644 --- a/trove/instance/models.py +++ b/trove/instance/models.py @@ -682,7 +682,9 @@ class Instance(BuiltInstance): valid_flavors = tuple(f.value for f in bound_flavors) if flavor_id not in valid_flavors: raise exception.DatastoreFlavorAssociationNotFound( - version_id=datastore_version.id, flavor_id=flavor_id) + datastore=datastore.name, + datastore_version=datastore_version.name, + flavor_id=flavor_id) datastore_cfg = CONF.get(datastore_version.manager) client = create_nova_client(context) diff --git a/trove/tests/unittests/datastore/test_datastore_version_metadata.py b/trove/tests/unittests/datastore/test_datastore_version_metadata.py index 899b605d9a..cc115c29c9 100644 --- a/trove/tests/unittests/datastore/test_datastore_version_metadata.py +++ b/trove/tests/unittests/datastore/test_datastore_version_metadata.py @@ -37,16 +37,21 @@ class TestDatastoreVersionMetadata(TestDatastoreBase): def test_add_existing_associations(self): dsmetadata = datastore_models.DatastoreVersionMetadata - self.assertRaises(exception.DatastoreFlavorAssociationAlreadyExists, - dsmetadata.add_datastore_version_flavor_association, - self.ds_name, self.ds_version, [self.flavor_id]) + self.assertRaisesRegexp( + exception.DatastoreFlavorAssociationAlreadyExists, + "Flavor %s is already associated with datastore %s version %s" + % (self.flavor_id, self.ds_name, self.ds_version), + dsmetadata.add_datastore_version_flavor_association, + self.ds_name, self.ds_version, [self.flavor_id]) def test_delete_nonexistent_mapping(self): dsmeta = datastore_models.DatastoreVersionMetadata - self.assertRaises(exception.DatastoreFlavorAssociationNotFound, - dsmeta.delete_datastore_version_flavor_association, - self.ds_name, self.ds_version, - flavor_id=2) + self.assertRaisesRegexp( + exception.DatastoreFlavorAssociationNotFound, + "Flavor 2 is not supported for datastore %s version %s" + % (self.ds_name, self.ds_version), + dsmeta.delete_datastore_version_flavor_association, + self.ds_name, self.ds_version, flavor_id=2) def test_delete_mapping(self): flavor_id = 2