Handle 404 on Zaqar Queue delete
Change-Id: Iacff8adadc59693e9f8e4132f369bf08956affe3 Closes-Bug: 1404375
This commit is contained in:
parent
0bb1334c39
commit
bee9efee53
@ -18,14 +18,18 @@ LOG = logging.getLogger(__name__)
|
||||
|
||||
try:
|
||||
from zaqarclient.queues.v1 import client as zaqarclient
|
||||
from zaqarclient.transport import errors as zaqar_errors
|
||||
except ImportError:
|
||||
zaqarclient = None
|
||||
zaqar_errors = None
|
||||
|
||||
from heat.engine.clients import client_plugin
|
||||
|
||||
|
||||
class ZaqarClientPlugin(client_plugin.ClientPlugin):
|
||||
|
||||
exception_module = zaqar_errors
|
||||
|
||||
def _create(self):
|
||||
|
||||
con = self.context
|
||||
@ -47,3 +51,6 @@ class ZaqarClientPlugin(client_plugin.ClientPlugin):
|
||||
client = zaqarclient.Client(url=endpoint, conf=conf)
|
||||
|
||||
return client
|
||||
|
||||
def is_not_found(self, ex):
|
||||
return isinstance(ex, zaqar_errors.ResourceNotFound)
|
||||
|
@ -104,9 +104,12 @@ class ZaqarQueue(resource.Resource):
|
||||
"""Delete a zaqar message queue."""
|
||||
if not self.resource_id:
|
||||
return
|
||||
|
||||
queue = self.client().queue(self.resource_id, auto_create=False)
|
||||
queue.delete()
|
||||
try:
|
||||
queue = self.client().queue(self.resource_id, auto_create=False)
|
||||
except Exception as exc:
|
||||
self.client_plugin().ignore_not_found(exc)
|
||||
else:
|
||||
queue.delete()
|
||||
|
||||
def href(self):
|
||||
api_endpoint = self.client().api_url
|
||||
|
@ -11,12 +11,14 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import six
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import parser
|
||||
from heat.engine import resource
|
||||
from heat.engine import rsrc_defn
|
||||
from heat.engine import scheduler
|
||||
from heat.engine import template
|
||||
from heat.tests import common
|
||||
@ -24,6 +26,11 @@ from heat.tests import utils
|
||||
|
||||
from ..resources import queue # noqa
|
||||
|
||||
try:
|
||||
from zaqarclient.transport.errors import ResourceNotFound # noqa
|
||||
except ImportError:
|
||||
ResourceNotFound = Exception
|
||||
|
||||
wp_template = '''
|
||||
{
|
||||
"AWSTemplateFormatVersion" : "2010-09-09",
|
||||
@ -183,6 +190,25 @@ class ZaqarMessageQueueTest(common.HeatTestCase):
|
||||
scheduler.TaskRunner(queue.delete)()
|
||||
self.m.VerifyAll()
|
||||
|
||||
@mock.patch.object(queue.ZaqarQueue, "client")
|
||||
@mock.patch.object(queue.ZaqarQueue, "client_plugin")
|
||||
def test_delete_not_found(self, mockplugin, mockclient):
|
||||
|
||||
mock_def = mock.Mock(spec=rsrc_defn.ResourceDefinition)
|
||||
mock_stack = mock.Mock()
|
||||
mock_stack.db_resource_get.return_value = None
|
||||
|
||||
mockclient.return_value.queue.side_effect = ResourceNotFound
|
||||
mockplugin.return_value.ignore_not_found.return_value = None
|
||||
zplugin = queue.ZaqarQueue("test_delete_not_found", mock_def,
|
||||
mock_stack)
|
||||
zplugin.resource_id = "test_delete_not_found"
|
||||
zplugin.handle_delete()
|
||||
mockclient.return_value.queue.assert_called_once_with(
|
||||
"test_delete_not_found", auto_create=False)
|
||||
mockplugin.return_value.ignore_not_found.assert_called_once_with(
|
||||
mock.ANY)
|
||||
|
||||
def test_update_in_place(self):
|
||||
t = template_format.parse(wp_template)
|
||||
self.parse_stack(t)
|
||||
|
Loading…
Reference in New Issue
Block a user