Hi, I have added few more questions to the bug [1]. Please confirm my understanding.
[1] https://bugs.launchpad.net/neutron/+bug/1470612/comments/12 On Tue, Jul 28, 2015 at 12:14 PM, Shraddha Pandhe < [email protected]> wrote: > Hi, > > I started working on this patch for bug [0], but it doesn't seem as > straightforward as Kevin and I initially thought. Here's why: > > Initially we thought that a simple self.cache.push_port will work as > follows: > > In __init__ [1], in _populate_network_cache [2], get all existing active > networks from neutron using plugin_rpc similar to [3]. Then, for each of > those networks, go through all the subnets and ports and add them in [4] > before updating the cache. > > But I realized that this will not work because, if we try to get all > active subnets and ports and populate those in cache, we may miss the > delta. Consider following scenario: > > Cache state before agent stopped: > networks 1 > subnets 4 > ports 10 > > While the agent was down: > networks 1 > subnets 6 > ports 12 > > Now, then the agent comes back up, if we follow the above method, the > network cache will immediately populate itself to the new state, without > actually creating those subnets and ports in dhcp config. So if we want to > follow this route, we need a mechanism to get known_subnet_ids and > known_port_ids from dhcp driver, just like we get known_network_ids at [5] > &[6]. To me, that seems too much work for what it does. > > Any better ideas to solve this problem? > > > > [0] https://bugs.launchpad.net/neutron/+bug/1470612 > [1] > https://github.com/openstack/neutron/blob/master/neutron/agent/dhcp/agent.py#L54 > [2] > https://github.com/openstack/neutron/blob/master/neutron/agent/dhcp/agent.py#L75 > [3] > https://github.com/openstack/neutron/blob/master/neutron/agent/dhcp/agent.py#L156 > [4] > https://github.com/openstack/neutron/blob/master/neutron/agent/dhcp/agent.py#L82-L85 > [5] > https://github.com/openstack/neutron/blob/master/neutron/agent/dhcp/agent.py#L78 > [6] > https://github.com/openstack/neutron/blob/master/neutron/agent/linux/dhcp.py#L293-L302 > > On Wed, Jul 1, 2015 at 11:28 AM, Shraddha Pandhe < > [email protected]> wrote: > >> Hi, >> >> I had a discussion about this with Kevin Benton on IRC. Filed a bug: >> https://bugs.launchpad.net/neutron/+bug/1470612 >> >> Thanks! >> >> >> On Wed, Jul 1, 2015 at 11:03 AM, Shraddha Pandhe < >> [email protected]> wrote: >> >>> Hi Shihan, >>> >>> I think the problem is slightly different. Does your patch take care of >>> the scenario where a port was deleted AFTER agent restart (not when agent >>> was down)? >>> >>> My problem is that, when the agent restarts, it loses its previous >>> network cache. As soon as the agent starts, as part of "__init__", it >>> rebuilds that cache [1]. But it does not put the ports in there [2]. >>> >>> In sync_state, Neutron tries to enable/disable networks, by checking the >>> diff between Neutron's state and its own network cache that it just built >>> [3]. It enables any NEW networks and disables any DELETED networks, but it >>> does nothing to PREVIOUSLY KNOWN NETWORKS. So those subnets and ports >>> remain empty lists. >>> >>> Now, if such a port is deleted, [4] will return None and the port will >>> never get deleted from the config. >>> >>> [1] >>> https://github.com/openstack/neutron/blob/master/neutron/agent/dhcp/agent.py#L68 >>> [2] >>> https://github.com/openstack/neutron/blob/master/neutron/agent/dhcp/agent.py#L79-L86 >>> [3] >>> https://github.com/openstack/neutron/blob/master/neutron/agent/dhcp/agent.py#L154-L171 >>> [4] >>> https://github.com/openstack/neutron/blob/master/neutron/agent/dhcp/agent.py#L349 >>> >>> >>> >> >
__________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: [email protected]?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
