Bug 914759

Summary: nova-dhcpbridge does not support nova.conf and nova-dist.conf at the same time
Product: Red Hat OpenStack Reporter: Russell Bryant <rbryant>
Component: openstack-novaAssignee: Brent Eagles <beagles>
Status: CLOSED ERRATA QA Contact: Kashyap Chamarthy <kchamart>
Severity: high Docs Contact:
Priority: high    
Version: 2.1CC: afazekas, apevec, beagles, ndipanov, oblaut, pbrady
Target Milestone: snapshot4   
Target Release: 2.1   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: openstack-nova-2012.2.3-2.el6ost Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-03-21 18:16:52 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Russell Bryant 2013-02-22 17:08:32 UTC
Description of problem:

The openstack-nova package was recently updated to have a nova-dist.conf file that includes distribution default values for configuration options.  Nova services read both /etc/nova/nova.conf and /usr/share/nova/nova-dist.conf.

Nova also includes a binary called nova-dhcpbridge.  This is executed by dnsmasq.  The configuration file that nova-dhcpbridge uses is passed to it via an environment variable.  The environment variable is populated with the value of the dhcpbridge_flagfile nova configuration option.  The problem is that only one configuration file can be specified in this option.  We need to support two.

My thoughts on fixing this ...

1) Convert the dhcpbridge_flagfile option to a MultiStrOpt, which allows a list of values.

2) Update our nova-dist.conf to set this option with both /usr/share/nova/nova-dist.conf and /etc/nova/nova.conf.

3) Update bin/nova-dhcpbridge to be able to handle receiving multiple configuration files in the FLAGFILE env var.

Comment 1 Russell Bryant 2013-02-22 17:10:26 UTC
I think the code changes (not the nova-dist.conf update) make sense to submit for master upstream.  It probably won't make sense to backport to stable/folsom upstream, so we'll have to carry it as a patch.

Comment 6 Kashyap Chamarthy 2013-03-20 07:18:47 UTC
VERIFIED.


1] Version info:
#-------------#
$ cat /etc/redhat-release ; arch
Red Hat Enterprise Linux Server release 6.4 (Santiago)
x86_64
#-------------#


Verification info:
=================

2] grep the nova-dist.conf file, it's updated with both the values used by dhcpbridge_flagfile ( because now, it's converted to use a MultiStrOpt, so it takes multiple values)

#-------------#
$ sudo grep dhcpbridge_flagfile /usr/share/nova/nova-dist.conf 
dhcpbridge_flagfile = /usr/share/nova/nova-dist.conf
dhcpbridge_flagfile = /etc/nova/nova.conf
#-------------#


3] Relevant code fragment from the patch referenced.

3.1] For the MultiStrOpt:
#-------------#
.
.
    cfg.MultiStrOpt('dhcpbridge_flagfile',
               default='[/etc/nova/nova-dhcpbridge.conf]',
               help='location of flagfile for dhcpbridge'),
.
.
#-------------#

3.2] bin/nova-dhcpbridge indicating the ability to take multiple values via flagfile env var:
#-------------#
.
.
    """Parse environment and arguments and call the approproate action."""
    flagfile = os.environ.get('FLAGFILE', FLAGS.dhcpbridge_flagfile)
    argv = flags.parse_args(sys.argv,
        default_config_files=jsonutils.loads(flagfile))
    logging.setup("nova")

    if int(os.environ.get('TESTING', '0')):
#-------------#


4] Evidence of dnsmasq executing nova-dhcpbridge:
#-------------#
$ ps -ef | grep -i nova-dhcpbridge
nobody   25857     1  0 Feb13 ?        00:01:32 /usr/sbin/dnsmasq --strict-order --bind-interfaces --conf-file= --domain=novalocal --pid-file=/var/lib/nova/networks/nova-demonetbr0.pid --listen-address=10.65.207.49 --except-interface=lo --dhcp-range=set:'net1',10.65.207.50,static,120s --dhcp-lease-max=16 --dhcp-hostsfile=/var/lib/nova/networks/nova-demonetbr0.conf --dhcp-script=/usr/bin/nova-dhcpbridge --leasefile-ro
root     25858 25857  0 Feb13 ?        00:01:04 /usr/sbin/dnsmasq --strict-order --bind-interfaces --conf-file= --domain=novalocal --pid-file=/var/lib/nova/networks/nova-demonetbr0.pid --listen-address=10.65.207.49 --except-interface=lo --dhcp-range=set:'net1',10.65.207.50,static,120s --dhcp-lease-max=16 --dhcp-hostsfile=/var/lib/nova/networks/nova-demonetbr0.conf --dhcp-script=/usr/bin/nova-dhcpbridge --leasefile-ro
tuser1   63550 78910  0 12:44 pts/6    00:00:00 grep -i nova-dhcpbridge
#-------------#

Comment 8 errata-xmlrpc 2013-03-21 18:16:52 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHSA-2013-0657.html