From 087210aff408e687f8715680354befabbdbe5df5 Mon Sep 17 00:00:00 2001 From: rabi Date: Fri, 27 Jul 2018 14:48:11 +0530 Subject: [PATCH] Revert octavia pool member delete fix In 705d2a0b7b78813fb84636ac262030bc7dd6be08 we added a hack to handle traslation error when deleting a pool member resource with the pool already deleted in octavia. After the previous patch in this series we can remove this hack. Change-Id: I459cd5e2c3dc8be23e299a2b8360a32b52d8e071 Story: #1747836 Task: 23279 --- .../openstack/octavia/pool_member.py | 23 +++--- .../openstack/octavia/test_pool_member.py | 72 ++----------------- 2 files changed, 16 insertions(+), 79 deletions(-) diff --git a/heat/engine/resources/openstack/octavia/pool_member.py b/heat/engine/resources/openstack/octavia/pool_member.py index b335e335c6..aa154f8d7c 100644 --- a/heat/engine/resources/openstack/octavia/pool_member.py +++ b/heat/engine/resources/openstack/octavia/pool_member.py @@ -130,29 +130,24 @@ class PoolMember(octavia_base.OctaviaBase): return props def _resource_create(self, properties): + pool = self.properties[self.POOL] return self.client().member_create( - self._get_pool_prop(), json={'member': properties})['member'] + pool, json={'member': properties})['member'] def _resource_update(self, prop_diff): - self.client().member_set(self._get_pool_prop(), + pool = self.properties[self.POOL] + self.client().member_set(pool, self.resource_id, json={'member': prop_diff}) - def _get_pool_prop(self): - try: - return self.properties[self.POOL] - except ValueError: - if self.client_plugin().get_pool(self.properties.data[self.POOL]): - raise - def _resource_delete(self): - pool = self._get_pool_prop() - if pool: - self.client().member_delete(pool, self.resource_id) + pool = self.properties[self.POOL] + if pool: + self.client().member_delete(pool, self.resource_id) def _show_resource(self): - return self.client().member_show( - self._get_pool_prop(), self.resource_id) + pool = self.properties[self.POOL] + return self.client().member_show(pool, self.resource_id) def resource_mapping(): diff --git a/heat/tests/openstack/octavia/test_pool_member.py b/heat/tests/openstack/octavia/test_pool_member.py index 9a0a2a9e2b..4e48cccc14 100644 --- a/heat/tests/openstack/octavia/test_pool_member.py +++ b/heat/tests/openstack/octavia/test_pool_member.py @@ -17,7 +17,6 @@ from neutronclient.neutron import v2_0 as neutronV20 from osc_lib import exceptions from heat.common import template_format -from heat.engine import properties from heat.engine.resources.openstack.octavia import pool_member from heat.tests import common from heat.tests.openstack.octavia import inline_templates @@ -156,47 +155,19 @@ class PoolMemberTest(common.HeatTestCase): '1234') self.assertFalse(self.member._delete_called) - def _prepare_delete_with_value_error(self): + def test_delete_with_pool_not_found(self): self._create_stack() self.member.resource_id_set('1234') - self.m_gpv = self.patchobject(properties.Properties, - '_get_property_value', - side_effect=ValueError) - - def test_delete_value_error_with_not_found(self): - self._prepare_delete_with_value_error() m_get_pool = mock.Mock(side_effect=exceptions.NotFound(404)) self.member.client_plugin().get_pool = m_get_pool - + self.octavia_client.member_delete.side_effect = [ + exceptions.NotFound(404)] + self.member.translate_properties(self.member.properties, + ignore_resolve_error=True) self.member.handle_delete() - self.assertTrue(self.member.check_delete_complete(None)) - m_get_pool.assert_called_once_with(123) - self.assertFalse(self.member._delete_called) - self.assertEqual(0, self.octavia_client.member_delete.call_count) - self.m_gpv.assert_called_once_with('pool') - - def test_delete_value_error_with_pool_found(self): - self._prepare_delete_with_value_error() - self.member.client_plugin().get_pool = mock.Mock(return_value='123') - - self.member.handle_delete() - - self.assertRaises(ValueError, self.member.check_delete_complete, None) - self.assertFalse(self.member._delete_called) - self.assertEqual(0, self.octavia_client.member_delete.call_count) - self.m_gpv.assert_called_once_with('pool') - - def test_delete_value_error_with_pool_error(self): - self._prepare_delete_with_value_error() - self.member.client_plugin().get_pool = mock.Mock(side_effect=KeyError) - - self.member.handle_delete() - - self.assertRaises(KeyError, self.member.check_delete_complete, None) - self.assertFalse(self.member._delete_called) - self.assertEqual(0, self.octavia_client.member_delete.call_count) - self.m_gpv.assert_called_once_with('pool') + self.octavia_client.member_delete.assert_called_with('123', + '1234') def test_delete_failed(self): self._create_stack() @@ -208,32 +179,3 @@ class PoolMemberTest(common.HeatTestCase): self.assertRaises(exceptions.Unauthorized, self.member.check_delete_complete, None) - - def _prepare_get_pool_prop(self): - self._create_stack() - self.member.resource_id_set('1234') - self.m_prop = self.patchobject( - properties.Properties, '_get_property_value') - - def test_get_pool_prop(self): - self._prepare_get_pool_prop() - self.member._get_pool_prop() - self.m_prop.assert_called_once_with('pool') - - def _get_pool_prop_with_value_error(self, side_effect=[]): - self._prepare_get_pool_prop() - self.m_prop.side_effect = ValueError - self.member.client_plugin().get_pool = mock.Mock( - side_effect=side_effect) - - def test_get_pool_prop_value_error_and_raise_exception(self): - self._get_pool_prop_with_value_error( - side_effect=exceptions.NotFound(404)) - - self.assertRaises( - exceptions.NotFound, self.member._get_pool_prop) - - def test_get_pool_prop_value_error_and_raise(self): - self._get_pool_prop_with_value_error(side_effect=['foo']) - - self.assertRaises(ValueError, self.member._get_pool_prop)