Merge lp:~mpontillo/maas/fix-relay-vlan-hostmap-creation--bug-1686755 into lp:~maas-committers/maas/trunk
- fix-relay-vlan-hostmap-creation--bug-1686755
- Merge into trunk
Proposed by
Mike Pontillo
Status: | Merged |
---|---|
Approved by: | Mike Pontillo |
Approved revision: | no longer in the source branch. |
Merged at revision: | 6041 |
Proposed branch: | lp:~mpontillo/maas/fix-relay-vlan-hostmap-creation--bug-1686755 |
Merge into: | lp:~maas-committers/maas/trunk |
Diff against target: |
669 lines (+276/-71) 3 files modified
src/maasserver/triggers/system.py (+39/-49) src/maasserver/triggers/testing.py (+3/-1) src/maasserver/triggers/tests/test_system_listener.py (+234/-21) |
To merge this branch: | bzr merge lp:~mpontillo/maas/fix-relay-vlan-hostmap-creation--bug-1686755 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Blake Rouse (community) | Approve | ||
Review via email: mp+323561@code.launchpad.net |
Commit message
Fix hostmap creation when IP addresses are created on VLANs with DHCP relay enabled. Also fix DHCP snippet triggers to fire when they occur on a VLAN with DHCP relay enabled.
Description of the change
To post a comment you must log in.
Revision history for this message
Mike Pontillo (mpontillo) wrote : | # |
Fixed. Thanks.
Revision history for this message
Blake Rouse (blake-rouse) : | # |
review:
Needs Fixing
Revision history for this message
Blake Rouse (blake-rouse) wrote : | # |
Thanks for the fixes. Looks good.
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'src/maasserver/triggers/system.py' |
2 | --- src/maasserver/triggers/system.py 2017-01-28 00:51:47 +0000 |
3 | +++ src/maasserver/triggers/system.py 2017-05-05 15:31:09 +0000 |
4 | @@ -368,10 +368,27 @@ |
5 | DHCP_ALERT = dedent("""\ |
6 | CREATE OR REPLACE FUNCTION sys_dhcp_alert(vlan maasserver_vlan) |
7 | RETURNS void AS $$ |
8 | + DECLARE |
9 | + relay_vlan maasserver_vlan; |
10 | BEGIN |
11 | - PERFORM pg_notify(CONCAT('sys_dhcp_', vlan.primary_rack_id), ''); |
12 | - IF vlan.secondary_rack_id IS NOT NULL THEN |
13 | - PERFORM pg_notify(CONCAT('sys_dhcp_', vlan.secondary_rack_id), ''); |
14 | + IF vlan.dhcp_on THEN |
15 | + PERFORM pg_notify(CONCAT('sys_dhcp_', vlan.primary_rack_id), ''); |
16 | + IF vlan.secondary_rack_id IS NOT NULL THEN |
17 | + PERFORM pg_notify(CONCAT('sys_dhcp_', vlan.secondary_rack_id), ''); |
18 | + END IF; |
19 | + END IF; |
20 | + IF vlan.relay_vlan_id IS NOT NULL THEN |
21 | + SELECT maasserver_vlan.* INTO relay_vlan |
22 | + FROM maasserver_vlan |
23 | + WHERE maasserver_vlan.id = vlan.relay_vlan_id; |
24 | + IF relay_vlan.dhcp_on THEN |
25 | + PERFORM pg_notify(CONCAT( |
26 | + 'sys_dhcp_', relay_vlan.primary_rack_id), ''); |
27 | + IF relay_vlan.secondary_rack_id IS NOT NULL THEN |
28 | + PERFORM pg_notify(CONCAT( |
29 | + 'sys_dhcp_', relay_vlan.secondary_rack_id), ''); |
30 | + END IF; |
31 | + END IF; |
32 | END IF; |
33 | RETURN; |
34 | END; |
35 | @@ -393,15 +410,11 @@ |
36 | -- Update old VLAN if DHCP is enabled. |
37 | SELECT * INTO vlan |
38 | FROM maasserver_vlan WHERE id = OLD.vlan_id; |
39 | - IF vlan.dhcp_on THEN |
40 | - PERFORM sys_dhcp_alert(vlan); |
41 | - END IF; |
42 | + PERFORM sys_dhcp_alert(vlan); |
43 | -- Update the new VLAN if DHCP is enabled. |
44 | SELECT * INTO vlan |
45 | FROM maasserver_vlan WHERE id = NEW.vlan_id; |
46 | - IF vlan.dhcp_on THEN |
47 | - PERFORM sys_dhcp_alert(vlan); |
48 | - END IF; |
49 | + PERFORM sys_dhcp_alert(vlan); |
50 | -- Related fields of subnet where changed. |
51 | ELSIF OLD.cidr != NEW.cidr OR |
52 | (OLD.gateway_ip IS NULL AND NEW.gateway_ip IS NOT NULL) OR |
53 | @@ -411,9 +424,7 @@ |
54 | -- Network has changed update alert DHCP if enabled. |
55 | SELECT * INTO vlan |
56 | FROM maasserver_vlan WHERE id = NEW.vlan_id; |
57 | - IF vlan.dhcp_on THEN |
58 | - PERFORM sys_dhcp_alert(vlan); |
59 | - END IF; |
60 | + PERFORM sys_dhcp_alert(vlan); |
61 | END IF; |
62 | RETURN NEW; |
63 | END; |
64 | @@ -431,9 +442,7 @@ |
65 | -- Update VLAN if DHCP is enabled. |
66 | SELECT * INTO vlan |
67 | FROM maasserver_vlan WHERE id = OLD.vlan_id; |
68 | - IF vlan.dhcp_on THEN |
69 | - PERFORM sys_dhcp_alert(vlan); |
70 | - END IF; |
71 | + PERFORM sys_dhcp_alert(vlan); |
72 | RETURN NEW; |
73 | END; |
74 | $$ LANGUAGE plpgsql; |
75 | @@ -453,9 +462,7 @@ |
76 | FROM maasserver_vlan, maasserver_subnet |
77 | WHERE maasserver_subnet.id = NEW.subnet_id AND |
78 | maasserver_subnet.vlan_id = maasserver_vlan.id; |
79 | - IF vlan.dhcp_on THEN |
80 | - PERFORM sys_dhcp_alert(vlan); |
81 | - END IF; |
82 | + PERFORM sys_dhcp_alert(vlan); |
83 | END IF; |
84 | RETURN NEW; |
85 | END; |
86 | @@ -476,9 +483,7 @@ |
87 | FROM maasserver_vlan, maasserver_subnet |
88 | WHERE maasserver_subnet.id = NEW.subnet_id AND |
89 | maasserver_subnet.vlan_id = maasserver_vlan.id; |
90 | - IF vlan.dhcp_on THEN |
91 | - PERFORM sys_dhcp_alert(vlan); |
92 | - END IF; |
93 | + PERFORM sys_dhcp_alert(vlan); |
94 | END IF; |
95 | RETURN NEW; |
96 | END; |
97 | @@ -499,9 +504,7 @@ |
98 | FROM maasserver_vlan, maasserver_subnet |
99 | WHERE maasserver_subnet.id = OLD.subnet_id AND |
100 | maasserver_subnet.vlan_id = maasserver_vlan.id; |
101 | - IF vlan.dhcp_on THEN |
102 | - PERFORM sys_dhcp_alert(vlan); |
103 | - END IF; |
104 | + PERFORM sys_dhcp_alert(vlan); |
105 | END IF; |
106 | RETURN NEW; |
107 | END; |
108 | @@ -523,9 +526,7 @@ |
109 | FROM maasserver_vlan, maasserver_subnet |
110 | WHERE maasserver_subnet.id = NEW.subnet_id AND |
111 | maasserver_subnet.vlan_id = maasserver_vlan.id; |
112 | - IF vlan.dhcp_on THEN |
113 | - PERFORM sys_dhcp_alert(vlan); |
114 | - END IF; |
115 | + PERFORM sys_dhcp_alert(vlan); |
116 | END IF; |
117 | RETURN NEW; |
118 | END; |
119 | @@ -556,17 +557,11 @@ |
120 | maasserver_subnet.vlan_id = maasserver_vlan.id; |
121 | IF old_vlan.id != new_vlan.id THEN |
122 | -- Different VLAN's; update each if DHCP enabled. |
123 | - IF old_vlan.dhcp_on THEN |
124 | - PERFORM sys_dhcp_alert(old_vlan); |
125 | - END IF; |
126 | - IF new_vlan.dhcp_on THEN |
127 | - PERFORM sys_dhcp_alert(new_vlan); |
128 | - END IF; |
129 | + PERFORM sys_dhcp_alert(old_vlan); |
130 | + PERFORM sys_dhcp_alert(new_vlan); |
131 | ELSE |
132 | -- Same VLAN so only need to update once. |
133 | - IF new_vlan.dhcp_on THEN |
134 | - PERFORM sys_dhcp_alert(new_vlan); |
135 | - END IF; |
136 | + PERFORM sys_dhcp_alert(new_vlan); |
137 | END IF; |
138 | ELSIF (OLD.ip IS NULL AND NEW.ip IS NOT NULL) OR |
139 | (OLD.ip IS NOT NULL and NEW.ip IS NULL) OR |
140 | @@ -576,9 +571,7 @@ |
141 | FROM maasserver_vlan, maasserver_subnet |
142 | WHERE maasserver_subnet.id = NEW.subnet_id AND |
143 | maasserver_subnet.vlan_id = maasserver_vlan.id; |
144 | - IF new_vlan.dhcp_on THEN |
145 | - PERFORM sys_dhcp_alert(new_vlan); |
146 | - END IF; |
147 | + PERFORM sys_dhcp_alert(new_vlan); |
148 | END IF; |
149 | END IF; |
150 | RETURN NEW; |
151 | @@ -600,9 +593,7 @@ |
152 | FROM maasserver_vlan, maasserver_subnet |
153 | WHERE maasserver_subnet.id = OLD.subnet_id AND |
154 | maasserver_subnet.vlan_id = maasserver_vlan.id; |
155 | - IF vlan.dhcp_on THEN |
156 | - PERFORM sys_dhcp_alert(vlan); |
157 | - END IF; |
158 | + PERFORM sys_dhcp_alert(vlan); |
159 | END IF; |
160 | RETURN NEW; |
161 | END; |
162 | @@ -635,8 +626,7 @@ |
163 | AND maasserver_staticipaddress.alloc_type != 6 |
164 | AND maasserver_staticipaddress.ip IS NOT NULL |
165 | AND host(maasserver_staticipaddress.ip) != '' |
166 | - AND maasserver_vlan.id = maasserver_subnet.vlan_id |
167 | - AND maasserver_vlan.dhcp_on) |
168 | + AND maasserver_vlan.id = maasserver_subnet.vlan_id) |
169 | LOOP |
170 | PERFORM sys_dhcp_alert(vlan); |
171 | END LOOP; |
172 | @@ -673,8 +663,7 @@ |
173 | AND maasserver_staticipaddress.alloc_type != 6 |
174 | AND maasserver_staticipaddress.ip IS NOT NULL |
175 | AND host(maasserver_staticipaddress.ip) != '' |
176 | - AND maasserver_vlan.id = maasserver_subnet.vlan_id |
177 | - AND maasserver_vlan.dhcp_on) |
178 | + AND maasserver_vlan.id = maasserver_subnet.vlan_id) |
179 | LOOP |
180 | PERFORM sys_dhcp_alert(vlan); |
181 | END LOOP; |
182 | @@ -723,7 +712,8 @@ |
183 | maasserver_subnet |
184 | WHERE maasserver_subnet.id = _subnet_id |
185 | AND maasserver_vlan.id = maasserver_subnet.vlan_id |
186 | - AND maasserver_vlan.dhcp_on = true) |
187 | + AND (maasserver_vlan.dhcp_on = true |
188 | + OR maasserver_vlan.relay_vlan_id IS NOT NULL)) |
189 | LOOP |
190 | PERFORM sys_dhcp_alert(vlan); |
191 | END LOOP; |
192 | @@ -744,8 +734,8 @@ |
193 | FROM maasserver_vlan, maasserver_interface |
194 | WHERE maasserver_interface.node_id = _node_id |
195 | AND maasserver_interface.vlan_id = maasserver_vlan.id |
196 | - AND maasserver_vlan.dhcp_on = true |
197 | - ) |
198 | + AND (maasserver_vlan.dhcp_on = true |
199 | + OR maasserver_vlan.relay_vlan_id IS NOT NULL)) |
200 | SELECT primary_rack_id FROM racks |
201 | WHERE primary_rack_id IS NOT NULL |
202 | UNION |
203 | |
204 | === modified file 'src/maasserver/triggers/testing.py' |
205 | --- src/maasserver/triggers/testing.py 2017-04-11 01:29:40 +0000 |
206 | +++ src/maasserver/triggers/testing.py 2017-05-05 15:31:09 +0000 |
207 | @@ -372,9 +372,11 @@ |
208 | event.delete() |
209 | |
210 | @transactional |
211 | - def create_staticipaddress(self, params=None): |
212 | + def create_staticipaddress(self, params=None, vlan=None): |
213 | if params is None: |
214 | params = {} |
215 | + if vlan is not None: |
216 | + params['subnet'] = vlan.subnet_set.first() |
217 | return factory.make_StaticIPAddress(**params) |
218 | |
219 | @transactional |
220 | |
221 | === modified file 'src/maasserver/triggers/tests/test_system_listener.py' |
222 | --- src/maasserver/triggers/tests/test_system_listener.py 2017-01-28 00:51:47 +0000 |
223 | +++ src/maasserver/triggers/tests/test_system_listener.py 2017-05-05 15:31:09 +0000 |
224 | @@ -842,6 +842,115 @@ |
225 | |
226 | @wait_for_reactor |
227 | @inlineCallbacks |
228 | + def test_sends_messages_when_ip_address_created(self): |
229 | + primary_rack = yield deferToDatabase(self.create_rack_controller) |
230 | + secondary_rack = yield deferToDatabase(self.create_rack_controller) |
231 | + vlan = yield deferToDatabase(self.create_vlan, params={ |
232 | + "dhcp_on": True, |
233 | + "primary_rack": primary_rack, |
234 | + "secondary_rack": secondary_rack, |
235 | + }) |
236 | + relay_vlan = yield deferToDatabase(self.create_vlan, params={ |
237 | + "relay_vlan": vlan |
238 | + }) |
239 | + yield deferToDatabase(self.create_subnet, { |
240 | + "vlan": relay_vlan, |
241 | + }) |
242 | + yield deferToDatabase(register_system_triggers) |
243 | + primary_rack_dv = DeferredValue() |
244 | + secondary_rack_dv = DeferredValue() |
245 | + listener = self.make_listener_without_delay() |
246 | + listener.register( |
247 | + "sys_dhcp_%s" % primary_rack.id, |
248 | + lambda *args: primary_rack_dv.set(args)) |
249 | + listener.register( |
250 | + "sys_dhcp_%s" % secondary_rack.id, |
251 | + lambda *args: secondary_rack_dv.set(args)) |
252 | + yield listener.startService() |
253 | + try: |
254 | + yield deferToDatabase(self.create_staticipaddress, vlan=relay_vlan) |
255 | + yield primary_rack_dv.get(timeout=2) |
256 | + yield secondary_rack_dv.get(timeout=2) |
257 | + finally: |
258 | + yield listener.stopService() |
259 | + |
260 | + @wait_for_reactor |
261 | + @inlineCallbacks |
262 | + def test_sends_messages_when_ip_address_updated(self): |
263 | + primary_rack = yield deferToDatabase(self.create_rack_controller) |
264 | + secondary_rack = yield deferToDatabase(self.create_rack_controller) |
265 | + vlan = yield deferToDatabase(self.create_vlan, params={ |
266 | + "dhcp_on": True, |
267 | + "primary_rack": primary_rack, |
268 | + "secondary_rack": secondary_rack, |
269 | + }) |
270 | + relay_vlan = yield deferToDatabase(self.create_vlan, params={ |
271 | + "relay_vlan": vlan |
272 | + }) |
273 | + yield deferToDatabase(self.create_subnet, { |
274 | + "vlan": relay_vlan, |
275 | + }) |
276 | + yield deferToDatabase(register_system_triggers) |
277 | + primary_rack_dv = DeferredValue() |
278 | + secondary_rack_dv = DeferredValue() |
279 | + listener = self.make_listener_without_delay() |
280 | + listener.register( |
281 | + "sys_dhcp_%s" % primary_rack.id, |
282 | + lambda *args: primary_rack_dv.set(args)) |
283 | + listener.register( |
284 | + "sys_dhcp_%s" % secondary_rack.id, |
285 | + lambda *args: secondary_rack_dv.set(args)) |
286 | + sip = yield deferToDatabase( |
287 | + self.create_staticipaddress, vlan=relay_vlan) |
288 | + yield listener.startService() |
289 | + try: |
290 | + yield deferToDatabase( |
291 | + self.update_staticipaddress, sip.id, params={ |
292 | + 'ip': '' |
293 | + }) |
294 | + yield primary_rack_dv.get(timeout=2) |
295 | + yield secondary_rack_dv.get(timeout=2) |
296 | + finally: |
297 | + yield listener.stopService() |
298 | + |
299 | + @wait_for_reactor |
300 | + @inlineCallbacks |
301 | + def test_sends_messages_when_ip_address_deleted(self): |
302 | + primary_rack = yield deferToDatabase(self.create_rack_controller) |
303 | + secondary_rack = yield deferToDatabase(self.create_rack_controller) |
304 | + vlan = yield deferToDatabase(self.create_vlan, params={ |
305 | + "dhcp_on": True, |
306 | + "primary_rack": primary_rack, |
307 | + "secondary_rack": secondary_rack, |
308 | + }) |
309 | + relay_vlan = yield deferToDatabase(self.create_vlan, params={ |
310 | + "relay_vlan": vlan |
311 | + }) |
312 | + yield deferToDatabase(self.create_subnet, { |
313 | + "vlan": relay_vlan, |
314 | + }) |
315 | + yield deferToDatabase(register_system_triggers) |
316 | + primary_rack_dv = DeferredValue() |
317 | + secondary_rack_dv = DeferredValue() |
318 | + listener = self.make_listener_without_delay() |
319 | + listener.register( |
320 | + "sys_dhcp_%s" % primary_rack.id, |
321 | + lambda *args: primary_rack_dv.set(args)) |
322 | + listener.register( |
323 | + "sys_dhcp_%s" % secondary_rack.id, |
324 | + lambda *args: secondary_rack_dv.set(args)) |
325 | + sip = yield deferToDatabase( |
326 | + self.create_staticipaddress, vlan=relay_vlan) |
327 | + yield listener.startService() |
328 | + try: |
329 | + yield deferToDatabase(self.delete_staticipaddress, sip.id) |
330 | + yield primary_rack_dv.get(timeout=2) |
331 | + yield secondary_rack_dv.get(timeout=2) |
332 | + finally: |
333 | + yield listener.stopService() |
334 | + |
335 | + @wait_for_reactor |
336 | + @inlineCallbacks |
337 | def test_sends_messages_when_relay_vlan_unset(self): |
338 | yield deferToDatabase(register_system_triggers) |
339 | primary_rack = yield deferToDatabase(self.create_rack_controller) |
340 | @@ -1283,6 +1392,11 @@ |
341 | MAASTransactionServerTestCase, TransactionalHelpersMixin): |
342 | """End-to-end test for the DHCP triggers code.""" |
343 | |
344 | + scenarios = ( |
345 | + ('with_dhcp_relay', {"dhcp_relay": True}), |
346 | + ('without_dhcp_relay', {"dhcp_relay": False}), |
347 | + ) |
348 | + |
349 | @wait_for_reactor |
350 | @inlineCallbacks |
351 | def test_sends_message_for_new_managed_dhcp_range(self): |
352 | @@ -1294,12 +1408,16 @@ |
353 | "primary_rack": primary_rack, |
354 | "secondary_rack": secondary_rack, |
355 | }) |
356 | + relay_vlan = None |
357 | + if self.dhcp_relay: |
358 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
359 | + "relay_vlan": vlan, |
360 | + }) |
361 | network = factory.make_ipv4_network() |
362 | subnet = yield deferToDatabase(self.create_subnet, { |
363 | "cidr": str(network.cidr), |
364 | - "vlan": vlan, |
365 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
366 | }) |
367 | - |
368 | listener = self.make_listener_without_delay() |
369 | primary_dv = DeferredValue() |
370 | listener.register( |
371 | @@ -1336,10 +1454,15 @@ |
372 | "primary_rack": primary_rack, |
373 | "secondary_rack": secondary_rack, |
374 | }) |
375 | + relay_vlan = None |
376 | + if self.dhcp_relay: |
377 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
378 | + "relay_vlan": vlan, |
379 | + }) |
380 | network = factory.make_ipv4_network() |
381 | subnet = yield deferToDatabase(self.create_subnet, { |
382 | "cidr": str(network.cidr), |
383 | - "vlan": vlan, |
384 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
385 | }) |
386 | network = subnet.get_ipnetwork() |
387 | start_ip = str(IPAddress(network.first + 2)) |
388 | @@ -1382,10 +1505,15 @@ |
389 | "primary_rack": primary_rack, |
390 | "secondary_rack": secondary_rack, |
391 | }) |
392 | + relay_vlan = None |
393 | + if self.dhcp_relay: |
394 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
395 | + "relay_vlan": vlan, |
396 | + }) |
397 | network = factory.make_ipv4_network() |
398 | subnet = yield deferToDatabase(self.create_subnet, { |
399 | "cidr": str(network.cidr), |
400 | - "vlan": vlan, |
401 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
402 | }) |
403 | network = subnet.get_ipnetwork() |
404 | start_ip = str(IPAddress(network.first + 2)) |
405 | @@ -1427,10 +1555,15 @@ |
406 | "primary_rack": primary_rack, |
407 | "secondary_rack": secondary_rack, |
408 | }) |
409 | + relay_vlan = None |
410 | + if self.dhcp_relay: |
411 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
412 | + "relay_vlan": vlan, |
413 | + }) |
414 | network = factory.make_ipv4_network() |
415 | subnet = yield deferToDatabase(self.create_subnet, { |
416 | "cidr": str(network.cidr), |
417 | - "vlan": vlan, |
418 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
419 | }) |
420 | network = subnet.get_ipnetwork() |
421 | start_ip = str(IPAddress(network.first + 2)) |
422 | @@ -1472,10 +1605,15 @@ |
423 | "primary_rack": primary_rack, |
424 | "secondary_rack": secondary_rack, |
425 | }) |
426 | + relay_vlan = None |
427 | + if self.dhcp_relay: |
428 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
429 | + "relay_vlan": vlan, |
430 | + }) |
431 | network = factory.make_ipv4_network() |
432 | subnet = yield deferToDatabase(self.create_subnet, { |
433 | "cidr": str(network.cidr), |
434 | - "vlan": vlan, |
435 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
436 | }) |
437 | network = subnet.get_ipnetwork() |
438 | start_ip = str(IPAddress(network.first + 2)) |
439 | @@ -1536,7 +1674,7 @@ |
440 | lambda *args: secondary_dv.set(args)) |
441 | yield listener.startService() |
442 | try: |
443 | - yield deferToDatabase(self.create_staticipaddress, { |
444 | + yield deferToDatabase(self.create_staticipaddress, params={ |
445 | "subnet": subnet, |
446 | "alloc_type": IPADDRESS_TYPE.USER_RESERVED, |
447 | "user": user, |
448 | @@ -1987,6 +2125,11 @@ |
449 | MAASTransactionServerTestCase, TransactionalHelpersMixin): |
450 | """End-to-end test for the DHCP triggers code.""" |
451 | |
452 | + scenarios = ( |
453 | + ('with_dhcp_relay', {"dhcp_relay": True}), |
454 | + ('without_dhcp_relay', {"dhcp_relay": False}), |
455 | + ) |
456 | + |
457 | @wait_for_reactor |
458 | @inlineCallbacks |
459 | def test_sends_message_for_global_dhcp_snippet_inserted(self): |
460 | @@ -1996,8 +2139,13 @@ |
461 | "dhcp_on": True, |
462 | "primary_rack": primary_rack, |
463 | }) |
464 | + relay_vlan = None |
465 | + if self.dhcp_relay: |
466 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
467 | + "relay_vlan": vlan, |
468 | + }) |
469 | yield deferToDatabase(self.create_subnet, { |
470 | - "vlan": vlan, |
471 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
472 | }) |
473 | dv = DeferredValue() |
474 | listener = self.make_listener_without_delay() |
475 | @@ -2022,8 +2170,13 @@ |
476 | "dhcp_on": True, |
477 | "primary_rack": primary_rack, |
478 | }) |
479 | + relay_vlan = None |
480 | + if self.dhcp_relay: |
481 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
482 | + "relay_vlan": vlan, |
483 | + }) |
484 | yield deferToDatabase(self.create_subnet, { |
485 | - "vlan": vlan, |
486 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
487 | }) |
488 | dv = DeferredValue() |
489 | listener = self.make_listener_without_delay() |
490 | @@ -2051,8 +2204,13 @@ |
491 | "dhcp_on": True, |
492 | "primary_rack": primary_rack, |
493 | }) |
494 | + relay_vlan = None |
495 | + if self.dhcp_relay: |
496 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
497 | + "relay_vlan": vlan, |
498 | + }) |
499 | subnet = yield deferToDatabase(self.create_subnet, { |
500 | - "vlan": vlan, |
501 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
502 | }) |
503 | dv = DeferredValue() |
504 | listener = self.make_listener_without_delay() |
505 | @@ -2078,8 +2236,13 @@ |
506 | "dhcp_on": True, |
507 | "primary_rack": primary_rack, |
508 | }) |
509 | + relay_vlan = None |
510 | + if self.dhcp_relay: |
511 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
512 | + "relay_vlan": vlan, |
513 | + }) |
514 | yield deferToDatabase(self.create_subnet, { |
515 | - "vlan": vlan, |
516 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
517 | }) |
518 | node = yield deferToDatabase(self.create_node) |
519 | yield deferToDatabase(self.create_interface, { |
520 | @@ -2110,8 +2273,13 @@ |
521 | "dhcp_on": True, |
522 | "primary_rack": primary_rack, |
523 | }) |
524 | + relay_vlan = None |
525 | + if self.dhcp_relay: |
526 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
527 | + "relay_vlan": vlan, |
528 | + }) |
529 | yield deferToDatabase(self.create_subnet, { |
530 | - "vlan": vlan, |
531 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
532 | }) |
533 | dhcp_snippet = yield deferToDatabase(self.create_dhcp_snippet, { |
534 | "enabled": True, |
535 | @@ -2140,8 +2308,13 @@ |
536 | "dhcp_on": True, |
537 | "primary_rack": primary_rack, |
538 | }) |
539 | + relay_vlan = None |
540 | + if self.dhcp_relay: |
541 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
542 | + "relay_vlan": vlan, |
543 | + }) |
544 | yield deferToDatabase(self.create_subnet, { |
545 | - "vlan": vlan, |
546 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
547 | }) |
548 | dhcp_snippet = yield deferToDatabase(self.create_dhcp_snippet, { |
549 | "enabled": False, |
550 | @@ -2173,8 +2346,13 @@ |
551 | "dhcp_on": True, |
552 | "primary_rack": primary_rack, |
553 | }) |
554 | + relay_vlan = None |
555 | + if self.dhcp_relay: |
556 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
557 | + "relay_vlan": vlan, |
558 | + }) |
559 | yield deferToDatabase(self.create_subnet, { |
560 | - "vlan": vlan, |
561 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
562 | }) |
563 | dhcp_snippet = yield deferToDatabase(self.create_dhcp_snippet, { |
564 | "enabled": False, |
565 | @@ -2202,8 +2380,13 @@ |
566 | "dhcp_on": True, |
567 | "primary_rack": primary_rack, |
568 | }) |
569 | + relay_vlan = None |
570 | + if self.dhcp_relay: |
571 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
572 | + "relay_vlan": vlan, |
573 | + }) |
574 | yield deferToDatabase(self.create_subnet, { |
575 | - "vlan": vlan, |
576 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
577 | }) |
578 | dhcp_snippet = yield deferToDatabase(self.create_dhcp_snippet, { |
579 | "enabled": True, |
580 | @@ -2231,8 +2414,13 @@ |
581 | "dhcp_on": True, |
582 | "primary_rack": primary_rack, |
583 | }) |
584 | + relay_vlan = None |
585 | + if self.dhcp_relay: |
586 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
587 | + "relay_vlan": vlan, |
588 | + }) |
589 | subnet = yield deferToDatabase(self.create_subnet, { |
590 | - "vlan": vlan, |
591 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
592 | }) |
593 | dhcp_snippet = yield deferToDatabase(self.create_dhcp_snippet, { |
594 | "enabled": True, |
595 | @@ -2260,8 +2448,13 @@ |
596 | "dhcp_on": True, |
597 | "primary_rack": primary_rack, |
598 | }) |
599 | + relay_vlan = None |
600 | + if self.dhcp_relay: |
601 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
602 | + "relay_vlan": vlan, |
603 | + }) |
604 | yield deferToDatabase(self.create_subnet, { |
605 | - "vlan": vlan, |
606 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
607 | }) |
608 | node = yield deferToDatabase(self.create_node) |
609 | yield deferToDatabase(self.create_interface, { |
610 | @@ -2294,8 +2487,13 @@ |
611 | "dhcp_on": True, |
612 | "primary_rack": primary_rack, |
613 | }) |
614 | + relay_vlan = None |
615 | + if self.dhcp_relay: |
616 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
617 | + "relay_vlan": vlan, |
618 | + }) |
619 | yield deferToDatabase(self.create_subnet, { |
620 | - "vlan": vlan, |
621 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
622 | }) |
623 | dhcp_snippet = yield deferToDatabase(self.create_dhcp_snippet, { |
624 | "enabled": True, |
625 | @@ -2321,8 +2519,13 @@ |
626 | "dhcp_on": True, |
627 | "primary_rack": primary_rack, |
628 | }) |
629 | + relay_vlan = None |
630 | + if self.dhcp_relay: |
631 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
632 | + "relay_vlan": vlan, |
633 | + }) |
634 | yield deferToDatabase(self.create_subnet, { |
635 | - "vlan": vlan, |
636 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
637 | }) |
638 | dhcp_snippet = yield deferToDatabase(self.create_dhcp_snippet, { |
639 | "enabled": False, |
640 | @@ -2351,8 +2554,13 @@ |
641 | "dhcp_on": True, |
642 | "primary_rack": primary_rack, |
643 | }) |
644 | + relay_vlan = None |
645 | + if self.dhcp_relay: |
646 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
647 | + "relay_vlan": vlan, |
648 | + }) |
649 | subnet = yield deferToDatabase(self.create_subnet, { |
650 | - "vlan": vlan, |
651 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
652 | }) |
653 | dhcp_snippet = yield deferToDatabase(self.create_dhcp_snippet, { |
654 | "enabled": True, |
655 | @@ -2379,8 +2587,13 @@ |
656 | "dhcp_on": True, |
657 | "primary_rack": primary_rack, |
658 | }) |
659 | + relay_vlan = None |
660 | + if self.dhcp_relay: |
661 | + relay_vlan = yield deferToDatabase(self.create_vlan, { |
662 | + "relay_vlan": vlan, |
663 | + }) |
664 | yield deferToDatabase(self.create_subnet, { |
665 | - "vlan": vlan, |
666 | + "vlan": relay_vlan if self.dhcp_relay else vlan, |
667 | }) |
668 | node = yield deferToDatabase(self.create_node) |
669 | yield deferToDatabase(self.create_interface, { |
Looks good mostly. But have some issues in the dhcp alert procedure that needs to be fixed.