diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-07-11 17:45:20 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-07-11 17:45:21 +0000 |
commit | e69890db54c92d480d579aee170d7ec0136e3ffe (patch) | |
tree | 8372d6279776307194a2c5a36838cd329f637109 | |
parent | abf410460d5c887b804c97deeb56004ee68feef6 (diff) | |
parent | 77e0d2f73ed65afd8b24ab1b8658afe7650c3d2d (diff) | |
download | neutron-e69890db54c92d480d579aee170d7ec0136e3ffe.tar.gz |
Merge "Log warning message if get_subnet_for_dvr fails" into stable/liberty
-rw-r--r-- | neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py | 13 | ||||
-rw-r--r-- | neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py | 20 |
2 files changed, 31 insertions, 2 deletions
diff --git a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py index cac439994a..bd9b4ccb1d 100644 --- a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py +++ b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py @@ -377,8 +377,9 @@ class OVSDVRNeutronAgent(object): subnet_info = self.plugin_rpc.get_subnet_for_dvr( self.context, subnet_uuid, fixed_ips=fixed_ips) if not subnet_info: - LOG.error(_LE("DVR: Unable to retrieve subnet information " - "for subnet_id %s"), subnet_uuid) + LOG.warning(_LW("DVR: Unable to retrieve subnet information " + "for subnet_id %s. The subnet or the gateway " + "may have already been deleted"), subnet_uuid) return LOG.debug("get_subnet_for_dvr for subnet %(uuid)s " "returned with %(info)s", @@ -528,6 +529,14 @@ class OVSDVRNeutronAgent(object): # for this subnet subnet_info = self.plugin_rpc.get_subnet_for_dvr( self.context, subnet_uuid, fixed_ips=fixed_ips) + if not subnet_info: + LOG.warning(_LW("DVR: Unable to retrieve subnet information " + "for subnet_id %s. The subnet or the gateway " + "may have already been deleted"), subnet_uuid) + return + LOG.debug("get_subnet_for_dvr for subnet %(uuid)s " + "returned with %(info)s", + {"uuid": subnet_uuid, "info": subnet_info}) ldm = LocalDVRSubnetMapping(subnet_info, port.ofport) self.local_dvr_map[subnet_uuid] = ldm else: diff --git a/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py b/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py index 0ceb73a57e..1da95741fd 100644 --- a/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py +++ b/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py @@ -2239,6 +2239,26 @@ class TestOvsDvrNeutronAgent(object): False) return int_br, tun_br + def test_port_bound_for_dvr_with_csnat_ports_without_subnet(self): + self._setup_for_dvr_test() + int_br = mock.create_autospec(self.agent.int_br) + tun_br = mock.create_autospec(self.agent.tun_br) + + # get_subnet_for_dvr RPC returns {} on error + with mock.patch.object(self.agent.dvr_agent.plugin_rpc, + 'get_subnet_for_dvr', + return_value={}),\ + mock.patch.object(self.agent, 'int_br', new=int_br),\ + mock.patch.object(self.agent, 'tun_br', new=tun_br),\ + mock.patch.object(self.agent.dvr_agent, 'int_br', new=int_br),\ + mock.patch.object(self.agent.dvr_agent, 'tun_br', new=tun_br): + self.agent.port_bound( + self._port, self._net_uuid, 'vxlan', + None, None, self._fixed_ips, + n_const.DEVICE_OWNER_ROUTER_SNAT, + False) + self.assertFalse(int_br.install_dvr_to_src_mac.called) + def test_treat_devices_removed_for_dvr_interface(self): self._test_treat_devices_removed_for_dvr_interface() self._test_treat_devices_removed_for_dvr_interface(ip_version=6) |