<div dir="ltr"><div class="gmail_extra">First of all, welcome! As Steve suggested, feel free to ask questions in #openstack-dev ... it seems there's almost always someone online with deep knowledge of keystone.</div><div class="gmail_extra">

<br><div class="gmail_quote">On Wed, Jan 22, 2014 at 8:28 PM, Mario Adessi <span dir="ltr"><<a href="mailto:mario.adessi@live.com" target="_blank">mario.adessi@live.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div><div dir="ltr">I'd like to begin contributing to the keystone project.<div><br></div><div>Keystone, along with all the other major infrastructure components in OpenStack, is a rather large project. I've read over the <a href="http://docs.openstack.org/developer/keystone/#developers-documentation" target="_blank">developer documentation</a>, but was hoping to get help with some questions.</div>

<div><br></div><div>(1) Are there diagrams that describe how various classes, functions, etc. interact with one another?</div></div></div></blockquote><div><br></div><div>I've seen a few in the past, but they tend to get out of date quickly. At a high level, the application is structured as follows:</div>

<div><br></div><div>  Paste Pipeline -> Routers -> Controllers -> Managers -> Drivers / Backends (SQL, LDAP, KVS, etc)</div><div><br></div><div>And that's been true since the essex release. There are a few code paths that deviate from this naming convention (such as keystone.auth), but they follow the same basic pattern regardless. Database migrations have relatively flat call stacks. Some tests have a rather "challenging" inheritance hierarchy that we're working to unwind.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div dir="ltr"><div><br></div><div>(2) What's the best way to debug keystone when editing existing code or adding? Tips from those who do this every day would be greatly appreciated.</div>

</div></div></blockquote><div><br></div><div>I feel like I'm one of the remaining few that doesn't use any fancy tools. I write tests, hammer on them repeatedly, and read tracebacks.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><div dir="ltr"><div><br></div><div>(3) Is there a way to import large chunks (or, preferably, all) of keystone into iPython? This makes debugging super easy and would fit in nicely with my existing workflow with other projects.</div>

</div></div></blockquote><div><br></div><div>Sounds like Yuriy has the answer you're looking for here!</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><div dir="ltr"><div><br></div><div>(4) Any other tips / tricks to help jumpstart tinkering with code?</div></div></div></blockquote><div><br></div><div>I always encourage people to jump straight into gerrit and participate in some code reviews. It's the best way to get a sense of the direction of the project as it evolves, and at the end of the day, you'll be much better prepared to produce your own patch(es).</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div dir="ltr"><div><br></div><div>Many thanks.</div><span class="HOEnZb"><font color="#888888"><div>
-mario</div>
                                          </font></span></div></div>
<br>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div></div>