Merge "Do not send status update in case of IpAddressAlreadyAllocated"
This commit is contained in:
commit
868dce2f25
@ -368,5 +368,10 @@ class OvnProviderDriver(driver_base.ProviderDriver):
|
|||||||
vip_dict[constants.VIP_ADDRESS] = (
|
vip_dict[constants.VIP_ADDRESS] = (
|
||||||
port['fixed_ips'][0]['ip_address'])
|
port['fixed_ips'][0]['ip_address'])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise driver_exceptions.DriverError(e)
|
kwargs = {}
|
||||||
|
if hasattr(e, 'message'):
|
||||||
|
kwargs = {'user_fault_string': e.message,
|
||||||
|
'operator_fault_string': e.message}
|
||||||
|
raise driver_exceptions.DriverError(
|
||||||
|
**kwargs)
|
||||||
return vip_dict
|
return vip_dict
|
||||||
|
@ -1675,7 +1675,7 @@ class OvnProviderHelper(object):
|
|||||||
neutron_client = clients.get_neutron_client()
|
neutron_client = clients.get_neutron_client()
|
||||||
try:
|
try:
|
||||||
return neutron_client.create_port(port)
|
return neutron_client.create_port(port)
|
||||||
except n_exc.IpAddressAlreadyAllocatedClient:
|
except n_exc.IpAddressAlreadyAllocatedClient as e:
|
||||||
# Sometimes the VIP is already created (race-conditions)
|
# Sometimes the VIP is already created (race-conditions)
|
||||||
# Lets get the it from Neutron API.
|
# Lets get the it from Neutron API.
|
||||||
ports = neutron_client.list_ports(
|
ports = neutron_client.list_ports(
|
||||||
@ -1684,13 +1684,7 @@ class OvnProviderHelper(object):
|
|||||||
if not ports['ports']:
|
if not ports['ports']:
|
||||||
LOG.error('Cannot create/get LoadBalancer VIP port with '
|
LOG.error('Cannot create/get LoadBalancer VIP port with '
|
||||||
'fixed IP: %s', vip_d[constants.VIP_ADDRESS])
|
'fixed IP: %s', vip_d[constants.VIP_ADDRESS])
|
||||||
status = {
|
raise e
|
||||||
constants.LOADBALANCERS: [{
|
|
||||||
constants.ID: lb_id,
|
|
||||||
constants.PROVISIONING_STATUS: constants.ERROR,
|
|
||||||
constants.OPERATING_STATUS: constants.ERROR}]}
|
|
||||||
self._update_status_to_octavia(status)
|
|
||||||
return
|
|
||||||
# there should only be one port returned
|
# there should only be one port returned
|
||||||
port = ports['ports'][0]
|
port = ports['ports'][0]
|
||||||
LOG.debug('VIP Port already exists, uuid: %s', port['id'])
|
LOG.debug('VIP Port already exists, uuid: %s', port['id'])
|
||||||
|
@ -2255,22 +2255,19 @@ class TestOvnProviderHelper(ovn_base.TestOvnOctaviaBase):
|
|||||||
net_cli.return_value.list_ports.return_value = {
|
net_cli.return_value.list_ports.return_value = {
|
||||||
'ports': []}
|
'ports': []}
|
||||||
self.vip_dict['vip_address'] = '10.1.10.1'
|
self.vip_dict['vip_address'] = '10.1.10.1'
|
||||||
ret = self.helper.create_vip_port(
|
self.assertRaises(
|
||||||
|
n_exc.IpAddressAlreadyAllocatedClient,
|
||||||
|
self.helper.create_vip_port,
|
||||||
self.project_id,
|
self.project_id,
|
||||||
self.loadbalancer_id,
|
self.loadbalancer_id,
|
||||||
self.vip_dict)
|
self.vip_dict)
|
||||||
self.assertIsNone(ret)
|
|
||||||
expected_call = [
|
expected_call = [
|
||||||
mock.call().list_ports(
|
mock.call().list_ports(
|
||||||
network_id='%s' % self.vip_dict['vip_network_id'],
|
network_id='%s' % self.vip_dict['vip_network_id'],
|
||||||
name='%s%s' % (ovn_const.LB_VIP_PORT_PREFIX,
|
name='%s%s' % (ovn_const.LB_VIP_PORT_PREFIX,
|
||||||
self.loadbalancer_id))]
|
self.loadbalancer_id))]
|
||||||
net_cli.assert_has_calls(expected_call)
|
net_cli.assert_has_calls(expected_call)
|
||||||
self.helper._update_status_to_octavia.assert_called_once_with(
|
self.helper._update_status_to_octavia.assert_not_called()
|
||||||
{'loadbalancers':
|
|
||||||
[{'id': self.loadbalancer_id,
|
|
||||||
'provisioning_status': 'ERROR',
|
|
||||||
'operating_status': 'ERROR'}]})
|
|
||||||
|
|
||||||
def test_get_pool_member_id(self):
|
def test_get_pool_member_id(self):
|
||||||
ret = self.helper.get_pool_member_id(
|
ret = self.helper.get_pool_member_id(
|
||||||
|
Loading…
Reference in New Issue
Block a user