NSX|V+V3: Fix Octavia statuses update
Make sure all relevant objects status will be updated Change-Id: Id3b55816ca4552e6e0a3d00efd2a1e682b6fc18e
This commit is contained in:
parent
25d7108d32
commit
194801fdf7
@ -119,17 +119,27 @@ class NSXOctaviaListenerEndpoint(object):
|
||||
loadbalancer_id = None
|
||||
if obj.get('loadbalancer_id'):
|
||||
loadbalancer_id = obj.get('loadbalancer_id')
|
||||
elif obj.get('pool'):
|
||||
if obj.get('pool'):
|
||||
pool_id = obj['pool']['id']
|
||||
loadbalancer_id = obj['pool']['loadbalancer_id']
|
||||
elif obj.get('listener'):
|
||||
listener_id = obj['pool'].get('listener_id')
|
||||
if not loadbalancer_id:
|
||||
loadbalancer_id = obj['pool'].get('loadbalancer_id')
|
||||
elif obj.get('pool_id'):
|
||||
pool_id = obj['pool_id']
|
||||
if obj.get('listener'):
|
||||
listener_id = obj['listener']['id']
|
||||
loadbalancer_id = obj['listener']['loadbalancer_id']
|
||||
elif obj.get('policy') and obj['policy'].get('listener'):
|
||||
if not loadbalancer_id:
|
||||
loadbalancer_id = obj['listener'].get(
|
||||
'loadbalancer_id')
|
||||
elif obj.get('listener_id'):
|
||||
listener_id = obj['listener_id']
|
||||
if obj.get('policy') and obj['policy'].get('listener'):
|
||||
policy_id = obj['policy']['id']
|
||||
listener_id = obj['policy']['listener']['id']
|
||||
loadbalancer_id = obj['policy']['listener'][
|
||||
'loadbalancer_id']
|
||||
if not listener_id:
|
||||
listener_id = obj['policy']['listener']['id']
|
||||
if not loadbalancer_id:
|
||||
loadbalancer_id = obj['policy']['listener'].get(
|
||||
'loadbalancer_id')
|
||||
|
||||
if loadbalancer_id:
|
||||
status_dict[constants.LOADBALANCERS] = [{
|
||||
|
@ -16,6 +16,7 @@
|
||||
import mock
|
||||
import testtools
|
||||
|
||||
from neutron_lib import exceptions
|
||||
from oslo_utils import uuidutils
|
||||
|
||||
from vmware_nsx.services.lbaas.octavia import octavia_listener
|
||||
@ -26,22 +27,35 @@ class DummyOctaviaResource(object):
|
||||
update_called = False
|
||||
delete_called = False
|
||||
delete_cascade_called = False
|
||||
to_raise = False
|
||||
|
||||
def create(self, ctx, lb_obj, completor_func, **args):
|
||||
self.create_called = True
|
||||
completor_func(success=True)
|
||||
if self.to_raise:
|
||||
raise exceptions.InvalidInput(error_message='test')
|
||||
else:
|
||||
completor_func(success=True)
|
||||
|
||||
def update(self, ctx, old_lb_obj, new_lb_obj, completor_func, **args):
|
||||
self.update_called = True
|
||||
completor_func(success=True)
|
||||
if self.to_raise:
|
||||
raise exceptions.InvalidInput(error_message='test')
|
||||
else:
|
||||
completor_func(success=True)
|
||||
|
||||
def delete(self, ctx, lb_obj, completor_func, **args):
|
||||
self.delete_called = True
|
||||
completor_func(success=True)
|
||||
if self.to_raise:
|
||||
raise exceptions.InvalidInput(error_message='test')
|
||||
else:
|
||||
completor_func(success=True)
|
||||
|
||||
def delete_cascade(self, ctx, lb_obj, completor_func, **args):
|
||||
self.delete_cascade_called = True
|
||||
completor_func(success=True)
|
||||
if self.to_raise:
|
||||
raise exceptions.InvalidInput(error_message='test')
|
||||
else:
|
||||
completor_func(success=True)
|
||||
|
||||
|
||||
class TestNsxOctaviaListener(testtools.TestCase):
|
||||
@ -82,6 +96,19 @@ class TestNsxOctaviaListener(testtools.TestCase):
|
||||
'provisioning_status': 'ACTIVE',
|
||||
'id': mock.ANY}]})
|
||||
|
||||
def test_loadbalancer_create_failed(self):
|
||||
self.dummyResource.create_called = False
|
||||
self.dummyResource.to_raise = True
|
||||
self.endpoint.loadbalancer_create(self.ctx, self.dummyObj)
|
||||
self.assertTrue(self.dummyResource.create_called)
|
||||
self.clientMock.cast.assert_called_once_with(
|
||||
{}, 'update_loadbalancer_status',
|
||||
status={'loadbalancers': [
|
||||
{'operating_status': 'ERROR',
|
||||
'provisioning_status': 'ERROR',
|
||||
'id': mock.ANY}]})
|
||||
self.dummyResource.to_raise = False
|
||||
|
||||
def test_loadbalancer_delete(self):
|
||||
self.dummyResource.delete_called = False
|
||||
self.endpoint.loadbalancer_delete(self.ctx, self.dummyObj)
|
||||
@ -192,14 +219,40 @@ class TestNsxOctaviaListener(testtools.TestCase):
|
||||
|
||||
def test_member_create(self):
|
||||
self.dummyResource.create_called = False
|
||||
self.endpoint.member_create(self.ctx, self.dummyObj)
|
||||
lb_id = uuidutils.generate_uuid()
|
||||
pool_id = uuidutils.generate_uuid()
|
||||
listener_id = uuidutils.generate_uuid()
|
||||
member_id = uuidutils.generate_uuid()
|
||||
member_obj = {
|
||||
'id': member_id,
|
||||
'protocol_port': 80,
|
||||
'name': 'dummy',
|
||||
'pool_id': pool_id,
|
||||
'project_id': uuidutils.generate_uuid(),
|
||||
'pool': {'listener_id': listener_id,
|
||||
'id': pool_id,
|
||||
'loadbalancer_id': lb_id,
|
||||
'listener': {'protocol': 'HTTP',
|
||||
'id': listener_id,
|
||||
'default_pool_id': pool_id,
|
||||
'loadbalancer': {'id': lb_id}}}}
|
||||
self.endpoint.member_create(self.ctx, member_obj)
|
||||
self.assertTrue(self.dummyResource.create_called)
|
||||
self.clientMock.cast.assert_called_once_with(
|
||||
{}, 'update_loadbalancer_status',
|
||||
status={'members': [
|
||||
{'operating_status': 'ONLINE',
|
||||
'provisioning_status': 'ACTIVE',
|
||||
'id': mock.ANY}]})
|
||||
status={'members': [{'operating_status': 'ONLINE',
|
||||
'provisioning_status': 'ACTIVE',
|
||||
'id': member_id}],
|
||||
'loadbalancers': [{'operating_status': 'ONLINE',
|
||||
'provisioning_status': 'ACTIVE',
|
||||
'id': lb_id}],
|
||||
'pools': [{'operating_status': 'ONLINE',
|
||||
'provisioning_status': 'ACTIVE',
|
||||
'id': pool_id}],
|
||||
'listeners': [{'operating_status': 'ONLINE',
|
||||
'provisioning_status': 'ACTIVE',
|
||||
'id': listener_id}],
|
||||
})
|
||||
|
||||
def test_member_delete(self):
|
||||
self.dummyResource.delete_called = False
|
||||
|
Loading…
x
Reference in New Issue
Block a user