commit 46b91e522b82b7dd42fdb9c7c3b21d87748e464d
Merge: 4ce47da 10d9ed3
Author: Jenkins <jenkins@review.openstack.org>
Date:   Fri Dec 6 17:06:46 2013 +0000

    Merge "Remove unecessary debug message"

commit 4ce47daa502f764c164ff691d54b14e856edbcc2
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Dec 5 14:06:08 2013 -0800

    Document zuul client
    
    Adds programoutput sphinx extension as a test dependency so doc
    builds can include the program help text.
    
    Change-Id: Iec2f09f710162614cbb393a5628204ddebe2e29f

commit 10d9ed37b5aa7afe04a41133b79919d93f6beb9e
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Dec 5 13:22:44 2013 -0800

    Remove unecessary debug message
    
    Change-Id: I7d1c22c022913994e68c651e21ff127eac61f670

commit 8a7347014c41b76e13e179e4b3d257da2b27cf22
Merge: 2634d0f 01ca498
Author: Jenkins <jenkins@review.openstack.org>
Date:   Thu Dec 5 01:04:58 2013 +0000

    Merge "Document zuul_url breaking change"

commit 2634d0f0a42ae9601fa59a7a4ef872059852722f
Merge: b5780a8 ad28e91
Author: Jenkins <jenkins@review.openstack.org>
Date:   Wed Dec 4 20:37:08 2013 +0000

    Merge "Add a zuul client"

commit b5780a8d10f8980930abcdac2546ca074287e8f1
Merge: cabc247 c3d428e
Author: Jenkins <jenkins@review.openstack.org>
Date:   Wed Dec 4 20:35:13 2013 +0000

    Merge "Fix merging transitively-connected change queues."

commit 01ca498e1b4dfac91e93a8bd9692cc73292b8563
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Dec 4 08:57:35 2013 -0800

    Document zuul_url breaking change
    
    The change to add zuul_url breaks backwards compatibility, so
    document it in NEWS.
    
    Change-Id: Iac4e6540f5383a570961b157b15ad4707c520414

commit cabc247b5f7ef5ecbd9c3f9eae29ee62ed72f9ce
Author: Paul Belanger <paul.belanger@polybeacon.com>
Date:   Sat Nov 23 00:11:54 2013 -0500

    Ignore .venv directory
    
    Change-Id: I477ef147d2f1d04487613049139107f6b8bb0a3b
    Signed-off-by: Paul Belanger <paul.belanger@polybeacon.com>

commit c3d428ee894c8bde8d7c0b869bcc7462fd07c325
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Dec 3 15:06:48 2013 -0800

    Fix merging transitively-connected change queues.
    
    When combining change queues, given 3 projects that were transitively
    connected by shared jobs, depending on the order of processing, it
    was possible for them not to be combined.  To correct this, repeat
    the combining operation until the resulting set can be combined no
    further.
    
    In order to make the test (and actual usage) behavior more deterministic,
    the list of projects returned by the pipeline is now sorted by name.
    
    A test is added for this.
    
    Change-Id: If1386cad4118257efee9aa9918ad12a626927038

commit ad28e91698c5d0affade8fcca339e61f5303ca51
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Nov 27 10:43:22 2013 -0800

    Add a zuul client
    
    Add a command line client called 'zuul' that supports one command
    to start with: 'enqueue'.  It allows an operator (one with access
    to the gearman server) to enqueue an arbitrary change in a specified
    pipeline.  It uses gearman to communicate with the Zuul server, which
    now has an added RPC listener component to answer such requests via
    gearman.
    
    Add tests for the client RPC interface.
    
    Raise an exception if a Gerrit query does not produce a change.  Unlike
    events from Gerrit, user (or admin) submitted events over the RPC bus
    are more likely to reference invalid changes.  To validate those, the
    Gerrit trigger will raise an exception (and remove from its cache) changes
    which prove to be invalid.
    
    Change-Id: Ife07683a736c15f4db44a0f9881f3f71b78716b2

commit b1b010d39310e6e16a42c266707a3a28a47598f9
Author: Arx Cruz <apcruz@br.ibm.com>
Date:   Mon Oct 28 19:49:59 2013 -0200

    Add the possibility to pass the zuul url
    
    This patch adds the zuul_url option in zuul conf file
    in order to pass ZUUL_URL to Jenkins, which will be used
    by devstack-vm-gate-wrap.sh.
    Documentation added in launchers.rst and zuul.rst
    explaining how this new option works.
    
    Change-Id: I840423cc06fdfdacd301d30be3e0b3e589e563e9

commit c1868ecd0f7a8e77fda52c49bd6e1525e7361023
Merge: f5267ba 4ba48d9
Author: Jenkins <jenkins@review.openstack.org>
Date:   Tue Nov 26 15:19:52 2013 +0000

    Merge "GC git.Repo objects in merger.Repo operations."

commit f5267baa0f10dbe4c05c35558b69f04de19f8949
Merge: 1f8d176 6dbbc48
Author: Jenkins <jenkins@review.openstack.org>
Date:   Tue Nov 26 14:59:39 2013 +0000

    Merge "Clone repo if it is not on disk"

commit 1f8d1760b282b13835d43fc8e7cf1297561eb422
Merge: 22d4c2a 3a43e14
Author: Jenkins <jenkins@review.openstack.org>
Date:   Fri Nov 22 20:30:46 2013 +0000

    Merge "Doc: enhance gating reference with diagrams"

commit 4ba48d996728c30e653120ffd7891b14480b5281
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Mon Nov 11 18:03:53 2013 -0800

    GC git.Repo objects in merger.Repo operations.
    
    * zuul/merger.py: Zuul's merger.Repo is holding on to repo objects that
    keep many file descriptors open. Turn all git.Repo objects into method
    local references so that the git.Repo objects can be garbage collected
    once these methods are popped off the stack. GCing these objects frees
    the file descriptors associated with that repo. This adds overhead to
    repo operations as each operation must do initial setup IO.
    
    * tests/test_scheduler.py: Assert that no instances of git.Repo are
    known to the python garbage collector. Do the assertion after running a
    fully garbage collection run. This is a cheap check that repo objects
    are being garbage collected properly at the end of each test.
    
    Change-Id: I1d67981f32708a85af62ca622402de9fac0e1842

commit 6dbbc488d216b1c3d2163a2780d045d2a9eea80b
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Fri Oct 18 10:57:31 2013 -0700

    Clone repo if it is not on disk
    
    * zuul/merger.py: Previously zuul's merger only checked an initialized
    flag to determine if a repo should be cloned. If the state of the disk
    changes under zuul the repo may need to be recloned even if the
    initialized flag is set. Check if the repo exists on disk to determine
    if the repo should be cloned to deal with external state changes. Keep
    initialized flag in order to preserve ability to change git repo
    settings for user and email.
    
    * tests/test_scheduler.py: Add a test that checks a repo is recloned
    when removed from the filesystem under zuul.
    
    * tests/fixtures/layout-repo-deleted.yaml: Layout fixture for new test
    added above. This creates a new repo unused by any other tests so that
    failures of this test do not interfere with other tests, they will run
    independent of each other.
    
    Change-Id: I14fb34a2916002cefef73e41ec9182a073d59ef3

commit 22d4c2abb042eaadade830bfae7a38df2b623ed3
Merge: b4a8f97 5c86fbb
Author: Jenkins <jenkins@review.openstack.org>
Date:   Fri Nov 22 17:57:33 2013 +0000

    Merge "register reporters on test config"

commit b4a8f97e0753a05abc0cdfb17677f14b78ed71c3
Merge: 526926a b36f865
Author: Jenkins <jenkins@review.openstack.org>
Date:   Fri Nov 22 17:29:07 2013 +0000

    Merge "test: support voluptuous 7.0+"

commit 3a43e14bda52ce187d8fbb6371aa64dada6e3923
Author: Antoine Musso <hashar@free.fr>
Date:   Wed Oct 30 23:51:58 2013 +0100

    Doc: enhance gating reference with diagrams
    
    ASCII art is fun but not savvy for project managers and directors. This
    patch slightly enhance the 'gating' documentation with colored diagrams.
    
    This is made possible via http://blockdiag.com/ by Takeshi KOMIYA who
    even took the time to write a sphinx extension.  The version dependency
    is at the very least 0.5.5, but might be higher :/
    
    Change-Id: Ibe3c2674a5dff2114c40a84ffdec8a8886b1b21b

commit 5c86fbbd09516c507e3385a39da1443160a81512
Author: Antoine Musso <hashar@free.fr>
Date:   Mon Nov 4 21:49:00 2013 +0100

    register reporters on test config
    
    When doing the layout validation, I ended up spammed with a few errors:
    
      ERROR:zuul.Scheduler:Invalid reporter name gerrit
    
    The issue is that my pipelines use 'gerrit' as reporter while it is not
    registered when testing the config.  I registered the 'smtp' reporter as
    well and the error is gone.
    
    Side effect: the layout validation output now dumps actions for
    start/success/failure.
    
    Change-Id: I271a2943fa3e846ae60d9b615cd3a1ac3815bb1b

commit b36f8658d8979c545ad798bb1ea9489180ad6250
Author: Antoine Musso <hashar@free.fr>
Date:   Thu Oct 31 10:52:55 2013 +0100

    test: support voluptuous 7.0+
    
    Voluptuous 0.7.0 introduced a backward API incompatible change in
    upstream commit 475adebc:
    
      https://github.com/alecthomas/voluptuous/commit/475adebc
    
    The schema are precompiled and the validate_X have been removed,
    voluptuous is now smart enough to detect the type of value being
    validated and would call an internal validation method matching the
    type.
    
    Commit is contained since 0.7.0:
    
     $ git tag --contains 475adebc
     0.7.0
     0.7.1
     0.7.2
     0.8.1
     0.8.2
     $
    
    I tested it using etc/layout.yaml-sample and added an inexistent
    pipeline to the project. The test yield:
    
      voluptuous.MultipleInvalid: extra keys not allowed @
      data['projects'][0]['nonpipe']
    
    Debian has recently accepted voluptuous 0.8.2 in testing, so if we want
    to package Zuul, we better have to upgrade our voluptuous requirement as
    well. Ref: http://packages.qa.debian.org/v/voluptuous.html
    
    Change-Id: I117ea644863b2e4a4dc3429aa81e868573382877

commit 526926a5ab40d6cce80801a867c39f0c0474e264
Author: Michael Prokop <openstack.org@michael-prokop.at>
Date:   Thu Oct 24 16:16:57 2013 +0200

    doc: fix typos, missing parentheses, upper/lower case
    
    Fix some minor typos, add a missing parentheses and
    unify some upper vs lower case words.
    
    Change-Id: I2b6c394238de8d16f8eb4a752c2495762b01a2c3

commit ae028838e4eedcbc5fddac45a2be7ca80b3aaee0
Merge: a8eea7d 28db2af
Author: Jenkins <jenkins@review.openstack.org>
Date:   Wed Oct 16 02:32:48 2013 +0000

    Merge "doc: disable intersphinx mapping"

commit a8eea7d354d8a88ca0293ff3feac2466efe15212
Author: Antoine Musso <hashar@free.fr>
Date:   Sat Oct 5 16:08:00 2013 +0200

    statsd documentation
    
    A basic page explaining how to have Zuul send metrics to statsd and the
    metrics being exposed.
    
    Change-Id: I3e767989a7bc46a1ed9083ecab60bfeeadcb6439

commit 28db2af5ffb8da84cd89762eb6d263a41417be06
Author: Antoine Musso <hashar@free.fr>
Date:   Sat Oct 5 16:12:03 2013 +0200

    doc: disable intersphinx mapping
    
    The intersphinx extensions let one reserve a link namespace and map it
    to a remote URL, for example to refer to the Python documentation. A
    drawback is that, from time to time, Sphinx will attempt to download an
    object inventory from the remote, that is not convenient when running
    sphinx in offline mode such as in a plane.
    
    Change-Id: Idef8e88545715a3f1cb9ace002960a7ad3e37b69

commit d7e8f3ac261fa13ded1685fa062f24a8c49a8eec
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Thu Oct 3 15:31:04 2013 -0700

    Update trigger-job.py to pass LOG_PATH
    
    * tools/trigger-job.py: Add a logpath arg and make it required. This
    allows us to upload logs to appropriate dirs even when manually
    triggering jobs.
    
    Change-Id: I59144a2d5443fb6396af45f302f67bc8eec70780

commit 3042569ae564fc3b9831e082957f86968e862672
Merge: 8683312 7c5db97
Author: Jenkins <jenkins@review.openstack.org>
Date:   Thu Oct 3 00:59:48 2013 +0000

    Merge "doc: point directly to zuul.conf section"

commit 8683312eb0f9a83d2ceddaa92dc62a1d7683f942
Merge: e3b58d2 c779550
Author: Jenkins <jenkins@review.openstack.org>
Date:   Wed Oct 2 22:41:00 2013 +0000

    Merge "Partial sync with OpenStack requirements."

commit e3b58d207e240f28215741c2dfb9a919c4c5c94b
Merge: 1fdc3d8 52905bc
Author: Jenkins <jenkins@review.openstack.org>
Date:   Wed Oct 2 22:39:51 2013 +0000

    Merge "Remove usage of d2to1"

commit 1fdc3d8fe81e76aa04345e9fbc5477a2dd4fca80
Merge: 9b64708 3aa3727
Author: Jenkins <jenkins@review.openstack.org>
Date:   Fri Sep 27 20:52:07 2013 +0000

    Merge "Allow multiple invocations of the same job"

commit 9b647087fb0920e99a90d757eeaa7a2f07ccc740
Merge: 062c4fb ddb9ef3
Author: Jenkins <jenkins@review.openstack.org>
Date:   Fri Sep 27 20:52:06 2013 +0000

    Merge "On null changes serialize the id as null"

