Fix validate_external()

Not every resource has *entity* property,
such neutron resources, so do not have to check
it when validate external resource.

Change-Id: I19a16f40ac6c19e61d4aafb0f083d3a943bd7cac
Closes-Bug: #1656197
This commit is contained in:
huangtianhua 2017-01-13 15:23:26 +08:00
parent ba551125d1
commit c1d6ee182d
2 changed files with 10 additions and 10 deletions

View File

@ -886,17 +886,17 @@ class Resource(object):
runner(timeout=timeout, progress_callback=progress_callback)
def validate_external(self):
if self.external_id is not None and self.entity:
if self.external_id is not None:
try:
self.resource_id = self.external_id
self._show_resource()
except Exception as ex:
if self.client_plugin().is_not_found(ex):
error_message = _("Invalid external resource: Resource "
"%(external_id)s not found in "
"%(entity)s.") % {
'external_id': self.external_id,
'entity': self.entity}
error_message = (_("Invalid external resource: Resource "
"%(external_id)s (%(type)s) can not "
"be found.") %
{'external_id': self.external_id,
'type': self.type()})
raise exception.StackValidationFailed(
message="%s" % error_message)
raise

View File

@ -352,16 +352,16 @@ class ResourceTest(common.HeatTestCase):
'test_resource', 'GenericResourceType',
external_id=external_id)
res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
res.entity = 'test'
res.client_plugin = mock.Mock()
self.patchobject(res.client_plugin, 'is_not_found',
return_value=True)
self.patchobject(res, '_show_resource', side_effect=Exception())
e = self.assertRaises(exception.StackValidationFailed,
res.validate_external)
message = ("Invalid external resource: Resource %(external_id)s not "
"found in %(entity)s.") % {'external_id': external_id,
'entity': res.entity}
message = (("Invalid external resource: Resource %(external_id)s "
"(%(type)s) can not be found.") %
{'external_id': external_id,
'type': res.type()})
self.assertEqual(message, six.text_type(e))
def test_updated_from_external(self):