Merge lp:~vishvananda/nova/lp852771 into lp:~hudson-openstack/nova/milestone-proposed

Proposed by Vish Ishaya
Status: Merged
Approved by: Vish Ishaya
Approved revision: 1545
Merged at revision: 1181
Proposed branch: lp:~vishvananda/nova/lp852771
Merge into: lp:~hudson-openstack/nova/milestone-proposed
Diff against target: 82 lines (+26/-0)
2 files modified
nova/network/linux_net.py (+19/-0)
nova/network/manager.py (+7/-0)
To merge this branch: bzr merge lp:~vishvananda/nova/lp852771
Reviewer Review Type Date Requested Status
OpenStack release team Pending
Review via email: mp+76097@code.launchpad.net

Description of the change

Adds an optional flag to force dhcp releases on instance termination. This allows ips to be reused without having to wait for the lease to timeout.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'nova/network/linux_net.py'
2--- nova/network/linux_net.py 2011-09-07 20:10:05 +0000
3+++ nova/network/linux_net.py 2011-09-19 20:13:58 +0000
4@@ -540,6 +540,10 @@
5 return '\n'.join(hosts)
6
7
8+def release_dhcp(dev, address, mac_address):
9+ utils.execute('dhcp_release', dev, address, mac_address, run_as_root=True)
10+
11+
12 # NOTE(ja): Sending a HUP only reloads the hostfile, so any
13 # configuration options (like dchp-range, vlan, ...)
14 # aren't reloaded.
15@@ -790,6 +794,10 @@
16 return interface_driver.unplug(network)
17
18
19+def get_dev(network):
20+ return interface_driver.get_dev(network)
21+
22+
23 class LinuxNetInterfaceDriver(object):
24 """Abstract class that defines generic network host API"""
25 """ for for all Linux interface drivers."""
26@@ -802,6 +810,11 @@
27 """Destory Linux device, return device name"""
28 raise NotImplementedError()
29
30+ def get_dev(self, network):
31+ """Get device name"""
32+ raise NotImplementedError()
33+
34+
35
36 # plugs interfaces using Linux Bridge
37 class LinuxBridgeInterfaceDriver(LinuxNetInterfaceDriver):
38@@ -823,6 +836,9 @@
39 return network['bridge']
40
41 def unplug(self, network):
42+ return self.get_dev(network)
43+
44+ def get_dev(self, network):
45 return network['bridge']
46
47 @classmethod
48@@ -947,6 +963,9 @@
49 return dev
50
51 def unplug(self, network):
52+ return self.get_dev(network)
53+
54+ def get_dev(self, network):
55 dev = "gw-" + str(network['id'])
56 return dev
57
58
59=== modified file 'nova/network/manager.py'
60--- nova/network/manager.py 2011-09-14 21:57:52 +0000
61+++ nova/network/manager.py 2011-09-19 20:13:58 +0000
62@@ -110,6 +110,8 @@
63 'Network host to use for ip allocation in flat modes')
64 flags.DEFINE_bool('fake_call', False,
65 'If True, skip using the queue and make local calls')
66+flags.DEFINE_bool('force_dhcp_release', False,
67+ 'If True, send a dhcp release on instance termination')
68
69
70 class AddressAlreadyAllocated(exception.Error):
71@@ -629,6 +631,11 @@
72 instance_id = instance_ref['id']
73 self._do_trigger_security_group_members_refresh_for_instance(
74 instance_id)
75+ if FLAGS.force_dhcp_release:
76+ dev = self.driver.get_dev(fixed_ip_ref['network'])
77+ vif = self.db.virtual_interface_get_by_instance_and_network(
78+ context, instance_ref['id'], fixed_ip_ref['network']['id'])
79+ self.driver.release_dhcp(dev, address, vif['address'])
80
81 def lease_fixed_ip(self, context, address):
82 """Called by dhcp-bridge when ip is leased."""

Subscribers

People subscribed via source and target branches