36
36
gettext.install('nova', unicode=1)
38
from nova import config
38
39
from nova import context
39
40
from nova import db
40
from nova import flags
41
41
from nova.network import linux_net
42
from nova.network import rpcapi as network_rpcapi
43
from nova.openstack.common import cfg
42
44
from nova.openstack.common import importutils
43
45
from nova.openstack.common import log as logging
44
46
from nova.openstack.common import rpc
45
47
from nova import utils
50
CONF.import_opt('host', 'nova.config')
51
CONF.import_opt('network_manager', 'nova.config')
49
52
LOG = logging.getLogger('nova.dhcpbridge')
52
55
def add_lease(mac, ip_address):
53
56
"""Set the IP that was assigned by the DHCP server."""
55
58
LOG.debug(_("leasing ip"))
56
network_manager = importutils.import_object(FLAGS.network_manager)
59
network_manager = importutils.import_object(CONF.network_manager)
57
60
network_manager.lease_fixed_ip(context.get_admin_context(),
60
rpc.cast(context.get_admin_context(),
61
"%s.%s" % (FLAGS.network_topic, FLAGS.host),
62
{"method": "lease_fixed_ip",
63
"args": {"address": ip_address}})
63
api = network_rpcapi.NetworkAPI()
64
api.lease_fixed_ip(context.get_admin_context(), ip_address, CONF.host)
66
67
def old_lease(mac, ip_address):
74
75
def del_lease(mac, ip_address):
75
76
"""Called when a lease expires."""
77
78
LOG.debug(_("releasing ip"))
78
network_manager = importutils.import_object(FLAGS.network_manager)
79
network_manager = importutils.import_object(CONF.network_manager)
79
80
network_manager.release_fixed_ip(context.get_admin_context(),
82
rpc.cast(context.get_admin_context(),
83
"%s.%s" % (FLAGS.network_topic, FLAGS.host),
84
{"method": "release_fixed_ip",
85
"args": {"address": ip_address}})
83
api = network_rpcapi.NetworkAPI()
84
api.release_fixed_ip(context.get_admin_context(), ip_address,
88
88
def init_leases(network_id):
89
89
"""Get the list of hosts for a network."""
90
90
ctxt = context.get_admin_context()
91
91
network_ref = db.network_get(ctxt, network_id)
92
network_manager = importutils.import_object(FLAGS.network_manager)
92
network_manager = importutils.import_object(CONF.network_manager)
93
93
return network_manager.get_dhcp_leases(ctxt, network_ref)
97
97
"""Parse environment and arguments and call the approproate action."""
98
flagfile = os.environ.get('FLAGFILE', FLAGS.dhcpbridge_flagfile)
99
argv = flags.parse_args(sys.argv)
98
flagfile = os.environ.get('FLAGFILE', CONF.dhcpbridge_flagfile)
99
argv = config.parse_args(sys.argv, default_config_files=[flagfile])
100
100
logging.setup("nova")
102
102
if int(os.environ.get('TESTING', '0')):