Merge "Check NotFound with pool property in pool member"
This commit is contained in:
commit
78705d11ec
|
@ -131,20 +131,28 @@ class PoolMember(octavia_base.OctaviaBase):
|
|||
|
||||
def _resource_create(self, properties):
|
||||
return self.client().member_create(
|
||||
self.properties[self.POOL], json={'member': properties})['member']
|
||||
self._get_pool_prop(), json={'member': properties})['member']
|
||||
|
||||
def _resource_update(self, prop_diff):
|
||||
self.client().member_set(self.properties[self.POOL],
|
||||
self.client().member_set(self._get_pool_prop(),
|
||||
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):
|
||||
self.client().member_delete(self.properties[self.POOL],
|
||||
self.resource_id)
|
||||
pool = self._get_pool_prop()
|
||||
if pool:
|
||||
self.client().member_delete(pool, self.resource_id)
|
||||
|
||||
def _show_resource(self):
|
||||
return self.client().member_show(
|
||||
self.properties[self.POOL], self.resource_id)
|
||||
self._get_pool_prop(), self.resource_id)
|
||||
|
||||
|
||||
def resource_mapping():
|
||||
|
|
|
@ -17,6 +17,7 @@ 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
|
||||
|
@ -155,6 +156,48 @@ class PoolMemberTest(common.HeatTestCase):
|
|||
'1234')
|
||||
self.assertFalse(self.member._delete_called)
|
||||
|
||||
def _prepare_delete_with_value_error(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.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')
|
||||
|
||||
def test_delete_failed(self):
|
||||
self._create_stack()
|
||||
self.member.resource_id_set('1234')
|
||||
|
@ -165,3 +208,32 @@ 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)
|
||||
|
|
Loading…
Reference in New Issue