<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>join-fu! &#187; Python</title>
	<atom:link href="http://www.joinfu.com/category/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.joinfu.com</link>
	<description>the art of sql</description>
	<lastBuildDate>Mon, 23 Jan 2012 20:21:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Looking for a Few Good Engineers</title>
		<link>http://www.joinfu.com/2012/01/looking-for-a-few-good-engineers/</link>
		<comments>http://www.joinfu.com/2012/01/looking-for-a-few-good-engineers/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 20:21:51 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[openstack]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.joinfu.com/?p=400</guid>
		<description><![CDATA[Do you know Python? Do you get a thrill breaking other people&#8217;s code? Do you have experience with Chef, Puppet, Cobbler, Orchestra, or Jenkins? Have you ever deployed or worked on highly distributed systems? Do you understand virtualization technologies like KVM, Xen, ESX or Hyper-V? If you answered &#8220;Yes!&#8221; to any of the questions above [...]]]></description>
			<content:encoded><![CDATA[<p>
Do you know Python? Do you get a thrill breaking other people&#8217;s code? Do you have experience with Chef, Puppet, Cobbler, Orchestra, or Jenkins? Have you ever deployed or worked on highly distributed systems? Do you understand virtualization technologies like KVM, Xen, ESX or Hyper-V?
</p>
<p>
If you answered &#8220;<em>Yes!</em>&#8221; to <em><strong>any</strong></em> of the questions above <em><strong>and</strong></em> are interested in working in a distributed, high-energy engineering team on solving complex problems with cloud infrastructure software, I want to hear from you. Experience with <a href="http://openstack.org" title="OpenStack">OpenStack</a> is a huge plus.
</p>
<p>
I&#8217;m looking for <strong>QA software engineers</strong>, <strong>software deployment and/or automation engineers</strong> and <strong>software developers</strong> that can hit the ground running and make a big impact from Day One. Feel free to email me at <code>REVERSE('moc.liamg@sepipyaj')</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2012/01/looking-for-a-few-good-engineers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diagnose and fix PEP8 issues during code review</title>
		<link>http://www.joinfu.com/2012/01/diagnose-and-fix-pep8-issues-during-code-review/</link>
		<comments>http://www.joinfu.com/2012/01/diagnose-and-fix-pep8-issues-during-code-review/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 19:13:25 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[openstack]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.joinfu.com/?p=394</guid>
		<description><![CDATA[I figured I&#8217;d write a quick post about how to deal with &#8220;pep8 issues&#8221; that come up during code reviews on OpenStack core projects. These issues come up often for new contributors, and it can be a source of frustration until the contributor understands how to diagnose and fix the issues that come up. PEP8 [...]]]></description>
			<content:encoded><![CDATA[<p>I figured I&#8217;d write a quick post about how to deal with &#8220;pep8 issues&#8221; that come up during code reviews on <a title="OpenStack" href="http://openstack.org">OpenStack</a> core projects. These issues come up often for new contributors, and it can be a source of frustration until the contributor understands how to diagnose and fix the issues that come up.</p>
<p><a title="PEP8" href="http://www.python.org/dev/peps/pep-0008/">PEP8</a> is the Python <a title="What is a PEP?" href="http://www.python.org/dev/peps/pep-0001/">PEP</a> that deals with a recommended code style. All core (and periphery Python) OpenStack projects validate that new code pushed to the source tree is &#8220;pep8-compliant&#8221;. When a new patchset is pushed from code review to Jenkins for the set of automated pre-merge tests, the pep8 command-line tool is run against the new source tree to ensure it meets PEP8 code style standards.</p>
<p>If this PEP8 Jenkins job fails, the code submitter will see a notification that the job failed, and the contributor must fix up any pep8 issues and push those fixes up for review again. Typically, this notification looks something like this:</p>
<pre>
Change subject: Added Keypair extension (os-keypairs) client and tests LP#900139
......................................................................

Patch Set 2: I would prefer that you didn't submit this

Build Unstable

https://jenkins.openstack.org/job/gate-tempest-pep8/38/ : UNSTABLE
https://jenkins.openstack.org/job/gate-tempest-merge/78/ : SUCCESS

--
To view, visit https://review.openstack.org/3179
To unsubscribe, visit https://review.openstack.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I34c7e9aa6a1796b8d4c3ac9b3b69438796752866
Gerrit-PatchSet: 2
Gerrit-Project: openstack/tempest
Gerrit-Branch: master
Gerrit-Owner: kavan-patil
Gerrit-Reviewer: Brian Waldon <brian.waldon@rackspace.com>
Gerrit-Reviewer: Jay Pipes <jaypipes@gmail.com>
Gerrit-Reviewer: Jenkins
Gerrit-Reviewer: kavan-patil
</pre>
<p>
There are a couple ways you can diagnose what style points your code violated. Probably the easiest and fastest is to just follow the link in the notification email to the Jenkins job. Clicking the link above, I get to the Jenkins job page, which looks like this:
</p>
<p style="text-align: center;"><a href="http://www.joinfu.com/wp-content/uploads/2012/01/jenkins_job_pep8.png"><img class="size-full wp-image-395 aligncenter" style="border: 1px solid black;" title="jenkins_job_pep8" src="http://www.joinfu.com/wp-content/uploads/2012/01/jenkins_job_pep8.png" alt="" width="603" height="544" /></a></p>
<p>
Clicking on the graph, I get to a details screen showing the source files and lines of code that violated pep8 rules:
</p>
<p style="text-align: center;"><a href="http://www.joinfu.com/wp-content/uploads/2012/01/jenkins_job_pep8_violations.png"><img class="aligncenter size-full wp-image-396" style="border: 1px solid black;" title="jenkins_job_pep8_violations" src="http://www.joinfu.com/wp-content/uploads/2012/01/jenkins_job_pep8_violations.png" alt="" width="698" height="467" /></a></p>
<p>
I can then go to line 86 of <code>tempest/openstack.py</code> and investigate the code style
</p>
<p>
Alternately, I could run the pep8 CLI tool on my local branch, which will tell me the pep8 violations and what to fix, as shown here:
</p>
<pre>
jpipes@uberbox:~/repos/tempest$ pep8 --repeat tempest
tempest/openstack.py:86:73: W292 no newline at end of file
</pre>
<p>
There we are&#8230; the <code>tempest/openstack.py</code> file doesn&#8217;t end with a newline. An easy fixup. <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2012/01/diagnose-and-fix-pep8-issues-during-code-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Science (or Art?) of Commit Messages</title>
		<link>http://www.joinfu.com/2012/01/the-science-of-commit-messages/</link>
		<comments>http://www.joinfu.com/2012/01/the-science-of-commit-messages/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 19:26:22 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[Git]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.joinfu.com/?p=392</guid>
		<description><![CDATA[There are some things in the world of development that you appreciate much more when you do a lot of code reviews. One of those things is commit messages. At first glance, commit messages seem to be a small, relatively innocuous thing for a developer. When you commit code, you type in some description about [...]]]></description>
			<content:encoded><![CDATA[<p>
There are some things in the world of development that you appreciate much more when you do a lot of code reviews. One of those things is commit messages.
</p>
<p>
At first glance, commit messages seem to be a small, relatively innocuous thing for a developer. When you commit code, you type in some description about your code changes and then, typically, push your code somewhere for review by someone.
</p>
<p>
Regardless of whether the code you pushed is going to an open source project, an internal proprietary code repository, or just some code exchanged between friends working on a joint project, that simple little commit message tells the person reading your code a whole lot about you. It speaks volumes about the way you feel about the code you submit and the quality of the review you <em>expect</em> for your code.
</p>
<p>
As an example, suppose I was working on some code that fixed a bug. I got my code ready for initial review and I did the following:
</p>
<pre>
$> git commit -a -m "Fixes some stuff"
</pre>
<p>
And then I push my commit somewhere using <code>git push</code> &#8230;
</p>
<p>
Inevitably, what happens is that another developer will get some email or notification that I have pushed code up to some repository. It is likely that this notification will look something like this:
</p>
<pre>
Change subject: Fixes some stuff
......................................................................

Fixes some stuff

Change-Id: I79bbac32b5c99742b5cb283c6e55e6204bf92adc
---
M path/to/some/changed/file
1 file changed, 1 insertion(+), 1 deletion(-)
</pre>
<p>
And in the notification will be some link to a place to go do a code review.
</p>
<p>
Now, what do you think is the first thought that goes through the reviewer&#8217;s mind? My guess would be: <em>Really? Fixes <strong>what</strong> stuff?</em> By not including any context about what the patch is attempting to solve, you leave the reviewer with a bad taste in their mouth. And a bad taste in the reviewer&#8217;s mouth generally means one thing: <em>a reluctance to review your patch</em>.
</p>
<p>
OK, so what could we do to make the commit message better, to provide the reviewer with more initial context about your patch? Well, the first thing that comes to mind is to reference a specific bug that you are fixing with this patch.
</p>
<p>
Alright, so we amend our commit message to include a bug identifier:
</p>
<pre>
$> git commit --amend -m "Fixes Bug 123456"
</pre>
<p>
And subsequently push our amended commit message. The reviewer now gets a new notification that you&#8217;ve amended a previous patch. Now the notification includes the bug identifier. What do you think the next thought a typical reviewer might have? My guess is this: <em>What, does this developer think that I&#8217;ve memorized all the bug IDs for all open bugs? How should I know what Bug 123456 is about?</em> And here comes that bad taste in the mouth again.
</p>
<p>
OK, so this time, we will forgo the use of the time-saving <code>-m</code> switch to <code>git commit</code> and actually type a proper, multi-line commit message in our editor of choice that describes the bug that our patch fixes, including a brief description of how we fixed the bug:
</p>
<pre>
git commit --amend  # This will open up your editor...
</pre>
<p>
Now we&#8217;d enter a good commit message &#8230; something like this would work:
</p>
<pre>
Fixes Bug 123456 - ImportError raised improperly in Storage Driver

Due to a circular dependency, an ImportError was improperly
being thrown when the storage driver was set to XYZ. Rearranged
code to remove circular dependency.
</pre>
<p>
The commit message now will give the reviewer everything they need in the notification to understand what the patch is for and how you solved a bug, without needing to go to their bug tracker to figure out what the bug was about.
</p>
<p>
A detailed commit message shows you care about the time that reviewers spend on your patch and that you value the code you are submitting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2012/01/the-science-of-commit-messages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentation: OpenStack QA &#8211; Walkthrough of Processes, Tools and Code</title>
		<link>http://www.joinfu.com/2012/01/openstack-qa-walkthrough-of-processes-tools-and-code/</link>
		<comments>http://www.joinfu.com/2012/01/openstack-qa-walkthrough-of-processes-tools-and-code/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 22:22:38 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.joinfu.com/?p=390</guid>
		<description><![CDATA[Last night I gave a short webinar to some folks about the basics of contributing to the Tempest project, which is the OpenStack integration test suite. It was the first time I&#8217;d used Google Docs to create and give a presentation and I must say I was really impressed with the ease-of-use of Google Docs [...]]]></description>
			<content:encoded><![CDATA[<p>
Last night I gave a short webinar to some folks about the basics of contributing to the <a href="http://github.com/openstack/tempest" title="Tempest - OpenStack Integration Test Suite">Tempest</a> project, which is the OpenStack integration test suite. It was the first time I&#8217;d used Google Docs to create and give a presentation and I must say I was really impressed with the ease-of-use of Google Docs Presentation. Well done, Google.
</p>
<p>
Anyway, I&#8217;ve uploaded a <a href="http://joinfu.com/presentations/openstack-qa-processes/openstack-qa-processes.pdf" title="OpenStack QA Processes">PDF of the presentation</a> to this website and provided a link to the Google Docs presentation along with a brief overview of the topics covered in the slides below. As always, I love to get feedback on slides. Feel free to leave a comment here, email me or find me on IRC. Enjoy!
</p>
<p><img src="http://joinfu.com/presentations/openstack-qa-processes/openstack-qa-processes.png" style="float: left; margin: 0px 40px 10px 0px;"/><img src="http://joinfu.com/img/html.png" /><a href="https://docs.google.com/presentation/d/1M3XhAco_0u7NZQn3Gz53z9VOHHrkQBzEs5gt43ZvhOc/edit"  title="OpenStack QA - Walkthrough of Processes, Tools and Code">Google Presentation (HTML)</a><br />
<img src="http://joinfu.com/img/pdf.png" /><a href="http://joinfu.com/presentations/openstack-qa-processes/openstack-qa-processes.pdf"  title="OpenStack QA - Walkthrough of Processes, Tools and Code">PDF  slides</a><br />
<br clear="left" /><br />
Topics included in the slides:</p>
<ul>
<li>OpenStack Contribution Process</li>
<li>Running Devstack Locally</li>
<li>Running Tempest against an Environment</li>
<li>Walkthrough the Tempest Source Code</li>
<li>Progressively improving a test case</li>
<li>Common Scenarios in Code Review and Submission</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2012/01/openstack-qa-walkthrough-of-processes-tools-and-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpenStack Dev Tip &#8212; Easily Pull a Review Branch</title>
		<link>http://www.joinfu.com/2011/11/openstack-easily-pull-review-branch/</link>
		<comments>http://www.joinfu.com/2011/11/openstack-easily-pull-review-branch/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 18:06:08 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[openstack]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.joinfu.com/?p=386</guid>
		<description><![CDATA[Just a quick tip for developers working on OpenStack projects that work on multiple development machines or want to pull a colleague&#8217;s code from the Gerrit review system and test it locally. If you have followed the instructions about setting up a development environment successfully, you will have installed the git-review tool that Jim Blair [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick tip for developers working on OpenStack projects that work on multiple development machines or want to pull a colleague&#8217;s code from the Gerrit review system and test it locally.</p>
<p>If you have followed the <a href="http://wiki.openstack.org/GerritWorkflow" title="OpenStack Gerrit - Development Environment">instructions</a> about setting up a development environment successfully, you will have installed the git-review tool that Jim Blair and Monty Taylor maintain. The git-review tool has a nice little feature that enables you to easily pull any branch that anyone has pushed up to code review:</p>
<pre>
$> git review -d $REVIEW_NUM
</pre>
<p>The <code>$REVIEW_NUM</code> variable should be replaced with the identifier of the review branch in Gerrit.</p>
<p>For example, I developed some code on my laptop that I now want to pull to my beefier work machine. The original branch is failing a few tests in Jenkins and I want to diagnose what&#8217;s going on. The review branch is here: https://review.openstack.org/#change,1656. The review number (ID) is <strong>1656</strong>.</p>
<p>To grab that branch into my local environment and check it out, I do:</p>
<pre>
jpipes@uberbox:~/repos/glance$ git review -d 1656
Downloading refs/changes/56/1656/2 from gerrit into review/jay_pipes/bug/850377
</pre>
<p>Doing a git status, you&#8217;ll note that I am now in the local branch called review/jay_pipes/bug/850377:</p>
<pre>
jpipes@uberbox:~/repos/glance$ git status
# On branch review/jay_pipes/bug/850377
# Your branch and 'gerrit/master' have diverged,
# and have 1 and 2 different commit(s) each, respectively.
#
nothing to commit (working directory clean)
</pre>
<p>I can now run tests, diagnose the issue(s), fix code up and do a:</p>
<pre>
$> git commit -a --amend
$> git review
</pre>
<p>And my changes will be pushed up to the original review in Gerrit for others to look at.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2011/11/openstack-easily-pull-review-branch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Essex Design Summit &#8212; QA Sessions to Note</title>
		<link>http://www.joinfu.com/2011/10/essex-design-summit-qa-sessions-to-note/</link>
		<comments>http://www.joinfu.com/2011/10/essex-design-summit-qa-sessions-to-note/#comments</comments>
		<pubDate>Sun, 02 Oct 2011 14:47:53 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.joinfu.com/?p=381</guid>
		<description><![CDATA[There are quite a few folks interested in QA coming to the OpenStack Essex Design Summit next week. I wanted to give you all a heads-up on the sessions that may be of interest to you. Here they are: Monday, Oct 3rd: 09:30-10:25 &#8211; Essex Release Cycle Thierry Carrez, our illustrious release manager, will do [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://essexdesignsummit.sched.org/"><img class="alignnone" title="Essex Design Summit" src="http://essexdesignsummit.sched.org/img/logo.png" alt="Essex Design Summit" width="918" height="119" /></a></p>
<p>There are quite a few folks interested in QA coming to the <a href="http://essexdesignsummit.sched.org/">OpenStack<br />
Essex Design Summit</a> next week. I wanted to give you all a heads-up on<br />
the sessions that may be of interest to you.</p>
<p>Here they are:</p>
<p>Monday, Oct 3rd:</p>
<p>09:30-10:25 &#8211; <a href="http://essexdesignsummit.sched.org/event/6a56ba48d52da3a46f85699e82097901">Essex Release Cycle</a></p>
<p>Thierry Carrez, our illustrious release manager, will do a post-mortem<br />
on the Diablo release cycle and discuss potential changes for the<br />
Essex release cycle. I know almost all QAers have expressed desires to<br />
have maintenance branches managed by the QA team and I&#8217;ve heard<br />
suggestions about various QA-centric freeze points. Those interested<br />
in advocating for these things should plan to attend this session.</p>
<p>14:00-14:45 &#8211; <a href="http://essexdesignsummit.sched.org/event/ad2f43c3c900a2412e3981b8ea857181">Stable Release Updates</a></p>
<p>Dave Walker from Canonical plans to outline some possibilities for how<br />
to maintain and update stable releases of OpenStack projects.</p>
<p>15:00-15:45 &#8211; <a href="http://essexdesignsummit.sched.org/event/66f38d3bb4a1b8b169b81179e7f03215">Separating API from Implementation of the API</a></p>
<p>Total self-promotion of a session I&#8217;ve proposed&#8230; I think anyone<br />
interested in stabilizing the OpenStack APIs and having OpenStack APIs<br />
become the open standards for the cloud computing industry should<br />
attend.</p>
<p>16:30-17:15 &#8211; <a href="http://essexdesignsummit.sched.org/event/dc89ee807f4cee6718cda6549b737e3d">OpenStack Compute API 2.0</a></p>
<p>Glen Campbell will be leading a discussion about how to improve the<br />
Compute (Nova) API for a 2.0 API series. I think it&#8217;s important that a<br />
number of folks on the QA team attend this session and get an idea of<br />
the things that we will be looking at in the future regarding the<br />
Compute API. Personally, I&#8217;m definitely planning on attending this<br />
one.</p>
<p>17:30 &#8211; 17:55 &#8211; <a href="http://essexdesignsummit.sched.org/event/c68faab3984bba3003adfc75a0cb0103">NetStack Continuous Integration Planning</a></p>
<p>Personally, I will not be at this session as I have another session to<br />
lead. However, I think it is important that a number of people from<br />
the QA team attend this session, listen to the needs of the NetStack<br />
contributors, voice our support for their projects, explain what the<br />
goals of our team are, and enable some cross-team collaborative<br />
efforts around CI and QA.</p>
<p>Tuesday, Oct 4th:</p>
<p>09:30 &#8211; 09:55 &#8211; <a href="http://essexdesignsummit.sched.org/event/b4ee36022573ad50b1e23e9788226e84">Documentation Strategies for OpenStack</a></p>
<p>Anne Gentle will be leading a discussion about documentation of<br />
OpenStack projects. One of the deliverables of the OpenStack QA team<br />
is clearly to identify areas where specifications don&#8217;t match<br />
behaviour, so I think it&#8217;s pretty critical that the Doc Team and the<br />
QA team be on the same page when it comes to how to coordinate<br />
communication of documentation discrepancies.</p>
<p>09:30 &#8211; 09:55 &#8211; <a href="http://essexdesignsummit.sched.org/event/e9c0baa7a606f320777e04baf531469c">VM Disk Management in Nova</a></p>
<p>At the same time as the documentation session, Paul Voccio is leading<br />
a discussion about VM disk management in Nova. Those QAers focusing on<br />
disk/volume management may want to attend this session to ensure the<br />
QA team has a good grasp of changes coming in this arena.</p>
<p>10:00 &#8211; 10-25 &#8211; <a href="http://essexdesignsummit.sched.org/event/4a20ba873ff18cb14eccf0392ba7aff7">OpenStack Common</a></p>
<p>Brian Lamar will be leading a discussion on getting serious about the<br />
potential of an openstack-common Python library of common code shared<br />
amongst many OpenStack projects. Hey, it&#8217;s a heck of a lot easier to<br />
QA code that&#8217;s in one location than the same code, written with slight<br />
differences, spread across many projects&#8230; seems like a no-brainer<br />
for the QA team to attend and support this idea. <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>11:00 &#8211; 11:25 &#8211; <a href="http://essexdesignsummit.sched.org/event/cb1331a198be5ed4920d2ab4eb508a4b">Monitoring in Swift</a></p>
<p>John Dickinson will be leading a session to discuss what things should<br />
be monitored across a Swift cluster, and what tools are available for<br />
monitoring. I think this discussion will be valuable for those of us<br />
interested in long-running production integration tests where Swift is<br />
one of the components of a full OpenStack test cluster.</p>
<p>12:00 &#8211; 12:25 &#8211; <a href="http://essexdesignsummit.sched.org/event/8477f29c978a90edef7e0fbca5786dc0">Integration Test Suites and Gating Trunk</a></p>
<p>A no brainer&#8230; in this session we will talk about the various<br />
integration test suites for Nova/Glance/Keystone and discuss the<br />
effort already underway to combine them. In addition, we will talk<br />
about what policies to recommend for OpenStack projects regarding what<br />
level of passing integration tests should hold up a gated trunk.</p>
<p>15:30 &#8211; 15:55 &#8211; <a href="http://essexdesignsummit.sched.org/event/d621cc6cc3bbdc9d8df1a4909d6799ac">Making VM State Handling More Robust</a></p>
<p>Phil Day is leading a discussion about ways in which the handling of<br />
VM state transitions can be inconsistent and confusing. Since the QA<br />
team is responsible for documenting just such inconsistencies and<br />
building tests cases for such inconsistent behaviour, I think this<br />
session would be good to hang around in and listen/take notes.</p>
<p>16:30 &#8211; 17:25 &#8211; <a href="http://essexdesignsummit.sched.org/event/787dd036c1a093d52a72274a8f8561ca">OpenStack Faithful Implementation Test Suites (FITS)</a></p>
<p>Josh McKenty will be talking about certain proposals regarding a FITS<br />
for OpenStack APIs. Should be an interesting session <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Wednesday, Oct 5th:</p>
<p>09:30 &#8211; 10:25 &#8211; <a href="http://essexdesignsummit.sched.org/event/468aa6159fc652d020039092b22ad4c1">XenServer/KVM Feature Parity Plan</a></p>
<p>This session should be good for those QAers interested in identifying<br />
areas where feature parity between hypervisors is lacking, and<br />
discussing ways in which the QA team can document these disparities<br />
and produce tests for identifying future disparity among hypervisors.</p>
<p>11:00 &#8211; 11:45 &#8211; <a href="http://essexdesignsummit.sched.org/event/cc26b70de1216fe4ad405fbcbf2cdf15">Glance Throughput Improvements</a></p>
<p>This session is being led by Tim Reddins, from HP, who (along with his<br />
team) have done some analysis on ways to improve Glance&#8217;s throughput.<br />
QAers interested in stress, capacity, and parallelism testing should<br />
definitely attend!</p>
<p>11:30 &#8211; 11:55 &#8211; <a href="http://essexdesignsummit.sched.org/event/216ab8d07988c057b3d3a93a074aa365">Nova Upgrades</a></p>
<p>Ray Hookway will talk about ways that Nova&#8217;s update process can be<br />
made more robust. I imagine that the talk&#8217;s recommendations will be<br />
generally applicable to many OpenStack projects, not just Nova. I also<br />
think that some members of the QA team should attend &#8212; we should be<br />
able to create functional tests for upgrade processes for all<br />
OpenStack projects&#8230;</p>
<p>14:30 &#8211; 14:55 &#8211; <a href="http://essexdesignsummit.sched.org/event/564323cb448c852eeeba7b9164e0ee94">Git/Gerrit Best Practices</a></p>
<p>Monty Taylor is leading this session on Gerrit/Git best practices. I<br />
recommend everyone go, if only to see the fireworks.</p>
<p>15:30 &#8211; 15:55 &#8211; <a href="http://essexdesignsummit.sched.org/event/127dd59068e1bab0da6805c3f012fc22">Quality Assurance in OpenStack</a></p>
<p>Uhm, duh, you should all be at this one. <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  We&#8217;ll discuss how to<br />
divide the voluminous amount of work among our members, talk about<br />
which projects (and components within certain projects) are<br />
high-priority items, the ways we should communicate and track<br />
progress, etc</p>
<p>17:00 &#8211; 17:25 &#8211; <a href="http://essexdesignsummit.sched.org/event/540ebb9f4e764c8cbfcfb1df49ccd4ad">Internal Service Communication</a></p>
<p>Brian Waldon is leading a session on internal service communication<br />
that should be quite interesting. The integration testing coverage of<br />
major internal service components of Nova is currently light, and is<br />
one of those areas I think should be carefully picked over by our QA<br />
team.</p>
<p>OK, that&#8217;s the recommendations from me, but of course, feel free to<br />
attend whatever sessions are of most interest to you. I&#8217;m very much<br />
looking forward to meeting all of you (we&#8217;re up to 28 members as of<br />
this writing).</p>
<p>Cheers, and see you tomorrow!<br />
<span style="color: #888888;">-jay</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2011/10/essex-design-summit-qa-sessions-to-note/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Developing Nova on Linux &#8211; Getting Started</title>
		<link>http://www.joinfu.com/2010/07/developing-nova-on-linux-getting-started/</link>
		<comments>http://www.joinfu.com/2010/07/developing-nova-on-linux-getting-started/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 19:01:36 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[Bazaar]]></category>
		<category><![CDATA[Launchpad]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.joinfu.com/?p=373</guid>
		<description><![CDATA[In the past few weeks, I&#8217;ve gotten involved in the newly-debuted OpenStack project. Right now, my focus is on the Compute sub-project of the stack, called Nova. The initial pieces I am focusing on are the unit tests and end-to-end systems testing of the compute stack. I struggled over the last couple days to solve [...]]]></description>
			<content:encoded><![CDATA[<p>In the past few weeks, I&#8217;ve gotten involved in the newly-debuted <a href="http://openstack.org">OpenStack</a> project.  Right now, my focus is on the Compute sub-project of the stack, called <a href="http://launchpad.net/nova/">Nova</a>.  The initial pieces I am focusing on are the unit tests and end-to-end systems testing of the compute stack.</p>
<p>I struggled over the last couple days to solve a bug that turned out to be not a bug at all, but an issue with the Python development environment I use.  I figured I&#8217;d write a blog article for those Python developers who are looking to contribute to the Nova project and may also be struggling to get up and going.  </p>
<p>If you&#8217;re contributing to an open source project like Nova, you&#8217;ll want to be able to work on multiple branches of the source code at the same time &mdash; for instance, if you&#8217;re working on fixing a few bugs simultaneously.  </p>
<p>There are quite a few dependencies for Nova, and, because of the way Python searches for packages, it&#8217;s imperative that you use a tool such as <tt>virtualenv</tt> to isolate your multiple branches into their own development environments.  Otherwise, as I learned today, the location of your site-packages and what has previously been installed on your development machine can wreak havoc on you. <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div style="border: solid 1px #ccc; background-color: #f7f7f7; padding: 15px 40px;">
<strong style="color: red;">NOTE</strong>: For this article, I assume the reader is on Debian/Ubuntu Linux, since that is what I use as my development machine.  If you&#8217;re on a different flavour of Linux, feel free to adapt the instructions here to suit your particular package manager.
</div>
<h2>Installing the Tools for Installing the Tools</h2>
<p>Before we get into our virtual development environments, you&#8217;ll first want to ensure you&#8217;ve got a few packages installed, including <tt>bzr</tt>, <tt>libssl-dev</tt>, <tt>swig</tt> and <tt>virtualenv</tt>.  The following should do the trick:</p>
<pre>
sudo apt-get install -y swig libssl-dev bzr python-virtualenv
</pre>
<h2>A Setup for Source Control and Virtual Environments</h2>
<p>In order to get properly setup to contribute to the Nova project, you&#8217;ll want to setup a local repository to keep branches of source code that you work on.  Although <tt>bzr</tt> is not required as your revision control system, I use <tt>bzr</tt> myself and will use it in this article.  Adapt as needed if you use <tt>git-bzr</tt> or similar.</p>
<p>I like to have the following directory structure for working on Python projects:</p>
<pre>
~/repos/$projectname/ <-- shared repository for branches of your project
~/repos/$projectname/trunk <-- local trunk branch
~/repos/$projectname/$branch <-- a branch you work in
~/virtenvs/$projectname/ <-- Development environments for your project
~/virtenvs/$projectname/$branch <-- development environment for a branch you work in
</pre>
<p>Assuming you want to contribute to the Nova project and you want to work on fixing a bug #XXXXX, then following would get you started:</p>
<pre>
bzr init-repo ~/repos/nova
cd ~/repos/nova
bzr branch lp:nova trunk
bzr branch trunk bugXXXXX
mkdir -p ~/virtenvs/nova
</pre>
<p>At this point, we'll go ahead and create a virtual development environment for bugXXXXX:</p>
<pre>
cd ~/virtenvs/nova
virtualenv --no-site-packages bugXXXXX
cd bugXXXXX
source bin/activate
</pre>
<p>At this point, you'll notice your prompt change, indicating that you are now in a virtual development environment.  The <tt>--no-site-packages</tt> ensures that your locally-installed Python packages aren't included in your Python PATH when inside your virtual environment.</p>
<p>Next step is to install into this virtual development environment all the packages and dependencies we'll need.  This should do the trick:</p>
<pre>
easy_install twisted tornado boto M2Crypto IPy carrot mox redis
easy_install http://python-gflags.googlecode.com/files/python_gflags-1.3-py2.5.egg
</pre>
<p>Alright, next we simply link to our bzr branch location from inside the virtual environment and run the Nova test suite:</p>
<pre>
ln -s ~/repos/nova/bugXXXXX bugXXXXX
cd bugXXXXX
python run_tests.py
</pre>
<p>If all went smoothly, you'll see all passing test cases, like below <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img src="http://joinfu.com/img/nova-test-screenshot.png" style="float: center; margin: 10px;" /></p>
<p>Having issues getting up and running?  Find us on Freenode IRC #openstack.</p>
<p>See ya,</p>
<p>Jay</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2010/07/developing-nova-on-linux-getting-started/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Macro Support in new Drizzle Client Console?</title>
		<link>http://www.joinfu.com/2009/11/macro-support-in-new-drizzle-client-console/</link>
		<comments>http://www.joinfu.com/2009/11/macro-support-in-new-drizzle-client-console/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 12:36:00 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[Drizzle]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://joinfu.com/2009/11/macro-support-in-new-drizzle-client-console</guid>
		<description><![CDATA[Hi all! I&#8217;ve been reading through the requested features for the new client on the wiki here: Proposed Client Features BOOTS Console API Design I think all the stuff on that link is excellent so far. I&#8217;d also like to request a feature that I think will be a really cool timesaver for DBAs and [...]]]></description>
			<content:encoded><![CDATA[<p>
Hi all!
</p>
<p>
I&#8217;ve been reading through the requested features for the new client on the wiki here:
</p>
<ul>
<li><a href="http://drizzle.org/wiki/Proposed_Client_Features">Proposed Client Features</a></li>
<li><a href="http://drizzle.org/wiki/Client/Boots_API_Design_Concept">BOOTS Console API Design</a></li>
</ul>
<p>
I think all the stuff on that link is excellent so far.  I&#8217;d also like to request a feature that I think will be a really cool timesaver for DBAs and developers using Drizzle.
</p>
<p>
<strong><em>Macro Support</em></strong>
</p>
<p>
Remember, &#8220;way back when&#8221; you used Microsoft Excel and were able to start recording your actions, then when you stopped recording, Excel would store a &#8220;macro&#8221; of your actions that you could subsequently replay?
</p>
<p>
I think this would be incredibly useful for folks who do repetitive work in the console.
</p>
<p>
Sure, I know, I know&#8230;the first reaction folks will say is &#8220;<em>but HEY, you guys removed stored procedures!</em>&#8221;  Yeah, yeah&#8230; but the feature I&#8217;m proposing here is different from stored procedures in the following ways:
</p>
<ol>
<li><strong>It&#8217;s entirely client-side</strong>.  There is no server-side storage/cache, processing, parsing, or anything.</li>
<li><strong>It&#8217;s not limited to a small subset of SQL</strong> that stored procedures (at least in MySQL) are currently limited to.  Anything the new client can do would be able to go into a macro.</li>
<li>Since the client is in Python, <strong>the macros are themselves re-writable in a scripting language</strong>.  This gives the recorded macros incredible flexibility.</li>
<li><strong>No fussing with SQL stored procedure permissions</strong> at runtime (you know, the silly INVOKER/DEFINER crap)</li>
<li><strong>Ability to interact with result sets in the macro</strong>.  Just try doing that easily in a SQL stored procedure.  Using <tt>CURSOR</tt>s is incredibly clunk and ugly.  Applying a Python function or closure/lambda on each of a result set is elegant and easy.</li>
</ol>
<p>
Imagine the following rough example interface&#8230;
</p>
<pre>
drizzle> RECORD MACRO "sales_report_with_email" (to_email);
macro recording started.

drizzle> mode python;
in python mode.

python> import datetime
python> today= datetime.datetime.now().isoformat()
python> filename= "%s-%s-%s" % ("sales", to_email, today)
python> Ctrl-D

drizzle> SELECT * FROM sales
         WHERE manager = @to_email; > csv(@filename);
drizzle> mode python;
In python mode.

python> report_txt= open(filename, "r+b").read()
python> import smtplib
python> mailserver = smtplib.SMTP('localhost')
python> mailserver.sendmail('theboss@company.com', to_email, report_txt)
python> mailserver.quit()
python> print "Mail sent to %s\n" % to_email
python> Ctrl-D

drizzle> STOP MACRO;
Macro "sales_report_with_email" saved.

drizzle> macro("sales_report_with_email", "myboss@company.com");
Mail sent to myboss@company.com
</pre>
<p>
Pretty powerful, eh?
</p>
<p>
If you follow the flow above, you will notice the only real trick to solve is passing the macro&#8217;s arguments into the console&#8217;s variable array, and from the console&#8217;s variable array into the Python interpreter&#8217;s variable scope.  But this is a fairly simple problem to solve&#8230;
</p>
<p>
Thoughts?  Suggestions?  If you&#8217;ve got comments, please feel free to share here, or on the <a href="https://launchpad.net/~drizzle-discuss"  title="Drizzle Discuss">Drizzle Discussion</a> mailing list, or even update the wiki pages posted above.  Thanks! <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2009/11/macro-support-in-new-drizzle-client-console/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

