commit ad61501575100c6992f4109bdac045aab5c16809
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Nov 30 16:14:21 2012 -0800

    Support sshkey in merger.
    
    The gerrit trigger took an sshkey parameter, but the merger,
    which uses GitPython, did not honor it.  Add a GIT_SSH wrapper
    for the merger to use to support arbitrary ssh keys for remote
    git operation.
    
    Change-Id: I43f0830905ee7103a2acbfa4b4f90959254f60b2
    Reviewed-on: https://review.openstack.org/17269
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Paul Belanger <paul.belanger@polybeacon.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/merger.py    |   13 ++++++++++++-
 zuul/scheduler.py |    7 ++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)

commit 138d3361f6ad22a4cd144d537ad39c6b3fac0341
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Nov 30 15:10:43 2012 -0800

    Really use try_imports.
    
    Change-Id: Icad95a835ace5f75908c4c8ee0304fe528959ec3
    Reviewed-on: https://review.openstack.org/17260
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Tested-by: Jenkins

 zuul/cmd/server.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit a94bf17c9e129f0174a9dd21a06b2f2a8281138c
Author: Monty Taylor <mordred@inaugust.com>
Date:   Sun Nov 25 13:00:03 2012 -0800

    Use try_imports rather for conditional imports.
    
    We're starting to use this elsewhere in OpenStack... avoids having to
    do pyflakes workaround tricks.
    
    Change-Id: Ic767677e87f30794d49baf100e3ded7555272df6
    Reviewed-on: https://review.openstack.org/16851
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: Monty Taylor <mordred@inaugust.com>
    Tested-by: Jenkins

 tools/pip-requires |    1 +
 zuul/cmd/server.py |   11 ++++-------
 2 files changed, 5 insertions(+), 7 deletions(-)

commit 7df9e7ffe15fe985832e7da6ce6c72a7acaf2af7
Author: Monty Taylor <mordred@inaugust.com>
Date:   Sun Nov 25 12:12:28 2012 -0800

    Use entrypoints for zuul-server.
    
    If we put the code for zuul-server into the zuul module, then autodoc
    will pick it up for documentation.
    
    Change-Id: Idf2db82f706243c6e69984170b4783f1eece2237
    Reviewed-on: https://review.openstack.org/16850
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 setup.py           |    8 ++-
 tox.ini            |    2 +-
 zuul-server        |  142 ----------------------------------------------------
 zuul/cmd/server.py |  142 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 149 insertions(+), 145 deletions(-)

commit 2747501dee0e519f8a8d37442192fb8f595edaec
Author: Antoine Musso <hashar@free.fr>
Date:   Mon Nov 26 09:53:01 2012 +0100

    let us specify Gerrit root URL
    
    Our code was expecting the Gerrit web interface to be available at the
    root of the Gerrit server which is not always the case since people
    could publish the Gerrit web interface under a subdirectory. In such
    configuration, the existing assumption prevents Zuul from getting
    references information.
    
    This patch adds a new optional configuration variable 'baseurl' to the
    'gerrit' section. It lets one override the default:
    
     [gerrit]
     server=gerrit.wikimedia.org
     baseurl=https://gerrit.wikimedia.org/r
    
    Updated Gerrit._getInfoRefs() to use 'baseurl' instead of 'server' when
    creating the url to fetch references from. This is still falling back to
    the old default whenever gerrit.baseurl is not set.
    
    Change-Id: Ia9910acf46fe82c425911784412356598b3c7eac
    Reviewed-on: https://review.openstack.org/16884
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Tested-by: Jenkins

 doc/source/zuul.rst    |    4 ++++
 etc/zuul.conf-sample   |    1 +
 zuul/trigger/gerrit.py |    8 ++++++--
 3 files changed, 11 insertions(+), 2 deletions(-)

commit 2b2d2c40d5cd08a3356b8f29082c66424b23975d
Author: Antoine Musso <hashar@free.fr>
Date:   Tue Nov 20 15:07:07 2012 +0100

    document Jenkins user permissions
    
    This document the required permissions of the Zuul Jenkins user.
    
    Change-Id: Id977e3813f943b032c7628d8cdc663b3bdbb688d
    Reviewed-on: https://review.openstack.org/16528
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Tested-by: Jenkins

 doc/source/launchers.rst |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

commit 43cdeab65f2ff61332e9e12d8e6658339758510a
Author: Paul Belanger <paul.belanger@polybeacon.com>
Date:   Thu Nov 15 14:33:05 2012 -0500

    Import oslo-incubator for versioning
    
    After successfully adding openstack versioning to jenkins-job-builder
    this add the same support for zuul.
    
    Change-Id: Ia5baab2b0d9392c1b3c70bf890eaf7c6a2ea5c29
    Signed-off-by: Paul Belanger <paul.belanger@polybeacon.com>
    Reviewed-on: https://review.openstack.org/16219
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Tested-by: Jenkins

 .gitignore                       |   17 +-
 AUTHORS                          |    3 -
 MANIFEST.in                      |   11 ++
 doc/source/conf.py               |    7 +-
 openstack-common.conf            |    7 +
 setup.py                         |   46 +++--
 zuul/openstack/common/setup.py   |  366 ++++++++++++++++++++++++++++++++++++++
 zuul/openstack/common/version.py |  148 +++++++++++++++
 zuul/version.py                  |   20 +++
 9 files changed, 597 insertions(+), 28 deletions(-)

commit 4886f2853395f342db41628958b76989d8772a96
Author: James E. Blair <jeblair@hp.com>
Date:   Thu Nov 15 09:27:33 2012 -0800

    Reinitialize the repo object after a fetch.
    
    If a large change is fetched, it may arrive in only a pack file,
    which tickles the invalid cache bug in git-python.
    
    Fixes bug 1078946.
    
    Change-Id: Ib912967e37c6aed906d86dc35a4b4a65e4f9c3bd
    Reviewed-on: https://review.openstack.org/16199
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Approved: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Tested-by: Jenkins

 tests/test_scheduler.py |   53 ++++++++++++++++++++++++++++++++++++++++-------
 zuul/merger.py          |    7 +++++++
 2 files changed, 52 insertions(+), 8 deletions(-)

commit 554ba5431fabeb34eb3d4c0d48dd826ffdff11e5
Author: James E. Blair <jeblair@hp.com>
Date:   Mon Nov 12 14:53:32 2012 -0800

    Log merge errors (at level DEBUG).
    
    Change-Id: If1c43a2965c30e56b09a6cf85bcf8959c67d62c6
    Reviewed-on: https://review.openstack.org/15927
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/merger.py |   15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

commit 14b5537607e9cab906c3f53522bb6b5a4655be6b
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Thu Nov 1 11:57:50 2012 -0700

    Retry git fetches to work around GitPython bug.
    
    GitPython when fetching refs may improperly read in git progress info
    and interpret it as fetch info. When this happens an AssertionError is
    thrown. However, since fetching seems to cache the ref locally
    subsequent fetches work without running into the progress info problem.
    So fetch again if an AssertionError is caught.
    
    Upstream bugfix
    https://github.com/gitpython-developers/GitPython/pull/42
    
    Change-Id: I1768b836aade2853d4dd3b2f4cd1fce7ec035524
    Reviewed-on: https://review.openstack.org/15219
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Tested-by: Jenkins

 zuul/merger.py |   17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

commit ce333845eae1f659d96761be966ab32a5901ed1c
Author: Antoine Musso <hashar@free.fr>
Date:   Tue Oct 16 14:42:35 2012 +0200

    doc about a post-merge pipeline
    
    Reacting on `change-merged` event definitely requires --force-message to
    be passed to `gerrit review` or Gerrit will complain the change is
    closed whenever it is also passed --verify X or --code-review Y.
    
    Added a simple example to setup a post-merge independant pipeline.
    
    Left a note about ``change-merged`` lacking the commit sha1. One should
    instead use the ``ref-updated`` when the commit sha1 is needed.
    
    Close #1067083
    
    Change-Id: Ic402a0048651d10ac619010fdfd58725374368cd
    Reviewed-on: https://review.openstack.org/14476
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 doc/source/zuul.rst |   27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

commit f9efd0ba5210ad55ef444b6546d0a983ef41cfef
Author: Paul Belanger <paul.belanger@polybeacon.com>
Date:   Sat Oct 13 16:59:55 2012 -0400

    Fix typo with log_config in zuul.conf-sample
    
    Change-Id: Ieda682233843b4500e8d59d91ac24b36dfd172dd
    Signed-off-by: Paul Belanger <paul.belanger@polybeacon.com>
    Reviewed-on: https://review.openstack.org/14433
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 etc/zuul.conf-sample |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 76904f2f98d8716659379bcd4f62afbfb4805766
Author: Antoine Musso <hashar@free.fr>
Date:   Thu Oct 11 12:19:40 2012 +0200

    honor ZUUL_UUID where UUID is used
    
    The addition of ZUUL_COMMIT (commit 81515ad, change I88c38a28)
    deprecated the UUID parameter in favor of ZUUL_UUID but did not honor
    the new parameter.
    
    This patch add ZUUL_UUID lookup in jenkins_endpoint() and
    findBuildInQueue() with a fallback on UUID. Probably only needed on
    jenkins_endpoint() when a Jenkins job lack the UUID parameter, but I
    think we might as well add it in findBuildInQueue() just to be safe.
    
    Also update the documentation to uses ZUUL_ prefixed variables where
    relevant and added a note about GERRIT_PROJECT and UUID being
    deprecated.
    
    Change-Id: Ie0426f388cbd3a373af2110b7460aca6ff4f1751
    Reviewed-on: https://review.openstack.org/14327
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Tested-by: Jenkins

 doc/source/launchers.rst |   16 +++++++++++-----
 zuul/launcher/jenkins.py |    8 +++++---
 2 files changed, 16 insertions(+), 8 deletions(-)

commit ca0466e76d4b4f016df63cb107cee1847e4d6ba3
Author: Antoine Musso <hashar@free.fr>
Date:   Thu Sep 27 17:26:27 2012 +0200

    raise exception when info reference cant be found
    
    We always assume being able to get the references from a specific URL
    although that might not be available (for example if Apache is not
    properly setup). Logging an error with the URL we attempted to reach and
    raising the urllib2 exception will give an obvious hint to the
    administrator.
    
    Change-Id: I0465f8ec0749f6f16d64ddb22dd2ad93dbc42c82
    Reviewed-on: https://review.openstack.org/13815
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/trigger/gerrit.py |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

