Move Resource exceptions to common module (1)
It is convenient to have all exceptions in exception module. Also it is reduces namespace cluttering of resource module and decreases the number of dependencies in other modules (we do not need to import resource in some cases for now). UpdateReplace exception is moved in this patch. Change-Id: Ief441ca2022a0d50e88d709d1a062631479715b7
This commit is contained in:
parent
b228f945cd
commit
4e2cfb991a
@ -388,6 +388,13 @@ class PropertyUnspecifiedError(HeatException):
|
||||
super(PropertyUnspecifiedError, self).__init__(**kwargs)
|
||||
|
||||
|
||||
class UpdateReplace(Exception):
|
||||
'''Raised when resource update requires replacement.'''
|
||||
def __init__(self, resource_name='Unknown'):
|
||||
msg = _("The Resource %s requires replacement.") % resource_name
|
||||
super(Exception, self).__init__(six.text_type(msg))
|
||||
|
||||
|
||||
class HTTPExceptionDisguise(Exception):
|
||||
"""Disguises HTTP exceptions so they can be handled by the webob fault
|
||||
application in the wsgi pipeline.
|
||||
|
@ -57,13 +57,6 @@ def _register_class(resource_type, resource_class):
|
||||
resources.global_env().register_class(resource_type, resource_class)
|
||||
|
||||
|
||||
class UpdateReplace(Exception):
|
||||
'''Raised when resource update requires replacement.'''
|
||||
def __init__(self, resource_name='Unknown'):
|
||||
msg = _("The Resource %s requires replacement.") % resource_name
|
||||
super(Exception, self).__init__(six.text_type(msg))
|
||||
|
||||
|
||||
class NoActionRequired(Exception):
|
||||
pass
|
||||
|
||||
@ -521,7 +514,7 @@ class Resource(object):
|
||||
raise exception.NotSupported(feature=mesg)
|
||||
|
||||
if not changed_properties_set.issubset(update_allowed_set):
|
||||
raise UpdateReplace(self.name)
|
||||
raise exception.UpdateReplace(self.name)
|
||||
|
||||
return dict((k, after_props.get(k)) for k in changed_properties_set)
|
||||
|
||||
@ -867,18 +860,18 @@ class Resource(object):
|
||||
def _needs_update(self, after, before, after_props, before_props,
|
||||
prev_resource, check_init_complete=True):
|
||||
if self.status == self.FAILED:
|
||||
raise UpdateReplace(self)
|
||||
raise exception.UpdateReplace(self)
|
||||
|
||||
if check_init_complete and \
|
||||
(self.action == self.INIT and self.status == self.COMPLETE):
|
||||
raise UpdateReplace(self)
|
||||
raise exception.UpdateReplace(self)
|
||||
|
||||
if prev_resource is not None:
|
||||
cur_class_def, cur_ver = self.implementation_signature()
|
||||
prev_class_def, prev_ver = prev_resource.implementation_signature()
|
||||
|
||||
if prev_class_def != cur_class_def:
|
||||
raise UpdateReplace(self.name)
|
||||
raise exception.UpdateReplace(self.name)
|
||||
if prev_ver != cur_ver:
|
||||
return True
|
||||
|
||||
@ -947,7 +940,7 @@ class Resource(object):
|
||||
LOG.info(_LI('updating %s'), six.text_type(self))
|
||||
|
||||
self.updated_time = datetime.utcnow()
|
||||
with self._action_recorder(action, UpdateReplace):
|
||||
with self._action_recorder(action, exception.UpdateReplace):
|
||||
after_props.validate()
|
||||
tmpl_diff = self.update_template_diff(function.resolve(after),
|
||||
before)
|
||||
@ -1576,7 +1569,7 @@ class Resource(object):
|
||||
|
||||
def handle_update(self, json_snippet=None, tmpl_diff=None, prop_diff=None):
|
||||
if prop_diff:
|
||||
raise UpdateReplace(self.name)
|
||||
raise exception.UpdateReplace(self.name)
|
||||
|
||||
def metadata_update(self, new_metadata=None):
|
||||
'''
|
||||
|
@ -218,7 +218,7 @@ class LaunchConfiguration(resource.Resource):
|
||||
|
||||
def handle_update(self, json_snippet, tmpl_diff, prop_diff):
|
||||
if 'Metadata' in tmpl_diff:
|
||||
raise resource.UpdateReplace(self.name)
|
||||
raise exception.UpdateReplace(self.name)
|
||||
|
||||
def FnGetRefId(self):
|
||||
return self.physical_resource_name_or_FnGetRefId()
|
||||
|
@ -376,7 +376,7 @@ class ElasticIpAssociation(resource.Resource):
|
||||
ni_id = prop_diff.get(self.NETWORK_INTERFACE_ID)
|
||||
|
||||
if instance_id or ni_id:
|
||||
raise resource.UpdateReplace(self.name)
|
||||
raise exception.UpdateReplace(self.name)
|
||||
|
||||
# according to aws doc, when update the instance_id or
|
||||
# network_interface_id, if you also change the EIP or
|
||||
@ -386,7 +386,7 @@ class ElasticIpAssociation(resource.Resource):
|
||||
eip = prop_diff.get(self.EIP)
|
||||
allocation_id = prop_diff.get(self.ALLOCATION_ID)
|
||||
if eip or allocation_id:
|
||||
raise resource.UpdateReplace(self.name)
|
||||
raise exception.UpdateReplace(self.name)
|
||||
|
||||
def handle_create(self):
|
||||
"""Add a floating IP address to a server."""
|
||||
|
@ -16,6 +16,7 @@ import eventlet
|
||||
from oslo_utils import timeutils
|
||||
import six
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common.i18n import _
|
||||
from heat.engine import attributes
|
||||
from heat.engine import properties
|
||||
@ -156,7 +157,7 @@ class TestResource(resource.Resource):
|
||||
if value:
|
||||
update_replace = self.properties[self.UPDATE_REPLACE]
|
||||
if update_replace:
|
||||
raise resource.UpdateReplace(self.name)
|
||||
raise exception.UpdateReplace(self.name)
|
||||
else:
|
||||
# emulate failure
|
||||
fail_prop = self.properties[self.FAIL]
|
||||
|
@ -13,9 +13,9 @@
|
||||
|
||||
import uuid
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common.i18n import _
|
||||
from heat.engine import attributes
|
||||
from heat.engine import resource
|
||||
from heat.engine.resources.aws.cfn import wait_condition_handle as aws_wch
|
||||
from heat.engine.resources import wait_condition as wc_base
|
||||
from heat.engine import support
|
||||
@ -141,7 +141,7 @@ class UpdateWaitConditionHandle(aws_wch.WaitConditionHandle):
|
||||
support_status = support.SupportStatus(version='2014.1')
|
||||
|
||||
def update(self, after, before=None, prev_resource=None):
|
||||
raise resource.UpdateReplace(self.name)
|
||||
raise exception.UpdateReplace(self.name)
|
||||
|
||||
|
||||
def resource_mapping():
|
||||
|
@ -11,6 +11,7 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common.i18n import _
|
||||
from heat.engine import clients
|
||||
from heat.engine import constraints
|
||||
@ -186,7 +187,7 @@ class MonascaAlarmDefinition(resource.Resource):
|
||||
except Exception as ex:
|
||||
if self.client_plugin().is_un_processable(ex):
|
||||
# Monasca does not allow to update the sub expression
|
||||
raise resource.UpdateReplace(resource_name=self.name)
|
||||
raise exception.UpdateReplace(resource_name=self.name)
|
||||
|
||||
def handle_delete(self):
|
||||
if self.resource_id is not None:
|
||||
|
@ -14,12 +14,12 @@
|
||||
from oslo_log import log as logging
|
||||
import six
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common.i18n import _
|
||||
from heat.common.i18n import _LW
|
||||
from heat.engine import attributes
|
||||
from heat.engine import constraints
|
||||
from heat.engine import properties
|
||||
from heat.engine import resource
|
||||
from heat.engine.resources.openstack.neutron import neutron
|
||||
from heat.engine.resources.openstack.neutron import subnet
|
||||
from heat.engine import support
|
||||
@ -415,7 +415,7 @@ class Port(neutron.NeutronResource):
|
||||
prev_resource, check_init_complete=True):
|
||||
|
||||
if after_props.get(self.REPLACEMENT_POLICY) == 'REPLACE_ALWAYS':
|
||||
raise resource.UpdateReplace(self.name)
|
||||
raise exception.UpdateReplace(self.name)
|
||||
|
||||
return super(Port, self)._needs_update(
|
||||
after, before, after_props, before_props, prev_resource,
|
||||
|
@ -945,7 +945,7 @@ class Server(stack_user.StackUser, sh.SchedulerHintsMixin,
|
||||
flavor = prop_diff[self.FLAVOR]
|
||||
|
||||
if flavor_update_policy == 'REPLACE':
|
||||
raise resource.UpdateReplace(self.name)
|
||||
raise exception.UpdateReplace(self.name)
|
||||
|
||||
flavor_id = self.client_plugin().get_flavor_id(flavor)
|
||||
handler_args = {'args': (flavor_id,)}
|
||||
@ -964,7 +964,7 @@ class Server(stack_user.StackUser, sh.SchedulerHintsMixin,
|
||||
prop_diff.get(self.IMAGE_UPDATE_POLICY) or
|
||||
self.properties[self.IMAGE_UPDATE_POLICY])
|
||||
if image_update_policy == 'REPLACE':
|
||||
raise resource.UpdateReplace(self.name)
|
||||
raise exception.UpdateReplace(self.name)
|
||||
image = prop_diff[self.IMAGE]
|
||||
image_id = self.client_plugin('glance').get_image_id(image)
|
||||
preserve_ephemeral = (
|
||||
|
@ -93,12 +93,12 @@ class StackResource(resource.Resource):
|
||||
|
||||
# FIXME (ricolin): seems currently can not call super here
|
||||
if self.nested() is None and self.status == self.FAILED:
|
||||
raise resource.UpdateReplace(self)
|
||||
raise exception.UpdateReplace(self)
|
||||
|
||||
if (check_init_complete and
|
||||
self.nested() is None and
|
||||
self.action == self.INIT and self.status == self.COMPLETE):
|
||||
raise resource.UpdateReplace(self)
|
||||
raise exception.UpdateReplace(self)
|
||||
|
||||
return True
|
||||
|
||||
|
@ -14,9 +14,9 @@
|
||||
from oslo_log import log as logging
|
||||
import six
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common.i18n import _LI
|
||||
from heat.engine import dependencies
|
||||
from heat.engine import resource
|
||||
from heat.engine import scheduler
|
||||
from heat.objects import resource as resource_objects
|
||||
|
||||
@ -145,7 +145,7 @@ class StackUpdate(object):
|
||||
try:
|
||||
yield self._update_in_place(existing_res,
|
||||
new_res)
|
||||
except resource.UpdateReplace:
|
||||
except exception.UpdateReplace:
|
||||
pass
|
||||
else:
|
||||
# Save updated resource definition to backup stack
|
||||
@ -248,7 +248,7 @@ class StackUpdate(object):
|
||||
current_res.update_template_diff_properties(updated_props,
|
||||
current_props)
|
||||
updated_keys.append(key)
|
||||
except resource.UpdateReplace:
|
||||
except exception.UpdateReplace:
|
||||
replaced_keys.append(key)
|
||||
|
||||
return {
|
||||
|
@ -156,7 +156,7 @@ class WorkerService(service.Service):
|
||||
check_resource_update(rsrc, tmpl.id, resource_data,
|
||||
self.engine_id,
|
||||
stack.time_remaining())
|
||||
except resource.UpdateReplace:
|
||||
except exception.UpdateReplace:
|
||||
new_res_id = rsrc.make_replacement(tmpl.id)
|
||||
LOG.info("Replacing resource with new id %s", new_res_id)
|
||||
rpc_data = sync_point.serialize_input_data(resource_data)
|
||||
|
@ -1118,7 +1118,7 @@ class InstancesTest(common.HeatTestCase):
|
||||
update_template = copy.deepcopy(instance.t)
|
||||
update_template['Properties']['ImageId'] = 'mustreplace'
|
||||
updater = scheduler.TaskRunner(instance.update, update_template)
|
||||
self.assertRaises(resource.UpdateReplace, updater)
|
||||
self.assertRaises(exception.UpdateReplace, updater)
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
@ -23,7 +23,6 @@ from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine.clients.os import ceilometer
|
||||
from heat.engine import properties as props
|
||||
from heat.engine import resource
|
||||
from heat.engine.resources.openstack.ceilometer import alarm
|
||||
from heat.engine import rsrc_defn
|
||||
from heat.engine import scheduler
|
||||
@ -293,7 +292,7 @@ class CeilometerAlarmTest(common.HeatTestCase):
|
||||
properties)
|
||||
|
||||
updater = scheduler.TaskRunner(rsrc.update, snippet)
|
||||
self.assertRaises(resource.UpdateReplace, updater)
|
||||
self.assertRaises(exception.UpdateReplace, updater)
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
@ -167,7 +167,7 @@ class CheckWorkflowUpdateTest(common.HeatTestCase):
|
||||
@mock.patch.object(resource.Resource, 'make_replacement')
|
||||
def test_is_update_traversal_raise_update_replace(
|
||||
self, mock_mr, mock_cru, mock_crc, mock_pcr, mock_csc, mock_cid):
|
||||
mock_cru.side_effect = resource.UpdateReplace
|
||||
mock_cru.side_effect = exception.UpdateReplace
|
||||
self.worker.check_resource(
|
||||
self.ctx, self.resource.id, self.stack.current_traversal, {},
|
||||
self.is_update, None)
|
||||
|
@ -16,7 +16,6 @@ import six
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import resource
|
||||
from heat.engine import resources
|
||||
from heat.engine.resources.openstack.manila import security_service
|
||||
from heat.engine import scheduler
|
||||
@ -166,7 +165,7 @@ class ManilaSecurityServiceTest(common.HeatTestCase):
|
||||
rsrc_defns = template.Template(t).resource_definitions(self.stack)
|
||||
new_ss = rsrc_defns['security_service']
|
||||
self.assertEqual(0, self.client.security_services.update.call_count)
|
||||
err = self.assertRaises(resource.UpdateReplace,
|
||||
err = self.assertRaises(exception.UpdateReplace,
|
||||
scheduler.TaskRunner(ss.update, new_ss))
|
||||
msg = 'The Resource security_service requires replacement.'
|
||||
self.assertEqual(msg, six.text_type(err))
|
||||
|
@ -309,7 +309,7 @@ class TestMistralWorkflow(common.HeatTestCase):
|
||||
self.mistral.workflows.update.return_value = new_workflows
|
||||
self.mistral.workflows.delete.return_value = None
|
||||
|
||||
err = self.assertRaises(resource.UpdateReplace,
|
||||
err = self.assertRaises(exception.UpdateReplace,
|
||||
scheduler.TaskRunner(wf.update,
|
||||
new_workflow))
|
||||
msg = 'The Resource workflow requires replacement.'
|
||||
|
@ -19,7 +19,6 @@ from neutronclient.v2_0 import client as neutronclient
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import resource
|
||||
from heat.engine import rsrc_defn
|
||||
from heat.engine import scheduler
|
||||
from heat.tests import common
|
||||
@ -492,7 +491,7 @@ class NeutronPortTest(common.HeatTestCase):
|
||||
new_props['replacement_policy'] = 'REPLACE_ALWAYS'
|
||||
update_snippet = rsrc_defn.ResourceDefinition(port.name, port.type(),
|
||||
new_props)
|
||||
self.assertRaises(resource.UpdateReplace, port._needs_update,
|
||||
self.assertRaises(exception.UpdateReplace, port._needs_update,
|
||||
update_snippet, port.frozen_definition(),
|
||||
new_props, props, None)
|
||||
|
||||
|
@ -1742,7 +1742,7 @@ class ServersTest(common.HeatTestCase):
|
||||
update_template = copy.deepcopy(server.t)
|
||||
update_template['Properties']['flavor'] = 'm1.small'
|
||||
updater = scheduler.TaskRunner(server.update, update_template)
|
||||
self.assertRaises(resource.UpdateReplace, updater)
|
||||
self.assertRaises(exception.UpdateReplace, updater)
|
||||
|
||||
def test_server_update_server_flavor_policy_update(self):
|
||||
stack_name = 'update_flvpol'
|
||||
@ -1763,7 +1763,7 @@ class ServersTest(common.HeatTestCase):
|
||||
update_template['Properties']['flavor_update_policy'] = 'REPLACE'
|
||||
update_template['Properties']['flavor'] = 'm1.small'
|
||||
updater = scheduler.TaskRunner(server.update, update_template)
|
||||
self.assertRaises(resource.UpdateReplace, updater)
|
||||
self.assertRaises(exception.UpdateReplace, updater)
|
||||
|
||||
def test_server_update_image_replace(self):
|
||||
stack_name = 'update_imgrep'
|
||||
@ -1784,7 +1784,7 @@ class ServersTest(common.HeatTestCase):
|
||||
update_template = copy.deepcopy(server.t)
|
||||
update_template['Properties']['image'] = image_id
|
||||
updater = scheduler.TaskRunner(server.update, update_template)
|
||||
self.assertRaises(resource.UpdateReplace, updater)
|
||||
self.assertRaises(exception.UpdateReplace, updater)
|
||||
|
||||
def _test_server_update_image_rebuild(self, status, policy='REBUILD',
|
||||
password=None):
|
||||
@ -1914,7 +1914,7 @@ class ServersTest(common.HeatTestCase):
|
||||
update_template['Properties']['image'] = 'mustreplace'
|
||||
update_template['Properties']['image_update_policy'] = 'REPLACE'
|
||||
updater = scheduler.TaskRunner(server.update, update_template)
|
||||
self.assertRaises(resource.UpdateReplace, updater)
|
||||
self.assertRaises(exception.UpdateReplace, updater)
|
||||
|
||||
def test_server_status_build(self):
|
||||
return_server = self.fc.servers.list()[0]
|
||||
@ -3353,7 +3353,7 @@ class ServersTest(common.HeatTestCase):
|
||||
|
||||
# update
|
||||
updater = scheduler.TaskRunner(server.update, update_template)
|
||||
self.assertRaises(resource.UpdateReplace, updater)
|
||||
self.assertRaises(exception.UpdateReplace, updater)
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
@ -13,6 +13,7 @@
|
||||
|
||||
import mock
|
||||
|
||||
from heat.common import exception
|
||||
from heat.engine.clients.os import monasca as client_plugin
|
||||
from heat.engine import resource
|
||||
from heat.engine.resources.openstack.monasca import alarm_definition
|
||||
@ -219,7 +220,7 @@ class MonascaAlarmDefinitionTest(common.HeatTestCase):
|
||||
prop_diff = {alarm_definition.MonascaAlarmDefinition.EXPRESSION:
|
||||
'expression-updated'}
|
||||
|
||||
self.assertRaises(resource.UpdateReplace,
|
||||
self.assertRaises(exception.UpdateReplace,
|
||||
self.test_resource.handle_update,
|
||||
json_snippet=None,
|
||||
tmpl_diff=None,
|
||||
|
@ -18,11 +18,11 @@ from oslo_serialization import jsonutils as json
|
||||
from oslo_utils import timeutils
|
||||
import six
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common import identifier
|
||||
from heat.common import template_format
|
||||
from heat.engine.clients.os import heat_plugin
|
||||
from heat.engine import environment
|
||||
from heat.engine import resource
|
||||
from heat.engine.resources.openstack.heat import wait_condition_handle as h_wch
|
||||
from heat.engine import stack as parser
|
||||
from heat.engine import template as tmpl
|
||||
@ -360,4 +360,4 @@ class HeatWaitConditionTest(common.HeatTestCase):
|
||||
handle = self.stack['update_wait_handle']
|
||||
self.assertEqual((handle.CREATE, handle.COMPLETE), handle.state)
|
||||
self.assertRaises(
|
||||
resource.UpdateReplace, handle.update, None, None)
|
||||
exception.UpdateReplace, handle.update, None, None)
|
||||
|
@ -14,8 +14,8 @@
|
||||
|
||||
import copy
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import resource
|
||||
from heat.engine.resources.openstack.heat import cloud_watch
|
||||
from heat.engine import rsrc_defn
|
||||
from heat.engine import scheduler
|
||||
@ -125,7 +125,7 @@ class CloudWatchAlarmTest(common.HeatTestCase):
|
||||
props)
|
||||
|
||||
updater = scheduler.TaskRunner(rsrc.update, snippet)
|
||||
self.assertRaises(resource.UpdateReplace, updater)
|
||||
self.assertRaises(exception.UpdateReplace, updater)
|
||||
|
||||
scheduler.TaskRunner(rsrc.delete)()
|
||||
self.m.VerifyAll()
|
||||
|
@ -24,7 +24,6 @@ from heat.engine.hot import functions as hot_functions
|
||||
from heat.engine.hot import parameters as hot_param
|
||||
from heat.engine.hot import template as hot_template
|
||||
from heat.engine import parameters
|
||||
from heat.engine import resource
|
||||
from heat.engine import resources
|
||||
from heat.engine import rsrc_defn
|
||||
from heat.engine import stack as parser
|
||||
@ -1183,7 +1182,7 @@ class HotStackTest(common.HeatTestCase):
|
||||
'Properties': {'Foo': 'xyz'}},
|
||||
{'Type': 'ResourceWithPropsType',
|
||||
'Properties': {'Foo': 'abc'}}
|
||||
).WithSideEffects(check_props).AndRaise(resource.UpdateReplace)
|
||||
).WithSideEffects(check_props).AndRaise(exception.UpdateReplace)
|
||||
self.m.ReplayAll()
|
||||
|
||||
self.stack.update(updated_stack)
|
||||
@ -1227,7 +1226,7 @@ class HotStackTest(common.HeatTestCase):
|
||||
'Properties': {'Foo': 'xyz'}},
|
||||
{'Type': 'ResourceWithPropsType',
|
||||
'Properties': {'Foo': 'abc'}}
|
||||
).WithSideEffects(check_props).AndRaise(resource.UpdateReplace)
|
||||
).WithSideEffects(check_props).AndRaise(exception.UpdateReplace)
|
||||
self.m.ReplayAll()
|
||||
|
||||
self.stack.update(updated_stack)
|
||||
|
@ -19,7 +19,6 @@ import six
|
||||
from heat.common import exception
|
||||
from heat.common import grouputils
|
||||
from heat.common import template_format
|
||||
from heat.engine import resource
|
||||
from heat.engine.resources.openstack.heat import instance_group as instgrp
|
||||
from heat.engine import rsrc_defn
|
||||
from heat.engine import scheduler
|
||||
@ -196,7 +195,7 @@ class TestLaunchConfig(common.HeatTestCase):
|
||||
metadata)
|
||||
# Changing metadata in the second update triggers UpdateReplace
|
||||
updater = scheduler.TaskRunner(rsrc.update, update_snippet)
|
||||
self.assertRaises(resource.UpdateReplace, updater)
|
||||
self.assertRaises(exception.UpdateReplace, updater)
|
||||
|
||||
|
||||
class LoadbalancerReloadTest(common.HeatTestCase):
|
||||
|
@ -24,7 +24,6 @@ from heat.common import exception
|
||||
from heat.common.i18n import _
|
||||
from heat.common import template_format
|
||||
from heat.engine import environment
|
||||
from heat.engine import resource
|
||||
from heat.engine.resources.openstack.heat import remote_stack
|
||||
from heat.engine import rsrc_defn
|
||||
from heat.engine import scheduler
|
||||
@ -619,7 +618,7 @@ class RemoteStackTest(tests_common.HeatTestCase):
|
||||
update_snippet = rsrc_defn.ResourceDefinition(rsrc.name,
|
||||
rsrc.type(),
|
||||
props)
|
||||
self.assertRaises(resource.UpdateReplace,
|
||||
self.assertRaises(exception.UpdateReplace,
|
||||
scheduler.TaskRunner(rsrc.update, update_snippet))
|
||||
|
||||
def test_update_failed(self):
|
||||
|
@ -371,7 +371,7 @@ class ResourceTest(common.HeatTestCase):
|
||||
utmpl = rsrc_defn.ResourceDefinition('test_resource', 'TestResource',
|
||||
{'a_string': 'foo'})
|
||||
self.assertRaises(
|
||||
resource.UpdateReplace, scheduler.TaskRunner(res.update, utmpl))
|
||||
exception.UpdateReplace, scheduler.TaskRunner(res.update, utmpl))
|
||||
|
||||
def test_update_replace_in_failed_without_nested(self):
|
||||
tmpl = rsrc_defn.ResourceDefinition('test_resource',
|
||||
@ -394,7 +394,7 @@ class ResourceTest(common.HeatTestCase):
|
||||
# resource in failed status and hasn't nested will enter
|
||||
# UpdateReplace flow
|
||||
self.assertRaises(
|
||||
resource.UpdateReplace, scheduler.TaskRunner(res.update, utmpl))
|
||||
exception.UpdateReplace, scheduler.TaskRunner(res.update, utmpl))
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
@ -586,7 +586,7 @@ class ResourceTest(common.HeatTestCase):
|
||||
after_props = {'Bar': '456'}
|
||||
res = generic_rsrc.ResourceWithProps('test_resource', tmpl, self.stack)
|
||||
res.update_allowed_properties = ('Cat',)
|
||||
self.assertRaises(resource.UpdateReplace,
|
||||
self.assertRaises(exception.UpdateReplace,
|
||||
res.update_template_diff_properties,
|
||||
after_props, before_props)
|
||||
|
||||
@ -859,12 +859,12 @@ class ResourceTest(common.HeatTestCase):
|
||||
tmpl_diff = {'Properties': {'Foo': 'xyz'}}
|
||||
prop_diff = {'Foo': 'xyz'}
|
||||
generic_rsrc.ResourceWithProps.handle_update(
|
||||
utmpl, tmpl_diff, prop_diff).AndRaise(resource.UpdateReplace(
|
||||
utmpl, tmpl_diff, prop_diff).AndRaise(exception.UpdateReplace(
|
||||
res.name))
|
||||
self.m.ReplayAll()
|
||||
# should be re-raised so parser.Stack can handle replacement
|
||||
updater = scheduler.TaskRunner(res.update, utmpl)
|
||||
ex = self.assertRaises(resource.UpdateReplace, updater)
|
||||
ex = self.assertRaises(exception.UpdateReplace, updater)
|
||||
self.assertEqual('The Resource test_resource requires replacement.',
|
||||
six.text_type(ex))
|
||||
self.m.VerifyAll()
|
||||
@ -885,11 +885,11 @@ class ResourceTest(common.HeatTestCase):
|
||||
tmpl_diff = {'Properties': {'Foo': 'xyz'}}
|
||||
prop_diff = {'Foo': 'xyz'}
|
||||
generic_rsrc.ResourceWithProps.handle_update(
|
||||
utmpl, tmpl_diff, prop_diff).AndRaise(resource.UpdateReplace())
|
||||
utmpl, tmpl_diff, prop_diff).AndRaise(exception.UpdateReplace())
|
||||
self.m.ReplayAll()
|
||||
# should be re-raised so parser.Stack can handle replacement
|
||||
updater = scheduler.TaskRunner(res.update, utmpl)
|
||||
ex = self.assertRaises(resource.UpdateReplace, updater)
|
||||
ex = self.assertRaises(exception.UpdateReplace, updater)
|
||||
self.assertEqual('The Resource Unknown requires replacement.',
|
||||
six.text_type(ex))
|
||||
self.m.VerifyAll()
|
||||
@ -903,7 +903,7 @@ class ResourceTest(common.HeatTestCase):
|
||||
self.assertEqual((res.INIT, res.COMPLETE), res.state)
|
||||
|
||||
prop = {'Foo': 'abc'}
|
||||
self.assertRaises(resource.UpdateReplace,
|
||||
self.assertRaises(exception.UpdateReplace,
|
||||
res._needs_update, tmpl, tmpl, prop, prop, res)
|
||||
|
||||
def test_update_fail_missing_req_prop(self):
|
||||
|
@ -543,7 +543,7 @@ class StackResourceTest(StackResourceBaseTest):
|
||||
self.parent_resource.state_set(self.parent_resource.INIT,
|
||||
self.parent_resource.FAILED)
|
||||
self.parent_resource._nested = None
|
||||
self.assertRaises(resource.UpdateReplace,
|
||||
self.assertRaises(exception.UpdateReplace,
|
||||
self.parent_resource._needs_update,
|
||||
self.parent_resource.t,
|
||||
self.parent_resource.t,
|
||||
@ -559,7 +559,7 @@ class StackResourceTest(StackResourceBaseTest):
|
||||
self.parent_resource.state_set(self.parent_resource.INIT,
|
||||
self.parent_resource.COMPLETE)
|
||||
self.parent_resource._nested = None
|
||||
self.assertRaises(resource.UpdateReplace,
|
||||
self.assertRaises(exception.UpdateReplace,
|
||||
self.parent_resource._needs_update,
|
||||
self.parent_resource.t,
|
||||
self.parent_resource.t,
|
||||
|
@ -15,6 +15,7 @@ import copy
|
||||
|
||||
import mock
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import environment
|
||||
from heat.engine import resource
|
||||
@ -340,7 +341,7 @@ class StackUpdateTest(common.HeatTestCase):
|
||||
|
||||
def check_and_raise(*args):
|
||||
self.assertEqual('abc', self.stack['AResource'].properties['Foo'])
|
||||
raise resource.UpdateReplace
|
||||
raise exception.UpdateReplace
|
||||
|
||||
mock_upd = self.patchobject(generic_rsrc.ResourceWithProps,
|
||||
'update_template_diff',
|
||||
|
@ -16,7 +16,6 @@ import six
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import resource
|
||||
from heat.engine.resources.openstack.zaqar import queue
|
||||
from heat.engine import rsrc_defn
|
||||
from heat.engine import scheduler
|
||||
@ -261,7 +260,7 @@ class ZaqarMessageQueueTest(common.HeatTestCase):
|
||||
new_queue = resource_defns['MyQueue2']
|
||||
|
||||
scheduler.TaskRunner(queue.create)()
|
||||
err = self.assertRaises(resource.UpdateReplace,
|
||||
err = self.assertRaises(exception.UpdateReplace,
|
||||
scheduler.TaskRunner(queue.update,
|
||||
new_queue))
|
||||
msg = 'The Resource MyQueue2 requires replacement.'
|
||||
|
Loading…
x
Reference in New Issue
Block a user