Merge lp:~vishvananda/nova/dhcplease-flags into lp:~hudson-openstack/nova/trunk

Proposed by Joshua McKenty
Status: Merged
Approved by: Monty Taylor
Approved revision: 143
Merged at revision: 150
Proposed branch: lp:~vishvananda/nova/dhcplease-flags
Merge into: lp:~hudson-openstack/nova/trunk
Diff against target: 247 lines (+50/-34)
10 files modified
bin/nova-dhcpbridge (+17/-12)
debian/nova-api.conf (+2/-1)
debian/nova-api.install (+1/-0)
debian/nova-compute.conf (+0/-2)
debian/nova-dhcp.conf (+2/-0)
debian/nova-objectstore.conf (+0/-1)
debian/nova-volume.conf (+0/-1)
nova/compute/linux_net.py (+11/-5)
nova/compute/network.py (+3/-3)
nova/tests/network_unittest.py (+14/-9)
To merge this branch: bzr merge lp:~vishvananda/nova/dhcplease-flags
Reviewer Review Type Date Requested Status
Monty Taylor (community) Needs Fixing
Joshua McKenty (community) Approve
Review via email: mp+30142@code.launchpad.net

Commit message

Fixes to dhcp lease code to use a flagfile

Description of the change

Already reviewed against soren's branch.

To post a comment you must log in.
Revision history for this message
Joshua McKenty (joshua-mckenty) wrote :

Reviewed this against soren's branch already.

review: Approve
Revision history for this message
Monty Taylor (mordred) wrote :

Needs to be merged with trunk. There is currently an unresolved merge conflict.

review: Needs Fixing
Revision history for this message
Joshua McKenty (joshua-mckenty) wrote :

> Needs to be merged with trunk. There is currently an unresolved merge
> conflict.

Looks resolved to me, am I missing something?

Revision history for this message
Soren Hansen (soren) wrote :

When attempting the merge, I get a conflict in nova/compute/linux_net.py. Fix that, and I'll approve the merge.

lp:~vishvananda/nova/dhcplease-flags updated
143. By Vish Ishaya

merged trunk

Revision history for this message
Vish Ishaya (vishvananda) wrote :

