Merge "Error handling improvements"
This commit is contained in:
commit
e9200beef0
@ -700,7 +700,18 @@ class LBaaSv2Driver(base.LBaaSDriver):
|
||||
}
|
||||
self.add_tags('member', request)
|
||||
lbaas = clients.get_loadbalancer_client()
|
||||
response = lbaas.create_member(member['pool_id'], **request)
|
||||
try:
|
||||
response = lbaas.create_member(member['pool_id'], **request)
|
||||
except os_exc.BadRequestException as e:
|
||||
details = e.response.json()
|
||||
if (details['faultstring'] == f'Subnet {member["subnet_id"]} not '
|
||||
f'found.'):
|
||||
# Most likely the subnet is deleted already as the namespace is
|
||||
# being deleted. Ignore, we'll delete that LB soon anyway.
|
||||
LOG.warning('Member %s not created as subnet %s is being '
|
||||
'deleted.', member['name'], member['subnet_id'])
|
||||
return None
|
||||
raise
|
||||
member['id'] = response.id
|
||||
return member
|
||||
|
||||
|
@ -280,6 +280,12 @@ class NestedVlanPodVIFDriver(nested_vif.NestedPodVIFDriver):
|
||||
subports_body.append({'port_id': subport_id})
|
||||
try:
|
||||
os_net.delete_trunk_subports(trunk_id, subports_body)
|
||||
except os_exc.NotFoundException:
|
||||
if len(subports_id) > 1:
|
||||
LOG.debug('Not Found on subport deletion, most likely some '
|
||||
'subports in the list got detached already.')
|
||||
raise # We don't know if all ports are detached, so raise.
|
||||
# If single requested port is detached already, we're cool, ignore.
|
||||
except os_exc.SDKException:
|
||||
LOG.exception("Error happened during subport removal from "
|
||||
"trunk %s", trunk_id)
|
||||
|
@ -118,10 +118,10 @@ class NetworkPolicyDriver(base.NetworkPolicyDriver):
|
||||
try:
|
||||
self._create_knp_crd(policy, i_rules, e_rules)
|
||||
except exceptions.K8sNamespaceTerminating:
|
||||
LOG.warning('Namespace %s is being terminated, ignoring '
|
||||
'NetworkPolicy %s in that namespace.',
|
||||
policy['metadata']['namespace'],
|
||||
policy['metadata']['name'])
|
||||
LOG.debug('Namespace %s is being terminated, ignoring '
|
||||
'NetworkPolicy %s in that namespace.',
|
||||
policy['metadata']['namespace'],
|
||||
policy['metadata']['name'])
|
||||
return
|
||||
else:
|
||||
self._patch_knp_crd(policy, i_rules, e_rules, knp)
|
||||
|
@ -1138,7 +1138,6 @@ class NestedVIFPool(BaseVIFPool):
|
||||
"pools.")
|
||||
raise exceptions.ResourceNotReady(net_id)
|
||||
|
||||
epool = eventlet.GreenPool(constants.LEFTOVER_RM_POOL_SIZE)
|
||||
ports_to_remove = []
|
||||
|
||||
# NOTE(ltomasbo): Note the pods should already be deleted, but their
|
||||
@ -1154,6 +1153,10 @@ class NestedVIFPool(BaseVIFPool):
|
||||
for p_id in sg_ports]
|
||||
try:
|
||||
self._drv_vif._remove_subports(trunk_id, ports_id)
|
||||
except os_exc.NotFoundException:
|
||||
# We don't know which subport was already removed, but we'll
|
||||
# attempt a manual detach on DELETE error, so just continue.
|
||||
pass
|
||||
except (os_exc.SDKException, os_exc.HttpException):
|
||||
LOG.exception('Error removing subports from trunk: %s',
|
||||
trunk_id)
|
||||
@ -1175,11 +1178,9 @@ class NestedVIFPool(BaseVIFPool):
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
for result in epool.imap(c_utils.delete_neutron_port, ports_to_remove):
|
||||
if result:
|
||||
LOG.error('During Neutron port deletion an error occured: %s',
|
||||
result)
|
||||
raise result
|
||||
if not c_utils.delete_ports(ports_to_remove):
|
||||
LOG.error('Some ports failed to be deleted.')
|
||||
raise exceptions.ResourceNotReady(net_id)
|
||||
|
||||
|
||||
class MultiVIFPool(base.VIFPoolDriver):
|
||||
|
@ -89,10 +89,10 @@ class ServiceHandler(k8s_base.ResourceEventHandler):
|
||||
self._bump_network_policies(service)
|
||||
self.create_crd_spec(service)
|
||||
except k_exc.K8sNamespaceTerminating:
|
||||
LOG.warning('Namespace %s is being terminated, ignoring '
|
||||
'Service %s in that namespace.',
|
||||
service['metadata']['namespace'],
|
||||
service['metadata']['name'])
|
||||
LOG.debug('Namespace %s is being terminated, ignoring '
|
||||
'Service %s in that namespace.',
|
||||
service['metadata']['namespace'],
|
||||
service['metadata']['name'])
|
||||
return
|
||||
elif self._has_lbaas_spec_changes(service, loadbalancer_crd):
|
||||
self._update_crd_spec(loadbalancer_crd, service)
|
||||
@ -353,9 +353,9 @@ class EndpointsHandler(k8s_base.ResourceEventHandler):
|
||||
try:
|
||||
self._update_crd_spec(loadbalancer_crd, endpoints)
|
||||
except k_exc.K8sNamespaceTerminating:
|
||||
LOG.warning('Namespace %s is being terminated, ignoring '
|
||||
'Endpoints %s in that namespace.',
|
||||
ep_namespace, ep_name)
|
||||
LOG.debug('Namespace %s is being terminated, ignoring '
|
||||
'Endpoints %s in that namespace.',
|
||||
ep_namespace, ep_name)
|
||||
|
||||
def on_deleted(self, endpoints, *args, **kwargs):
|
||||
self._remove_endpoints(endpoints)
|
||||
|
@ -108,10 +108,9 @@ class VIFHandler(k8s_base.ResourceEventHandler):
|
||||
except k_exc.K8sNamespaceTerminating:
|
||||
# The underlying namespace is being terminated, we can
|
||||
# ignore this and let `on_finalize` handle this now.
|
||||
LOG.warning('Namespace %s is being terminated, ignoring Pod '
|
||||
'%s in that namespace.',
|
||||
pod['metadata']['namespace'],
|
||||
pod_name)
|
||||
LOG.debug('Namespace %s is being terminated, ignoring Pod '
|
||||
'%s in that namespace.',
|
||||
pod['metadata']['namespace'], pod_name)
|
||||
return
|
||||
except k_exc.K8sClientException as ex:
|
||||
self.k8s.add_event(pod, 'FailedToCreateKuryrPortCRD',
|
||||
|
@ -1757,8 +1757,7 @@ class NestedVIFPool(test_base.TestCase):
|
||||
m_driver._drv_vif._remove_subports.assert_called_once_with(trunk_id,
|
||||
[port_id])
|
||||
m_driver._drv_vif._release_vlan_id.assert_called_once_with(vlan_id)
|
||||
m_pool.imap.assert_called_once_with(utils.delete_neutron_port,
|
||||
[port_id])
|
||||
m_pool.imap.assert_called_once_with(utils.delete_port, [port_id])
|
||||
|
||||
def test_delete_network_pools_not_ready(self):
|
||||
cls = vif_pool.NestedVIFPool
|
||||
@ -1851,5 +1850,4 @@ class NestedVIFPool(test_base.TestCase):
|
||||
m_driver._drv_vif._remove_subports.assert_called_once_with(trunk_id,
|
||||
[port_id])
|
||||
m_driver._drv_vif._release_vlan_id.assert_not_called()
|
||||
m_pool.imap.assert_called_once_with(utils.delete_neutron_port,
|
||||
[port_id])
|
||||
m_pool.imap.assert_called_once_with(utils.delete_port, [port_id])
|
||||
|
Loading…
x
Reference in New Issue
Block a user