Merge "Make nova-dhcpbridge use CONFIG_FILE over FLAGFILE"
This commit is contained in:
commit
1417218f43
@ -95,8 +95,11 @@ def init_leases(network_id):
|
||||
|
||||
def main():
|
||||
"""Parse environment and arguments and call the approproate action."""
|
||||
argv = config.parse_args(sys.argv,
|
||||
default_config_files=[os.environ['FLAGFILE']])
|
||||
try:
|
||||
config_file = os.environ['CONFIG_FILE']
|
||||
except KeyError:
|
||||
config_file = os.environ['FLAGFILE']
|
||||
argv = config.parse_args(sys.argv, default_config_files=[config_file])
|
||||
logging.setup("nova")
|
||||
|
||||
if int(os.environ.get('TESTING', '0')):
|
||||
|
@ -72,9 +72,11 @@ class RegExpFilter(CommandFilter):
|
||||
class DnsmasqFilter(CommandFilter):
|
||||
"""Specific filter for the dnsmasq call (which includes env)"""
|
||||
|
||||
CONFIG_FILE_ARG = 'CONFIG_FILE'
|
||||
|
||||
def match(self, userargs):
|
||||
if (userargs[0] == 'env' and
|
||||
userargs[1].startswith('FLAGFILE=') and
|
||||
userargs[1].startswith(self.CONFIG_FILE_ARG) and
|
||||
userargs[2].startswith('NETWORK_ID=') and
|
||||
userargs[3] == 'dnsmasq'):
|
||||
return True
|
||||
@ -86,11 +88,16 @@ class DnsmasqFilter(CommandFilter):
|
||||
|
||||
def get_environment(self, userargs):
|
||||
env = os.environ.copy()
|
||||
env['FLAGFILE'] = userargs[1].split('=')[-1]
|
||||
env[self.CONFIG_FILE_ARG] = userargs[1].split('=')[-1]
|
||||
env['NETWORK_ID'] = userargs[2].split('=')[-1]
|
||||
return env
|
||||
|
||||
|
||||
class DeprecatedDnsmasqFilter(DnsmasqFilter):
|
||||
"""Variant of dnsmasq filter to support old-style FLAGFILE"""
|
||||
CONFIG_FILE_ARG = 'FLAGFILE'
|
||||
|
||||
|
||||
class KillFilter(CommandFilter):
|
||||
"""Specific filter for the kill calls.
|
||||
1st argument is the user to run /bin/kill under
|
||||
|
@ -54,15 +54,22 @@ class RootwrapTestCase(test.TestCase):
|
||||
filtermatch = wrapper.match_filter(self.filters, invalid)
|
||||
self.assertTrue(filtermatch is None)
|
||||
|
||||
def test_DnsmasqFilter(self):
|
||||
usercmd = ['env', 'FLAGFILE=A', 'NETWORK_ID=foobar', 'dnsmasq', 'foo']
|
||||
f = filters.DnsmasqFilter("/usr/bin/dnsmasq", "root")
|
||||
def _test_DnsmasqFilter(self, filter_class, config_file_arg):
|
||||
usercmd = ['env', config_file_arg + '=A', 'NETWORK_ID=foobar',
|
||||
'dnsmasq', 'foo']
|
||||
f = filter_class("/usr/bin/dnsmasq", "root")
|
||||
self.assertTrue(f.match(usercmd))
|
||||
self.assertEqual(f.get_command(usercmd), ['/usr/bin/dnsmasq', 'foo'])
|
||||
env = f.get_environment(usercmd)
|
||||
self.assertEqual(env.get('FLAGFILE'), 'A')
|
||||
self.assertEqual(env.get(config_file_arg), 'A')
|
||||
self.assertEqual(env.get('NETWORK_ID'), 'foobar')
|
||||
|
||||
def test_DnsmasqFilter(self):
|
||||
self._test_DnsmasqFilter(filters.DnsmasqFilter, 'CONFIG_FILE')
|
||||
|
||||
def test_DeprecatedDnsmasqFilter(self):
|
||||
self._test_DnsmasqFilter(filters.DeprecatedDnsmasqFilter, 'FLAGFILE')
|
||||
|
||||
def test_KillFilter(self):
|
||||
if not os.path.exists("/proc/%d" % os.getpid()):
|
||||
self.skipTest("Test requires /proc filesystem (procfs)")
|
||||
|
Loading…
Reference in New Issue
Block a user