commit e955e063826b2368e9581bd892cdfd1cdfe4f8a3
Author: James E. Blair <jeblair@hp.com>
Date:   Mon Oct 8 09:49:03 2012 -0700

    Fix non-deterministic test.
    
    I hope.
    
    Change-Id: I813fdeb9ecd2e6f64871bc9499b0d0919a9cea83
    Reviewed-on: https://review.openstack.org/14171
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py |   11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

commit 81515adbd634b10118b5eaa8cd97dad784357ece
Author: James E. Blair <jeblair@hp.com>
Date:   Mon Oct 1 18:29:08 2012 -0700

    Add ZUUL_COMMIT.
    
    To facilitate using zuul with just the jenkins git plugin, add
    the ZUUL_COMMIT parameter.  Also, always include ZUUL_REF, whether
    the job is pre- or post-commit.  If it's pre, it will be a
    refs/zuul ref, if it's post, it will be refs/tags or a branch
    name.
    
    Change-Id: I88c38a28dcd552b2540095d36caacd10acf167b8
    Reviewed-on: https://review.openstack.org/13934
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 doc/source/launchers.rst |  107 +++++++++++++++++++++++++++++-----------------
 tests/test_scheduler.py  |    4 ++
 zuul/launcher/jenkins.py |   43 ++++++++++++++++---
 zuul/merger.py           |   10 ++++-
 zuul/model.py            |    4 +-
 zuul/scheduler.py        |   19 ++++----
 6 files changed, 126 insertions(+), 61 deletions(-)

commit 4aa1ad6a8e06833007bdf6394481964b39322b17
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Oct 5 12:39:26 2012 -0700

    Make tests more deterministic (hopefully).
    
    Waiting until settled was not considering jobs in the jenkins queue.
    This corrects that, as well as adding a little more debugging info
    for the problematic job that was tickling this.
    
    Change-Id: I1f4c76ff3e4adc830f47156d0740384815d5a51b
    Reviewed-on: https://review.openstack.org/14106
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

commit 45865f3e084f45a422f12a3141452109cabeee6b
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Oct 5 09:39:46 2012 -0700

    Handle branches or refs in job specification.
    
    Change-Id: If46832e6c1d5538fad88c9503c248372cb5b9416
    Reviewed-on: https://review.openstack.org/14096
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/model.py |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

commit 172c076a1b3d7863ebcf7854cc90ed3838fb2de3
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Oct 2 15:35:54 2012 -0700

    Add documentation about serving Zuul refs.
    
    Change-Id: I6cdd20e6238fafdca626eb2531a3a78c985bb680
    Reviewed-on: https://review.openstack.org/13974
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 doc/source/launchers.rst |    1 +
 doc/source/triggers.rst  |   66 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 67 insertions(+)

commit 9358c615f94d9fe5b89a19386d23af33f5dc9903
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Sep 28 08:29:39 2012 -0700

    Fix ref comparison.
    
    In the case of ref deletion, the null sha is not very
    unique, and could be present in another project.  Make
    sure to compare the project, ref, and sha to determine
    if two ref-updated events are equal.
    
    Change-Id: I6bd4a02f21bd31b91ef369783641ded014f7717c
    Reviewed-on: https://review.openstack.org/13839
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/model.py |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

commit 9b670905d9ce1d6b6c62e6341d77eaa8376d1f72
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Fri Sep 28 13:47:56 2012 -0700

    Provide link to status page in Gerrit comments.
    
    When commenting on Gerrit that jobs are beginning include a link to the
    zuul status page if one is configured.
    
    Change-Id: Iba5f315f4baa006939dbdcb07b0758e570242ca8
    Reviewed-on: https://review.openstack.org/13858
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 doc/source/zuul.rst  |   75 ++++++++++++++++++++++++++++++++++++++++++++++++++
 etc/zuul.conf-sample |    1 +
 zuul/scheduler.py    |    2 ++
 3 files changed, 78 insertions(+)

commit 1e1a1552af613b7543e4e10c0a44a5e59b4254be
Author: Antoine Musso <hashar@free.fr>
Date:   Thu Sep 27 14:55:26 2012 +0200

    log exception on invalid jenkins notifications
    
    I have been playing with zuul on port 8001 using curl:
    
      curl http://127.0.0.1:8001/jenkins_endpoint
    
    Had to `strace -f` the process to find out what was going wrong. Logging
    the exception will simply make it easier to track possible issues coming
    from the Jenkins Notification plugin..
    
    Change-Id: I461146d0a6e7d63a0d8bedc3d4a6ad19e22548d6
    Reviewed-on: https://review.openstack.org/13817
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/launcher/jenkins.py |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

commit bb480fd092faa8f92d23968ca807b58b95ce1687
Merge: 326e355 aa85ebf
Author: James E. Blair <jeblair@hp.com>
Date:   Thu Sep 27 10:50:01 2012 -0700

    Merge branch 'dev'
    
    Change-Id: I65fc0ed6fed411ec3c453989b748ee6022081366

commit aa85ebfe92759b88692ba82eb7460ce78ae330ae
Author: Zhongyue Luo <zhongyue.nah@intel.com>
Date:   Fri Sep 21 16:38:33 2012 +0800

    Remove pep8 ignores
    
    Fixed all pep8 errors.
    E125 is ignored because of false alarms.
    
    Change-Id: I4da60409e0095c0896230cd01bda548ed2e3f741
    Reviewed-on: https://review.openstack.org/13740
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py  |   49 +++++++++++++++++++++++++---------------------
 tox.ini                  |    2 +-
 zuul/launcher/jenkins.py |    5 +++--
 zuul/lib/gerrit.py       |    4 ++--
 zuul/model.py            |    6 ++----
 zuul/scheduler.py        |    8 ++++----
 6 files changed, 39 insertions(+), 35 deletions(-)

commit 326e355e898b5395b692cc599af8c057bd8570cc
Author: unicell <unicell@gmail.com>
Date:   Mon Sep 24 20:58:22 2012 +0800

    Fix gerrit port number setting.
    
    To make port setting of gerrit server in zuul.conf really work.
    
    Change-Id: I6f44f21256391fd04e56c18c0b293d9767c5a6a9
    Reviewed-on: https://review.openstack.org/13574
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/lib/gerrit.py     |    1 +
 zuul/trigger/gerrit.py |    4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

commit 5d55607e5becb89b2055e8f5730d288952444d31
Author: Zhongyue Luo <zhongyue.nah@intel.com>
Date:   Fri Sep 21 02:00:47 2012 +0900

    Fix pep8 E127 violations
    
    Updated pep8 version requirement to 1.3.3
    Fixed E127 errors
    All ignores are to be removed in the next sequence of patches
    
    Change-Id: Ia9e922b8873686a0f905f2548cc43d534ee1c912
    Reviewed-on: https://review.openstack.org/13642
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Reviewed-by: Zhongyue Luo <zhongyue.nah@intel.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 .mailmap                 |    4 ++++
 AUTHORS                  |    2 +-
 tests/test_scheduler.py  |   40 ++++++++++++++++++++++++----------------
 tox.ini                  |    4 ++--
 zuul/launcher/jenkins.py |    2 +-
 zuul/model.py            |    2 +-
 6 files changed, 33 insertions(+), 21 deletions(-)

commit b8ff8a7fc7e7cda468735c50652a4beba5331616
Author: Jeremy Stanley <fungi@yuggoth.org>
Date:   Tue Sep 25 16:10:02 2012 +0000

    Revert "Fix pep8 E127 violations"
    
    This reverts commit afd39bb3cd03517363cd08a41804911392e4d749
    
    This change should be rebased against the dev branch instead and
    submitted there. Once the production CI freeze ends immediately
    following the OpenStack Folsom release, dev changes will be merged back
    into master.
    
    Change-Id: Iabc1a0b287f0a433ca297a0d5cd1e21dd670e1d3
    Reviewed-on: https://review.openstack.org/13638
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 .mailmap                 |    4 ----
 AUTHORS                  |    2 +-
 tests/test_scheduler.py  |   40 ++++++++++++++++------------------------
 tox.ini                  |    4 ++--
 zuul/launcher/jenkins.py |    2 +-
 zuul/model.py            |    2 +-
 6 files changed, 21 insertions(+), 33 deletions(-)

commit 6ad5d5b1afd342bbdab6186d8c8c6677b721a459
Author: Antoine Musso <hashar@free.fr>
Date:   Mon Sep 24 13:25:28 2012 +0200

    handle KeyboardInterrupt
    
    When running zuul in non-daemon mode (with -d), it is often useful to
    abort it using Control + C.
    
    Change-Id: I385a41625633f3120b95c07283bef015824e5853
    Reviewed-on: https://review.openstack.org/13571
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul-server |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

commit 40b9907cd30a1ed121fe448a1c4dfa40c84bbea6
Author: Antoine Musso <hashar@free.fr>
Date:   Sat Sep 22 23:12:53 2012 +0200

    `git_dir` parameter in zuul.conf sample
    
    Change-Id: I95ef3dde919f4ab5ce471295fb7cc1568e42402a
    Reviewed-on: https://review.openstack.org/13526
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 etc/zuul.conf-sample |    1 +
 1 file changed, 1 insertion(+)

commit 80925f513125caf627758a5363bebb9782b30c57
Author: Antoine Musso <hashar@free.fr>
Date:   Sat Sep 22 21:37:45 2012 +0200

    fix back compat issues with python modules
    
    When using python-daemon 1.6, the interface has changed in an
    uncompatible way. Clark pointed me to Gerritbot which solves that issue
    with a simple try / catch block implemented with:
    
    https://github.com/openstack-ci/gerritbot/commit/b2be72e69d08c774989b2cc8c39748ed06ffb1bf
    
    So this patch is merely a copy/paste from David "davido" Ostrovsky with
    a small workaround for pyflakes issue #13 (we have to prented we are
    using the variable holding the module).
    
    Change-Id: Iffdf7fca067734fa9c09b5bddfb13f122e6251a7
    Reviewed-on: https://review.openstack.org/13524
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul-server |   12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

commit a969e820300d811b73811041d3b14272338c7bb9
Author: Antoine Musso <hashar@free.fr>
Date:   Sat Sep 22 21:37:02 2012 +0200

    update pip dependencies
    
    zuul also need the 'lockfile' and 'python-daemon' python packages.
    
    Change-Id: I16ed4fba9705796f83aa980687de8b9d262eb715
    Reviewed-on: https://review.openstack.org/13523
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tools/pip-requires |    2 ++
 1 file changed, 2 insertions(+)

