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
This commit is contained in:
Saurabh Surana 2015-09-21 14:32:09 -07:00
parent 87753afeb2
commit 3be5ff599e
4 changed files with 33 additions and 17 deletions

View File

@ -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):

View File

@ -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)

View File

@ -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)

View File

@ -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