Public bug reported: I tried to execute following config/procedure, as a result, OVSFWPortNotFound occurred when deleting VM instance. It affects l2 agent extension behavior.
[Conditions] * master branch of devstack and neutron * /etc/neutron/plugins/ml2/ml2_conf.ini mechanism_drivers = openvswtich,linuxbridge ... [security_groups] firewall_driver = openvswitch [How to reproduce] 1. source ~/devstack/openrc demo demo 2. openstack server create --flavor c1 --image cirros-0.3.5-x86_64-disk --nic net-id='3793bece-1cc0-457c-a90f-6cc64a96831c' test 3. openstack server create --flavor c1 --image cirros-0.3.5-x86_64-disk --nic net-id='3793bece-1cc0-457c-a90f-6cc64a96831c' test2 4. openstack server delete test [/opt/stack/logs/q-agt.log] neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent Traceback (most recent call last): neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py", line 2048, in rpc_loop neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent port_info, ovs_restarted) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/usr/local/lib/python2.7/dist-packages/osprofiler/profiler.py", line 153, in wrapper neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent return f(*args, **kwargs) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py", line 1650, in process_network_ports neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent port_info.get('updated', set())) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/agent/securitygroups_rpc.py", line 278, in setup_port_filters neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent self.refresh_firewall(updated_devices) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/agent/securitygroups_rpc.py", line 111, in decorated_function neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent *args, **kwargs) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/agent/securitygroups_rpc.py", line 231, in refresh_firewall neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent self._apply_port_filter(device_ids, update_filter=True) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/agent/securitygroups_rpc.py", line 146, in _apply_port_filter neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent self.firewall.process_trusted_ports(trusted_devices) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/agent/linux/openvswitch_firewall/firewall.py", line 533, in process_trusted_ports neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent self._initialize_egress_no_port_security(port_id) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/agent/linux/openvswitch_firewall/firewall.py", line 607, in _initialize_egress_no_port_security neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent ovs_port = self.get_ovs_port(port_id) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/agent/linux/openvswitch_firewall/firewall.py", line 414, in get_ovs_port neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent raise exceptions.OVSFWPortNotFound(port_id=port_id) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent OVSFWPortNotFound: Port fe6e71be-a506-4e1e-a832-e9c62356134a is not managed by this agent. neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent [Affection to l2 agent extension behavior] * Usual delete_port() used to be called twice [1] and [2] * Raised OVSFWPortNotFound delete_port() is called only once from [1]. delete_port() from [2] isn't called because self.process_deleted_ports()[3] isn't called due to this exception before called this method. [1] https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py#L1586 [2] https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py#L436 [3] https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py#L2031 ** Affects: neutron Importance: Undecided Status: New ** Tags: ovs-fw -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1707913 Title: OVS driver - OVSFWPortNotFound when deleting VM port affects agent extension framework Status in neutron: New Bug description: I tried to execute following config/procedure, as a result, OVSFWPortNotFound occurred when deleting VM instance. It affects l2 agent extension behavior. [Conditions] * master branch of devstack and neutron * /etc/neutron/plugins/ml2/ml2_conf.ini mechanism_drivers = openvswtich,linuxbridge ... [security_groups] firewall_driver = openvswitch [How to reproduce] 1. source ~/devstack/openrc demo demo 2. openstack server create --flavor c1 --image cirros-0.3.5-x86_64-disk --nic net-id='3793bece-1cc0-457c-a90f-6cc64a96831c' test 3. openstack server create --flavor c1 --image cirros-0.3.5-x86_64-disk --nic net-id='3793bece-1cc0-457c-a90f-6cc64a96831c' test2 4. openstack server delete test [/opt/stack/logs/q-agt.log] neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent Traceback (most recent call last): neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py", line 2048, in rpc_loop neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent port_info, ovs_restarted) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/usr/local/lib/python2.7/dist-packages/osprofiler/profiler.py", line 153, in wrapper neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent return f(*args, **kwargs) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py", line 1650, in process_network_ports neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent port_info.get('updated', set())) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/agent/securitygroups_rpc.py", line 278, in setup_port_filters neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent self.refresh_firewall(updated_devices) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/agent/securitygroups_rpc.py", line 111, in decorated_function neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent *args, **kwargs) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/agent/securitygroups_rpc.py", line 231, in refresh_firewall neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent self._apply_port_filter(device_ids, update_filter=True) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/agent/securitygroups_rpc.py", line 146, in _apply_port_filter neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent self.firewall.process_trusted_ports(trusted_devices) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/agent/linux/openvswitch_firewall/firewall.py", line 533, in process_trusted_ports neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent self._initialize_egress_no_port_security(port_id) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/agent/linux/openvswitch_firewall/firewall.py", line 607, in _initialize_egress_no_port_security neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent ovs_port = self.get_ovs_port(port_id) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent File "/opt/stack/neutron/neutron/agent/linux/openvswitch_firewall/firewall.py", line 414, in get_ovs_port neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent raise exceptions.OVSFWPortNotFound(port_id=port_id) neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent OVSFWPortNotFound: Port fe6e71be-a506-4e1e-a832-e9c62356134a is not managed by this agent. neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent [Affection to l2 agent extension behavior] * Usual delete_port() used to be called twice [1] and [2] * Raised OVSFWPortNotFound delete_port() is called only once from [1]. delete_port() from [2] isn't called because self.process_deleted_ports()[3] isn't called due to this exception before called this method. [1] https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py#L1586 [2] https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py#L436 [3] https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py#L2031 To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1707913/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp