author | Girish Moodalbail <Girish.Moodalbail@oracle.COM> |
Fri, 16 Oct 2015 15:53:02 -0700 | |
changeset 4975 | 6445e44cfccd |
permissions | -rw-r--r-- |
4975
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
1 |
This patch fixes the upstream bug 1431105 that is only fixed in Kilo. |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
2 |
|
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
3 |
commit 05f234481474aa05f59c4af459b4343d21397afc |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
4 |
Author: Kevin Benton <email address hidden> |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
5 |
Date: Wed Mar 11 18:32:52 2015 -0700 |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
6 |
|
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
7 |
Schedule net to a DHCP agt on subnet create |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
8 |
|
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
9 |
Change the DHCP notifier behavior to schedule a network |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
10 |
to a DHCP agent when a subnet is created rather than |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
11 |
waiting for the first port to be created. |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
12 |
|
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
13 |
This will reduce the possibility to get a VM port created |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
14 |
and have it send a DHCP request before the DHCP agent is |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
15 |
ready. Before, the network would be scheduled to an agent |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
16 |
as a result of the API call to create the VM port, so the |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
17 |
DHCP port wouldn't be created until after the VM port. |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
18 |
After this patch, the network will have been scheduled to |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
19 |
a DHCP agent before the first VM port is created. |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
20 |
|
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
21 |
There is still a possibility that the DHCP agent could be |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
22 |
responding so slowly that it doesn't create its port and |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
23 |
activate the dnsmasq instance before the VM sends traffic. |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
24 |
A proper fix will ensure that the dnsmasq instance is |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
25 |
truly ready to serve requests for a new port will require |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
26 |
significantly more code for barriers (either on the subnet |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
27 |
creation, port creation, or the nova boot process) are too |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
28 |
complex to add this late in the cycle. |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
29 |
|
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
30 |
This patch also eliminates the logic in the n1kv plugin that |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
31 |
was already doing the same thing. |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
32 |
|
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
33 |
Closes-Bug: #1431105 |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
34 |
Change-Id: I1c1caed0fdda6b801375a07f9252a9127058a07e |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
35 |
|
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
36 |
--- neutron-2014.2.2/neutron/api/rpc/agentnotifiers/dhcp_rpc_agent_api.py 2015-02-05 07:45:33.000000000 -0800 |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
37 |
+++ new/neutron/api/rpc/agentnotifiers/dhcp_rpc_agent_api.py 2015-10-13 15:48:35.280824405 -0700 |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
38 |
@@ -63,8 +63,8 @@ |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
39 |
{'network': {'id': network['id']}}, agent['host']) |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
40 |
elif not existing_agents: |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
41 |
LOG.warn(_('Unable to schedule network %s: no agents available; ' |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
42 |
- 'will retry on subsequent port creation events.'), |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
43 |
- network['id']) |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
44 |
+ 'will retry on subsequent port and subnet creation ' |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
45 |
+ 'events.'), network['id']) |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
46 |
return new_agents + existing_agents |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
47 |
|
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
48 |
def _get_enabled_agents(self, context, network, agents, method, payload): |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
49 |
@@ -119,6 +119,7 @@ |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
50 |
|
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
51 |
# schedule the network first, if needed |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
52 |
schedule_required = ( |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
53 |
+ method == 'subnet_create_end' or |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
54 |
method == 'port_create_end' and |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
55 |
not self._is_reserved_dhcp_port(payload['port'])) |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
56 |
if schedule_required: |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
57 |
--- neutron-2014.2.2/neutron/plugins/cisco/n1kv/n1kv_neutron_plugin.py 2015-02-05 07:45:33.000000000 -0800 |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
58 |
+++ new/neutron/plugins/cisco/n1kv/n1kv_neutron_plugin.py 2015-10-16 13:04:56.539001054 -0700 |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
59 |
@@ -1293,10 +1293,6 @@ |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
60 |
self).delete_subnet(context, sub['id']) |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
61 |
else: |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
62 |
LOG.debug(_("Created subnet: %s"), sub['id']) |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
63 |
- if not q_conf.CONF.network_auto_schedule: |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
64 |
- # Schedule network to a DHCP agent |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
65 |
- net = self.get_network(context, sub['network_id']) |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
66 |
- self.schedule_network(context, net) |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
67 |
return sub |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
68 |
|
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
diff
changeset
|
69 |
def update_subnet(self, context, id, subnet): |