Working with Launchpad Production Configs
This page describes how you edit the configurations that you find in Launchpad's config/ directory.
TODO: Link to documentation for canonical.config.
TODO: Link to documentation for config files.
Config branches
This page uses variables that are defined in ~/.rocketfuel-env.sh. You may want to run it before you start, but don't just execute it. If run that way it'll fork and define variables in the child process, and then the child process will exit without complaints—but taking all the variables with it. So instead:
. ~/.rocketfuel-env.sh
Only the current shell session will be affected.
Set up a repository
This is not a regular launchpad branch but once from a separate project, so you'll want to create your local branch outside the directory where you keep your regular Launchpad branches ($LP_SHARED_REPO).
I'd suggest setting up a new repository next to the one that holds your Launchpad branches:
cd "$LP_PROJECT_ROOT" # Set up a place for lp-production-configs branches. bzr init-repo lp-production-configs cd lp-production-configs bzr branch lp:~launchpad-pqm/lp-production-configs/trunk
Even if you don't create a repository, you'll have to add wherever you put your lp-production-configs branch to .bazaar/locations.conf to make things work:
[/home/me/canonical/lp-production-configs] pqm_email = launchpad@pqm.canonical.com submit_branch = bzr+ssh://bazaar.launchpad.net/~launchpad-pqm/lp-production-configs/trunk public_branch = bzr+ssh://bazaar.launchpad.net/~me/lp-production-configs public_branch:policy = appendpath push_location = bzr+ssh://me@bazaar.launchpad.net/%7Eme/lp-production-configs push_location:policy = appendpath
You now have a setup very smilar to the one for Launchpad branches: a repository with a local trunk branch in it.
Create a branch
Make sure you have a fresh checkout of lp-production-configs trunk. Then create your own branch to, for instance, fix bug 999999.
cd "$LP_PROJECT_ROOT/lp-production-configs" cd trunk ; bzr pull ; cd .. bzr branch trunk production-configs-bug-999999 cd production-configs-bug-999999
Now make your changes in production-configs-bug-999999, commit, and push. All just as you would with a Launchpad devel or db-devel branch.
Get a review
When you're done, propose your branch for merging into lp:~launchpad-pqm/lp-production-configs. This is the default target for the merge proposal. The branch needs to be reviewed by one of the LOSA's ("canonical-losas"); this is also the default choice of reviewer.
Pre-landing Q/A
If there is any risk that your change might break things, test it on staging after your review but before you land your branch. To do this, ask the LOSAs to cowboy-patch it onto staging.
Make sure that you left no subtle differences between the staging config and the production config that might break things! That's a spot our automated test suite can't reach.
Land
Once you've very very sure everything works as expected, land your branch:
bzr pqm-submit -m "[r=myreviewer][bug=999999] Configure oops logging for frobnicate."
And... wait.
Q/A
Even if you tested on staging before landing, test (again) on edge after your branch has rolled out there. This helps guard against those subtle differences between configs.