commit afd39bb3cd03517363cd08a41804911392e4d749
Author: Zhongyue Luo <zhongyue.nah@intel.com>
Date:   Fri Sep 21 02:00:47 2012 +0900

    Fix pep8 E127 violations
    
    Updated pep8 version requirement to 1.3.3
    Fixed E127 errors
    All ignores are to be removed in the next sequence of patches
    
    Change-Id: I266498a2c64a215648a4a598b8cba5669049e37c
    Reviewed-on: https://review.openstack.org/13384
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Tested-by: Jenkins

 .mailmap                 |    4 ++++
 AUTHORS                  |    2 +-
 tests/test_scheduler.py  |   40 ++++++++++++++++++++++++----------------
 tox.ini                  |    4 ++--
 zuul/launcher/jenkins.py |    2 +-
 zuul/model.py            |    2 +-
 6 files changed, 33 insertions(+), 21 deletions(-)

commit fec5c7ac183fb8aff2ff64700f67a5112b9b146c
Author: Antoine Musso <hashar@free.fr>
Date:   Sat Sep 22 12:32:37 2012 +0200

    update github URLs in documentation
    
    Some puppet modules have been renamed in openstack-ci-puppet:
    
    * `jenkins_slave` puppet module has been integrated in `jenkins` module
    * `openstack-ci-config` has been renamed `openstack_project`
    
    Change-Id: Ie4a35022301c156f74e1fdef859c87319efb60da
    Reviewed-on: https://review.openstack.org/13519
    Approved: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Tested-by: Jenkins

 doc/source/launchers.rst |    2 +-
 doc/source/zuul.rst      |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

commit 00635dc6c294d8b5eef4948abdd9478f91e66bb4
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Wed Sep 19 14:03:08 2012 -0700

    Move terminology from "queue" to "pipeline".
    
    The zuul terminology for queues was changed to pipelines to help clean
    up the code and make it easier to read and debug. Update the
    documentation to reflect this terminology change.
    
    Change-Id: I8805f7ee201196b9658b8ea3546d4451aed4c700
    Reviewed-on: https://review.openstack.org/13312
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 doc/source/gating.rst  |    2 +-
 doc/source/zuul.rst    |  125 ++++++++++++++++++++++++------------------------
 etc/layout.yaml-sample |   10 ++--
 3 files changed, 70 insertions(+), 67 deletions(-)