commit 3aa372722546252f629ad996ce206ece5ab7e582
Author: James E. Blair <jeblair@openstack.org>
Date:   Fri Sep 27 08:33:10 2013 -0700

    Allow multiple invocations of the same job
    
    Previously if a job was listed more than once for a project, it was
    ignored.  That's pretty arbitrary (it silently dropped the second
    without an error; and if there are two, which is the right one
    anyway?).  OTOH, it's potentially useful to run a job more than
    once in order to increase the chance of encountering
    notdeterministic behavior.  And if listing a job twice is an error,
    it is now more likely to be noticed by the operator.
    
    This removes the check for duplicate invocations of a job.
    
    Change-Id: If8e2e8cc3fca855bd6b14eb3a957dadddfe143ed

commit 062c4fb6f25578450371a861c429176d72ca3347
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Sep 26 07:46:00 2013 -0700

    Better English in failing_reasons
    
    So that the status display and logs read more better.
    
    Also, include the Zuul ref in JSON output so that the status
    screen can do something intelligent with unprocessed items (also
    it's an important bit of into).
    
    Change-Id: I1429344917856edfaeefa4e9655c2dad8081cae5

commit 7c5db9743995df533f377ad02d724df09d8009b7
Author: Antoine Musso <hashar@free.fr>
Date:   Thu Sep 26 11:48:26 2013 +0200

    doc: point directly to zuul.conf section
    
    The launcher documentation about 'Starting Builds' evokes the
    parameter-function in the zuul.conf documentation.  One had to goes down
    a few pages until the 'Includes' subsection.  I have updated the
    references to point directly to Includes, saving the reader sometime.
    
    Also fixed a typo: paremeter -> parameter
    
    Change-Id: I560f857b40a7cb989a71161f94e1fb0c8fd69293

commit c779550fac2acdf220a3279d6e61031153147241
Author: Monty Taylor <mordred@inaugust.com>
Date:   Wed Sep 25 12:17:08 2013 -0400

    Partial sync with OpenStack requirements.
    
    Where we're using the same libraries as OpenStack, sync with the
    OpenStack versions. Just to be nice.
    
    Change-Id: I8e90d2a8945d62e962b813c6396f0e7db4e14222

commit 52905bcdd39077db59a42e4e1a0a792adc786176
Author: Monty Taylor <mordred@inaugust.com>
Date:   Wed Sep 25 12:11:55 2013 -0400

    Remove usage of d2to1
    
    d2to1 pulls in setuptools, which trips the unhappy bugs with setuptools
    updating. Move past that and just use new pbr.
    
    Change-Id: I2609eda10ed781116940c3607ff85a14fc4b7f58

commit 5f2feaf08c90a129a0802cdfdd442d5fa0a0b0de
Author: Monty Taylor <mordred@inaugust.com>
Date:   Thu Sep 19 07:47:01 2013 -0700

    Update tox.ini to current standards
    
    Remove pyflakes env - it's covered by flake8. Use custom install_command
    to avoid unwanted pre-release software. Skip the unneeded sdist step.
    
    Change-Id: I2c86dabeb78da9f1a9ee7a8636bc5d58b2439d20

commit 11b6fa2f1f2577d6baf381203c5154fe2b5864dc
Merge: 22d81b6 fef7163
Author: Jenkins <jenkins@review.openstack.org>
Date:   Mon Sep 23 18:45:37 2013 +0000

    Merge "Fix NNFI bug with two failing changes at head"

commit 22d81b6cf52b7efa8d20a8937361c8a5ce5d0dcd
Merge: 0045126 9818967
Author: Jenkins <jenkins@review.openstack.org>
Date:   Mon Sep 23 18:29:28 2013 +0000

    Merge "add forge author identity privilege to support pushing refs to gerrit"

commit fef7163d521226e682b77f894226100fd6b4fdf5
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Sep 23 11:15:47 2013 -0700

    Fix NNFI bug with two failing changes at head
    
    If A is the head in A <- B <- C, and B failed, then C would be
    correctly reparented to A.  Then if A failed, B and C would be
    restarted, but C would not be reparented back to B.  This is
    because the check around moving a change short-circuited if
    there was no change ahead (which is the case if C is behind A
    and A reports).
    
    The solution to this is to still perform the move check even if
    there is no change currently ahead (so that if there is a NNFI
    change ahead, the current change will be moved behind it).  This
    effectively means we should remove the "not item ahead" part of
    the conditional around the move.
    
    This part of the conditional serves two additional purposes --
    to make sure that we don't dereference an attribute on item_ahead
    if it is None, and also to ensure that the NNFI algorithm is not
    applied to independent queues.
    
    So the fix moves that part of the conditional out so that we can
    safely reference the needed attributes if there is a change ahead,
    and also makes explicit that we ignore the situation if we are
    working on an independent change queue.
    
    This also adds a test that failed (at the indicated position) with
    the previous code.
    
    Change-Id: I4cf5e868af7cddb7e95ef378abb966613ac9701c

commit 0045126c3849442b3208940acf2d99c04829c179
Author: James E. Blair <jeblair@openstack.org>
Date:   Fri Sep 20 11:40:17 2013 -0700

    Fix items_behind error when moving a change
    
    When moving an item, we correctly reparented the items behind
    the item to the item that was previously ahead.  But we did
    not remove the references to the items behind from the item
    that was being moved.  This could result in that item
    maintaining references to items that were previously behind it.
    Generally, these would be the same and it would manifest as
    double entries in items_behind.
    
    Change-Id: Ibc1447867df4c6fc7b4fe954770a06c7c24fadc4

commit 0b584a9664c6b15e6aa66b620496165a2d0352dc
Merge: 2da48b8 2feda2d
Author: Jenkins <jenkins@review.openstack.org>
Date:   Fri Sep 20 16:08:09 2013 +0000

    Merge "Add more queue information to status JSON"

commit 2da48b8180585429d2f5db15a3f235d2b78da2b1
Merge: 363e564 972e3c7
Author: Jenkins <jenkins@review.openstack.org>
Date:   Fri Sep 20 16:06:59 2013 +0000

    Merge "Use NNFI scheduler algorithm"

commit 2feda2d5bf86c3dca88d00f48301f8b0ca744a65
Author: James E. Blair <jeblair@openstack.org>
Date:   Fri Sep 13 11:48:19 2013 -0700

    Add more queue information to status JSON
    
    Adds item ahead, items behind, and failing reasons for each item
    to the JSON status output.
    
    Change-Id: Iefa531e773b4cd4a62fd42f7e05600cca4421ca3

commit 972e3c78e8c7b37a7aecffef8e5f27d77d41a99d
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Aug 29 12:04:55 2013 -0700

    Use NNFI scheduler algorithm
    
    Update the scheduler algorithm to NNFI -- Nearest Non-Failing Item.
    
    A stateless description of the algorithm is that jobs for every
    item should always be run based on the repository state(s) set by
    the nearest non-failing item ahead of it in its change queue.
    
    This means that should an item fail (for any reason -- failure to
    merge, a merge conflict, or job failure) changes after it will
    have their builds canceled and restarted with the assumption that
    the failed change will not merge but the nearest non-failing
    change ahead will merge.
    
    This should mean that dependent queues will always be running
    jobs and no longer need to wait for a failing change to merge or
    not merge before restarting jobs.
    
    This removes the dequeue-on-conflict behavior because there is
    now no cost to keeping an item that can not merge in the queue.
    The documentation and associated test for this are removed.
    
    This also removes the concept of severed heads because a failing
    change at the head will not prevent other changes from proceeding
    with their tests.  If the jobs for the change at the head run
    longer than following changes, it could still impact them while
    it completes, but the reduction in code complexity is worth this
    minor de-optimization.
    
    The debugging representation of QueueItem is changed to make it
    more useful.
    
    Change-Id: I0d2d416fb0dd88647490ec06ed69deae71d39374

commit 363e564b37c2d32dfe2d92af8aa4fe8ba3fc61ba
Author: zhaoxinyu <zhaoxinyu@huawei.com>
Date:   Wed Sep 18 16:05:24 2013 -0700

    remove --pre option from tox's pip install command
    
    By default, tox passes --pre option to pip install commands so that
    prerelease packages, which perhaps are not suitable for test,
    would be installed, causing unforseeable errors. Like:
    http://logs.openstack.org/33/47233/1/check/gate-zuul-docs/7b794af/console.html
    whose installed Sphinx package is a beta version 2 causing the error in the log.
    fungi's proposal https://review.openstack.org/#/c/47239/1 also applies here.
    
    Change-Id: I9108b534bb469211434a4abf22b25c983aa444ba

commit 98189678c981dc602b419ac871de07524473bf69
Author: zhaoxinyu <zhaoxinyu@huawei.com>
Date:   Wed Sep 18 11:58:04 2013 -0700

    add forge author identity privilege to support pushing refs to gerrit
    
    without forge author identity privilege, zuul will fail to push
    refs/zuul/master/**** to gerrit because zuul git user is different
    from the commit's author. Therefore, update the documentation.
    
    Fixes bug: 1226877
    
    Change-Id: I3f59f03e28578e61a748e6f33a25a5707f433a1b

commit ddb9ef30dc41715ff30c1178f3830e35e26cd042
Author: Alex Gaynor <alex.gaynor@gmail.com>
Date:   Mon Sep 16 21:04:58 2013 -0700

    On null changes serialize the id as null
    
    Currently it's serialized as "None" (the string).
    
    Change-Id: I75a8aeb6b11d5700f03baef95527016877ff8f92

commit 5fea867c70849d7c5e6c52bde276d883c3f0dd67
Author: Joshua Hesketh <josh@nitrotech.org>
Date:   Mon Aug 19 17:32:01 2013 +1000

    Add support for emailing results via SMTP
    
    Utilises the new reporter plugin architecture to add support for
    emailing success/failure messages based on layout.yaml.
    
    This will assist in testing new gates as currently after a job has
    finished if no report is sent back to gerrit then only the workers
    logs can be consulted to see if it was successful. This will allow
    developers to see exactly what zuul will return if they turn on
    gerrit reporting.
    
    Change-Id: I47ac038bbdffb0a0c75f8e63ff6978fd4b4d0a52

commit 1879cf721c4c59d11451e434a79eeafdae3ac9a3
Author: Joshua Hesketh <josh@nitrotech.org>
Date:   Mon Aug 19 14:13:15 2013 +1000

    Separate reporters from triggers
    
    Allows multiple reports per a patchset to be sent to pluggable
    destinations. These are configurable per pipeline and, if not
    specified, defaults to the legacy behaviour of reporting back only
    to gerrit.
    
    Having multiple reporting methods means only certain success/failure
    /start parameters will apply to certain reporters. Reporters are
    listed as keys under each of those actions.
    
    This means that each key under success/failure/start is a reporter and the
    dictionaries under those are sent to the reporter to deal with.
    
    Change-Id: I80d7539772e1485d5880132f22e55751b25ec198

commit 312df9a7e87e00344516ff9ba390958bc993fecb
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Aug 27 17:17:02 2013 -0700

    Fix preprocessing for ref-updated events
    
    The conditional that did a 'git remote update' for ref-updated
    events (which otherwise don't affect the Merger) was wrong.
    
    Change-Id: Icb2596df023279442613e10e13104a3621d867d9

commit b34e9261fe16d551fb9bc804090059d179510a69
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Aug 27 17:12:31 2013 -0700

    Revert bogus merger optimizations
    
    Revert "Fix checkout when preparing a ref"
    
    This reverts commit 6eeb24743a4012613a679600247c70986ff1f63d.
    
    Revert "Don't reset the local repo"
    
    This reverts commit 96ee718c4b162d77ed58865a684b9bedd46c9cab.
    
    Revert "Fetch specific refs on ref-updated events"
    
    This reverts commit bfd5853957d53e231c0ccdf74004f726709aa07e.
    
    Change-Id: I50ae4535e3189350d3cc3a7527f89d5cb8eec01d

commit 99648b3b7465975d62c7b4df331da6d63341d551
Merge: 0f5efce 6eeb247
Author: Jenkins <jenkins@review.openstack.org>
Date:   Tue Aug 27 22:37:33 2013 +0000

    Merge "Fix checkout when preparing a ref"

commit 6eeb24743a4012613a679600247c70986ff1f63d
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Aug 27 14:59:27 2013 -0700

    Fix checkout when preparing a ref
    
    The new checkout method was relying on out of date information
    stored in the remote which was not being updated by the fetch
    command.  Instead, just checkout FETCH_HEAD using git directly
    so that the remote does not need to be kept up to date.
    
    Also, reset and clean _before_ checking out, since that's supposed
    to clean up from messy merges, etc.
    
    Change-Id: Ie47b675512edc36e8aeb9b537ca945ad8d07b780

commit 0f5efced1d75df3940a7ea4ffce185bfa99f76ef
Merge: 6de6ed0 3cb1070
Author: Jenkins <jenkins@review.openstack.org>
Date:   Tue Aug 27 18:19:45 2013 +0000

    Merge "Report pipeline queue length on startup to statsd"

commit 6de6ed0a3ae6af13d7f7d3d1aa5d4d3a140ff565
Merge: 5a9918a 7f4a190
Author: Jenkins <jenkins@review.openstack.org>
Date:   Tue Aug 27 18:19:30 2013 +0000

    Merge "Add a graphite key for all jobs in a pipeline"

commit 5a9918ae4b70deadf173adc993c0be1808c4508e
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Aug 27 10:06:27 2013 -0700

    Use an OrderedDict for pipelines
    
    So that status displays will show pipelines in the order defined
    in the config file.
    
    Change-Id: I2913c94dd44f4443f5bdca54241fd1af027258a8

commit b98fcdb499419d9fd5e555d0b9590290bc5aee8b
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Aug 26 18:23:09 2013 -0700

    Set merge result correctly on exceptions
    
    If an exception was received during a report, _reportItem would
    erroneously indicate that it had been reported without error.
    If a merge was expected, isMerged would be called which may then
    raise a further exception which would stop queue processing.
    
    Instead, set the default return value for _reportItem to True
    because trigger.report returns a true value on error.  This will
    cause the change to be marked as reported (with a value of ERROR),
    the merge check skipped, and the change will be quickly removed
    from the pipeline.
    
    Change-Id: I08b7cee486111200ac9857644d478727c635908d

commit 9423556423270572f8d1035dabee93e57973de61
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Aug 26 18:12:31 2013 -0700

    Report item stats when removing a change
    
    If a change is removed outside of the main process method (eg
    it is superceded), stats were not reported.  Report them in that
    case.
    
    Change-Id: I9e753599dc3ecdf0d4bffc04f4515c04d882c8be

commit 6767905a47e0c1d438410c025628b47cc1bf91b5
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Aug 26 17:05:00 2013 -0700

    Fix graceful exit
    
    When the gearman server was added, the exit handler was not updated
    correctly.  It should tell the scheduler to exit, wait for the
    scheduler to empty its pipelines, and then kill the gearman server
    and exit.
    
    Change-Id: Ie0532c2ea058ed56217e41641f8eec45080a9470

commit 96ee718c4b162d77ed58865a684b9bedd46c9cab
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Aug 26 14:56:12 2013 -0700

    Don't reset the local repo
    
    Instead of "resetting" the local repo (git remote update,
    git checkout master, git reset --hard, git clean -xfdq) before
    merging each change, just fetch the remote ref for the branch
    and check that out (as a detached head).  Or, if we are merging
    a change that depends on another change in the queue, just check
    that change out.
    
    Change-Id: I0a9b839a0c75c04eca7393d7bb58cf89448b6494

commit bfd5853957d53e231c0ccdf74004f726709aa07e
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Aug 26 13:23:11 2013 -0700

    Fetch specific refs on ref-updated events
    
    The current behavior is that for every event, run
    'git remote origin update', which is quite a bit of overhead and
    doesn't match what the comments say should be happening.  The goal
    is to ensure that when new tags arrive, we have them locally in
    our repo.  It's also not a bad idea for us to keep up with remote
    branch movements as well.
    
    This updates the event pre-processor to fetch the ref for each
    ref-updated event as they are processed.  This is much faster than
    the git remote update that was happening before.  It also adds
    a git remote update to the repo initialization step so that when
    Zuul starts, it will pick up any remote changes since it last ran.
    
    Change-Id: I671bb43eddf41c7403de53bb4a223762101adc3c

commit 19deff2a491956d00b792324da06001d054ad852
Author: James E. Blair <jeblair@openstack.org>
Date:   Sun Aug 25 13:17:35 2013 -0700

    Use the 'resolve' merge strategy by default
    
    We can more closely approximate Gerrit's behavior by using the
    'resolve' git merge strategy.  Make that the default, and leave
    the previous behavior ('git merge') as an option.  Also, finish
    and correct the partially implemented plumbing for other merge
    strategies (including cherry-pick).
    
    (Note the previous unfinished implementation attempted to mimic
    Gerrit's option names; the new implementation does not, but rather
    documents the alignment.  It's not a perfect translation anyway,
    and this gives us more room to support other strategies not
    currently supported by Gerrit).
    
    Change-Id: Ie1ce4fde5980adf99bba69a5aa1d4e81026db676

commit 1621f352e3e7987792bad15dd1796dc081fb0636
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Aug 27 09:00:33 2013 -0700

    Require gear 0.4.0
    
    It has a bugfix that could avoid starving gear workers.
    
    Change-Id: I1be3f23bff2f75c2f06c1b5b4034978c6af161d5

commit 3cb10708834eafd211dcfca9c6cdfaf39c8c9bc1
Author: James E. Blair <jeblair@openstack.org>
Date:   Sat Aug 24 08:56:03 2013 -0700

    Report pipeline queue length on startup to statsd
    
    So that graphs that use a pipeline gauge have some data to work
    with, even if it's 0.
    
    Change-Id: Ida46153d8ee27ab212949dc3d417bb4331512de6

commit 7f4a19088f7007782582666924d13ee67cac7480
Author: James E. Blair <jeblair@openstack.org>
Date:   Sat Aug 24 08:20:02 2013 -0700

    Add a graphite key for all jobs in a pipeline
    
    We have a graph on our status page showing all of the jobs Zuul
    launched, but it's built from more than 1000 graphite keys which
    is a little inefficient.  Add a key for convenience that rolls
    up all of the job completions in a pipeline, so that such a graph
    can be built with only about 10 keys.
    
    Change-Id: Ie6dbcca68c8a118653effe90952c7921a9de9ad1

commit 4a28a8838117a4e430e319d2d8cc777905c4708b
Author: James E. Blair <jeblair@openstack.org>
Date:   Fri Aug 23 15:17:33 2013 -0700

    Re-launch a job if the worker fails to run it
    
    If a job is complete with no build result, it has failed to
    run to completion.  In this case, discard the previous build
    and launch a replacement (in the next run of the queue processor).
    
    Change-Id: Ib8fc245a5becb1e7deb13f1ea0721fdb6ceb9f6f

commit 0aac487cf7416257bdb4b617ce962f7693c42342
Author: James E. Blair <jeblair@openstack.org>
Date:   Fri Aug 23 14:02:38 2013 -0700

    Ignore builds once they have been canceled
    
    This change causes the gearman launcher to completely ignore builds
    after the stop job request has been sent.  This should prevent
    them from updating build status with confusing results.  It will
    also help us avoid restarting canceled builds in a subsequent
    change.
    
    Change-Id: Id31bcbfb6f24a7ec9f5f0a776d7d2c30f36685b4

commit fadc6e16bfeab1ff5d81ab2a97e7ed72992765da
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Aug 21 18:23:15 2013 -0700

    Add some log lines
    
    These would have been helpful in narrowing down a recent problem.
    
    Change-Id: Ief9a7bb387edce6f35e49a18ebb32f6366301d2a

commit 085d99075bc6aa3ed58b6198ed58c7a0a647d95c
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Aug 21 18:19:51 2013 -0700

    Make updateChange actually update the change
    
    Several assignments in updateChange would actually just keep
    appending data causing immensely large data structures (which
    are later traversed putting Zuul into a significant busy loop).
    
    Make sure that data are replaced instead of augmented.
    
    Change-Id: I8c6528adbbe24d30f8d5bb8b55bb731fefd9941a

commit fba9b247bf2c0e03d100a6ad343a6538953b2afc
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Tue Aug 20 10:11:17 2013 -0700

    SIGUSR2 logs stack traces for active threads.
    
    * doc/source/zuul.rst: Document SIGUSR2 behavior.
    
    * zuul/cmd/server.py: When SIGUSR2 is received log stack traces for all
    active running threads. This is useful for debugging deadlock
    situations. Note that this makes use of sys._current_frames which may
    not play nice with all implementations of Python.
    
    *tests/test_stack_dump.py: Test the stack dump signal handler with a new
    test file, class, and test method.
    
    * requirements.txt: Add argparse to requirements list so that py26 tests
    can pass when zuul.cmd.server is imported.
    
    Change-Id: I8ad8155b16f324e832c191f0a619ff89ef804a87

commit 754e31ed18ac28045fd272984c0128b5b08b2974
Author: James E. Blair <jeblair@openstack.org>
Date:   Sun Aug 18 13:15:15 2013 -0700

    Fix unbound variable re job_name_in_report
    
    If job_name_in_report is false, the 'name' variable may be
    undefined.  This makes sure it is always defined.
    
    Change-Id: Ie544ccdf1661e08e2aa4c8055999f16e20d7584b

commit 8fef52b0a886a8007fbb4887c929efe8077921a0
Author: James E. Blair <jeblair@openstack.org>
Date:   Sat Aug 17 17:32:50 2013 -0700

    Add option to include job name in report
    
    This can be used to create more sophisticated commentLinks in
    Gerrit.
    
    Change-Id: I74702fd7d37358e6f4caa7e7ac0a3ede73184077

commit b11fa9763299b3d1eb3238c392163cccf99e71a0
Merge: 6241de0 e712d9f
Author: Jenkins <jenkins@review.openstack.org>
Date:   Sat Aug 17 03:59:15 2013 +0000

    Merge "Test that custom functions are live-reloaded"

commit e712d9fee2a04cdf9945fcbf6692911a36a77272
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Jul 31 11:40:11 2013 -0700

    Test that custom functions are live-reloaded
    
    Change-Id: Ie9cc0869729f3304b281e1700912f43d7e3ac70d

commit 6241de0eb645e896d6a3b98894c41ce2381b396a
Author: Joshua Hesketh <josh@nitrotech.org>
Date:   Fri Aug 9 13:24:07 2013 +1000

    Allow url to be updated
    
    Allow a gearman worker to send extra WorkData packets to update the
    url as it makes progress.
    
    Change-Id: I29ce3fbc83bedf2d49657560c9a0c88d8ab38b35

commit 63bb0ef073ad8e7702f5af1e06d66d7d8ef051da
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Jul 29 17:14:51 2013 -0700

    Add a timer trigger
    
    Add a trigger that enqueues items based on a timer.
    
    Change-Id: I024be871914c8272c237b1f818589be08cda04da

commit 6c358e72ead5dc3b7f0fa271c60f219a701efb3c
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Jul 29 17:06:47 2013 -0700

    Support multiple triggers
    
    Add the ability for Zuul to accept inputs from multiple trigger
    sources simultaneously.
    
    Pipelines are associated with exactly one trigger, which must now
    be named in the configuration file.
    
    Co-Authored-By: Monty Taylor <mordred@inaugust.com>
    
    Change-Id: Ief2b31a7b8d85d30817f2747c1e2635f71ea24b9

commit 3cd25034b6a944eca0e430ffa50a07d5ea0dca67
Merge: 4604435 e6abe81
Author: Jenkins <jenkins@review.openstack.org>
Date:   Wed Jul 31 21:23:45 2013 +0000

    Merge "Fix parameter name typo in NEWS.rst."

commit 46044358302ce3e9b601433c1facfa96c414460d
Merge: 0215327 d047097
Author: Jenkins <jenkins@review.openstack.org>
Date:   Wed Jul 31 21:17:16 2013 +0000

    Merge "Pass the Job to the parameter function"

commit e6abe810c14976abe8ad877bccc0a687755c51a4
Author: Jeremy Stanley <fungi@yuggoth.org>
Date:   Wed Jul 31 21:14:16 2013 +0000

    Fix parameter name typo in NEWS.rst.
    
    Change-Id: I7f1f8eaaa6a37b23ff7799f9a695831672b682a3

commit 0215327fb00be095faef2e5f6abbd7edcf614562
Merge: c21db6f dda6c91
Author: Jenkins <jenkins@review.openstack.org>
Date:   Wed Jul 31 21:14:59 2013 +0000

    Merge "Use the public gear API to iterate over jobs in the queue"

commit c21db6f3b7386b5408996ce4d687ceb123dd1d1a
Merge: d320d7e 66eeebf
Author: Jenkins <jenkins@review.openstack.org>
Date:   Wed Jul 31 21:12:22 2013 +0000

    Merge "Stats: break out job runtimes and counts by result"

commit d320d7e45091e1a4192e6f5c60adc3639f857c73
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Jul 30 16:36:20 2013 -0700

    Make a test more robust
    
    The multi-branch test occasionally picked the wrong change's commit
    to inspect, resulting in a flakey test.  Try to pick the right one
    instead.
    
    Change-Id: I1cefa1b96cac9e5a8fdfe0f4de4704202dd6d072

commit a0e05014ed208de2af9999e7c7b3f333b6ec013f
Merge: 586903b 04948c7
Author: Jenkins <jenkins@review.openstack.org>
Date:   Tue Jul 30 15:52:12 2013 +0000

    Merge "Add option to validate job names"

commit 66eeebfa4da448fec2950bb40ff6facc32d28cbb
Author: James E. Blair <jeblair@openstack.org>
Date:   Sat Jul 27 17:44:32 2013 -0700

    Stats: break out job runtimes and counts by result
    
    For every job completed, record the result of that job separately
    to statsd.  For successful and failed jobs, record the runtimes
    of the jobs separately by result (others are not interesting).
    
    Also, substitute '_' for '.' in job names in statsd keys.
    
    This is backwards-incompatible with current statsd keys.
    
    Change-Id: I7b6152bcc7ea5ce6e37bf90ed41aee89baa29309

commit 586903bfcd45f079887f375caaa02c8d72abc09e
Merge: b56af88 ec49b4c
Author: Jenkins <jenkins@review.openstack.org>
Date:   Mon Jul 29 23:29:59 2013 +0000

    Merge "Make E123 pep8 clean"

commit d0470977927fd7fc93ff2ec917c9d2aa0f964393
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Jul 29 10:05:43 2013 -0700

    Pass the Job to the parameter function
    
    Pass a reference to the current job about to be run to the custom
    parameter function.
    
    Remove the un-needed ZUUL_SHORT_* parameters.
    
    Change-Id: I39538b3815ce89fae0b59c21c5cff588509cfe4e

commit dda6c91ef8a7b47e49429bb05197c26d58cd2896
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Jul 29 14:12:12 2013 -0700

    Use the public gear API to iterate over jobs in the queue
    
    Also, add some more info about testing.
    
    Change-Id: I2029a03d2ab017d826b01dc0b802c6e0e0328204

commit b56af884989c462be2c10537ee0f409fecd37b27
Merge: 212f612 287c06d
Author: Jenkins <jenkins@review.openstack.org>
Date:   Sun Jul 28 15:12:53 2013 +0000

    Merge "Delay initialization of local repos"

commit 04948c78e00fd341901ef130335582ff41fc689c
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Jul 25 23:03:17 2013 -0700

    Add option to validate job names
    
    Add an option to the syntax validator to test that job
    referenced in the layout are defined in a file.  Creating the
    file with the list of jobs is an exercise for user.
    
    Change-Id: Iceb74440cb004e9ebe6fc08a4eedf7715de2d485

commit 287c06dca6982b7c5b4e67c7d90e4da20adf02e3
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Jul 24 10:39:30 2013 -0700

    Delay initialization of local repos
    
    Now that live reconfiguration is an option, we sometimes load the
    Zuul config before the remote repo is created.  To handle that,
    gracefully handle that case when the Repo object is created by the
    Merger.  Keep track of whether the initial clone has happened, and
    check for that before every local Repo operation.  If we get an
    event that involves a repo before it exists (unlikely!) that will
    still error and raise an exception (that should be caught higher
    up in the stack).
    
    Add a test for this case.
    
    In the test suite, when adding a fake change to the upstream repo,
    always reset it so that HEAD is master so that new repos clone
    from a consistent state.
    
    Also remove an errant assertEmptyQueues because it's handled by
    assertFinalState.
    
    Change-Id: Ic6eec83e3faa2a15be4b23d4cfcfbddcac82983c

commit 212f6127c31e5f90955418eb414e56fcfcea367c
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Jul 25 15:03:01 2013 -0700

    Report an unknown time if a change ahead has failed
    
    We don't actually know how long it will take for a change to report
    if a change ahead of it has failed (because this may need to be
    restarted).  We could do a better job of estimating a minimum if
    we had historic run-times of jobs internally, but we don't right
    now, so at least let's say it's unknown for now.
    
    Change-Id: I7a3e4d07a02893122564817f8119cb54632464f4

commit ec49b4cdf128161831b105649117b895683db3a9
Author: Paul Belanger <paul.belanger@polybeacon.com>
Date:   Sat Jul 20 20:32:20 2013 -0400

    Make E123 pep8 clean
    
    Change-Id: I2e8c9c1dab31c939d73a29b0c76d9454458515ef
    Signed-off-by: Paul Belanger <paul.belanger@polybeacon.com>

commit feeeaef9500c940697cdb1df140b64ea10a3bb5b
Author: Paul Belanger <paul.belanger@polybeacon.com>
Date:   Fri Jul 19 21:26:03 2013 -0400

    Enable warnerrors for pbr to catch Sphinx warnings
    
    With this change, we now should properly gate on Sphinx errors /
    warnings.
    
    Change-Id: I7e789ad83e81286575c74e1e5256da20a717e982
    Signed-off-by: Paul Belanger <paul.belanger@polybeacon.com>

commit c28d1b0d19e526971ed4842abd4db773032f7681
Author: James E. Blair <jeblair@openstack.org>
Date:   Fri Jul 19 11:37:06 2013 -0700

    Apply metajobs in order
    
    Metajobs were being applied in dict key order, which meant that
    if more that one metajob matched a job, the actual attributes
    applied were non-deterministic.  This was compounded by the fact
    that attributes of each metajob were being strictly copied to
    the real job, so the attributes of the second metajob would always
    completely replace the first.
    
    Instead, keep metajobs in config file order, and only copy attributes
    that are non-null.  Boolean attributes are still last-wins, and
    so must be set explicitly by each matching metajob.
    
    Change-Id: Ie255658719d5ded1663c3513dae1fc297ce357c4

commit bd6bc1da9d929bab2e20a6f890fcaca4dcb9881e
Merge: 5eb21c2 bea9ef1
Author: Jenkins <jenkins@review.openstack.org>
Date:   Fri Jul 19 00:12:11 2013 +0000

    Merge "Add elapsed and remaining time to job status JSON"

commit 5eb21c2c39e57d61be37d1de4410252891f40707
Merge: 6736beb 8de58bd
Author: Jenkins <jenkins@review.openstack.org>
Date:   Fri Jul 19 00:09:57 2013 +0000

    Merge "Improve precedence test"

commit 8de58bde06d87f5d90c20a53da126da6863472b4
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Jul 18 16:23:33 2013 -0700

    Improve precedence test
    
    The jobs were starting in the correct order, but because they all
    ran in parallel, they had a race to finish, and the build history
    is built from finished jobs, which is what the test checked.
    
    Instead, only allow one job at a time to run.
    
    Change-Id: Ie09369d7c27b286c2339c9cc40658f8d5f629488

commit bea9ef12a5f44a411895e1bf7fa19a7aeb09296c
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Jul 15 11:52:23 2013 -0700

    Add elapsed and remaining time to job status JSON
    
    And overall remaining time for an item in a queue.
    
    Change-Id: I1aa787e3fb62d9051861f57f98944fcd852fa6fa

commit 6736bebf616377ccb75cb8894bd0eb5fbf44edcc
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Jul 11 15:18:15 2013 -0700

    Dequeue changes immediately on merge conflicts
    
    Change-Id: I4a2b9c5bc3a5659e874fe2bccbbd61da01713b9a

commit c225b4dcf4fa259eb0ce651438cb7e5f8fc4a525
Merge: d6d2a64 76235f4
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Jul 18 14:29:19 2013 -0700

    Merge branch 'feature/gearman'
    
    Change-Id: I25b4b90b160c258094aa1f3f55a9e00ad0d0db79

commit 76235f49a4c7f6c218db7cd38723ee73ff8178c1
Merge: 14bbbb9 f750aa0
Author: Jenkins <jenkins@review.openstack.org>
Date:   Thu Jul 18 21:26:10 2013 +0000

    Merge "Add more debug logging to a test" into feature/gearman

commit 14bbbb95a4f15da12813ed6c8a43e7ebc5b2c9ad
Merge: 95b541c 77cc7b8
Author: Jenkins <jenkins@review.openstack.org>
Date:   Thu Jul 18 21:25:44 2013 +0000

    Merge "Include internal gearman server in docs" into feature/gearman

commit 95b541c293aa9c963cb994cbf43a538b6aa06323
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Thu Jul 18 14:19:20 2013 -0700

    Include discover in test requirements.
    
    * test-requirements.txt: Discover is needed for python26 tests.
    
    Change-Id: If467058a326b285f394b63acf3432a98213f24fa

commit f750aa03bc78a26c5e95707e54e687b931ccb36c
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Jul 15 14:11:24 2013 -0700

    Add more debug logging to a test
    
    test_build_configuration_multi_branch hit a nondeterministic
    failure in Jenkins and it's not clear why.
    
    Change-Id: I2d5d5e2ed6174cf8f3a67f4dbb42ecbf4b038856

commit 77cc7b847e7a2326d028da543920ca3d8d789836
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Jul 15 13:22:37 2013 -0700

    Include internal gearman server in docs
    
    Change-Id: I668206d7a07f665309ca392a8e5f1702c278c47e

commit 7a192e4dd82c0d25f772007fb5a35f6866fa96ff
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Jul 11 14:10:36 2013 -0700

    Use integer comparison for patchsets
    
    When checking for a new version of a change, compare patchsets
    as integers.
    
    Change-Id: Ic5ceae9e89cd28a9f391896bcdbf68313d70adc4
    Reviewed-on: https://review.openstack.org/36734
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 80cb1477ba24e73b532e7b6941423de7adcf491c
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Jul 11 14:05:12 2013 -0700

    Set build update log level to debug
    
    We get this a lot.  It's not helpful.
    
    Change-Id: Icf0191ded019c705a42446269d647cb52843ef58
    Reviewed-on: https://review.openstack.org/36733
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 0e933c5a4c831b2af17f411826313b68c97d33f3
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Jul 11 10:18:52 2013 -0700

    Fix trigger cache maintenance
    
    Each pipeline was maintaining the trigger cache only based on
    its own current usage, which means that pipelines were clearing
    the cache of changes currently being used by other pipelines.
    
    This considers all changes in use in all pipelines when maintaining
    the cache.
    
    Change-Id: I3ab14c69acd80ecc613b63628c837511594744d0
    Reviewed-on: https://review.openstack.org/36699
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit 64ed6f27009be11947310515d9514f4446c88614
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Jul 10 14:07:23 2013 -0700

    Add pipeline precedence
    
    Allow, eg, jobs in a gate pipeline to take precedence over
    a check pipeline.
    
    Change-Id: Idf91527704cc75b00a336291f91b908286f8e630
    Reviewed-on: https://review.openstack.org/36552
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit d78576a8d66668632851f49c950fd2c842c9ceae
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Jul 9 10:39:17 2013 -0700

    Custom parameter function takes QueueItem
    
    With the change to use QueueItem, the custom parameter function
    has lost some context.  Pass a QueueItem instead of a Change in
    order to get it back.
    
    Add the parameters to the build object so that they can be used
    by URL pattern functions.
    
    Add a NEWS.rst file that lists backwards incompatible changes (of
    which this is one).
    
    Change-Id: I526850fb55e25b4b84202820dc3c313d37cbe535
    Reviewed-on: https://review.openstack.org/36304
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 78e31b30ba411a3cfd5cd02864f483a555a25fd2
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Jul 9 09:11:34 2013 -0700

    Make E128 pep8 clean
    
    Change-Id: I9ac6e301d361b7bac8561a1f468c40be23e1ddcc
    Reviewed-on: https://review.openstack.org/36281
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 98f0f3ed638828d209e3bb15279ef0c9957d56f8
Author: Monty Taylor <mordred@inaugust.com>
Date:   Sat Jul 6 16:02:31 2013 -0400

    Replace assert statements with method calls
    
    The unittest/testtools library defines assert methods which behave
    similarly to using assert calls. However, they print more descriptive
    error messages when they are triggered, helpfully printing both what
    they received and what they expected.
    
    Also, hurrah for emacs keyboard macros.
    
    Change-Id: Ifbc54d3ead41eafed66be2a5b021fd4407a80a37
    Reviewed-on: https://review.openstack.org/35967
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 2f143f3eeaff68b2d871d4cc8e6c1e212bdf246b
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Jun 25 12:58:39 2013 -0400

    Add manual job triggering script.
    
    Change-Id: Ic396c845e5f61a98d3b0e8c3fc08c6f9dbfffc6a
    Reviewed-on: https://review.openstack.org/34437
    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

commit 5a5a95c51b0d4b35a1a4f695327d46bb340fe63b
Author: Monty Taylor <mordred@inaugust.com>
Date:   Wed Jul 3 13:39:14 2013 -0700

    Use fixtures.TempDir directly.
    
    Change-Id: I02e20156af20cfc019262f39e343e3ec1ce06a85
    Reviewed-on: https://review.openstack.org/35541
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 9ab86621c8e0bf8b7ee38ec2b4266e545e110464
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Jul 2 11:23:46 2013 -0700

    Add TESTING file
    
    Change-Id: Ifa3ff45189b794dfb2c29e127599dbe547b57f71
    Reviewed-on: https://review.openstack.org/35354
    Reviewed-by: Anita Kuno <anteaya@anteaya.info>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit cdccd976f722f3d443835b8534226de2d539240e
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Jul 1 12:10:22 2013 -0700

    Perform live reconfiguration
    
    Change-Id: I69563ee47dd6f3777a52b67999ff1a03247f1e1e
    Reviewed-on: https://review.openstack.org/35324
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit eff881637f2aa4689cfec534ba9f116bdcfc46e7
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Jul 1 12:44:14 2013 -0400

    Add layout config object to model
    
    Store the results of the configuration (pipelines, jobs, and all)
    in a new Layout object.  Return such an object from the parseConfig
    method in the scheduler.  This is a first step to reloading the
    configuration on the fly -- it supports holding multiple
    configurations in memory at once.
    
    Change-Id: Ide56cddecbdbecdc4ed77b917d0b9bb24b1753d5
    Reviewed-on: https://review.openstack.org/35323
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit fee8d6588aede669bef9df78c28bc2761e234bc8
Author: James E. Blair <jeblair@openstack.org>
Date:   Fri Jun 7 08:57:52 2013 -0700

    Idempotent scheduler and QueueItems
    
    Make the scheduler idempotent.  The idea is that after any event,
    the scheduler should be able to run and examine the state of every
    item in the queue and act accordingly.  This is a change from the
    current state where most events are dealt with in context.  This
    should ease maintenance as it should facilitate reasoning about
    the different actions Zuul might take -- centralizing major
    decisions into one function.
    
    Also add a new class QueueItem, which represents a Change(ish)
    in a queue.  Currently, Change objects themselves are placed
    in the queue, which is confusing information about a change (for
    instance: it's number and patchset) as well as information about
    the processing of that change in the queue (e.g., the build
    history, current build set, merge status, etc.).
    
    Change objects are now cached, which should reduce the number of
    queries to Gerrit (except the current algorithm to update them is
    very naive and queries Gerrit again on any event relating to a
    change).  Changes are expired from the cache when they are not
    present or related to any change currently in a pipeline.
    
    There are now two things that need to be asserted at the end of
    each test, so use addCleanup in setUp to call a method that
    performs those assertions after the test method completes.  Also,
    move the existing shutdown method to use addCleanup as well,
    because testr experts say that's a best practice.
    
    Change-Id: Id2bf4c484c9e681456c69d99787e7a5b3a247690
    Reviewed-on: https://review.openstack.org/34653
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 1843a551a90844755f926e8c1487d76983b80b90
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Jul 3 14:19:52 2013 -0700

    Add a JSON status test
    
    And have the webapp listen on a configurable port to facilitate
    parallel testing.
    
    Start the webapp for every test to be consistent with production use.
    
    Change-Id: I2f5c0d1669fac6db1604154ae9cd9d91fa073ba1
    Reviewed-on: https://review.openstack.org/35553
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 8a6f0c20f3f9a7cf5378a553799c6f097aae383e
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Jul 1 12:31:34 2013 -0400

    Use daemon threads
    
    Otherwise they can prevent exiting on timeout which confuses testr.
    
    Change-Id: I239ab46f44fd09fe6b69fb70fdf4043e3c1daa67
    Reviewed-on: https://review.openstack.org/35321
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit e2819012fac3191f8d5ed72d2f9c8501b10757a2
Author: James E. Blair <jeblair@openstack.org>
Date:   Fri Jun 28 17:17:26 2013 -0400

    Fix testr configuration
    
    * Correct passing env vars in testr.conf.
    * Use ZUUL_TEST_ROOT correctly when building the tempdir for
      the local git dir for tests.
    * Remove some tabs from docs.
    * Update test gearman server method override to match current gear.
    * Make test_failed_changes more deterministic: this test
      occasionally failed due to races in the test.
    * Update the fake logger configuration to match previous usage.
    
    Change-Id: I1850b930e37d9a0fd2e9c8098052cf7df60576af
    Reviewed-on: https://review.openstack.org/35404
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit e6a6c403db7e9ef9bd66092665ecbeddac61e3ee
Author: Monty Taylor <mordred@inaugust.com>
Date:   Tue Jul 2 09:25:55 2013 -0700

    Add ability to skip log capture.
    
    Change-Id: I8f3ac5c469e9d530d1ac7776c7488d0c42cdf1ad
    Reviewed-on: https://review.openstack.org/35329
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit bc7588343f62e768aefd3f7b07bae516319d1296
Author: Monty Taylor <mordred@inaugust.com>
Date:   Mon Jun 17 17:22:42 2013 -0400

    Migrate to testrepository.
    
    Needed to move some directory creation around to be contained within the
    testcase, but with parallel testing, we shave 48 seconds off the run
    time and go from around 60s to around 11. We're also now compatible with
    future subunit-based fast-fail semantics when we grow them.
    
    Change-Id: I6c7148c29d1edb5d9469a8c2afe4b31b2b340009
    Reviewed-on: https://review.openstack.org/33352
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 4998315d0307405fc38824bc8d683a1595ca73d3
Author: Monty Taylor <mordred@inaugust.com>
Date:   Sun Jun 2 08:42:01 2013 -0400

    Rename requirements files to standard names.
    
    Change-Id: I0385ac9f8336a8c2e45b0fa6ed062b6b23a182aa
    Reviewed-on: https://review.openstack.org/33351
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit 5cc8a47d403fe40417672e930de0808a21cd9189
Author: Monty Taylor <mordred@inaugust.com>
Date:   Sun Jun 2 08:40:12 2013 -0400

    Migrate to pbr.
    
    Change-Id: I734f0f8237fb603ee41a39f06e63c007e79825a9
    Reviewed-on: https://review.openstack.org/33350
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Reviewed-by: Doug Hellmann <doug.hellmann@dreamhost.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 6bef8ef87a44d1252864461ecbabc81aa6e76575
Author: Monty Taylor <mordred@inaugust.com>
Date:   Sun Jun 2 08:17:12 2013 -0400

    Use flake8/hacking instead of pep8/pyflakes.
    
    Change-Id: Id0e447a7e66562d6ad0298619e36f752ae31adb0
    Reviewed-on: https://review.openstack.org/33349
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Reviewed-by: Doug Hellmann <doug.hellmann@dreamhost.com>
    Approved: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Tested-by: Jenkins

commit f9eeb9451b17a59beb2e8574dc15b9b88fb34b2b
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Jun 18 08:36:07 2013 -0700

    Fix signal handler.
    
    Change-Id: Idf4c576d6f6576519f1deff85ccc3f3901491d0e
    Reviewed-on: https://review.openstack.org/33463
    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

commit 80ac440a0612a0c65d7d7143432ab1048fd1e69d
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Jun 13 16:06:47 2013 -0700

    Require gear 0.3.1.
    
    And less than 0.4.0 for safety.
    
    Change-Id: I539a2cc7816c15491db55975ac07ee7a148535dc
    Reviewed-on: https://review.openstack.org/32973
    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

commit fdddc8f6535bbd3530c7e72326988d968309588a
Merge: 869b12a d6d2a64
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Jun 13 16:03:01 2013 -0700

    Merge branch 'master' into feature/gearman
    
    Change-Id: I0b6d513aaa2536f01bcd4475d843bb93de69c7e0

commit 869b12acb69d90bce9f7e72e0e4052fc2656f003
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Jun 12 16:37:31 2013 -0700

    Handle failed jobs with no results.
    
    If we get a WORK_FAIL or WORK_EXCEPTION with no preceding WORK_DATA
    packet with a result, record the result as LOST.
    
    This can happen if Jenkins encounters an exception while running
    the job.
    
    Change-Id: I159248e228af4e67ba6c88282346f366592e0d37
    Reviewed-on: https://review.openstack.org/32814
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit d6d2a64c9e9f74b68562cd12544a23f202a77a67
Author: Mathieu Gagné <mgagne@iweb.com>
Date:   Tue Jun 11 20:59:58 2013 -0400

    Add doc for jobs voting parameter
    
    Change-Id: I14e489a98bbbf245ced2726d0bedc32accc7ca42
    Reviewed-on: https://review.openstack.org/32665
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit e80ad546bde6a13f0efa38a6e71c723745c4d272
Author: Dan Smith <danms@us.ibm.com>
Date:   Thu Jun 6 16:33:33 2013 -0700

    Add enqueue_time to JSON output for a change
    
    This adds a javascript timestamp for each change in the JSON output.
    
    Change-Id: I7965c6a7ff6e4e5522da3c51936cfdfb6cf36e91
    Reviewed-on: https://review.openstack.org/32064
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit 701c5b4767aed064b5c0155932ae6b736a094b01
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Jun 6 09:34:59 2013 -0700

    Update to gear 0.2.0.
    
    The internal data structure of the server queue changed.
    
    Change-Id: I280a671577d2247b315174f543dfb2ff8b7d51f4
    Reviewed-on: https://review.openstack.org/31997
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 5ec5b38874a7ecc7f5151b0becbdb1fd8aea3f44
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Jun 4 18:37:38 2013 -0700

    Wait for internal gearman server to settle.
    
    If we're using the internal gearman server, wait for workers
    to register their functions before proceeding with startup.
    
    This is mostly to handle restarts where we may be immediately
    ready to run jobs, but workers may not have registered functions
    yet.  In that case, we would immediately start declaring jobs
    LOST.  So give them a chance to show up first.
    
    The gearman-plugin for jenkins currently tries to reconnect
    every 3 seconds.  We could probably even lower that to 1 or 2.
    
    Change-Id: I173b16ba78cecac91acec26b4f2d55f38610e5a2
    Reviewed-on: https://review.openstack.org/31735
    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

commit 3c483cf13ca6ec59af58615d47ac2c299d0ef72b
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Jun 4 16:30:43 2013 -0700

    Update to new zuul-gearman protocol.
    
    * Use non-Jenkins terminology "manager" rather than "master".
    * Use name+number as the identifier for both stopping builds and
      descriptions.
    * Expect 'url' parameter instead of 'full_url'.
    
    Change-Id: I1fe9851556618fc6d6deb8906e3f2ee41725c3ad
    Reviewed-on: https://review.openstack.org/31726
    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

commit 922a9f6856057c8116a6f2a5e854a98fa4fb4638
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed May 22 14:44:58 2013 -0700

    Add optional internal gearman server.
    
    Change-Id: Id4e6b77f5abba23f46236def28f54509c61fd247
    Reviewed-on: https://review.openstack.org/30170
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: Clark Boylan <clark.boylan@gmail.com>
    Tested-by: Jenkins

commit 0f5cacd3804171839d452bcd23b81716de4655db
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Jun 4 16:33:18 2013 -0700

    Use gear release version 0.1.1.
    
    Change-Id: I14dbe148f0ff57e5d0c50cc712120a2708f158b1
    Reviewed-on: https://review.openstack.org/31727
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Khai Do <zaro0508@gmail.com>
    Approved: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Tested-by: Jenkins

commit 4ca985f8ef51cd9b7bf3a91ee6e445ed8b083895
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu May 30 12:27:43 2013 -0700

    Update to new Gear API.
    
    It dropped some "waitFor..." calls.
    
    Also, update the unit tests to deal with some indeterminism in the
    order jobs are run (showed up while testing this patch).
    
    Change-Id: Id77838cc1bf0823ee0ee3795cb9190f405a1ff21
    Reviewed-on: https://review.openstack.org/31109
    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

commit 1b4d97287a4e7b7b04c88960beebd78d1311e7c3
Merge: d8d9507 42f7482
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue May 21 10:32:04 2013 -0700

    Merge branch 'master' into feature/gearman
    
    Change-Id: I9494196710a96414573b11788ed6007817c9f774

commit 42f74828436343d430911ef0ada7d02e297a4ad3
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue May 14 15:18:03 2013 -0700

    Add a test for changes that trigger multiple pipelines.
    
    Change-Id: I147491d2c08fa1040f41f0c299113e3eb8968252
    Reviewed-on: https://review.openstack.org/29158
    Reviewed-by: Antoine Musso <hashar@free.fr>
    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

commit 7c7ed7abdaa029bf18970aaf116d6335d7b3d0c9
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed May 15 13:13:26 2013 -0700

    Use a relative URL for status.json.
    
    So that app.js can be less specific about where it's running.
    
    Change-Id: I2a84a659b43027b7eb59ba707396517d8ba635d3
    Reviewed-on: https://review.openstack.org/29286
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit d5dcfd7d202ff384232bef0b097367f36728102d
Author: Antoine Musso <hashar@free.fr>
Date:   Wed May 15 22:13:17 2013 +0200

    doc: rename manpage from `zuul` to `zuul-server`
    
    On Debian, all binaries should have an associated manpage. While
    building Zuul package we got the following lintian error:
    
      W: zuul: binary-without-manpage usr/bin/zuul-server
    
    This is easily fixed by making sphinx to name the man page zuul-server.
    
    Change-Id: Ie9fa681654a8e7e8785c1dcfa5ec21ba27ae3049
    Reviewed-on: https://review.openstack.org/29287
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Reviewed-by: Paul Belanger <paul.belanger@polybeacon.com>
    Approved: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Tested-by: Jenkins

commit b67aba1d94ee95399ed09bd287be16fbf558d8dc
Author: Paul Belanger <paul.belanger@polybeacon.com>
Date:   Mon May 13 19:22:14 2013 -0400

    Add the ability to set git user.email and user.name
    
    It is possible the host system does not have git properly configured,
    which results in merge failures because the git client is complain. For
    example:
    
      GitCommandError: 'git merge FETCH_HEAD' returned exit status 128:
      *** Please tell me who you are.
    
      Run
    
        git config --global user.email "you@example.com"
        git config --global user.name "Your Name"
    
      to set your account's default identity.
      Omit --global to set the identity only in this repository.
    
    Now we can pass user.name and user.email settings to git, if configured
    to do so.
    
    Change-Id: I896194d8d1f5334026954b02f3a1a8dd82bed2ac
    Signed-off-by: Paul Belanger <paul.belanger@polybeacon.com>
    Reviewed-on: https://review.openstack.org/29015
    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

commit d8d95070cae44ec7983f535abdef501c60d71fb3
Merge: 1f4c2bb 86a88aa
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed May 15 08:55:19 2013 -0700

    Merge branch 'master' into feature/gearman
    
    Change-Id: I4f13e8ecfad5075ca40b66a989a5abe2c3be22fc

commit 86a88aaa98207e52d16fbaa6a33ce0a62c6daee5
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue May 14 18:35:00 2013 -0700

    Revert "report message even if no action is specified"
    
    This reverts commit 031e23f72318c65346f88e3cad3989eed4f7368b
    and commit 9ba206866499cbe1bbda4fb5e1b4fabbbc82e934.
    
    This breaks the ability to have silent pipelines.
    
    Instead, how about the following:
    
      pipelines:
      - name: postmerge
        manager: IndependentPipelineManager
        ...
        success:
          force-message: true
    
    That should work without any additional code.
    
    Change-Id: I0d15b8fcb678a36c46205693ba9a6756ec6a076f
    Reviewed-on: https://review.openstack.org/29180
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Antoine Musso <hashar@free.fr>
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 1f4c2bb1046d428e67cdb089942f687ae78ad0e1
Author: James E. Blair <jeblair@openstack.org>
Date:   Fri Apr 26 08:40:46 2013 -0700

    Switch the launcher to Gearman.
    
    Remove the Jenkins launcher and add a new Gearman launcher (designed
    to be compatible with Jenkins) in its place.
    
    See the documentation for how to set up the Gearman Plugin for
    Jenkins.
    
    Change-Id: Ie7224396271d7375f4ea42eebb57f883bc291738

commit bdafe495db7b6d8bcf05c405a326f656f07bc4e2
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed May 8 14:21:12 2013 -0700

    Sync from oslo-incubator.
    
    Change-Id: I3a7c6bdfae9f2273cf8059c322d648cda07d830d
    Reviewed-on: https://review.openstack.org/28619
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit 9ba206866499cbe1bbda4fb5e1b4fabbbc82e934
Author: Antoine Musso <hashar@free.fr>
Date:   Tue May 7 10:15:00 2013 +0200

    fix message report when no action is given
    
    031e23f allowed the Gerrit trigger to report a message even when no
    action has been given (for the context of postmerge builds where the
    change cant be altered).  I have noticed the Gerrit lib would stack
    trace because it is missing an action (actually None).  This patch skip
    the action expansion in Gerrit command line whenever there is no action.
    
    Related stacktrace:
    
      INFO zuul.IndependentPipelineManager: Reporting
       change <Change 0x7fb72099d190 62446,3>, action: None
      DEBUG zuul.Gerrit: Report change <Change 0x7fb72099d190 62446,3>,
       action None, message: Build succeeded.
      ERROR zuul.IndependentPipelineManager: Exception while reporting:
      Traceback (most recent call last):
      File "zuul-5b84b5c-py2.7.egg/zuul/scheduler.py",
        line 883, in reportChange
          ret = self.sched.trigger.report(change, report, action)
      File "zuul-5b84b5c-py2.7.egg/zuul/trigger/gerrit.py",
        line 142, in report message, action)
      File "zuul-5b84b5c-py2.7.egg/zuul/lib/gerrit.py",
        line 119, in review
          for k, v in action.items():
      AttributeError: 'NoneType' object has no attribute 'items'
    
    Change-Id: I51b66025eb6e1d074d79cf77ac4085ba3ffde77e
    Reviewed-on: https://review.openstack.org/28395
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 88dd5109c8035869e7f449a625d27fae0d51e844
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed May 8 13:32:10 2013 -0700

    Ignore pep8 E123.
    
    From the pep8 spec:
    
      The closing brace/bracket/parenthesis on multi-line constructs
      may either line up under the last item of the list, as in:
      ...
      or it may be lined up under the first character of the line that
      starts the multi-line construct, as in:
      ...
    
    Bizzarly, the pep8 tool ignores the first option.
    
    Change-Id: Ic0e8f8ad964881276d213ffd50deb75a537c250b
    Reviewed-on: https://review.openstack.org/28609
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 51fd119902f7303b34853054b3ab4fef2b1a3a33
Author: Sean Dague <sdague@linux.vnet.ibm.com>
Date:   Fri May 3 07:09:53 2013 -0400

    make report times a little more user friendly
    
    report times as 1h 22m 08s
    
    only report hours if the job runs longer than an hour
    
    only report minutes if the job runs longer than a minute
    
    don't zero pad whatever the leading time unit is, making it a
    little easier to scan and see differences.
    
    Change-Id: Ibb58be233fdef1bbdf4e90a83731d43eb0be47f1
    Reviewed-on: https://review.openstack.org/28143
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: matthew-wagoner <matthew.wagoner@hp.com>
    Reviewed-by: Antoine Musso <hashar@free.fr>
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 7191ee881dc729c5925177b6e3a5aae6a8db805b
Author: Ori Livneh <ori@wikimedia.org>
Date:   Thu May 2 19:13:53 2013 -0700

    Drop Jenkins.getBestBuildURL() method
    
    The ability to configure success and failure URL patterns (cf.
    'success-pattern' and 'failure-pattern') obsoletes the need to
    guess-by-fetching an appropriate link for the build status, which can be
    extremely expensive. (Wikimedia's Zuul instance makes three HTTP requests per
    invocation -- 'testReport', which 302s to 'testReport/', which 404s, and then
    'consoleFull', which often runs to hundreds of kilobytes.)
    
    Also corrects a small typo in README.rst.
    
    Change-Id: Ib222f544c98253152a5e787ec0cdf28fa2d80cf6
    Reviewed-on: https://review.openstack.org/28128
    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

commit 031e23f72318c65346f88e3cad3989eed4f7368b
Author: Antoine Musso <hashar@free.fr>
Date:   Thu May 2 15:29:12 2013 +0200

    report message even if no action is specified
    
    Whenever a pipeline does not provide any action, the job message would
    not be reported which is a bit annoying.  This patch makes it so we skip
    reporting when there is no action and no message.
    
    My use case is:
    
    A `postmerge` pipeline that simply react to the `change-merged` events,
    since the change is closed, there is no point in voting on it.  Jobs
    then uses the `success-message` and `failure-message` to finely tune
    what is reported back to the user.
    
    Configuration exemple
    
      pipelines:
       - name: postmerge
         manager: IndependentPipelineManager
         trigger:
          - event: change-merged
    
      projects:
       - name: operations/config
         postmerge:
          - operations-config-deploy
    
      jobs:
       - name: operations-config-deploy
         branch: ^production$
         success-message: 'Your configuration has been deployed by Jenkins.'
         failure-message: 'Configuration NOT APPLIED. You broke wikipedia.'
    
    Before this patch, the debug would be:
    
    ------------8<---------------8<---------------8<-----------------------
    INFO zuul.IndependentPipelineManager: Reporting
    change <Change 0x7f67a0d61f50 61980,1>, action: None
    
    DEBUG zuul.Gerrit: Report change <Change
    0x7f67a0d61f50 61980,1>, action None, message: Build succeeded.
    
    - https://jenkins-url-goes-there.example.com/
      : Your configuration has been deployed by Jenkins.
    
    DEBUG zuul.Gerrit: No action specified; not reporting
    
    DEBUG zuul.IndependentPipelineManager: Removing reported
    ------------8<---------------8<---------------8<-----------------------
    
    Change-Id: I9ab4d47a8cfc1ae66870e8ac55e8f78dfc29da3d
    Reviewed-on: https://review.openstack.org/28045
    Reviewed-by: Jesse Keating <jesse.keating@rackspace.com>
    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

commit d75cc18f6b971e653ed3bf5c900fc273c213c6e4
Author: Ori Livneh <ori@wikimedia.org>
Date:   Thu May 2 18:44:46 2013 -0700

    In FakeStatsd, use select() rather than poll()
    
    The poll() system call is not available on all systems (like OS X, for
    example), causing the test suite to fail. This change replaces poll()
    with select(), which is more portable. With this change the test suite passes
    under OS X.
    
    Change-Id: I3ad716b127c8781d8dbf870b0f0c0e1162f264d1
    Reviewed-on: https://review.openstack.org/28126
    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

commit 51516cd2f34d40cc608b19c4433a51d11d87d358
Author: Timo Tijhof <krinklemail@gmail.com>
Date:   Tue Apr 9 01:32:29 2013 +0200

    Zuul status page: Redesign and fix bugs
    
    status.html:
    - Added eventqueue-length status (was already present in production
      but not committed here yet).
    - HTML5 markup.
    - Remove unused jquery-visibility.min.js and jquery-graphite.js.
    
    status.js:
    - Clean up (various js best practices and consistent coding style)
    - Use empty() instead of html('').
    - Use text() for text instead of html().
      html() will trigger the parser where text will simply create
      a text node with the string literal, much faster, safer and
      semantically correct.
    - Fix implied global variable leak 'result'.
    - Fix reference error that crashes/freezes the page
      Property data.trigger_event_queue and data.trigger_event_queue
      can be undefined, in which case data.trigger_event_queue.length
      causes an uncaught TypeError to be thrown.
    - Use a closure instead of polluting global scope.
    - Rewrite object oriented.
    - Added 'demo' feature for easy local testing.
    
    Downstream commits at
    https://gerrit.wikimedia.org/r/#/q/project:integration/docroot+topic:zuul-js+branch:master+owner:Krinkle+is:merged,n,z
    
    Change-Id: Iddd4e2787f2e2eb27bf428f733fbb8b4a9d162d5
    Reviewed-on: https://review.openstack.org/26416
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 80edd5a8facdb8d333e11dbdf4be6a60f587b13c
Author: Antoine Musso <hashar@free.fr>
Date:   Wed Feb 13 15:37:53 2013 +0100

    project templating system
    
    On setup where Zuul ends up triggering hundreds of projects, you end up
    having projects using roughly the same pipeline/jobs.  Whenever one want
    to add a job in all the similiar project, he has to edit each project
    one by one.
    
    To save some precious time, this patch introduces the concept of project
    templates.  It lets you define a set of pipeline and attached jobs
    though the job names can be passed parameters defined on a per project
    basis.  Thus, updating similiar projects is all about editing a single
    template.
    
    A basic example is provided in the documentation.
    
    The voluptuous schema has been updated. It does check whether all
    parameters are properly passed to a template but does NOT check whether
    the resulting job name exist.
    
    The parameter expansion in templates is borrowed from Jenkins Job
    Builder (deep_format function). It has been tweaked to also expand
    dictionary keys.
    
    Layout test plan:
    
      $ nosetests -m layout  --nocapture
      Test layout file validation ...
      <...>
      bad_template1.yaml
         required key not provided @
      data['projects'][0]['template']['project']
      bad_template2.yaml
         extra keys not allowed @
      data['projects'][0]['template']['extraparam']
      good_template1.yaml
      ok
      <...>
      $
    
    A basic test hasbeen added to verify whether a project-template properly
    triggers its tests:
    
      $ nosetests --nocapture \
      tests/test_scheduler.py:testScheduler.test_job_from_templates_launched
      Test whether a job generated via a template can be launched ... ok
    
      ----------------------------------------------------------------------
      Ran 1 test in 0.863s
    
      OK
     $
    
    Change-Id: Ib82e4719331c204de87fbb4b20c198842b7e32f4
    Reviewed-on: https://review.openstack.org/21881
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 3c5e5b507f64e644bfc3c0fd38a646dc9a280201
Author: James E. Blair <jeblair@openstack.org>
Date:   Fri Apr 26 11:17:03 2013 -0700

    Fix config test interaction with report_times.
    
    In a config test, the scheduler is created without a config object.
    Handle that case gracefully in the pipeline constructor.
    
    Add a test that runs the configtest.
    
    Change-Id: Id59b3194aff7b5347fa04fe1cc29b1069d2a3f7f
    Reviewed-on: https://review.openstack.org/27585
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 0ac6c0169266e41c6e49ac08d6dd957584a1adaa
Author: James E. Blair <jeblair@openstack.org>
Date:   Fri Apr 26 09:04:23 2013 -0700

    Add option to report elapsed build times.
    
    The new format will be:
      "http://logs.example.com/6/1/gate/project2-merge/2 : SUCCESS in 00:00:00"
    
    And the option is enabled by default.
    
    Change-Id: Ib50c4948ea0a7b552d46a0e72ecb6c1a9609a771
    Reviewed-on: https://review.openstack.org/27570
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit e4035796a684a110569cd133b2f5044c6f8028d1
Author: Antoine Musso <hashar@free.fr>
Date:   Tue Apr 16 17:35:52 2013 +0200

    soften statsd version requirement to allow v2
    
    We used to pin statsd to version 1.0.0.  James E. Blair has written a
    few tests that now let us allow the current v2.0.1 version.  To prevent
    unexpected upgrades, we disallow v3.0.0.
    
    Zuul scheduler only do very simple statsd operations. Testing with
    statsd 2.0.1:
    
    I have set up a basic listener:
    
     listener$ netcat -l 127.0.0.1 -p 666 --udp
    
    Then wrote the python script:
    
      import extras
      statsd = extras.try_import('statsd.statsd')
    
      statsd.incr('zuul.counter')
      statsd.timing('zuul.timer', 1234)
      statsd.timing('zuul.timer', 1)
      statsd.gaug:('zuul.gauge', 1234)
    
    Running it as:
      STATSD_HOST='127.0.0.1' STATSD_PORT=666 python statsd-test.py
    
    The listener gets:
    
      zuul.counter:1|czuul.timer:1234|mszuul.timer:1|mszuul.gauge:1234|g
    
    Sounds legit enough.
    
    Fix bug #1169599 'Zuul should depends on statsd 2 or later'
    
    Change-Id: I41b797d606d55eeda300e673b05c2ae4442ce029
    Reviewed-on: https://review.openstack.org/27008
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit b3aa82865a0bbca97f694c59f88d6935430d69ba
Author: Antoine Musso <hashar@free.fr>
Date:   Fri Apr 19 15:16:59 2013 +0200

    doc: sync usage with recent changes
    
    The documentation was missing recent optional arguments such as
    --version.
    
    Change-Id: Iad111d2f5c14c54d1495f2ba837627e0ea42acb0
    Reviewed-on: https://review.openstack.org/27172
    Reviewed-by: Jesse Keating <jesse.keating@rackspace.com>
    Reviewed-by: Khai Do <zaro0508@gmail.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit 412e558cd28aed9c3e804a2342c50ad6c6c5c7d7
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Apr 22 15:50:12 2013 -0700

    Test statsd.
    
    Add a fake statsd listener, and actually listen on a random udp
    port for statsd messages.  Configure STATSD env vars to use it
    before each test.
    
    Add a test that exercises all of the statsd methods that we use
    explicitly.
    
    Add checks of the statsd output to the basic "run jobs" test case
    to make sure that we're covering some of the statsd code in the
    scheduler.
    
    Change-Id: I3361c4e334155dda413bf343e6f1c6f4e277a3ff
    Reviewed-on: https://review.openstack.org/27306
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit a14a2e89e8d2decae3e14054dd26d468035b1a0f
Author: Antoine Musso <hashar@free.fr>
Date:   Thu Apr 11 22:22:22 2013 +0200

    fix WebOb dependency
    
    tools/pip-requires list WebOb in lower case which confuse pip freeze and
    gives a false positive:
    
    Before patch:
    
     $ pip freeze -r tools/pip-requires 2>&1|grep -i webob
     Requirement file contains webob, but that package is not installed
     WebOb==1.1.1
     $
    
    The second line comes from another packages which list 'WebOb' as a
    dependency.
    
    After patch:
    
     $ pip freeze -r tools/pip-requires 2>&1|grep -i webob
     WebOb==1.1.1
     $
    
    Change-Id: I73d01c734c25fc65022de146264e5b2c3cc2e67f
    Reviewed-on: https://review.openstack.org/26786
    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

commit 82595109b5936c2ed36f115a4096c24f93246f4c
Author: Paul Belanger <paul.belanger@polybeacon.com>
Date:   Mon Apr 8 11:30:51 2013 -0400

    Convert README to reStructuredText
    
    Change-Id: Iceb9049640aa3e0ff5c030fa5b93225e1e8ff887
    Signed-off-by: Paul Belanger <paul.belanger@polybeacon.com>
    Reviewed-on: https://review.openstack.org/26381
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Tested-by: Jenkins

commit eb0e9a3d51f3818c485591405a1d0b3f16466d70
Author: Monty Taylor <mordred@inaugust.com>
Date:   Wed Mar 27 16:29:21 2013 +0100

    Update to latest openstack.common.setup code.
    
    Change-Id: Iaf8d066e9ad670dc5fed2375ad5640682a387bb5
    Reviewed-on: https://review.openstack.org/25533
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit 3e16b551d0dd320f4d22b0cac1ac485ae64e8c41
Author: Paul Belanger <paul.belanger@polybeacon.com>
Date:   Wed Mar 27 10:52:29 2013 -0400

    Fix import error for zuul version with docs
    
    When using sphinx-build to generate documentation, it would fail to
    properly find our version information.
    
    Change-Id: Iee14aa76b69ca9398688345cb2dcd0db9ecdaedc
    Signed-off-by: Paul Belanger <paul.belanger@polybeacon.com>
    Reviewed-on: https://review.openstack.org/25524
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Tested-by: Jenkins

commit 26b1fb81bd241a7442ae922e15a3832ba548af98
Author: Antoine Musso <hashar@free.fr>
Date:   Thu Mar 21 16:31:40 2013 +0100

    zuul-server learned --version
    
    I have so many Zuul installation that I somehow loose track of their
    version. I am forced to look at the zuul-server wrapper script to figure
    out the current version when I could just ask the might zuul-server to
    give me its version straight from the command line.
    
    Example:
    
     $ zuul-server --version
     Zuul version: 1.1.0.45.g70c7158
    
    Since we might not have a valid zuul.conf passed, the version display
    must happen before  server.read_config() or we end up with a stracktrace
    on a fresh installation.
    
    Change-Id: I284de8da5af6678c7aaa1b17c950390e135f6e89
    Reviewed-on: https://review.openstack.org/25007
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Reviewed-by: Elizabeth Krumbach <lyz@princessleia.com>
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit 70c715813c7f6bee73b85755c16ce28b89fc2df9
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Mar 6 08:50:50 2013 -0800

    Add ability to restrict jobs to specific files.
    
    Add an additional job parameter, 'file', that will cause that
    job to only run if the change touches files that match the
    specification.
    
    Change-Id: I8c8fd3d029e02e338fd1dd266443b9ac56c0e5ac
    Reviewed-on: https://review.openstack.org/23710
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit e7ab86f0a7d358ae336695d109bcacbe013ee302
Author: Jeremy Stanley <fungi@yuggoth.org>
Date:   Thu Mar 14 16:45:28 2013 +0000

    Pin voluptuous <0.7.
    
    * tools/pip-requires: A new voluptuous (0.7.0) was released today,
    introducing backward-incompatible changes to schema objects and
    breaking zuul's layout validation. This is a brown bag fix to keep
    zuul functional until voluptuous 0.7 support is implemented.
    
    Change-Id: I5818d3cd529e8682877b368edbc10280a5c167df
    Reviewed-on: https://review.openstack.org/24454
    Reviewed-by: Anita Kuno <akuno@lavabit.com>
    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

commit 93e05f41562c2e5c93cb5e49dceb2c56641fd34c
Author: Jeremy Stanley <fungi@yuggoth.org>
Date:   Fri Mar 8 17:29:17 2013 +0000

    Document zuul-changes.py tool script.
    
    * doc/source/zuul.rst: Mention zuul-changes.py and provide sample
    syntax in the restarting section.
    
    Change-Id: I05888ca40e16681111e56b9ebf92acc3dc36175b
    Reviewed-on: https://review.openstack.org/23938
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Tested-by: Jenkins

commit c3b8eff63c98e85b44fdbd4035b6e960a1587e19
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Mar 6 19:38:55 2013 -0800

    Add a utility script for mass-comments.
    
    The script prints a gerrit review command for every change in
    a given zuul pipeline.
    
    Change-Id: Ibdee87ea64c977e7589cbc3ee9567e866cb78341
    Reviewed-on: https://review.openstack.org/23784
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit 1490eba99b2cb4c48796a2b4d490c9b9123a99dd
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Mar 6 19:14:00 2013 -0800

    Fix test race condition.
    
    The fake jenkins queue may have been modified during the call to
    get_queue_info, so operate on a copy of the queue (which is more
    like reality than locking the queue because we get a copy of the
    queue from the jenkins api).
    
    Also, fix a string formatting error which for some reason was
    not raising an exception until we tried running the tests on
    quantal.
    
    Change-Id: I51e588fb147515c826395439516cf843c2da83f3
    Reviewed-on: https://review.openstack.org/23781
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit 0018a6c711684457b0076f336fc4e76bc0884d88
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Feb 27 14:11:45 2013 -0800

    Treat any non-success result as a failure.
    
    Aborted, lost, skipped, unstable will all cause a change not to
    merge, so treat them the same when deciding if any job for a
    change failed.  This should stop new launches and cancel builds
    faster when these alternate failures happen.
    
    Also, make the output of the completed jobs in the test suite
    more comprehensible by including the change numbers, and use
    a new object with its own string formatting for printing.
    
    Change-Id: I2826b0eb5d26a019fed7d20bb1296624588c9fac
    Reviewed-on: https://review.openstack.org/23123
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 263fba97dec8e58ab4bc5e919e59f1a51f4a9790
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Feb 27 13:07:19 2013 -0800

    Give the result event queue priority.
    
    Processing result events sooner means that we can potentially
    stop builds or at least stop launching builds sooner.
    
    New trigger events are only likely to cause us to start new
    builds (which may need to be stopped).
    
    Change-Id: I5c33ed74cf4af84900c96c2155b3cec5252248d5
    Reviewed-on: https://review.openstack.org/23117
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 2dd66e733ad2d7f4f4fa79de7b7e501e620a1f67
Author: Antoine Musso <hashar@free.fr>
Date:   Fri Feb 22 16:05:39 2013 +0100

    Gerrit 2.5/2.6 stream-events has new event types
    
    We run Gerrit 2.5 with most of 2.6 cherry picked in. At some point
    Gerrit has added some new events to the `stream-events` command:
    
     - draft-published
     - merge-failed
     - reviewer-added
    
    Each event comes with a field holding the account of the user performing
    the action. Since Gerrit uses different names for that field, we have to
    maintain a map to find out which key holds the account information.
    
    This patch update the map for the three new events.
    
    Also fixed a minor typo in an error message.
    
    Change-Id: I79032280884e50edf83a3ddf60af7a2f62bde971
    Reviewed-on: https://review.openstack.org/22690
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit feba967f300ad4c2924431c24f6739099b4ef99d
Author: Antoine Musso <hashar@free.fr>
Date:   Thu Jan 17 13:44:59 2013 +0100

    update remote on ref-update
    
    Whenever receiving a ref-update event, for example when a tag is
    created, deleted or changed, the local Zuul git repository would not
    reflect the change.
    
    This patch force a git remote update on the local git repository so the
    Jenkins git plugin can actually find the new tag. This is done before
    enqueing the change in the pipeline to only update the remote once.
    
    Change-Id: I87a29aa15855bfb367f03da3e15cd8a733b757fd
    Reviewed-on: https://review.openstack.org/19928
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit d71e297421abb66431232b1bca6df2573626b1c7
Author: Antoine Musso <hashar@free.fr>
Date:   Thu Jan 17 13:40:10 2013 +0100

    support to update a repository
    
    We sometime want to update a repository without fetching an actual
    refspec. A typical example is to fetch tags, since I did not manage to
    pass -t to git.fetch(), I am using instead the GitPython repo.update()
    calls which binds to `git remote update`.
    
    reset() add a clearing cache to make sure PyGit does not fail whenever
    the remote repository has been updated. Instead of duplicating code
    between reset() and update(), I have moved the recache command to
    update() and make reset() to call this new update().
    
    Change-Id: I0d989dfc1f31ede6c79ccdd1d5b3968978a418ab
    Reviewed-on: https://review.openstack.org/19927
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit fb682ccf2c4825e8090df6e27aadaa62123e860e
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Feb 26 15:23:27 2013 -0800

    Make trigger/result queue lengths available to status page.
    
    Change-Id: I79fc7d1df0612fbe87e9b61499111c2d08d78dd0
    Reviewed-on: https://review.openstack.org/23046
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 4b22c33f7e4064f8da6fddf26f4aa3bb2147a11e
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Feb 26 14:36:58 2013 -0800

    Restart jobs behind a removed change.
    
    Even though we're removing from (potentially) the middle of the
    queue, restart jobs behind this change since the situation has
    changed.
    
    Change-Id: Iab44898bda07d991a3d4c53715bf7a04ff58c9d1
    Reviewed-on: https://review.openstack.org/23038
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit c259232d0481f1b9159dc7090b9965ee34730148
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Wed Feb 20 17:12:28 2013 -0800

    Remember merges to save time.
    
    Previously Zuul had to merge the entire change tree for each change
    in the DependentPipeline. Remember previous merges to save time and
    only merge changes against their project and branch.
    
    Co-Authored-By: James E. Blair <jeblair@openstack.org>
    
    Change-Id: I8105ac3aa4e4697e90e8d7fac1e54c5614f79daf
    Reviewed-on: https://review.openstack.org/22504
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 97e457e25d6894222d49d60f86941804e1e2b04b
Author: K Jonathan Harker <k.jonathan.harker@hp.com>
Date:   Tue Feb 26 13:29:38 2013 -0800

    Correct two links.
    
    The github project has changed from `openstack-ci` to `openstack-infra`,
    but two links in the documentation do not reflect this change.
    
    Change-Id: I9359d1071f33719da39fdefd14deea728b9dbfff
    Reviewed-on: https://review.openstack.org/23033
    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

commit 7d0dedc9c8059332ef4bb06f5fb2f6152e00073c
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Feb 21 17:26:09 2013 -0800

    Test that Zuul refs end up in the correct repos.
    
    Change-Id: I5a0040e6cf1076dfb21e355b7c021fdfc1914ca5
    Reviewed-on: https://review.openstack.org/22738
    Reviewed-by: Anita Kuno <akuno@lavabit.com>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit d9dcbfa75d0ce1895351a1fb024fe9faa1669efa
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Sun Feb 17 19:51:10 2013 -0800

    Update Voluptuous requirement to version 0.6.
    
    Voluptuous has a version 0.6 now which deprecates the any, match, and
    required predicates and replaces them with Any, Match, and Required.
    Update the minimum required version of Voluptuous and stop using the
    deprecated predicates.
    
    Change-Id: I554a6fda2c622a0b63f9247b1eae5eb494af225b
    Reviewed-on: https://review.openstack.org/22167
    Reviewed-by: Khai Do <zaro0508@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 9d49eede1fd8170858ffc325e754f3b58742fda5
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Feb 21 10:39:30 2013 -0800

    Make canceling a queue item a POST request.
    
    Needed by Jenkins 1.502.
    
    (Also don't print the results of error messages so they don't
    clutter stdout, but leave them there as a debug option
    comments because they are very handy when debugging
    Jenkins API issues.)
    
    Change-Id: I2e1dcc1ac2344b1eb9f66292b6fd30900cb45e6d
    Reviewed-on: https://review.openstack.org/22579
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit e9ed907690d5b5b9a3f6063722e3aacce463d977
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Mon Feb 18 15:26:07 2013 -0800

    Revert "Dequeue changes if they have no hope of merging."
    
    This reverts commit dd26978d5da1e37f75e7fc38201c0d5427417d72.
    
    The performance of mergability checking is poor and starves zuul from
    processing other things. revert the change until we can come up with a
    better performing solution to this problem.
    
    Change-Id: I744031159572236f61b3fca45bb22492135ebcb2
    Reviewed-on: https://review.openstack.org/22251
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: James E. Blair <corvus@inaugust.com>

commit 0197624ef7d1c2723ca92ae0fff63bd6521c5e4c
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Sun Feb 17 18:41:48 2013 -0800

    isUpdateOf check field presence before comparison.
    
    isUpdateOf is passed an "other" changeish that may be a Ref which does
    not have number and patchset fields which are compared against in
    Change's isUpdateOf method. Check that fields exist before comparisons
    are made.
    
    Change-Id: Ifb5a36dcb0377f496e6b0707ae27810b96f2c752
    Reviewed-on: https://review.openstack.org/22159
    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

commit dd26978d5da1e37f75e7fc38201c0d5427417d72
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Mon Feb 11 17:48:43 2013 -0800

    Dequeue changes if they have no hope of merging.
    
    In the DependentPipeline remove changes if they have absolutely no
    chance of merging (all possible merge combinations fail). This allows
    zuul to remove changes as soon as possible when it is known that they
    cannot merge and continue testing the remaining changes.
    
    Fixes bug 1123329
    
    Change-Id: I97af03cca997541f6a8b3fb519d2a44825dbd937
    Reviewed-on: https://review.openstack.org/21723
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 2fa509606410c96da90fc57e6d6daaf547ced1b7
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Jan 30 21:50:41 2013 -0800

    Dequeue changes when new patchset created.
    
    When a new patchset is created for a change that is in a pipeline,
    cancel running builds and dequeue that change (and possibly
    dependent changes that can no longer merge).
    
    Make this optional (and document the option).
    
    Fixes bug 1022643.
    
    Change-Id: I8f591956cf86645443e4b6075b8cdfc95a939e4f
    Reviewed-on: https://review.openstack.org/20948
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit ffef9e4e6b52605742266adf67133f65e71881e3
Author: Paul Belanger <paul.belanger@polybeacon.com>
Date:   Mon Feb 11 22:15:18 2013 -0500

    Update URL for openstack zuul example
    
    Change-Id: Iae253977eafaff1a7cbdcaf1b873388487c4e36e
    Signed-off-by: Paul Belanger <paul.belanger@polybeacon.com>
    Reviewed-on: https://review.openstack.org/21730
    Reviewed-by: Elizabeth Krumbach <lyz@princessleia.com>
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit f231fa2a736d94818c351f0d9a298eaef5c8217f
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Fri Feb 8 12:28:53 2013 -0800

    Update zuul doc to cover SIGUSR1 behavior.
    
    Change-Id: I6dcd87a59d836dc22b67a2bee7c764e0b603a809
    Reviewed-on: https://review.openstack.org/21543
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit 8ae50e3575ef67ff7245f7369e0b494a54b54445
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Jan 17 15:32:22 2013 -0800

    Add basic status HTML/JS.
    
    A working example that can be customized for site use.
    
    Change-Id: I6e6fdf245a55a767aa7e86486b6c47dae221f47b
    Reviewed-on: https://review.openstack.org/19989
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 68bdcd7f09ba2e46c0d0d6ffea4937871c4dd1df
Author: Antoine Musso <hashar@free.fr>
Date:   Thu Jan 17 12:31:28 2013 +0100

    representation for Ref objects
    
    The ref objects were missing a python __repr__, ended up with a not so
    useful trace in the debug.log. This creates a meaningful representation
    for human consumption:
    
    	<Ref 0x7f51f848ffd0 creates refs/tags/v2.0.0 on 4eb656fe>
    	<Ref 0x7f51f8491990 refs/tags/v2.0.0 updated 4eb656f..2260abb>
    	<Ref 0x7f51f848f610 deletes refs/tags/v2.0.0 from 2260abb>
    
    (sha1 above have been made shorter than the actual output)
    
    Change-Id: If3b60494f1984a04e9ffada38f7e3b99f2a8ba0e
    Reviewed-on: https://review.openstack.org/19925
    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

commit 8fa1697ea97fa3bcaabab1f4e51c8209f187459a
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Jan 15 16:57:20 2013 -0800

    Report pipeline stats.
    
     * Number of changes processed.
     * Time each change spent in pipeline.
     * Current number of changes in pipeline.
    
    All of those per-pipeline, and per-pipeline, per-project.
    
    Change-Id: I609ff33ab7c26fc43d323f8a0bbb61f93382af90
    Reviewed-on: https://review.openstack.org/19764
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit cb4623485437c8963cabd11420f0c1396011b8a4
Author: James E. Blair <jeblair@openstack.org>
Date:   Tue Jan 15 10:03:53 2013 -0800

    Add layout validation env to tox.ini.
    
    Change-Id: I7e3bd8eed585133ee217a1e462b9833df494be21
    Reviewed-on: https://review.openstack.org/19718
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit d06f2a6728e002f3a199cdef570f92b44da0d45f
Author: Antoine Musso <hashar@free.fr>
Date:   Fri Nov 16 17:40:58 2012 +0100

    sphinx is now stricter
    
    The documentation files often have minor typo or badly formatted
    commands which makes sphinx emits a warning. To make sure we always
    catch them via the Jenkins build, this patch makes sphinx to convert
    warning to errors thus aborting the build, simply add to pass the -W
    option to sphinx-build.
    
    This patch also fix some warnings:
    * There is no source/_static dir so disable html_static_path
    * In launchers.rst, File reference name should be before the title
    
    Test plan:
    
    $ make clean; make html
    rm -rf build/*
    sphinx-build -b html -d build/doctrees  -W source build/html
    Making output directory...
    Running Sphinx v1.1.3
    loading pickled environment... not yet created
    loading intersphinx inventory from
    http://docs.python.org/2.7/objects.inv...
    building [html]: targets for 5 source files that are out of date
    updating environment: 5 added, 0 changed, 0 removed
    reading sources... [100%] zuul
    looking for now-outdated files... none found
    pickling environment... done
    checking consistency... done
    preparing documents... done
    writing output... [100%] zuul
    writing additional files... genindex search
    copying static files... done
    dumping search index... done
    dumping object inventory... done
    build succeeded.
    
    Build finished. The HTML pages are in build/html.
    $
    
    Change-Id: Id907cc2c9aeccd077593b2fa1b78b220a159ed71
    Reviewed-on: https://review.openstack.org/16316
    Reviewed-by: Paul Belanger <paul.belanger@polybeacon.com>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    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

commit 563701973830f849e2307fa10b707bf3629c69de
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Jan 14 15:47:28 2013 -0800

    Make report message introduction configurable.
    
    By setting parameters on a pipeline, you can change the default
    "Build successful/failed" introductory messages left on Gerrit.
    
    Change-Id: Ie05c8c87a47994faced4ee67fda4ab4e64ea0d20
    Reviewed-on: https://review.openstack.org/19677
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 4795838dd2a9ddb0c8495c6b085cca99a83f19d6
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Jan 10 17:26:02 2013 -0800

    Add layout file validation.
    
    Based on voluptuous library.
    
    Basic validation should catch typos, missing or extra attributes.
    Can be expanded to do more serious validation (ie, specifying
    a comment in a trigger should require the event be comment-added).
    
    Adds a command line option to validate a named layout file and
    exit.
    
    (Also add dist/ to .gitignore.)
    
    Change-Id: Ia864ebde1765141d4d1a52bc77033689b6210e81
    Reviewed-on: https://review.openstack.org/19443
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit ff79197eba28541407910cd514de3000d2066b4c
Author: James E. Blair <jeblair@openstack.org>
Date:   Wed Jan 9 11:45:43 2013 -0800

    Remove the scheduler queue lock.
    
    Instead, use queue task_done calls to indicate that the scheduler
    has finished processing events.  This lets the tests know when
    the queues are both empty and all requests have been handled.
    
    Add a lock around reporting complete events in fake jenkins jobs
    so that waitUntilSettled can be assured that no new events will
    arrive.
    
    Directly report LOST builds when a job doesn't exist, rather
    than spawning a new thread (which was only done to work around
    the lock).
    
    Change-Id: I32ad46648c82d7458fb5be779c62ac5b57857674
    Reviewed-on: https://review.openstack.org/19330
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit a7c5aa3fa68531183d71c044b34fcfa513e2f798
Author: Clark Boylan <clark.boylan@gmail.com>
Date:   Tue Jan 8 17:19:10 2013 -0800

    Treat LOST jobs as failures in didAnyJobFail().
    
    Zuul already treats LOST jobs as failures in much of the code. Do the
    same in didAnyJobFail so that changes behind a change with a LOST job
    get their jobs cancelled.
    
    Change-Id: I1eb819a6cfb3b3ee0a2c131417b00dab1d83f29d
    Reviewed-on: https://review.openstack.org/19270
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 23ec1bac6bcee4fa4e24618ac3db4b6f5db31b2e
Author: James E. Blair <jeblair@openstack.org>
Date:   Fri Jan 4 18:06:10 2013 -0800

    Be more cautious with stats calculations.
    
    These occur at critical points in the code and should be protected
    with exception handlers.
    
    Make sure that a build actually has a start time before calculating
    its duration.
    
    Change-Id: I1ff1260da0b7b5095c6b075bd0d78c7a1490686a
    Reviewed-on: https://review.openstack.org/19023
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit f62d428f3b33aaa8d9dc0cdae3cb8563289b5c10
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Dec 31 17:01:50 2012 -0800

    Fix exception calculating run time for lost builds.
    
    When a build is reported as lost, it has no start_time, so the
    code that calculated the run-time for statsd threw an exception.
    
    Correct that by only calculating the run time for jobs that have
    really completed.
    
    Add debug lines to onBuild* that would have helped diagnose this.
    
    Keep track of the throwaway threads that are used to report LOST
    builds so that the test suite can more correctly know when the
    system is settled.
    
    Add a test case for a single non-existent post job.
    
    Add STATSD_* env variables in tox to make sure that the statsd
    code paths are executed by tests.
    
    Change-Id: I339443cbad7b0858d70e9180d63dfb701b8eaee9
    Reviewed-on: https://review.openstack.org/18792
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit 5f1104216aa1ef52c28de379bf5f878baf0a0bf1
Author: Antoine Musso <hashar@free.fr>
Date:   Tue Dec 18 23:22:13 2012 +0100

    precision on email_filter
    
    The filtering regexp should not allow greedy matchers (such as .*) but
    use non greedy ones (such as .*?).  One want to escape dots as well.
    
    Additionally, whenever one want to add several emails, he should use a
    YAML list.
    
    Change-Id: I9deea0893151358ddde9b1ec5a40c322c45d7ff2
    Reviewed-on: https://review.openstack.org/18350
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit cf429f325d303cfe905ec84755c69314df77333d
Author: James E. Blair <jeblair@openstack.org>
Date:   Thu Dec 20 14:28:24 2012 -0800

    Output comment and email filters in debugging.
    
    Also, minor optimization to email filter matching.
    
    Change-Id: Iedea0fc14b10a8f68ec52e38ceab4b2fb407e364
    Reviewed-on: https://review.openstack.org/18515
    Reviewed-by: Antoine Musso <hashar@free.fr>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 71e9412d9c05a5826937929ae2aa0948242bf447
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Dec 24 17:53:08 2012 -0800

    Add statsd.
    
    Reports statistics on job runtime, number/rate of jobs run, and
    number/rate of individual gerrit events to statsd.
    
    Change-Id: I0db9352610b4c268c95da98fd282d7f463945f90
    Reviewed-on: https://review.openstack.org/18628
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit c44b138d42076e266e6464161907ad7a00a27a62
Author: James E. Blair <jeblair@openstack.org>
Date:   Sun Dec 23 09:39:55 2012 -0800

    Set change url to gitweb URL.
    
    So that status pages can easily link to gitweb urls of ref-update
    triggered changes.
    
    Change-Id: Id9b708a473d92c30727f66578a0174f18c657723
    Reviewed-on: https://review.openstack.org/18602
    Approved: Jeremy Stanley <fungi@yuggoth.org>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Tested-by: Jenkins

commit 8dbd56aff06a70988b541dc8fccea87dd7e76975
Author: James E. Blair <jeblair@openstack.org>
Date:   Sat Dec 22 10:55:10 2012 -0800

    Add JSON status endpoint.
    
    Can be used for nifty ajax-style status pages.
    
    Add optional description field to pipeline.
    
    Change-Id: If5db3f6945f65f038833cbf9c783de5ffef63b49
    Reviewed-on: https://review.openstack.org/18579
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit 6aea36dd35e40fdb23f1f16a762c7f4cd2937b49
Author: James E. Blair <jeblair@openstack.org>
Date:   Mon Dec 17 13:03:24 2012 -0800

    Add per-job URL patterns.
    
    Add the option to specify the URL pattern left in Gerrit, per-job.
    
    Example: a job that builds documentation and uploads it to a staging
    site can leave the URL of the staging site iff the job succeeds.
    
    Change-Id: I34841e61e9116fd8d4de7ac09d8f9cfe36fe78ec
    Reviewed-on: https://review.openstack.org/18264
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit f2626eb384b5f29df1ef2c446b49c9bbf7c6a8de
Author: Antoine Musso <hashar@free.fr>
Date:   Fri Nov 30 22:37:46 2012 +0100

    reset on origin/HEAD not master
    
    Some repositories might not have a master branch or could use a
    different default HEAD. A git reset was made to remotes/master which
    would produce a stacktrace.
    
    Fix https://bugs.launchpad.net/zuul/+bug/1083154
    
    Change-Id: Ie9390c0c5dd707d77fbfa8cff2078a9b31fd31ae
    Reviewed-on: https://review.openstack.org/17239
    Reviewed-by: Antoine Musso <hashar@free.fr>
    Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit b4e809edf0c6e4e6ebb2ee338fbd6d53b7dde3f7
Author: Antoine Musso <hashar@free.fr>
Date:   Thu Dec 6 16:58:06 2012 +0100

    filter events by user email
    
    On some setup we might restrict a pipeline to trusted users. The new
    email_filter will matches the email coming from the event account
    attribute.
    
    In Gerrit, each event hold the account in a different field
    name so I have simply added a map to find out the correct field.
    
    email_filter works just like comment_filter, fields are ORed and are
    considered to be regex.
    
    Change-Id: I775f67b48d5f162106c024f94fe498a049b3fe94
    Reviewed-on: https://review.openstack.org/17609
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Approved: Monty Taylor <mordred@inaugust.com>
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Tested-by: Jenkins

commit 00a7f09c6150389ef7e1df29238d57530be7fb48
Author: Jeremy Stanley <fungi@yuggoth.org>
Date:   Sun Dec 16 18:50:24 2012 +0000

    Update README for project move.
    
    * README: Correct clone URL.
    
    Change-Id: If7f790d2a9352476fc634eba5784406e6cec43bb
    Reviewed-on: https://review.openstack.org/18201
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit b1e7d2c496d6dfa57dad7e8835dc4ad133c70f2a
Author: Monty Taylor <mordred@inaugust.com>
Date:   Sun Dec 16 10:42:31 2012 -0800

    Updated .gitreview location
    
    Change-Id: I840e1d1fb66d22d14deb4e3307962c7b7f85c63a
    Reviewed-on: https://review.openstack.org/18194
    Approved: James E. Blair <corvus@inaugust.com>
    Reviewed-by: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

commit b2b56f7be8b9645a2bb8f68d6a5187f7062b0bfc
Author: James E. Blair <jeblair@openstack.org>
Date:   Sun Dec 16 12:14:26 2012 -0800

    Pin docutils.
    
    https://bitbucket.org/birkenfeld/sphinx/issue/998/docutils-010-will-break-sphinx-manpage
    
    Change-Id: Ic50912e626b5d4ffcec3dc4eca57b526f4ff0274
    Reviewed-on: https://review.openstack.org/18203
    Reviewed-by: Monty Taylor <mordred@inaugust.com>
    Approved: James E. Blair <corvus@inaugust.com>
    Tested-by: Jenkins

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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>

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

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>

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>

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>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Add documentation.
    
    Change-Id: I8197ec2e52596fa4136f8af9aa93ea06e56d4d0d

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

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

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

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

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

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

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

    Update README
    
    Change-Id: I766e36ccfb96a9dabceec15889fa3151eec1ab93

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

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

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

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

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

    Daemonize zuul.
    
    Change-Id: If3d30ec8f03ca35d8c8dd2c1347441aab535f8a1

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

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

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

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

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

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

    Use GERRIT_CHANGES.
    
    Change-Id: I93a642bc850bc06cf053ad7d3a529d698cc68527

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

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

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

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

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

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

    Initial commit.