Make nova-dhcpbridge output lease information in dnsmasq's leasesfile format.
This commit is contained in:
@@ -94,7 +94,7 @@ def init_leases(interface):
|
||||
"""Get the list of hosts for an interface."""
|
||||
ctxt = context.get_admin_context()
|
||||
network_ref = db.network_get_by_bridge(ctxt, interface)
|
||||
return linux_net.get_dhcp_hosts(ctxt, network_ref['id'])
|
||||
return linux_net.get_dhcp_leases(ctxt, network_ref['id'])
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
@@ -20,6 +20,7 @@ Unit Tests for network code
|
||||
"""
|
||||
import IPy
|
||||
import os
|
||||
import time
|
||||
|
||||
from nova import context
|
||||
from nova import db
|
||||
@@ -463,6 +464,31 @@ class NetworkTestCase(test.TestCase):
|
||||
network['id'])
|
||||
self.assertEqual(ip_count, num_available_ips)
|
||||
|
||||
def test_dhcp_lease_output(self):
|
||||
admin_ctxt = context.get_admin_context()
|
||||
address = self._create_address(0, self.instance_id)
|
||||
lease_ip(address)
|
||||
network_ref = db.network_get_by_instance(admin_ctxt, self.instance_id)
|
||||
leases = linux_net.get_dhcp_leases(context.get_admin_context(),
|
||||
network_ref['id'])
|
||||
for line in leases.split('\n'):
|
||||
seconds, mac, ip, hostname, client_id = line.split(' ')
|
||||
self.assertTrue(int(seconds) > time.time(), 'Lease expires in '
|
||||
'the past')
|
||||
octets = mac.split(':')
|
||||
self.assertEqual(len(octets), 6, "Wrong number of octets "
|
||||
"in %s" % (max,))
|
||||
for octet in octets:
|
||||
self.assertEqual(len(octet), 2, "Oddly sized octet: %s"
|
||||
% (octet,))
|
||||
# This will throw an exception if the octet is invalid
|
||||
int(octet, 16)
|
||||
|
||||
# And this will raise an exception in case of an invalid IP
|
||||
IPy.IP(ip)
|
||||
|
||||
release_ip(address)
|
||||
|
||||
|
||||
def is_allocated_in_project(address, project_id):
|
||||
"""Returns true if address is in specified project"""
|
||||
|
||||
Reference in New Issue
Block a user