commit 35956c5ac7285ac248d4cac37c7453b724233704
Author: James E. Blair <jeblair@hp.com>
Date:   Mon Sep 17 22:13:36 2012 +0200

    Switch to smart HTTP mode.
    
    Gerrit actually only speaks smart http, but we were assuming
    dumb HTTP (which is provided in OpenStack's configuration).
    
    Change-Id: Id299f53a6be6fc1670edf1da4b3353115bf1e31e
    Reviewed-on: https://review.openstack.org/13146
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py |    9 +++++++--
 zuul/trigger/gerrit.py  |   35 ++++++++++++++++++++++++++++++++---
 2 files changed, 39 insertions(+), 5 deletions(-)

commit 7ee88a225dd1c695dd1c0cf7e9e61756733e5393
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Sep 12 18:59:31 2012 +0200

    Fix deadlock with nonexistent jobs.
    
    When Zuul tried to launch a non-existent jenkins job, the path
    to mark the job as LOST involves calling back into the scheduler
    from the launcher while holding the queue lock.  That deadlocks,
    so instead, spawn a thread to report the job as lost.
    
    Change-Id: I6a5661638e7edba1c56eb0b3d6384283b3ecc4ed
    Reviewed-on: https://review.openstack.org/12889
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py  |   39 +++++++++++++++++++++++++++++++++++++++
 zuul/launcher/jenkins.py |   13 ++++++++++---
 zuul/scheduler.py        |    1 +
 3 files changed, 50 insertions(+), 3 deletions(-)

commit 05fed6074ee2d4e6f8fe1415d1d99e98df4df686
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Sep 7 12:45:24 2012 -0700

    Clear the git repo cache on update.
    
    The GitPython Repo object caches whether a given sha is held in an packed
    or loose database.  If the remote repository is repacked, that information
    could be invalid.  Therefore, each time the local repo is updated from the
    remote, clear the object database cache.
    
    See this file for the cache in action:
      https://github.com/gitpython-developers/gitdb/blob/master/gitdb/db/base.py#L227
    
    Change-Id: I547ba01d8cdc20f431e93e02736b498f744992c0
    Reviewed-on: https://review.openstack.org/12597
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py |   37 +++++++++++++++++++++++++++++++++++++
 zuul/merger.py          |    7 +++++++
 2 files changed, 44 insertions(+)

commit 906f8940bdc6528780cbc578dd3a9929f6975168
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Mon Sep 10 11:00:34 2012 -0700

    Restrict test coverage to the zuul package.
    
    We are not concerned with the code coverage of upstream libraries that
    are used in zuul. Restrict code coverage gathering to the zuul package.
    
    Change-Id: I62eb752c5fd0fe0289253c0b5c950382d760ea95
    Reviewed-on: https://review.openstack.org/12725
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 setup.cfg |    7 +++++++
 1 file changed, 7 insertions(+)

commit 7524158616b8facf2a2a1fe3bdb467e96c9dd17f
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Aug 31 12:16:55 2012 -0700

    Don't set ahead/behind on independent queues.
    
    Change-Id: I6507896e9980eee4ac13ff8bd94f0e32947cd5d8
    Reviewed-on: https://review.openstack.org/12279
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/model.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit e048707033bde3bef7401933c2d920f650f4ca99
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Aug 29 17:38:31 2012 -0700

    Refactor change queue.
    
    Move most of the change queue logic into the model.  This should
    be a little cleaner, and it should be easier to follow what
    happens when a build is complete.
    
    Run launch jobs over the whole queue.
    Collapse addChange into the base manager.
    
    Makes reading the logic around adding a change simpler.  Several
    hooks are provided for the dependent manager subclass to extend
    the method around dependent changes.
    
    Move onbuildcompleted and reporting methods to base class.
    
    Simplifies the code path when a build is completed.  Move to a
    more generalized model where updates are applied to changes as
    received, then search for changes ready to be reported, then
    search for jobs that need to be launched.
    
    Also,
     * test check queue functionality
     * assert all queues are empty at ends of tests
     * move formatting methods to pipeline/queue classes
     * add queue-only mode notification to status screen
    
    Change-Id: I336ac289af6ebd23567ac54b359c9f38af7f2ac7
    Reviewed-on: https://review.openstack.org/12277
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/fixtures/layout.yaml |    2 +-
 tests/test_scheduler.py    |   82 +++++++-
 zuul/model.py              |  116 ++++++++++--
 zuul/scheduler.py          |  444 +++++++++++++++++++-------------------------
 4 files changed, 377 insertions(+), 267 deletions(-)

commit 127bc18b87f02812be679bfe1e04935db65a6ded
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Aug 28 15:55:15 2012 -0700

    Fix problem with dependent changes.
    
    Fix a bug where change objects were being compared incorrectly
    when determining whether or not a change was in the queue
    after a failed change had been dequeued.  Added a test-case
    that simulates the real-world conditions that exposed the bug.
    
    Change-Id: I94a7915353335d80ab42b6c10c19595cb27788ae
    Reviewed-on: https://review.openstack.org/12078
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: James E. Blair <corvus@inaugust.com>

 tests/fixtures/layout.yaml |   14 ++++++
 tests/test_scheduler.py    |  102 ++++++++++++++++++++++++++++++++++++++++++++
 zuul/scheduler.py          |    3 +-
 3 files changed, 117 insertions(+), 2 deletions(-)

commit a35fcce2369eb3f39a55a2ed2a12673e37fbf596
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Aug 24 10:46:01 2012 -0700

    Make url_pattern optional.
    
    Change-Id: Iadd7e7f22fa31282d820bac12ba00c8f94cb8369
    Reviewed-on: https://review.openstack.org/11941
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/scheduler.py |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

commit 8b0d4c469cfdffa1b10c8111f134d9d1e6c07658
Author: James E. Blair <jeblair@hp.com>
Date:   Thu Aug 23 16:03:05 2012 -0700

    Change build URLs.
    
    If url_pattern is set in zuul.conf, use it instead of the build
    url supplied by jenkins when reporting a change to gerrit.
    
    Change-Id: Ic66b1efb5c7eae0dbbfd1927ee2827d13729b568
    Reviewed-on: https://review.openstack.org/11908
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/fixtures/zuul.conf |    1 +
 zuul/model.py            |  170 ----------------------------------------
 zuul/scheduler.py        |  193 ++++++++++++++++++++++++++++++++++++++++++++--
 3 files changed, 186 insertions(+), 178 deletions(-)

commit 4ec821f9783272973d05ff0084b5505ef14bb928
Author: James E. Blair <jeblair@hp.com>
Date:   Thu Aug 23 15:28:28 2012 -0700

    Add non-voting jobs.
    
    Change-Id: I5a9ccc857c28d458e3a8fbac03a9d29cc49b1da0
    Reviewed-on: https://review.openstack.org/11904
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/fixtures/layout.yaml |   14 ++++++++++++++
 tests/test_scheduler.py    |   21 +++++++++++++++++++--
 zuul/model.py              |   18 ++++++++++++++++--
 zuul/scheduler.py          |   12 ++++++++----
 4 files changed, 57 insertions(+), 8 deletions(-)

commit 1dbd508c42d6977ca5a4a3d66de7a904effdc21f
Author: James E. Blair <jeblair@hp.com>
Date:   Thu Aug 23 15:12:15 2012 -0700

    Make test root configurable.
    
    Set ZUUL_TEST_ROOT to put them somewhere other than /tmp.
    
    Change-Id: Ic73ec93f39ffb6693c202bb80bbc0597dd1d7e43
    Reviewed-on: https://review.openstack.org/11903
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py |   48 ++++++++++++++++++++++++++++-------------------
 1 file changed, 29 insertions(+), 19 deletions(-)

commit ec5901206182f4cf8a8add5e13b1d8be675193b9
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Aug 22 15:19:31 2012 -0700

    Dequeue failed change at head early.
    
    When a change at the head of the queue fails, immediately remove
    it from the queue and re-launch jobs behind it -- there's no
    need to wait for it to finish.
    
    Change-Id: I5d8650c1aa6d56090175a7b90a7baf327f6b8158
    Reviewed-on: https://review.openstack.org/11825
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py |   89 ++++++++++++++++++++++++++++++++++++++---------
 zuul/scheduler.py       |   18 ++++++++--
 2 files changed, 88 insertions(+), 19 deletions(-)

commit caec0c5bf62b1e0e629f8437bb80133a5251e6c4
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Aug 22 14:52:22 2012 -0700

    Dequeue changes that depend on a dequeued change.
    
    If a series of dependent changes are in the queue and one of them
    fails tests and is dequeued, dequeue any changes behind it that
    depend on it since they can't merge.
    
    Change-Id: Iffe7964c2e76bc1649f14b62bf4b3fc391a8c8cb
    Reviewed-on: https://review.openstack.org/11820
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py |   41 +++++++++++++++++++++++++++++++++++++++++
 zuul/model.py           |   13 ++++++++++++-
 zuul/scheduler.py       |   33 +++++++++++++++++++++++++++++----
 3 files changed, 82 insertions(+), 5 deletions(-)

commit 7f71c8036281441b740f701307b89f9da45a25af
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Aug 22 13:04:32 2012 -0700

    Add test case for projects with one job.
    
    This situation exposed a problem where tests for the second change
    would not be run if the change in front of it had one job marked
    hold and succeeded.
    
    Change-Id: I8f3c3bdb9d3631efc8b207a61d5a9086808cafb4
    Reviewed-on: https://review.openstack.org/11818
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/fixtures/layout.yaml |    8 ++++++++
 tests/test_scheduler.py    |   23 +++++++++++++++++++++++
 2 files changed, 31 insertions(+)

commit afd18ac2407a8fb4cb59c061f2f2e47227d053cc
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Wed Aug 22 12:59:32 2012 -0700

    Run jobs for change behind after builds complete.
    
    When all builds complete for a change, launch the jobs for the change
    behind the completed change to allow any builds that were being held
    until completion of the current change to run.
    
    Change-Id: I69401d0d4b4ecd96d36584c182e4b06eaa5ccfc6
    Reviewed-on: https://review.openstack.org/11816
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/scheduler.py |    4 ++++
 1 file changed, 4 insertions(+)

commit 821352ca465713d0c6b3050cab82ec7c6418b894
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Aug 21 15:31:23 2012 -0700

    Track and work around erroneously lost builds.
    
    There may be a jenkins bug where a running build is not listed
    as such in the api -- track these instances, and don't mark them
    as lost without another indicator (build duration != 0).
    
    Change-Id: Ib962e0274faf265c3a0d876a080b105804efa495
    Reviewed-on: https://review.openstack.org/11773
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/launcher/jenkins.py |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

commit ad6b8f40e27dd6710feb65d6c90a61f30666f6ea
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Tue Aug 21 14:46:01 2012 -0700

    Add nosehtmloutput as a test dependency.
    
    Adding nosehtmloutput as a test dependency allows nose to output its
    results to an html file. This will be used by Jenkins to save logs on
    a different server.
    
    Change-Id: Ia335969d830fba1dcfbc9a68a6deeb24828b14d0
    Reviewed-on: https://review.openstack.org/11753
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tools/test-requires |    1 +
 1 file changed, 1 insertion(+)

commit 03b94ef5fad3c4606cf721bc64f56abf8c622a71
Author: James E. Blair <jeblair@hp.com>
Date:   Mon Aug 20 10:54:29 2012 -0700

    Add more parameters to launcher.
    
    So that the launcher can display/record useful information such as
    pipeline, and included changes.
    
    Change-Id: I8665c1d9df43030976f05ae7d7fe7529ccf56abf
    Reviewed-on: https://review.openstack.org/11659
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/launcher/jenkins.py |   11 ++++++++++-
 zuul/scheduler.py        |    4 ++--
 2 files changed, 12 insertions(+), 3 deletions(-)

commit ceabcbca1ba08b10ec5bf82a6696c7962658629b
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Aug 17 13:48:46 2012 -0700

    Make pushing zuul refs upstream optional.
    
    And the default -- so that Zuul doesn't need any special gerrit
    privileges to run out of the box.
    
    Change-Id: I36411b299c8363d509498ece8ea21f88665ca39a
    Reviewed-on: https://review.openstack.org/11589
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/fixtures/zuul.conf |    1 +
 zuul/merger.py           |   32 +++++++++++++++++---------------
 zuul/scheduler.py        |    6 +++++-
 3 files changed, 23 insertions(+), 16 deletions(-)

commit c6294a59252b74d4376ad83da16910dd3ca27479
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Aug 17 10:19:48 2012 -0700

    Fix merger handling of branches.
    
    Force the creation of a remote tracking branch for every remote
    branch on repo reset, and checkout the relevant branch before
    applying each change.
    
    Add tests that use multiple branches.
    
    Change-Id: I5dbb22bc2eba829ffb9443889ebdf8ba573915c0
    Reviewed-on: https://review.openstack.org/11566
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py |  104 ++++++++++++++++++++++++++++++++++++++++++++++-
 zuul/merger.py          |   32 +++++++++++----
 2 files changed, 127 insertions(+), 9 deletions(-)

commit daabed2d7f91e98a73ca85fcfbe1a37f2847d68e
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Aug 15 15:38:57 2012 -0700

    Push zuul-merged refs to gerrit.
    
    Only merge changes if there is a refspec involved (not a ref-only change
    like ref-updated).  Also, only merge a change and launch jobs if a pipeline
    actually supplies jobs for that change.
    
    Add a test that ref-updated (eg, post) queues work.
    
    Change-Id: Ic9d3089cc745aac21a6cf97a060a5181935abee9
    Reviewed-on: https://review.openstack.org/11445
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py |   62 ++++++++++++++++++++++++++++-------------------
 zuul/merger.py          |   23 +++++++++++++++++-
 zuul/scheduler.py       |   22 ++++++++++++-----
 zuul/trigger/gerrit.py  |   24 +++++++++++-------
 4 files changed, 90 insertions(+), 41 deletions(-)

commit 973721faaf14e724660aaf8d4419075e856bd610
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Aug 15 10:19:43 2012 -0700

    Have zuul handle merge failures.
    
    If Zuul is unable to merge a change, don't run any jobs, and report
    the merge failure to gerrit directly (but still observing the
    dependent change queue, in case a change ahead caused the merge
    failure).
    
    Adds a test for this situation.
    
    Change-Id: I1ee2a8846b159db385019352cc04af2140db81af
    Reviewed-on: https://review.openstack.org/11421
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py |   50 +++++++++++++++++++++++++++++++++++++++++++----
 zuul/merger.py          |    2 +-
 zuul/model.py           |   36 +++++++++++++++++++++++-----------
 zuul/scheduler.py       |   17 +++++++++++++---
 4 files changed, 86 insertions(+), 19 deletions(-)

commit 4886cc186fbba5b60c5f7950296e251e7357cfb6
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Jul 18 15:39:41 2012 -0700

    Add merging capability.
    
    Add git repo management and merging.  When collecting changes to
    be tested together, merge or cherry-pick those changes into the
    zuul-managed repos, and create a unique ref for that configuration.
    Pass the ref to Jenkins instead of the string description of the
    changes, so that Jenkins only needs to checkout that one ref.
    This moves the complexity of merging and managing multiple commits
    out of Jenkins and into Zuul.
    
    The GERRIT_CHANGES variable is deprecated (along with the rest of
    the GERRIT_* variables) and will be removed in a future patch
    (which will contain a documentation update).
    
    Change-Id: I126c9030223c07a30f7092e2273ebd7605d9f3df
    Reviewed-on: https://review.openstack.org/11349
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/fixtures/layout.yaml |    1 +
 tests/fixtures/zuul.conf   |    1 +
 tests/test_scheduler.py    |  214 +++++++++++++++++++++++++++++++-------------
 tools/pip-requires         |    1 +
 zuul/launcher/jenkins.py   |   14 ++-
 zuul/merger.py             |  126 ++++++++++++++++++++++++++
 zuul/model.py              |   23 ++++-
 zuul/scheduler.py          |   34 ++++++-
 zuul/trigger/gerrit.py     |   11 +++
 9 files changed, 353 insertions(+), 72 deletions(-)

commit 597e7c4c85f0955bbd3968ad1d2c96d8ed6acdf1
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Aug 7 13:27:29 2012 -0700

    Fix status output for ref changes.
    
    Change-Id: I75b9f9b2c059fae776ab395951242cda0153c7ab
    Reviewed-on: https://review.openstack.org/10996
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/model.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit aab18c21fd13bbc7ce3fa9c953dda59f05ad1dbf
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Aug 7 11:19:24 2012 -0700

    Log exceptions formatting HTML status.
    
    Change-Id: I13a5f5f8ab8697c8274eab541a8eba1604e143fa
    Reviewed-on: https://review.openstack.org/10984
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/launcher/jenkins.py |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

commit 93cc8d4ee412a5f0e9cc6896a3900886d878ad88
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Aug 7 10:46:51 2012 -0700

    Return correct pipeline name in str method.
    
    Change-Id: I03e9ec477b1d7493984fc6082bf30425ea8f5ac2
    Reviewed-on: https://review.openstack.org/10981
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: James E. Blair <corvus@inaugust.com>

 zuul/scheduler.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit be765db89c75929e9530a5e82db28e417867feaa
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Aug 7 08:36:20 2012 -0700

    Fix problems with ref pipelines.
    
    Bugs introduced by refactoring.
    
    Change-Id: I4bc2440317f2def84308d1337649a8cdebf0ac34
    Reviewed-on: https://review.openstack.org/10980
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/model.py |   11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

commit b3e861aff4ff0e88cf44c352931c764bde169687
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Aug 7 09:31:22 2012 -0700

    Fix HTML status for dependend change queue.
    
    Change-Id: If14af44d13a0506501a88af0c12fca76862e1b8c
    Reviewed-on: https://review.openstack.org/10974
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: James E. Blair <corvus@inaugust.com>

 zuul/scheduler.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit dce85c615a293335c9e4f691606958f63cfee7ca
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Aug 7 09:10:58 2012 -0700

    Fix typo in status format.
    
    Change-Id: I4e8d5ca2a91595ba1ae3aaba4e64dd1b75665027
    Reviewed-on: https://review.openstack.org/10972
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: James E. Blair <corvus@inaugust.com>

 zuul/scheduler.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit d09c17a3ede6ce942f8dac0c7a7ad5f1216e9e82
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Aug 7 09:23:14 2012 -0700

    Fix bug with looking up a job tree.
    
    If there are no jobs for a project in a pipeline, an exception
    would be raised.  This change ensures that case is checked.
    
    The test fixtures are updated to simulate this condition as well.
    
    Change-Id: Id8e5bdef6288e5574d8553c11f5ac8e8c6c61704
    Reviewed-on: https://review.openstack.org/10973
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: James E. Blair <corvus@inaugust.com>

 tests/fixtures/layout.yaml |    7 +++++++
 zuul/model.py              |    7 +++++--
 2 files changed, 12 insertions(+), 2 deletions(-)

commit 90f177df07c04fc2cac5d02e56931819f131f0c3
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Aug 7 08:36:20 2012 -0700

    Just check that ref has changed when merging.
    
    Record the sha at refs/head/branch before each report.  Then if
    isMerged is called, just check that the sha has _changed_ since
    then, and if it has, assume that means it has reached the replica.
    
    This handles the case of a merge or cherry-pick commit being the
    actual commit that ends up at the ref, without the overhead of
    fetching and parsing that commit to see if it's really the change.
    This should be sufficient as long as Zuul is the only thing
    triggering merges.
    
    Change-Id: I50cfa7b4c011d9fd108046914c7bd236858ff5d3
    Reviewed-on: https://review.openstack.org/10970
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 zuul/trigger/gerrit.py |   25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

commit 4aea70c1dea80f59346e8428280f8591a3479177
Author: James E. Blair <jeblair@hp.com>
Date:   Thu Jul 26 14:23:24 2012 -0700

    Add pipelines to data model.
    
    This is a refactoring of the data model with the following goals:
    
     * Call top-level queues pipelines -- because too many other things
       are already called queues.  Pipelines convey the idea that there
       are a number of tasks to be performed (jobs), and that those
       tasks can be applied to different changes in parallel.
     * Eliminate references to queue_name from within a Change.
       Instead, methods that need to understand the pipeline that were
       accessed previously via the change are now located in the
       Pipeline class, taking a change as an argument.  Essentially,
       many methods involving changes (and builds, jobs, etc) must now
       be called in the context of a pipeline.
     * Add a changeish object to encompass the things that change and
       ref events have in common.
    
    Change-Id: Iaf8ed0991f3c5b2bf7ded2c340a60725f7f98eaf
    Reviewed-on: https://review.openstack.org/10757
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/fixtures/layout.yaml |    8 +-
 tests/test_scheduler.py    |   13 +-
 zuul/launcher/jenkins.py   |    4 +-
 zuul/model.py              |  604 +++++++++++++++++++++++---------------------
 zuul/scheduler.py          |  161 ++++++------
 zuul/trigger/gerrit.py     |   13 +-
 6 files changed, 424 insertions(+), 379 deletions(-)

commit 170180fab3a9b23058f54eea8dabd101c58fd6d8
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Wed Aug 1 14:40:51 2012 -0700

    Fix the zuul-coverage job (test-requires update).
    
    The zuul-coverage job depends on the coverage tool. Add it to
    tools/test-requires list.
    
    Change-Id: I4c5609f7992dd6dae649f5c059a69bb06b021831
    Reviewed-on: https://review.openstack.org/10684
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tools/test-requires |    1 +
 1 file changed, 1 insertion(+)

commit 8cc15a88266dd18fd0ca2f0a98732cd4120f27d5
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Aug 1 11:17:57 2012 -0700

    Wait for a commit to appear in the repo.
    
    This fixes a potential race condition where a change may be reported
    as merged in gerrit, but due to replication, the commit may not
    yet show up in the repo.  If a job is started during this time frame,
    then the git repo will not be in the expected state for testing.
    
    This now waits for the commit associated with the latest patchset
    for the change to become the commit at ref/heads/branch.  This
    check obviously only works to verify that the merged commit is the
    _most recently_ merged commit (ie, it does not perform the more
    general check that the commit was merged at some time in the past).
    That's okay here because zuul's merge commands are issued
    synchronously from a single thread, so if zuul instructs gerrit
    to merge a change, it should become that head, and no other changes
    should be able to merge during that time.
    
    Change-Id: I2213916c4850e7be80795cbed2dac29eacdb82bf
    Reviewed-on: https://review.openstack.org/10673
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py |   52 ++++++++++++++++++++++++++++++++++++++++++-----
 zuul/scheduler.py       |    5 ++++-
 zuul/trigger/gerrit.py  |   48 ++++++++++++++++++++++++++++++++++++++-----
 3 files changed, 94 insertions(+), 11 deletions(-)

commit 8c803f838c660fd1be9f94814d450669759d178e
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Jul 31 16:25:42 2012 -0700

    Add more tests.
    
     * Test that patches are queued in gerrit dependency order.
     * Test that we correctly decide when a change is able to merge.
    
    Change-Id: Ib541314e7c956202a3f1f33a6b2185dd22f83f73
    Reviewed-on: https://review.openstack.org/10633
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py |  161 ++++++++++++++++++++++++++++++++++++++++++++---
 zuul/scheduler.py       |    2 +
 2 files changed, 154 insertions(+), 9 deletions(-)

commit d466dc4f32d2350705185609b91335ff127176e7
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Jul 31 10:42:56 2012 -0700

    Add more tests.
    
    Add tests for canceling/aborting jobs behind a failed change.
    
    Change-Id: I589f5eda64223ad8ab0e00d936456b568b5aa4c9
    Reviewed-on: https://review.openstack.org/10613
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/test_scheduler.py |  201 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 199 insertions(+), 2 deletions(-)

commit 80c01bfb8e525bf805094eaf222a0e7cd69911e6
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Aug 1 13:38:06 2012 -0700

    Add Sphinx to test-requires.
    
    Needed for the gate-zuul-docs job.
    
    Change-Id: Ib330aeaf322543ab1f8b92e48672b0b0b4a4f692
    Reviewed-on: https://review.openstack.org/10681
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tools/test-requires |    1 +
 1 file changed, 1 insertion(+)

commit b02a3bb1b3f2c87cc66f335fdeca45e75017b201
Author: James E. Blair <jeblair@hp.com>
Date:   Mon Jul 30 17:49:55 2012 -0700

    Add more tests.
    
    Add two tests:
     * Changes behind failed changes get retested
     * Shared change queues
    
    Also, add the ability to simulate that a job for a change failed.
    
    Change-Id: Ia266a9a6a8920ef49b24025f8109c4414c563e8c
    Reviewed-on: https://review.openstack.org/10578
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/fixtures/layout.yaml |   28 ++++++++++++++
 tests/test_scheduler.py    |   88 ++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 113 insertions(+), 3 deletions(-)

commit b0fcae44a669bec7ecd0e920de97f8af2cb7f724
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Jul 17 11:12:10 2012 -0700

    Add functional tests.
    
    Add support for testing, and some initial functional tests.
    
    Some threads in Zuul now have proper shutdown methods, since
    that's needed for testing.  The threads that are faked in the
    testing infrastructure still lack shutdown methods.
    
    Fix some bugs uncovered by tests:
    
    Reverse the order of commits that are given to Jenkins (the
    commits that preceded the one being tested were listed in
    revers order, this corrects that).
    
    Return 0 in reportChange if the change has already been
    reported.  The old return value of True was misinterpreted
    as an error.
    
    Change-Id: I4979d0efd8581061a2b856b892d4ecdb75284a1b
    Reviewed-on: https://review.openstack.org/10572
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

 tests/fixtures/layout.yaml |   47 +++++
 tests/fixtures/zuul.conf   |   12 ++
 tests/test_scheduler.py    |  466 ++++++++++++++++++++++++++++++++++++++++++++
 tools/pip-requires         |    5 +
 tools/test-requires        |    1 +
 tox.ini                    |    7 +-
 zuul/launcher/jenkins.py   |   16 +-
 zuul/lib/gerrit.py         |    3 +
 zuul/scheduler.py          |   18 +-
 zuul/trigger/gerrit.py     |   14 ++
 10 files changed, 586 insertions(+), 3 deletions(-)

commit e421a23f4ffad6330df4bc85f2b55b323b20895a
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Jul 25 16:59:21 2012 -0700

    Test changes in dependency order.
    
    For dependent change queues, test the changes in dependency order,
    as reported by gerrit.
    
    Effectively, this means that a change is enqueued only if:
      * it can be merged
      * the change it depends on has been merged or:
        * can be merged
        * is the current patchset
    
    Also, once a change is enqueued, changes that depend on it are
    examined to see if they can be merged (assuming this one succeeds).
    If so, they are enqueued.
    
    Change-Id: I917b2a2d1fc94c3aa2de406ed4b9f795a8abb079

 zuul/lib/gerrit.py     |   25 ++++++++---
 zuul/model.py          |   53 ++++++++++++++---------
 zuul/scheduler.py      |   83 ++++++++++++++++++++++++++++++++----
 zuul/trigger/gerrit.py |  110 +++++++++++++++++++++++++++++++++++++++++++++++-
 4 files changed, 234 insertions(+), 37 deletions(-)

commit 1c860d7f134c70fbe8af5ff3193638a40f5d5c94
Author: Zhongyue Luo <zhongyue.nah@intel.com>
Date:   Thu Jul 19 11:03:56 2012 +0800

    scheduler.py cleanup
    
    Fixes bug #1026429
    
    Change-Id: Ifc72e63df9280533bd1b511d4b08bed79176a73e

 AUTHORS           |    1 +
 zuul/scheduler.py |  116 +++++++++++++++++++++++++++--------------------------
 2 files changed, 60 insertions(+), 57 deletions(-)

commit f950b4a4a4cc2e4eccf97c4a87397c81a24956aa
Merge: 06b50ef 1eded49
Author: Jenkins <jenkins@review.openstack.org>
Date:   Tue Jul 24 19:35:35 2012 +0000

    Merge "jenkins.py cleanup"

commit 06b50efd0dce700031fbf27520b015e0182349f7
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Fri Jul 20 14:12:03 2012 -0700

    Add Clark Boylan to the authors file.
    
    Change-Id: I2665e9e5dca2dbe12c7ad2ff00cae8a5bcb5e65c

 AUTHORS |    1 +
 1 file changed, 1 insertion(+)

commit 1eded492c1bc05d8f8a7871197ef7d79a3bae64a
Author: Zhongyue Luo <zhongyue.nah@intel.com>
Date:   Thu Jul 19 16:23:44 2012 +0800

    jenkins.py cleanup
    
    Fixes bug #1026513
    
    Change-Id: Iac2c7cbfbc00fa2e1157ef19b6bd5c21a4d4bc42

 zuul/launcher/jenkins.py |  106 +++++++++++++++++++++++++---------------------
 1 file changed, 57 insertions(+), 49 deletions(-)

commit 89cae0f5fb58323e7680a6b0441856eb4d336f0b
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Jul 18 11:18:32 2012 -0700

    Fix typo related to post merge jobs.
    
    Change-Id: If5e4eb3e6a8fe6cbb87f2c73ce5b139bf09fdf29

 zuul/model.py |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit 15437418d5d1d0ed00f2356f64ec085049e169e3
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Jul 18 08:45:55 2012 -0700

    Fix using failure as success message.
    
    Change-Id: Ic5607a6e5038938391bc7145838f3e8acbecd4ec

 zuul/model.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit ba2efeee6ff1526426622a233686f2ed07492870
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Tue Jul 17 10:46:13 2012 -0700

    Set change_behind to None when change is deleted.
    
    Previously the change_ahead for the change_behind was set to None,
    but then change_behind was not set to None as well. To properly
    delete a change set both pointers to None.
    
    Change-Id: If6d86759d3c10e88fca6e5f977456efd70bd0c32

 zuul/model.py     |    2 ++
 zuul/scheduler.py |   20 ++++++++++----------
 2 files changed, 12 insertions(+), 10 deletions(-)

commit 692c6b3d328e8ffbd9910d1c75431ba868dcb458
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Jul 17 11:16:35 2012 -0700

    Fix problem with duplicate change suppression.
    
    Jobs for changes weren't being launched for DependentQueueManagers
    because its addChange method called the superclass's addChange,
    which had the same duplicate suppresion logic.  This breaks
    out the bulk of that into a private method that can be called
    by both classes.
    
    Change-Id: Ib47be82f255bab38ce03c7af7fb5b700e1956aaa

 zuul/scheduler.py |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

commit 4e77ac972621e18ad5b72f1ab22d6449d089c91c
Merge: 007edd3 826ef9e
Author: Jenkins <jenkins@review.openstack.org>
Date:   Tue Jul 17 16:30:10 2012 +0000

    Merge "Cancel jobs behind a failed change."

commit 007edd30144167446a9c4e819aea13912d09e4d6
Merge: 0dc8ba9 222d498
Author: Jenkins <jenkins@review.openstack.org>
Date:   Tue Jul 17 15:32:21 2012 +0000

    Merge "Add job option to hold following changes."

commit 826ef9e03956ee1af7e0a372c7b77818209482cf
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Thu Jul 12 16:44:46 2012 -0700

    Cancel jobs behind a failed change.
    
    Jobs behind a failed change will need to be rerun so cancel them
    to free up resources at the front of the change queue. When a change
    at the front of the queue fails it is dequeued and all the jobs behind
    it are rerun. When a change in the middle of the queue fails all the
    jobs behind it are cancelled. Then the jobs will be rerun when a
    change at the front of the queue is dequeued for failure (which may
    end up being the change that caused the initial cancellation, or it
    may be a change further up in the queue).
    
    Change-Id: Ic0ebe15ec1a8d3a21ff04a6769243729683807ed

 zuul/model.py     |    8 ++++++++
 zuul/scheduler.py |   20 +++++++++++++++++---
 2 files changed, 25 insertions(+), 3 deletions(-)

commit 0dc8ba922d50ffd0b3da76783ce4c60bd13f8054
Author: James E. Blair <jeblair@hp.com>
Date:   Mon Jul 16 14:23:52 2012 -0700

    Don't enqueue changes that are already in the queue.
    
    Change-Id: I6be35d708fc13b5156270f2003d17a4afa856e4f

 zuul/model.py     |   13 +++++++++++++
 zuul/scheduler.py |   24 +++++++++++++++++++++++-
 2 files changed, 36 insertions(+), 1 deletion(-)

commit 222d4987c1e42bd0239bbc0173a7c8aa88964235
Author: James E. Blair <jeblair@hp.com>
Date:   Mon Jul 16 09:31:19 2012 -0700

    Add job option to hold following changes.
    
    By setting 'hold-following-changes' to True on .*-merge jobs,
    jobs for following changes in the dependend change queue won't be
    launched until all of the -merge jobs ahead of them complete
    successfully.  This prevents wasting resources on testing changes
    that have no chance of merging as tested.  It gives up a small
    amount of parallelization in order to achieve this (merge jobs will
    now run in series, while other jobs may continue to run in parallel).
    
    This should also help ensure that jobs nearer the front of the queue
    run sooner than jobs at the back.  Currently, the nondeterminism of
    job run-time can cause Jenkins to use limited resources on the back
    of the queue instead of the front.
    
    Also fixes these bugs:
    
    * The success/failure messages specified were not being used.
    * If a parameter function was applied to a meta-job, it would not
      be applied to jobs that matched the meta-job.
    
    Change-Id: I03cc3e25c554d8aeb1ddb478afaed168a961962f

 doc/source/zuul.rst |   12 ++++++++++++
 zuul/model.py       |   27 +++++++++++++++++++++++++++
 zuul/scheduler.py   |    9 ++++++++-
 3 files changed, 47 insertions(+), 1 deletion(-)

commit 6173fb3949f29794e7f29274af3dc6d7c7bf1cab
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Jul 11 17:23:33 2012 -0700

    Don't report changes that have already been reported.
    
    If A is a dependent change of B, and A and B finish test around
    the same time, the following may happen:
    
    Complete event for A is received.
    A is marked as complete.
    Complete event for B is received.
    B is marked as complete.
    Begin processing complete event for A
    A is reported.
    Since A merged, and B is dependent on A, zuul checks to see if
      B should be reported (it may have been waiting on A).
    B is complete, so it is reported.
    End of processing A's complete event
    Begin processing B's complete event
    B is reported (but fails to report correctly).
    
    To avoid this, record that a change has been succesfully reported,
    (regardless of the outcome of tests), and if requested to report
    the change again, simply return True, indicating that it has been
    succesfully reported.
    
    Change-Id: I5edbf158e7ef749cf855cadbacdc44161c054c59

 zuul/model.py     |    1 +
 zuul/scheduler.py |    4 ++++
 2 files changed, 5 insertions(+)

commit 2c0e967d27a715f83ade0e8f06e198d92824e9f6
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Jul 11 15:06:54 2012 -0700

    Add more debugging around lost builds.
    
    A build was recently marked as lost because zuul said it finished
    more than 5 minutes ago, but it had not yet finished.  This should
    give us the information needed to debug that situation.
    
    Change-Id: I2ab95c8110f4c3adf85db999cb6153db89b1b1b2

 zuul/launcher/jenkins.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit e5a847f484dbe1a61a3b4ab86896ca62d9b4de24
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Jul 10 15:29:14 2012 -0700

    Add parameter function and job branch specs.
    
    Add a parameter-function attribute to jobs that specifies a function
    that should be called to manipulate parameters passed to jenkins
    before a job is launched.
    
    Add the ability to include a python file to define such a function.
    
    Finish implementing the "branch" attribute of jobs that lets you
    specify whether a job should run on a particular branch.
    
    Change-Id: I3f4d21ad5ac58a24d44a9a8437daa5c668967db9

 doc/source/zuul.rst      |   48 +++++++++++++++++++++++++++++++++++++++-------
 zuul/launcher/jenkins.py |    6 ++++++
 zuul/model.py            |   25 +++++++++++++++++++-----
 zuul/scheduler.py        |   31 +++++++++++++++++++++++-------
 4 files changed, 91 insertions(+), 19 deletions(-)

commit 5a95c86d8f5a5d5c99d724c56cd4a9ae31c395f9
Author: James E. Blair <jeblair@hp.com>
Date:   Mon Jul 9 15:11:17 2012 -0700

    Use default state_dir
    
    Change-Id: Ic6722d3d8b8fa6a48db5c586aeb23772c1fe178f

 zuul/scheduler.py |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

commit 5d5bc2b92e46e2824c2834e6b7daf894517fa954
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Jul 6 10:24:01 2012 -0700

    Add graceful exit.
    
    A SIGUSR1 will cause zuul to queue new events, wait for existing
    jobs to finish, then save the queue and exit.
    
    It will likely take quite a while to complete (perhaps an hour),
    so it's not implemented as a SIGTERM handler.
    
    Can be used in an init script to implement a graceful restart.
    
    Change-Id: I09fce571e971f16b5d20c5d69d595a05c7f6a4ba

 etc/zuul.conf-sample |    1 +
 zuul-server          |   21 +++++++++++++
 zuul/scheduler.py    |   84 ++++++++++++++++++++++++++++++++++++++++++--------
 3 files changed, 94 insertions(+), 12 deletions(-)

commit 11700c3787c136939a86da0d4a78140a4e197000
Author: James E. Blair <jeblair@hp.com>
Date:   Thu Jul 5 17:50:05 2012 -0700

    Add build descriptions to Jenkins.
    
    Zuul will continue to update descriptions as it receives more
    information.
    
    Change-Id: I29c79068ff6c4cb1de40b98d2a9e8a0d3d52b635

 zuul/launcher/jenkins.py |   14 ++++-
 zuul/model.py            |  133 ++++++++++++++++++++++++++++++++++++++++++++--
 zuul/scheduler.py        |   47 ++++++++++++++--
 3 files changed, 184 insertions(+), 10 deletions(-)

commit 7e530ad37b46ff43f8c382a9ac6609fb9d41317e
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Jul 3 16:12:28 2012 -0700

    Keep build information around longer.
    
    Preparing for leaving informative messages on build descriptions.
    
    I'd like to be able to leave descriptions that include all the
    builds that happened in conjunction with any given build.  But
    Zuul forgets about completed builds very quickly, so we may not
    have all the information when needed.  This adds build sets,
    which keep track of all the builds that happened at once.
    
    This makes some of our recent status output changes a little
    easier/cleaner as well.
    
    This also adds the jenkins method to set a build description,
    which is unused in this change, but will be in a follow-on.
    
    Change-Id: I78936dc9284ef0a88272ffdef962718b20485ec7

 zuul/launcher/jenkins.py |   18 ++++++++++
 zuul/model.py            |   87 +++++++++++++++++++++++++++-------------------
 2 files changed, 69 insertions(+), 36 deletions(-)

commit 5ffe811ef180500c04869aaac069cc58d2475447
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Jul 3 16:12:55 2012 -0700

    Fix debug message when waiting for reconfiguration.
    
    We were logging the change instead of the build in the debug
    log messages while waiting for reconfiguration.
    
    Change-Id: Ib0976901e3c55f78cc7f2d59612f1a0632a17e93

 zuul/scheduler.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit b9bcb409e96cf55445acfbcdd1aa90c38c1db1fd
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Fri Jun 29 17:44:05 2012 -0700

    Add ability to filter patchset comments.
    
    Zuul layouts can now specify that jobs get run when comments match
    a filter. Trigger layouts would look like:
      trigger:
        - event: comment-added
          comment_filter:
            - reverify
            - recheck
    
    This would trigger a job whenever comments containing the string
    "reverify" or "recheck" are added to a change.
    
    Change-Id: I3dd75abbf75686b3929dd2bb412b02740911d6ee

 doc/source/zuul.rst    |    8 ++++++++
 zuul/model.py          |   14 +++++++++++++-
 zuul/scheduler.py      |    4 +++-
 zuul/trigger/gerrit.py |    1 +
 4 files changed, 25 insertions(+), 2 deletions(-)

commit fc56df39f8a585c0a3a0860819fa8987ec5b90d2
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Thu Jun 28 15:25:57 2012 -0700

    Add links to change pages on /zuul/status page.
    
    The links to Jenkins job pages on the /zuul/status page are awesome,
    but now we need links to go the other direction and link back to
    Gerrit. Add links using the event['change']['url'] parameter as the
    target.
    
    Change-Id: I24f189fd0d14e59e0ae5484b15ea6e3aa899e62f

 zuul/model.py          |   15 ++++++++++++---
 zuul/trigger/gerrit.py |    1 +
 2 files changed, 13 insertions(+), 3 deletions(-)

commit 6987883f69db4e90fdb0a97a61646e50f524b81a
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Thu Jun 21 16:25:39 2012 -0700

    Add links to jobs in zuul status page.
    
    Change-Id: I679df8dba94f6f0287e6a8317314afb00322d38b

 zuul/model.py     |   24 +++++++++++++++++++++---
 zuul/scheduler.py |    4 ++--
 2 files changed, 23 insertions(+), 5 deletions(-)

commit f1ae02d1c746360626b749c33348d204c241ff71
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Jun 20 13:55:55 2012 -0700

    Report more useful Jenkins URLs.
    
    Use testReport if available, then ConsoleFull, and failing that,
    the main URL for the build.
    
    Change-Id: I931f318d295137795457d5d7563a621ac891d1d3

 zuul/launcher/jenkins.py |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

commit bdfc0a1666371d65a8f072e4bcaf670f793e76ee
Merge: f1fa2c8 968b5a0
Author: Jenkins <jenkins@review.openstack.org>
Date:   Fri Jun 15 17:19:58 2012 +0000

    Merge "Fix matching events without approvals."

commit f1fa2c870a274bfc1949c6250b0dffcd1779a3c0
Merge: db1a289 2f7c2e7
Author: Jenkins <jenkins@review.openstack.org>
Date:   Fri Jun 15 17:17:45 2012 +0000

    Merge "Fix exception querying for lost builds."

commit db1a289e76bdf87ad4b41935cf03ec8593b0fc5e
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Jun 15 10:13:52 2012 -0700

    Use pep8 1.2.
    
    Change-Id: I7ba57af0991007361e515222db7678914d747d53

 tox.ini |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 968b5a03858346a7489c70c808a2d3b0ef20963b
Author: James E. Blair <jeblair@hp.com>
Date:   Thu Jun 14 13:18:47 2012 -0700

    Fix matching events without approvals.
    
    Some events lack approvals (just a text review, for instance).
    Make sure that we set approvals to [] rather than None in that
    case to avoid problems in the event matching code which assumes
    it is always a list.
    
    Change-Id: I2cd95e3dd0a6254ed3ddaee320cf3316487cea32

 zuul/trigger/gerrit.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 2f7c2e7be537011c2e0bd399a44b822af396956e
Author: James E. Blair <jeblair@hp.com>
Date:   Thu Jun 14 13:10:01 2012 -0700

    Fix exception querying for lost builds.
    
    If Jenkins starts 404ing a build url, this handles that.  Transient
    errors should be ignored, persistent errors will declare the build
    lost.
    
    Change-Id: I89277df72ed1f4c32c56de767515ab8b14560d4a

 zuul/launcher/jenkins.py |   21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

commit d4350d46e421ea6f98fc707b9f5056ced6307551
Merge: dc25386 268d934
Author: Jenkins <jenkins@review.openstack.org>
Date:   Thu Jun 14 16:40:52 2012 +0000

    Merge "Add a really basic status page."

commit 268d9344af7e86f40576d09a6733c23ccadbaff9
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Jun 13 18:24:29 2012 -0700

    Add a really basic status page.
    
    Text only, not very pretty, but hopefully should do the job for
    now.
    
    Change-Id: I2e30f0e087086ca1fcbafa6f4bdde9855225e71f

 zuul/launcher/jenkins.py |    9 +++++++--
 zuul/scheduler.py        |   35 +++++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 2 deletions(-)

commit dc2538693e1390b2f43934f4c40d0d861fe7e308
Author: James E. Blair <jeblair@hp.com>
Date:   Wed Jun 13 17:12:42 2012 -0700

    Add start actions.
    
    Add the ability to specify a report to gerrit on start.  This
    can be used to clear the verified column.
    
    Fixes bug #1012730.
    
    Change-Id: I8dd2a60c3a16a8fa0046675437c750948af99577

 doc/source/zuul.rst |    5 +++++
 zuul/lib/gerrit.py  |    5 +++--
 zuul/scheduler.py   |   16 ++++++++++++++++
 3 files changed, 24 insertions(+), 2 deletions(-)

commit 9f9667eddfe943841e392acaf8f87fe4a336034b
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Jun 12 17:51:08 2012 -0700

    Fix some logging issues.
    
    Use __repr__ for more objects so they look better in log messages.
    Fix a problem with erroneous information on the "depends on" log
    message.  Fixes bug #1011908.
    
    Change-Id: I43adc5fd0943d99dae28276b7a72009ce9f9a91c

 tox.ini           |    2 +-
 zuul/model.py     |    8 ++++----
 zuul/scheduler.py |    4 +++-
 3 files changed, 8 insertions(+), 6 deletions(-)

commit 302ab057abfc1abc7f7cdd5e9f7c4296ef64981c
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Jun 12 18:04:21 2012 -0700

    Handle Jenkins not launching a job.
    
    If Jenkins fails to launch a job, a change can get stuck in the
    queue.  This is very similar to when we lose track of a build in
    Jenkins, so in this case, pretend the build was launched, and mark
    it as LOST.  The queue will eventually drop the change and things
    will keep moving.
    
    Also, Jenkins sometimes erroneously reports 404 on the build URL.
    If we get an error launching a job, just retry it for 30 seconds
    before we finally give up.
    
    Fixes bug #1011907.
    
    Change-Id: I605fe37abf2fc3e7685df0f7a8e460b9a5d508b3

 zuul/launcher/jenkins.py |   40 ++++++++++++++++++++++++++++------------
 1 file changed, 28 insertions(+), 12 deletions(-)

commit cdd000764ec3b303f6dd35a5a85030aa15514768
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Jun 8 19:17:28 2012 -0700

    Add documentation.
    
    Change-Id: I8197ec2e52596fa4136f8af9aa93ea06e56d4d0d

 .gitignore               |    3 +
 doc/Makefile             |  153 ++++++++++++++++++++++
 doc/source/conf.py       |  244 +++++++++++++++++++++++++++++++++++
 doc/source/gating.rst    |   96 ++++++++++++++
 doc/source/index.rst     |   32 +++++
 doc/source/launchers.rst |  105 +++++++++++++++
 doc/source/triggers.rst  |   37 ++++++
 doc/source/zuul.rst      |  319 ++++++++++++++++++++++++++++++++++++++++++++++
 etc/layout.yaml-sample   |    2 +-
 setup.cfg                |    4 +
 tox.ini                  |   11 +-
 11 files changed, 1004 insertions(+), 2 deletions(-)

commit 4baa94cb064169e7d317d48ef9468f327954345f
Author: James E. Blair <jeblair@hp.com>
Date:   Thu Jun 7 17:04:21 2012 -0700

    Don't set the wake event if reconfiguring.
    
    This could cause us to wake continuously.
    
    Change-Id: I973b821d69f9240a6ec5dd68ca180372f7c2fa6b

 zuul/scheduler.py |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

commit 2eea2b69dd72e6c64137c111ce956688c288b530
Merge: fb135a3 54740c3
Author: Jenkins <jenkins@review.openstack.org>
Date:   Wed Jun 6 16:55:28 2012 +0000

    Merge "Use paramiko for stream-events."

commit fb135a3a9eaae77f77a6bbfecdb9c60834072d87
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Jun 5 14:48:16 2012 -0700

    Add sample configs
    
    Change-Id: Id4d563f97568f7a67985ca5a67761804d89b291f

 etc/layout.yaml-sample  |   42 ++++++++++++++++++++++++++++++++++++++++++
 etc/logging.conf-sample |   44 ++++++++++++++++++++++++++++++++++++++++++++
 etc/zuul.conf-sample    |   14 ++++++++++++++
 3 files changed, 100 insertions(+)

commit 54740c37ba0a7a60588b884153f0c99787c7d7a4
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Jun 5 14:03:18 2012 -0700

    Use paramiko for stream-events.
    
    The hope is that error detection/recovery will be more robust.
    
    Change-Id: I28d51a9d977943ba94c9674123de95a1ab742f05

 zuul/lib/gerrit.py     |   77 +++++++++++++++++++-----------------------------
 zuul/trigger/gerrit.py |    6 +++-
 2 files changed, 36 insertions(+), 47 deletions(-)

commit ad216e3115a4a559f4b536e5dca30eea7a372bb9
Author: James E. Blair <jeblair@hp.com>
Date:   Tue Jun 5 11:06:45 2012 -0700

    Don't report changes without actions.
    
    Change-Id: Idd9b95488814a6130484a97ab0c60541054c6bd4

 zuul/trigger/gerrit.py |    3 +++
 1 file changed, 3 insertions(+)

commit 9d43ac139e3994d91547806519ac78a5dbf26a44
Author: James E. Blair <jeblair@hp.com>
Date:   Mon Jun 4 14:15:42 2012 -0700

    Ensure a change's project is relevant.
    
    If an event matches a queue, but is for a project that is
    unknown by the queue (but otherwise known), don't do anything
    with that event in that queue.
    
    Change-Id: I1f0d9ebcd6539cdbdaba905415765bf779814d03

 zuul/model.py     |    2 ++
 zuul/scheduler.py |    8 +++++---
 2 files changed, 7 insertions(+), 3 deletions(-)

commit bcfc3c60b0e6eee1901eefae6056d4edeb3b6638
Author: James E. Blair <jeblair@hp.com>
Date:   Mon Jun 4 08:54:22 2012 -0700

    Fix lost build detection.
    
    On maven jobs, a result is reported as soon as one target finishes.
    Switch to using 'building' to determine whether a build has
    finished, rather than checking for a result.
    
    Change-Id: Ic681d88e77abe6af6af59689337586b48af62d80

 zuul/launcher/jenkins.py |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit d65e22d49808386ed63c744d20d8adcb32f44e2d
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Jun 1 13:50:21 2012 -0700

    Update README
    
    Change-Id: I766e36ccfb96a9dabceec15889fa3151eec1ab93

 README |   19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

commit fa53368ce95a6a939e88095365de8ed79640e0ea
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Jun 1 11:38:02 2012 -0700

    Change queue to queues in config.
    
    To make it more consistent with the rest of the sections.
    
    Change-Id: I9cee45de4aaaa9afd0b24bf6a3f81584ec226e01

 zuul/scheduler.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit b0954652c69543d2abd8cb17a9f7070a011e18d6
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Jun 1 11:32:01 2012 -0700

    Add meta-jobs.
    
    If a job is named with a regex starting with ^, treat it as a
    meta-job and apply its attributes to matching jobs.
    
    Explicitly set attributes on normal job definitions will override
    those set by a meta job.
    
    This should reduce the need to copy/paste error messages for
    some common jobs.
    
    Change-Id: I4362f4892d1c60514fbaa9092ecd8b44493c7421

 zuul/model.py     |    5 +++++
 zuul/scheduler.py |   32 +++++++++++++++++++++++++-------
 2 files changed, 30 insertions(+), 7 deletions(-)

commit 3266340ecc1bfb52b04fe8e289287402c62f96af
Author: James E. Blair <jeblair@hp.com>
Date:   Fri Jun 1 10:04:18 2012 -0700

    Add support for ref-updated events.
    
    Fix paramiko import problem.
    Fix pep8 error.
    
    Change-Id: I7098da304ddfca18dfcc6bf79369479a73c8ae94

 zuul-server              |   11 ++++++++---
 zuul/launcher/jenkins.py |   17 +++++++++++------
 zuul/model.py            |   43 +++++++++++++++++++++++++++++++++----------
 zuul/scheduler.py        |   13 +++++--------
 zuul/trigger/gerrit.py   |   14 ++++++++++++++
 5 files changed, 71 insertions(+), 27 deletions(-)

commit 4c58c8f5995c910a4b6cbe043b281de1679054e2
Author: James E. Blair <jeblair@hp.com>
Date:   Thu May 31 13:38:09 2012 -0700

    Setup logging inside of the daemon context.
    
    It doesn't work outside.
    
    Change-Id: I410464cf36a375e964cd97ad5e80914ea81692a5

 zuul-server |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

commit d3bbe00b6a76c771ad29902c71f797d8ade12b33
Author: James E. Blair <jeblair@hp.com>
Date:   Thu May 31 13:06:31 2012 -0700

    Daemonize zuul.
    
    Change-Id: If3d30ec8f03ca35d8c8dd2c1347441aab535f8a1

 zuul-server |   26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

commit c84dd2666b0e583d4dd5332db100da33c2aaa8a4
Author: James E. Blair <jeblair@hp.com>
Date:   Thu May 31 10:03:13 2012 -0700

    Fix missing build warning.
    
    It's okay if an individual queue manager can't find a build, but
    we care if _no_ queue managers find the build.
    
    Change-Id: If2470a8bda5316563f92980d631b96037ec76c0f

 zuul/scheduler.py |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit e9d45c3c13962c8fb8439b2d05f76a66674dea74
Author: James E. Blair <jeblair@hp.com>
Date:   Thu May 31 09:56:45 2012 -0700

    Add dynamic reconfiguration.
    
    When SIGHUP is received, trigger events are queued only,
    we wait for all builds to complete, re-load the configuration,
    then continue.
    
    Initial configuration is now performed the same way, to
    make sure it gets exercised.
    
    Change-Id: I41198b6dc9f176c8e57cd4a10ad00e4b7480e1d1

 zuul-server       |   94 ++++++++++++++++++++++++++++++++---------------------
 zuul/scheduler.py |   58 ++++++++++++++++++++++++++++-----
 2 files changed, 107 insertions(+), 45 deletions(-)

commit ff986a134b81c2687cc34695611b56dcafd32030
Author: James E. Blair <jeblair@hp.com>
Date:   Wed May 30 14:56:51 2012 -0700

    Add Jenkins cleanup thread.
    
    It searches for outstanding builds that haven't reported back
    or otherwise can't be found by Jenkins, and marks them complete
    with a result of "LOST".  This should help to avoid deadlocks
    where Zuul waits forever to hear back from Jenkins after missing
    a notification.
    
    Add pyflakes to tox.ini.
    
    Change-Id: I26d3fbf375e82e224448ec3337f9cc97deeccd56

 .gitignore               |    1 -
 tox.ini                  |    6 ++-
 zuul/launcher/jenkins.py |  128 ++++++++++++++++++++++++++++++++++++++--------
 zuul/model.py            |    6 ++-
 4 files changed, 117 insertions(+), 24 deletions(-)

commit 1e8dd893edf4e616e98175f6e1355fbf96de1887
Author: James E. Blair <jeblair@hp.com>
Date:   Wed May 30 09:15:05 2012 -0700

    Remove stray print statements.
    
    Add tox.ini with pep8 section.
    
    Fix pep8 errors.
    
    Change-Id: I6c171104359b16bcb130fdd56697d0663d8ec562

 setup.py                 |    2 --
 tox.ini                  |    6 ++++
 zuul-server              |    6 +++-
 zuul/launcher/jenkins.py |   60 +++++++++++++++++++--------------
 zuul/lib/gerrit.py       |   14 +++++---
 zuul/model.py            |   33 ++++++++++++------
 zuul/scheduler.py        |   84 +++++++++++++++++++++++-----------------------
 zuul/trigger/gerrit.py   |    6 +---
 8 files changed, 120 insertions(+), 91 deletions(-)

commit 0903a4227cc8facc6edc9e6dab43ef79a211f24c
Author: James E. Blair <jeblair@hp.com>
Date:   Wed May 30 11:59:58 2012 -0700

    Fix logic error in reporting
    
    Change-Id: I0444353eb753387fd792605371ad25ffe0e8990e

 zuul/lib/gerrit.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 816e7e244694271995d6213ab4d978d37adf356f
Author: James E. Blair <jeblair@hp.com>
Date:   Wed May 30 11:21:31 2012 -0700

    Use GERRIT_CHANGES.
    
    Change-Id: I93a642bc850bc06cf053ad7d3a529d698cc68527

 zuul/launcher/jenkins.py |    7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

commit a03262c8141a4c25bea71a96e8e4381fc847c665
Author: James E. Blair <jeblair@hp.com>
Date:   Wed May 30 09:41:16 2012 -0700

    Add missing params to launcher.
    
    Change-Id: Iddc4f508fa2425c31369c84f63d3bcf8df5e0887

 zuul/launcher/jenkins.py |    9 ++++++++-
 zuul/model.py            |    5 ++++-
 zuul/scheduler.py        |    5 +++--
 zuul/trigger/gerrit.py   |    1 +
 4 files changed, 16 insertions(+), 4 deletions(-)

commit 61da08b26890286b51642eded0cf18e76ba5cc26
Author: James E. Blair <jeblair@hp.com>
Date:   Wed May 30 09:01:02 2012 -0700

    Change default jenkins port
    
    Change-Id: I761612276cf08a217128592c26f0619ef0417829

 zuul/launcher/jenkins.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit f0cf6e7f7e444deef660fcd97c8e3467dcbbbdb6
Author: James E. Blair <jeblair@hp.com>
Date:   Tue May 29 17:43:36 2012 -0700

    Change port for jenkins listener.
    
    Change-Id: I92293aa0f4bf177b5ea29a57162f5317b07d3db8

 zuul/launcher/jenkins.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 1ce97ad61ca01cba7905d739304bbe0433c172c6
Author: James E. Blair <jeblair@hp.com>
Date:   Tue May 29 15:38:19 2012 -0700

    Add .pyc to gitignore.
    
    Fix missing header.
    
    Change-Id: Ib74e8f13323cb2e8c0962a7e072eec0ab275215b

 .gitignore  |    1 +
 zuul-server |   15 +++++++++++++++
 2 files changed, 16 insertions(+)

commit 182677a1d91e04ed2da62b7496f0a3e71dc4817e
Author: James E. Blair <jeblair@hp.com>
Date:   Tue May 29 15:26:50 2012 -0700

    Add package to setup.py
    
    Change-Id: I023956e67b4ee89852e63f0b14735860764958b8

 setup.py |    1 +
 1 file changed, 1 insertion(+)

commit ee743613ce5b3aee11d12e91e932d7876bc0b40c
Author: James E. Blair <jeblair@hp.com>
Date:   Tue May 29 14:49:32 2012 -0700

    Initial commit.

 .gitignore               |    6 +
 .gitreview               |    4 +
 AUTHORS                  |    1 +
 LICENSE                  |  202 +++++++++++++++++++++
 README                   |    1 +
 setup.py                 |   31 ++++
 zuul-server              |   53 ++++++
 zuul/launcher/jenkins.py |  217 +++++++++++++++++++++++
 zuul/lib/gerrit.py       |  171 ++++++++++++++++++
 zuul/model.py            |  323 ++++++++++++++++++++++++++++++++++
 zuul/scheduler.py        |  436 ++++++++++++++++++++++++++++++++++++++++++++++
 zuul/trigger/gerrit.py   |   92 ++++++++++
 12 files changed, 1537 insertions(+)