fixed again

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== renamed file 'bin/dhcpleasor.py' => 'bin/nova-dhcpbridge'
--- bin/dhcpleasor.py 2010-07-15 23:13:48 +0000
+++ bin/nova-dhcpbridge 2010-07-19 19:46:42 +0000
@@ -18,23 +18,27 @@
18# under the License.18# under the License.
1919
20"""20"""
21dhcpleasor.py21nova-dhcpbridge
2222
23Handle lease database updates from DHCP servers.23Handle lease database updates from DHCP servers.
24"""24"""
2525
26import logging
27import os
26import sys28import sys
27import os29
28import logging30#TODO(joshua): there is concern that the user dnsmasq runs under will not
31# have nova in the path. This should be verified and if it is
32# not true the ugly line below can be removed
29sys.path.append(os.path.abspath(os.path.join(__file__, "../../")))33sys.path.append(os.path.abspath(os.path.join(__file__, "../../")))
3034
31logging.debug(sys.path)35from nova import flags
32import getopt
33from os import environ
34from nova import rpc36from nova import rpc
35from nova import flags37from nova import utils
36from nova.compute import linux_net38from nova.compute import linux_net
37from nova.compute import network39from nova.compute import network
40
41
38FLAGS = flags.FLAGS42FLAGS = flags.FLAGS
3943
4044
@@ -63,11 +67,12 @@
63 return res67 return res
6468
6569
66def main(argv=None):70def main():
67 if argv is None:71 flagfile = os.environ.get('FLAGFILE', FLAGS.dhcpbridge_flagfile)
68 argv = sys.argv72 utils.default_flagfile(flagfile)
69 interface = environ.get('DNSMASQ_INTERFACE', 'br0')73 argv = FLAGS(sys.argv)
70 if int(environ.get('TESTING', '0')):74 interface = os.environ.get('DNSMASQ_INTERFACE', 'br0')
75 if int(os.environ.get('TESTING', '0')):
71 FLAGS.fake_rabbit = True76 FLAGS.fake_rabbit = True
72 FLAGS.redis_db = 877 FLAGS.redis_db = 8
73 FLAGS.network_size = 3278 FLAGS.network_size = 32
7479
=== modified file 'debian/nova-api.conf'
--- debian/nova-api.conf 2010-07-05 13:37:52 +0000
+++ debian/nova-api.conf 2010-07-19 19:46:42 +0000
@@ -1,5 +1,6 @@
1--daemonize=11--daemonize=1
2--ca_path=/var/lib/nova/CA2--ca_path=/var/lib/nova/CA
3--keys_path=/var/lib/nova/keys3--keys_path=/var/lib/nova/keys
4--networks_path=/var/lib/nova/networks
5--dhcpbridge_flagfile=/etc/nova/nova-dhcpbridge.conf
4--fake_users=16--fake_users=1
5--datastore_path=/var/lib/nova/keeper
67
=== modified file 'debian/nova-api.install'
--- debian/nova-api.install 2010-07-12 15:39:01 +0000
+++ debian/nova-api.install 2010-07-19 19:46:42 +0000
@@ -1,2 +1,3 @@
1bin/nova-api usr/bin1bin/nova-api usr/bin
2debian/nova-api.conf etc/nova2debian/nova-api.conf etc/nova
3debian/nova-dhcpbridge.conf etc/nova
34
=== modified file 'debian/nova-compute.conf'
--- debian/nova-compute.conf 2010-07-14 23:48:05 +0000
+++ debian/nova-compute.conf 2010-07-19 19:46:42 +0000
@@ -1,8 +1,6 @@
1--ca_path=/var/lib/nova/CA1--ca_path=/var/lib/nova/CA
2--keys_path=/var/lib/nova/keys2--keys_path=/var/lib/nova/keys
3--datastore_path=/var/lib/nova/keeper
4--instances_path=/var/lib/nova/instances3--instances_path=/var/lib/nova/instances
5--networks_path=/var/lib/nova/networks
6--simple_network_template=/usr/share/nova/interfaces.template4--simple_network_template=/usr/share/nova/interfaces.template
7--libvirt_xml_template=/usr/share/nova/libvirt.xml.template5--libvirt_xml_template=/usr/share/nova/libvirt.xml.template
8--vpn_client_template=/usr/share/nova/client.ovpn.template6--vpn_client_template=/usr/share/nova/client.ovpn.template
97
=== added file 'debian/nova-dhcp.conf'
--- debian/nova-dhcp.conf 1970-01-01 00:00:00 +0000
+++ debian/nova-dhcp.conf 2010-07-19 19:46:42 +0000
@@ -0,0 +1,2 @@
1--networks_path=/var/lib/nova/networks
2--fake_users=1
03
=== modified file 'debian/nova-objectstore.conf'
--- debian/nova-objectstore.conf 2010-07-05 13:37:52 +0000
+++ debian/nova-objectstore.conf 2010-07-19 19:46:42 +0000
@@ -1,7 +1,6 @@
1--daemonize=11--daemonize=1
2--ca_path=/var/lib/nova/CA2--ca_path=/var/lib/nova/CA
3--keys_path=/var/lib/nova/keys3--keys_path=/var/lib/nova/keys
4--datastore_path=/var/lib/nova/keeper
5--fake_users=14--fake_users=1
6--images_path=/var/lib/nova/images5--images_path=/var/lib/nova/images
7--buckets_path=/var/lib/nova/buckets6--buckets_path=/var/lib/nova/buckets
87
=== modified file 'debian/nova-volume.conf'
--- debian/nova-volume.conf 2010-07-05 13:37:52 +0000
+++ debian/nova-volume.conf 2010-07-19 19:46:42 +0000
@@ -1,7 +1,6 @@
1--daemonize=11--daemonize=1
2--ca_path=/var/lib/nova/CA2--ca_path=/var/lib/nova/CA
3--keys_path=/var/lib/nova/keys3--keys_path=/var/lib/nova/keys
4--datastore_path=/var/lib/nova/keeper
5--fake_users=14--fake_users=1
6--images_path=/var/lib/nova/images5--images_path=/var/lib/nova/images
7--buckets_path=/var/lib/nova/buckets6--buckets_path=/var/lib/nova/buckets
87
=== modified file 'nova/compute/linux_net.py'
--- nova/compute/linux_net.py 2010-07-18 17:02:04 +0000
+++ nova/compute/linux_net.py 2010-07-19 19:46:42 +0000
@@ -28,12 +28,16 @@
28from nova import flags28from nova import flags
29FLAGS=flags.FLAGS29FLAGS=flags.FLAGS
3030
31def execute(cmd):31flags.DEFINE_string('dhcpbridge_flagfile',
32 '/etc/nova-dhcpbridge.conf',
33 'location of flagfile for dhcpbridge')
34
35def execute(cmd, addl_env=None):
32 if FLAGS.fake_network:36 if FLAGS.fake_network:
33 logging.debug("FAKE NET: %s" % cmd)37 logging.debug("FAKE NET: %s" % cmd)
34 return "fake", 038 return "fake", 0
35 else:39 else:
36 return utils.execute(cmd)40 return utils.execute(cmd, addl_env=addl_env)
3741
38def runthis(desc, cmd):42def runthis(desc, cmd):
39 if FLAGS.fake_network:43 if FLAGS.fake_network:
@@ -61,7 +65,7 @@
6165
62def bind_public_ip(ip, interface):66def bind_public_ip(ip, interface):
63 runthis("Binding IP to interface: %s", "sudo ip addr add %s dev %s" % (ip, interface))67 runthis("Binding IP to interface: %s", "sudo ip addr add %s dev %s" % (ip, interface))
64 68
65def unbind_public_ip(ip, interface):69def unbind_public_ip(ip, interface):
66 runthis("Binding IP to interface: %s", "sudo ip addr del %s dev %s" % (ip, interface))70 runthis("Binding IP to interface: %s", "sudo ip addr del %s dev %s" % (ip, interface))
6771
@@ -99,7 +103,7 @@
99 ' --except-interface=lo',103 ' --except-interface=lo',
100 ' --dhcp-range=%s,static,600s' % (net.dhcp_range_start),104 ' --dhcp-range=%s,static,600s' % (net.dhcp_range_start),
101 ' --dhcp-hostsfile=%s' % dhcp_file(net['vlan'], 'conf'),105 ' --dhcp-hostsfile=%s' % dhcp_file(net['vlan'], 'conf'),
102 ' --dhcp-script=%s' % bin_file('dhcpleasor.py'),106 ' --dhcp-script=%s' % bin_file('nova-dhcpbridge'),
103 ' --leasefile-ro']107 ' --leasefile-ro']
104 return ''.join(cmd)108 return ''.join(cmd)
105109
@@ -139,7 +143,9 @@
139 if os.path.exists(lease_file):143 if os.path.exists(lease_file):
140 os.unlink(lease_file)144 os.unlink(lease_file)
141145
142 Popen(dnsmasq_cmd(network).split(" "))146 # FLAGFILE in env
147 env = {'FLAGFILE' : FLAGS.dhcpbridge_flagfile}
148 execute(dnsmasq_cmd(network), addl_env=env)
143149
144def stop_dnsmasq(network):150def stop_dnsmasq(network):
145 """ stops the dnsmasq instance for a given network """151 """ stops the dnsmasq instance for a given network """
146152
=== modified file 'nova/compute/network.py'
--- nova/compute/network.py 2010-07-16 22:42:40 +0000
+++ nova/compute/network.py 2010-07-19 19:46:42 +0000
@@ -251,7 +251,7 @@
251 raise compute_exception.NoMoreAddresses("Project %s with network %s" %251 raise compute_exception.NoMoreAddresses("Project %s with network %s" %
252 (project_id, str(self.network)))252 (project_id, str(self.network)))
253253
254 def lease_ip(self, ip_str): 254 def lease_ip(self, ip_str):
255 logging.debug("Leasing allocated IP %s" % (ip_str))255 logging.debug("Leasing allocated IP %s" % (ip_str))
256256
257 def release_ip(self, ip_str):257 def release_ip(self, ip_str):
@@ -566,10 +566,10 @@
566566
567def deallocate_ip(address):567def deallocate_ip(address):
568 return get_network_by_address(address).deallocate_ip(address)568 return get_network_by_address(address).deallocate_ip(address)
569 569
570def release_ip(address):570def release_ip(address):
571 return get_network_by_address(address).release_ip(address)571 return get_network_by_address(address).release_ip(address)
572 572
573def lease_ip(address):573def lease_ip(address):
574 return get_network_by_address(address).lease_ip(address)574 return get_network_by_address(address).lease_ip(address)
575575
576576
=== modified file 'nova/tests/network_unittest.py'
--- nova/tests/network_unittest.py 2010-07-15 23:13:48 +0000
+++ nova/tests/network_unittest.py 2010-07-19 19:46:42 +0000
@@ -19,16 +19,15 @@
19import IPy19import IPy
20import os20import os
21import logging21import logging
22import unittest
2322
24from nova import flags23from nova import flags
25from nova import test24from nova import test
26from nova import exception25from nova import utils
26from nova.auth import users
27from nova.compute import network
27from nova.compute.exception import NoMoreAddresses28from nova.compute.exception import NoMoreAddresses
28from nova.compute import network
29from nova.auth import users
30from nova import utils
3129
30FLAGS = flags.FLAGS
3231
33class NetworkTestCase(test.TrialTestCase):32class NetworkTestCase(test.TrialTestCase):
34 def setUp(self):33 def setUp(self):
@@ -180,14 +179,20 @@
180179
181class FakeDNSMasq(object):180class FakeDNSMasq(object):
182 def issue_ip(self, mac, ip, hostname, interface):181 def issue_ip(self, mac, ip, hostname, interface):
183 cmd = "%s add %s %s %s" % (binpath('dhcpleasor.py'), mac, ip, hostname)182 cmd = "%s add %s %s %s" % (binpath('nova-dhcpbridge'),
184 env = {'DNSMASQ_INTERFACE': interface, 'TESTING' : '1'}183 mac, ip, hostname)
184 env = {'DNSMASQ_INTERFACE': interface,
185 'TESTING' : '1',
186 'FLAGFILE' : FLAGS.dhcpbridge_flagfile}
185 (out, err) = utils.execute(cmd, addl_env=env)187 (out, err) = utils.execute(cmd, addl_env=env)
186 logging.debug("ISSUE_IP: %s, %s " % (out, err))188 logging.debug("ISSUE_IP: %s, %s " % (out, err))
187189
188 def release_ip(self, mac, ip, hostname, interface):190 def release_ip(self, mac, ip, hostname, interface):
189 cmd = "%s del %s %s %s" % (binpath('dhcpleasor.py'), mac, ip, hostname)191 cmd = "%s del %s %s %s" % (binpath('nova-dhcpbridge'),
190 env = {'DNSMASQ_INTERFACE': interface, 'TESTING' : '1'}192 mac, ip, hostname)
193 env = {'DNSMASQ_INTERFACE': interface,
194 'TESTING' : '1',
195 'FLAGFILE' : FLAGS.dhcpbridge_flagfile}
191 (out, err) = utils.execute(cmd, addl_env=env)196 (out, err) = utils.execute(cmd, addl_env=env)
192 logging.debug("RELEASE_IP: %s, %s " % (out, err))197 logging.debug("RELEASE_IP: %s, %s " % (out, err))
193198