<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jan 3, 2013, at 4:11 AM, Wojciech Dec <<a href="mailto:wdec.ietf@gmail.com">wdec.ietf@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div class="gmail_quote">Hi All,<br><br>I wonder if someone could help out with a few newbie questions regarding the Quantum code, specifically the dhcp agent parts thereof as in: <a href="https://github.com/openstack/quantum/blob/master/quantum/agent/linux/dhcp.py" target="_blank">https://github.com/openstack/quantum/blob/master/quantum/agent/linux/dhcp.py</a><br>

<br>1. In general who instantiates/uses the DhcpBase class (a trawl through the Quantum and base openstack code didn't find any references past the test suite, but it clearly is needed to get things going)?<br></div></blockquote><div><br></div><div>The DHCP agent looks in the dhcp_agent.ini file and instantiates the class that is declared in the dhcp_driver configuration option.  Currently, there is only a version for dnsmasq.  (There are incomplete implementations for ISC DHCP floating around the web).</div><div><br></div><blockquote type="cite"><div class="gmail_quote"><br>Then, a couple of questions on the some of the remaining code in dhcp.py: A number of functions (eg spawn_process() ) use the following pattern to decide what/if to configure something: <br>
<div style="margin-left:40px"><span style="font-family:courier new,monospace"><i>for i, subnet in enumerate(self.network.subnets):</i></span><br>
<br></div>2. Am I correct in reading that <span style="font-family:courier new,monospace">network.subnets</span> above is effectively out of the dict type as defined in RESOURCE_ATTRIBUTE_MAP in <a href="https://github.com/openstack/quantum/blob/master/quantum/api/v2/attributes.py" target="_blank">https://github.com/openstack/quantum/blob/master/quantum/api/v2/attributes.py</a> ?<br>

Side note: If so then, I must admit that  the use of the "dot notation" for dict access is something that caught me out, as at least to me it does not appear to be widely known python feature.<br></div></blockquote><div><br></div><div>It's not a feature of python.  The DHCP agent uses an internal wrapper that takes the unserialized json dictionaries and wraps them to provide attribute access to the keys.</div><div><br></div><blockquote type="cite"><div class="gmail_quote">
<br>3. In this type of function, where/how are the "<span style="font-family:courier new,monospace">subnets</span>" getter and setter defined for the dhcp paramaters (ie where do the actual values come in from the config file that, say, is being used when configuring the dhcp component)?</div></blockquote><div><br></div><div>The DHCP agent runs a separate process and gathers the network, subnet, and port information from Quantum server via RPC and/or notifications and then passes that information onto the DHCP driver to configure and manage the DHCP server for the network.</div><br><blockquote type="cite"><div class="gmail_quote">4. In terms of design, what if any were the reasons why the dhcp component not been designed more like a plugin?<br></div></blockquote><div><br></div><div>It was designed to be very pluggable.  All you need is another Python implementation that supports the interface defined in the DhcpBase class and change the dhcp_driver in the dhcp_agent.ini file to point to it.</div><br></div><div>mark</div><br></body></html>