)]}'
{
  "log": [
    {
      "commit": "2f27a0ed3c609bfcd6344a55c121e56d5569afc9",
      "tree": "abe0c02c1d2fd9d57f6b786ff8105896969d0e3c",
      "parents": [
        "58deafcd63ae996e0973c864e249c4a3cb82a74f"
      ],
      "author": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Tue Sep 09 13:46:02 2014 +0100"
      },
      "committer": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Thu Sep 11 18:59:39 2014 +0100"
      },
      "message": "Replace screen_it() with run_process() throughout\n\nrun_process will use screen if USE_SCREEN\u003dTrue (the default),\notherwise it will simply start the requested service. Therefore\nwherever screen_it used, run_process can be instead.\n\nWhere stop_screen was found it has been replaced with stop_process.\n\nA tail_log function has been added which will tail a logfile in a\nscreen if USE_SCREEN is True.\n\nlib/template has been updated to reflect the use of the new\nfunctions.\n\nWhen using sg the quoting in run_process gets very complicated.\nTo get around this run_process and the functions it calls accepts\nan optional third argument. If set it is a group to be used with sg.\n\nChange-Id: Ia3843818014f7c6c7526ef3aa9676bbddb8a85ca\n"
    },
    {
      "commit": "3159a821c2e0662278746c5311e187bcfd4d8b75",
      "tree": "619916b47ee265729ca2c120870addd5c3b13e84",
      "parents": [
        "4bd4264960917b6bcd197326020a8a894d1d47f4"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Aug 27 14:13:58 2014 -0500"
      },
      "committer": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Tue Sep 09 13:54:01 2014 +0100"
      },
      "message": "Run processes without screen\n\nThis introduces new run_process() and screen_service() functions and sets the\ngroundwork to change how DevStack starts services.  screen_service() is simply a\ndirect call to the screen portion of the old screen_it() function and is intended\nto run commands that only need to run under screen, such as log file watchers.\n\nrun_process() is a replacement for screen_it() (which remains until all of the\nservices are updated).  The usage is similar but requires updates to every current\nscreen_it() call to remove everything that requires the command to be interpreted\nby a shell.\n\nThe old run_process() and _run_process() functions are still present as\nold_run_process() and _old_run_process() to support the deprecated screen_it()\nfunction.  These will all go away in the future once all services have been\nconfirmed to have been changed over.\n\nThere is a similar new set of stop process functions stop_process() and\nscreen_stop_service().  The old screen_stop() will also remain for the deprecation\nperiod.\n\nAs an initial test/demostration this review also includes the changes for\nlib/cinder to demonstrate what is required for every service.\n\nI included the scripts I used to test this; tests/fake-service.sh and\ntests/run-process.sh are quite rough around the edges and may bite.  They should\nmature into productive members of the testing ecosystem someday.\n\nChange-Id: I03322bf0208353ebd267811735c66f13a516637b\n"
    },
    {
      "commit": "ba842f5374f28d1f17bc008349a2d01958dfe82d",
      "tree": "4b01fdbdd677be6d8672f1b32850c4499c034591",
      "parents": [
        "8b3217e31083625667225e5cddadf99d430a6206",
        "966463c802c6c2f3a04da812cd689502aa8006cd"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Mon Sep 08 16:23:20 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Mon Sep 08 16:23:20 2014 +0000"
      },
      "message": "Merge \"Keystone access log in key-access screen\""
    },
    {
      "commit": "17b6938125dc8b78d26ab2c9a748c3808676620e",
      "tree": "c070a54b295cc85ff70284ae3d53ac75abf930e9",
      "parents": [
        "07405773714d4bb9d2491025e4630d14d3773678",
        "f3f4b0ac78a07457b730c0a6ab3b48799c350339"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Sat Sep 06 13:28:13 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Sat Sep 06 13:28:13 2014 +0000"
      },
      "message": "Merge \"install test-reqs when TESTONLY packages are installed\""
    },
    {
      "commit": "966463c802c6c2f3a04da812cd689502aa8006cd",
      "tree": "c0af3fb57d97c1448a5df2f4941df2d8c7bdd7d7",
      "parents": [
        "2a6ce7197e5da9fddddaba2faff2a18c04ece957"
      ],
      "author": {
        "name": "Brant Knudson",
        "email": "bknudson@us.ibm.com",
        "time": "Thu Aug 21 18:24:42 2014 -0500"
      },
      "committer": {
        "name": "Brant Knudson",
        "email": "bknudson@us.ibm.com",
        "time": "Thu Sep 04 18:12:37 2014 -0500"
      },
      "message": "Keystone access log in key-access screen\n\nWhen Keystone was run in Apache Httpd the access log wasn\u0027t in a\nscreen. A new screen called key-access is now started with\nKeystone\u0027s access log.\n\nChange-Id: Ie1f4d4b679e1b9c87f0cea37deb25f7b6636fe01\nCloses-Bug: #1359995\n"
    },
    {
      "commit": "f71b500beaf3d09c0388fed8480c9a5a25524c87",
      "tree": "94556915d766ecfb8e7a759122d06321bc2f4d2f",
      "parents": [
        "a7a2b883b28a6a2137f9b56be956a5d3798a0479"
      ],
      "author": {
        "name": "Attila Fazekas",
        "email": "afazekas@redhat.com",
        "time": "Wed May 28 09:52:22 2014 +0200"
      },
      "committer": {
        "name": "Attila Fazekas",
        "email": "afazekas@redhat.com",
        "time": "Wed Aug 27 09:21:13 2014 +0200"
      },
      "message": "Faster nova fixed key generation\n\nUsing bc 64 times in loop is too verbose and slow,\nreplacing the echo/bc loop with hexdump and urandom.\n\nThe hexdump approach is 75 times faster and\ndoes not floods the debug logs.\n\nUsing the common function for generating,\nthis kind of string with lib/heat and by the read_password.\n\nChange-Id: If6a86dfaf0c21e2635c6de0a7b96a8ed7ec5b507\n"
    },
    {
      "commit": "f3f4b0ac78a07457b730c0a6ab3b48799c350339",
      "tree": "593d610a982081c9a8859c8c968b0110191507cd",
      "parents": [
        "5acf159c72fad931031d9768ae02575240a5ede9"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Jul 15 12:07:42 2014 +0200"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Aug 05 17:01:16 2014 -0400"
      },
      "message": "install test-reqs when TESTONLY packages are installed\n\nINSTALL_TESTONLY_PACKAGES in devstack only impacts .deb/.rpm files\neven though most of our test requirements are actually specified\nin python. This will do an explicit install of test-requirements.txt\nif pip_install is called with args that look like a directory,\nand test-requirements.txt exists in that directory.\n\nChange-Id: Id21e282ddc945c819c9c8c4d724658e28bfde785\n"
    },
    {
      "commit": "bdc90c5f0243e3d2b3efa893cfd080d039fed8e4",
      "tree": "bdb9ba20891683534bff03f8a269f6de35d50c94",
      "parents": [
        "a36167e38146c9bc328718458a4d7413b920f79f"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Aug 04 15:44:58 2014 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Aug 05 14:45:02 2014 +1000"
      },
      "message": "Work around pip installed pkgs on Rackspace image\n\nThe upstream rackspace image has a bunch of pip installed packages as\ncloud-init was installed via pip due to a lack of available system\npackages.  This can break further system package installs, such as\nmarkdown, which fails with\n\n---\n Error unpacking rpm package python-markdown-2.4.1-1.el7.noarch\n  error: unpacking of archive failed on file\n   /usr/lib/python2.7/site-packages/Markdown-2.4.1-py2.7.egg-info: cpio: rename\n---\n\nBecause that is a directory for the pip-installed package, and a file\nin the RPM\n\nRemove all pip installed packages on rackspace images before we start\nto work around this.  I have filed an upstream issue with Rackspace\n(ticket-id 140804-ord-0000134) and the issue is being worked on.\n\nChange-Id: Id12d175143ed3b8e024d057d65fa67505c08042a\n"
    },
    {
      "commit": "d91cef35c605164d3fb960db992a5a7cae980431",
      "tree": "a5537c3c7f1032ce82735c8eeb2aac98270c409f",
      "parents": [
        "bfc6631be8e59609fe3c9b6b19b800c9ff7574e5",
        "1229a0879f44cfd96be208fee8c56ed68c669576"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Sat Aug 02 02:09:09 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Sat Aug 02 02:09:09 2014 +0000"
      },
      "message": "Merge \"Resolve circular dependency when tracking dependencies.\""
    },
    {
      "commit": "fb2bf8cb9dd1b07650b9e362e056b92f4c101c2c",
      "tree": "b89e83a26081b960f4135fccdd4cf7bb4a699127",
      "parents": [
        "cdef3aa4d56823dba0051f99794550f2bb264c9c",
        "d5dfa4c5c721e6edd71add63b3bf301f2cc4c27b"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Sat Aug 02 00:36:17 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Sat Aug 02 00:36:17 2014 +0000"
      },
      "message": "Merge \"Clean up local variable usage - misc functions\""
    },
    {
      "commit": "1229a0879f44cfd96be208fee8c56ed68c669576",
      "tree": "271671b7e0c879ac59db68ba6486e957e7a7e122",
      "parents": [
        "307cfcb9d11945b5f89f249d8779e51c87f1bc34"
      ],
      "author": {
        "name": "Robbie Harwood (frozencemetery)",
        "email": "rharwood@redhat.com",
        "time": "Thu Jul 31 13:55:06 2014 -0400"
      },
      "committer": {
        "name": "Robbie Harwood (frozencemetery)",
        "email": "rharwood@redhat.com",
        "time": "Thu Jul 31 13:58:46 2014 -0400"
      },
      "message": "Resolve circular dependency when tracking dependencies.\n\nWhen TRACK_DEPENDS\u003dTrue, there is a circular dependency wherein virtualenv is\nused to install virtualenv before a virtualenv has been established.\nTRACK_DEPENDS does not work in any use case without this fix.\n\nChange-Id: I7a6652ba091cb95dac3871b6c71edcd762a7be62\nCloses-Bug: 1208867\n"
    },
    {
      "commit": "d5dfa4c5c721e6edd71add63b3bf301f2cc4c27b",
      "tree": "42294bf31399e0b502a129c163565033b5cb4c97",
      "parents": [
        "d3121f649d672fdaf757655b94ecd68c71b56b8e"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jul 25 11:13:11 2014 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Jul 30 09:26:21 2014 -0500"
      },
      "message": "Clean up local variable usage - misc functions\n\nA catch-all for a bunch of smaller functions\n\nChange-Id: I3f97a514f9964ef36bff2f24a2f0a98614871a9f\n"
    },
    {
      "commit": "50cda69f3c80f4f479fb0748ae6ee2cb9caf945c",
      "tree": "c10488254ca9fa56536b397f833397c8f73c6633",
      "parents": [
        "d3121f649d672fdaf757655b94ecd68c71b56b8e"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jul 25 11:57:20 2014 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jul 25 13:58:36 2014 -0500"
      },
      "message": "Clean up local variable usage - git functions\n\nCleans up the git-related functions in functions-common\n\nChange-Id: I5f1851c0473e92c61b1e8af60e7ef32c3019f719\n"
    },
    {
      "commit": "703f17e536ceb7f782550f1da3744e3a017d51a6",
      "tree": "bc78e145682e406fd422a3720f5b625a22265956",
      "parents": [
        "4f3b66f538937cf0c7f9fdc97e5472f4c77bbe69",
        "9e17974a622797d6249ebc85d999a9b89aba9e58"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Jul 24 04:25:16 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Jul 24 04:25:16 2014 +0000"
      },
      "message": "Merge \"Fixed NO_UPDATE_REPOS variable usage\""
    },
    {
      "commit": "6dd8a8bee402a6be683075e0669a010a279950ae",
      "tree": "863dda081a4cf9cbf78f911ac66178b7ffc9f11e",
      "parents": [
        "2bb05fdb84aa472299efc714b7c1114a25a3ada2"
      ],
      "author": {
        "name": "Gael Chamoulaud",
        "email": "gchamoul@redhat.com",
        "time": "Tue Jul 22 01:12:12 2014 +0200"
      },
      "committer": {
        "name": "Gael Chamoulaud",
        "email": "gchamoul@redhat.com",
        "time": "Tue Jul 22 17:29:04 2014 +0200"
      },
      "message": "Users in service group should not have email addresses\n\nChange-Id: Ieed9dffce5cf1e735e482dd3494ac1e103b50955\nCloses-Bug: 1185201\nSigned-off-by: Gael Chamoulaud \u003cgchamoul@redhat.com\u003e\n"
    },
    {
      "commit": "6c639c9dd71099437bf27da0aed0c6dd7b0a32b2",
      "tree": "5a986b868c1be232b3f7c6d92bc7a0ca1cee9097",
      "parents": [
        "5e93727a23e3922efcdd80600a0b7fce5adb62cf"
      ],
      "author": {
        "name": "anju Tiwari",
        "email": "anjutiwari5@gmail.com",
        "time": "Tue Jul 15 18:11:54 2014 +0530"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Jul 18 09:59:59 2014 +1000"
      },
      "message": "Added Oracle Linux distribution support\n\nEnabled devstack to support oracle Linux Server\n\nChange-Id: I1749cd3c7756a9903d2a0b0ab19606f87a4937d4\n"
    },
    {
      "commit": "9e17974a622797d6249ebc85d999a9b89aba9e58",
      "tree": "ba9ccd4bdb9b827ff5dc2d4837c945563d1f0999",
      "parents": [
        "89a8a15ebe31f4b06e40ecadd4918e687087874c"
      ],
      "author": {
        "name": "Paul Linchpiner",
        "email": "autokarmaru@gmail.com",
        "time": "Sun Jul 13 22:23:00 2014 -0700"
      },
      "committer": {
        "name": "Paul Linchpiner",
        "email": "autokarmaru@gmail.com",
        "time": "Sun Jul 13 22:23:00 2014 -0700"
      },
      "message": "Fixed NO_UPDATE_REPOS variable usage\n\nChange-Id: I50a2fd73f30321e97c99947b62fb1729870a2c14\n"
    },
    {
      "commit": "0abde393c5e2d15e840c0321b736e22291b59780",
      "tree": "a78ecff37749175c95a5cbc7eae78cfecd02d1c8",
      "parents": [
        "c06c9e1f904a81e0fef646273b07510e90995364"
      ],
      "author": {
        "name": "Bartosz Górski",
        "email": "bartosz.gorski@ntti3.com",
        "time": "Fri Feb 28 14:15:19 2014 +0100"
      },
      "committer": {
        "name": "Bartosz Górski",
        "email": "bartosz.gorski@ntti3.com",
        "time": "Tue Jul 01 14:58:35 2014 +0000"
      },
      "message": "Adds support for multi-region\n\nChange-Id: Ib85fe7cb375692b04aca4c46f61ba7e1fbfa501b\nImplements: blueprint multi-region\n"
    },
    {
      "commit": "ea22a4fdba6c942e310588c4e2652be4fef5fe29",
      "tree": "01da57f300276125cbe11fbde218b77d4b7ca604",
      "parents": [
        "bfa5817c5085d84b2d6b821f000c8f028c61f565"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Fri Jun 27 15:21:41 2014 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Fri Jun 27 15:22:28 2014 -0400"
      },
      "message": "Revert \"Build retry loop for screen sessions\"\n\nThis reverts commit 0afa912e99dc9bad8b490960beb8f0cf85750dcc.\n\nThis possibly made things worse, though it times in with the\ntrusty add, so it\u0027s hard to tell. Revert to see if grenade gets\nbetter.\n\nChange-Id: Ic399957fc9d4a7da28b030cdf895df061b2567c8\nRelated-Bug: #1331274\n"
    },
    {
      "commit": "0afa912e99dc9bad8b490960beb8f0cf85750dcc",
      "tree": "e39ab4727c22159189d5b2911349d4c3762c8dd8",
      "parents": [
        "af86e43d7b7aea8bb7d4916972f17c327f12f566"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jun 18 15:36:19 2014 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Jun 19 12:07:43 2014 -0400"
      },
      "message": "Build retry loop for screen sessions\n\nThere is a timing window where we might lose the commands being\nstuffed into screen because bash is spawning. In those cases, loop\naround and try building screen sessions again.\n\nChange-Id: I49247de06bbd59424cb10fb9a8db145907be5138\nRelated-Bug: #1331274\n"
    },
    {
      "commit": "43d8f1cdddee5ed20dfef267dc59f7c4805d3a75",
      "tree": "845e0b34742787b695ad06b3e12d25199d1bda66",
      "parents": [
        "906ffb7b773e3007062d9feaa54dc55eaf692684"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Mon Jun 16 09:39:19 2014 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Mon Jun 16 09:39:19 2014 -0400"
      },
      "message": "double the screen sleep timeout\n\nHP Cloud 1.1 is quite slow per core. So much so that grenade is\noften failing to start services because bash in a screen session\nisn\u0027t ready in 1.5s. Double this to 3s to try to decrease failures\nin the gate.\n\nWe should instead do this via some readiness check to decrease\nraces.\n\nChange-Id: I2b066a687916742e966190f00b5b06a795d4a014\n"
    },
    {
      "commit": "5cc6d2cd0cb3fbfdd1b26899dc7a5667eab7605e",
      "tree": "0c15344895e0578a51fb7c2c4ba4a406c7f0dfa9",
      "parents": [
        "7b63c5ec9e9aea54024105a6521a754efc9f9983"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Jun 06 08:45:16 2014 -0400"
      },
      "committer": {
        "name": "Jeremy Stanley",
        "email": "fungi@yuggoth.org",
        "time": "Fri Jun 06 17:34:28 2014 +0000"
      },
      "message": "Update again and retry a failed package install\n\nOn ubuntu, if we run into an error installing the package, it can be\nbecause of transient upstream errors with repo sync state. Although\nretrying the update won\u0027t fix it all of the time, it\u0027s low cost enough\nto be worth a try before we totally give up.\n\nRelated-bug: 1286818\nChange-Id: I522ac0d0bd8f82dc98f386c89f66c2b743efa525\n"
    },
    {
      "commit": "d79a8acbb700886a24c5ed553d919d1a90385381",
      "tree": "825af89716bf64883eddc303d804454e902e5dad",
      "parents": [
        "ffeeea132796eac443928ac8f63bb54592a65d8f"
      ],
      "author": {
        "name": "Yves-Gwenael Bourhis",
        "email": "yves-gwenael.bourhis@cloudwatt.com",
        "time": "Mon Apr 14 14:49:07 2014 +0200"
      },
      "committer": {
        "name": "Yves-Gwenael Bourhis",
        "email": "yves-gwenael.bourhis@cloudwatt.com",
        "time": "Mon Apr 14 14:49:07 2014 +0200"
      },
      "message": "Fixed pip with http(s)_proxy\n\npip failed to insall packages with the http_proxy and https_proxy localrc\nenvironment variables. indeed, the case of the variables was uppercase\nand these variables are normally lowercase.\n\nChange-Id: I73054aafd353ccf53986f0ec05426f6a2c4e2240\nCloses-Bug: 1307492\n"
    },
    {
      "commit": "099e5e3f81233e2151f8645bc1ff6431eab9492b",
      "tree": "09205d40716ca185c11c79d97d948bb66758ba88",
      "parents": [
        "31f7475baffcca2742201918c8f3fe7b682c2193"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Mon Mar 31 10:35:43 2014 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Tue Apr 01 08:48:00 2014 -0400"
      },
      "message": "don\u0027t use pip -e install for libraries\n\nlibraries in openstack shouldn\u0027t be installed editable, as it\ncauses all manner of issues (especially complicated by the use\nof namespace packages). Install these globally as part of the\ndevstack installation process.\n\nChange-Id: I11acb169e74069be0618e57496ff342f9e788493\n"
    },
    {
      "commit": "539ec43882780194471b3cba9d5f3e230a50a60b",
      "tree": "f32436e90fc61690b5c4052e4acf449680de31da",
      "parents": [
        "871b1e47092a6463cb39be48c66bfe3e646920c2"
      ],
      "author": {
        "name": "Adam Gandelman",
        "email": "adamg@ubuntu.com",
        "time": "Tue Mar 18 18:57:43 2014 -0700"
      },
      "committer": {
        "name": "Adam Gandelman",
        "email": "adamg@ubuntu.com",
        "time": "Tue Mar 18 19:00:26 2014 -0700"
      },
      "message": "Parse Ironic packages files/{apts, rpms}/ironic\n\nWhen VIRT_DRIVER\u003dironic, make sure devstack picks up packages listed in its\nrespective packages file.  These were previously missed unless \"ironic\" was\nexplictly added to the enabled services.  This ensures required packages\nare installed for any of the ir-* services.\n\nChange-Id: I3d70009819a3a6933220cabd5a951a20c7b48849\n"
    },
    {
      "commit": "64bd01652e6fd7c593498b1fd2bf50bfdf64ce40",
      "tree": "9ac9d1f2f23d98194f46409c7d277f845f1916df",
      "parents": [
        "63d06bcad9b6716fc4c4f69d52a83ccd40d160b2"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Wed Mar 12 13:04:22 2014 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Wed Mar 12 13:04:22 2014 -0400"
      },
      "message": "make git_clone safer\n\nthe ensures that if the function returns early, we return to a\nsane directory, and not hang out somewhere that a future git\ncall might modify a directory in a weird way. This is especially\nimportant in the case of stable branches where were are hopping\nbetween stable for servers and master for clients.\n\nChange-Id: Ib8ebbc23b1813bc1bfb31d0a079f1b882135bd39\n"
    },
    {
      "commit": "3b1f2e4e885559957a939f8a260b4cff9938bc80",
      "tree": "692834105c7bda0d0a6d08f8bb1d10c482752cda",
      "parents": [
        "349394b0cfb858dfdea390a20ee80b333380b95e"
      ],
      "author": {
        "name": "YAMAMOTO Takashi",
        "email": "yamamoto@valinux.co.jp",
        "time": "Mon Feb 24 20:30:07 2014 +0900"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Tue Mar 11 07:34:17 2014 -0400"
      },
      "message": "Fix inverted conditionals in setup_develop\n\nThis fixes regressions introduced by:\n    Change-Id: Ic97e68348f46245b271567893b447fcedbd7bd6e\n    (\"Handle non-zero exit code from git diff\")\n\nChange-Id: I053a292c287f3035eef37db2264eda06a170f9bc\nCloses-Bug: 1287513\n"
    },
    {
      "commit": "b27f16d71660f75fcd82a035cdaf2b2eddec99ce",
      "tree": "c58360682901f545cd1c5a9b788ba0b884966b2d",
      "parents": [
        "0dfbf9b4b91c0b95fdaa1735471c2e6f15326098"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Feb 28 14:29:02 2014 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Mar 10 14:10:56 2014 +1100"
      },
      "message": "Detect missing packages with yum\n\nyum -y doesn\u0027t report an error when packages are missing (see [1] for\nupstream discussion).  Thus we run the output of yum through a small\nawk script looking for missing packages output.\n\nThe one change required for RHEL is that python-wsgiref is included in\nthe distro python, so doesn\u0027t need a separate package.\n\n[1] https://bugzilla.redhat.com/show_bug.cgi?id\u003d965567\n\nChange-Id: I9908ff4edbf2b0d961d25837a08a34e1417bbb02\n"
    },
    {
      "commit": "5894db323ff528c56bd036243ee15aad91e34fef",
      "tree": "4c6cdb2ebdbbee3efca8b0ee09936616e1226c53",
      "parents": [
        "f0ea4b0dda62e321c11078164d821575a17146c0",
        "d20f632a70565003ab8c72b2598201be79f4d782"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Sat Mar 01 13:11:14 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Sat Mar 01 13:11:14 2014 +0000"
      },
      "message": "Merge \"Move some comments of variables to right place\""
    },
    {
      "commit": "3208d7ad43d665536c523a37b33c2a6491529b3e",
      "tree": "0f4ebf4fe0c4b17f62bdccf4e0e35380c209c96a",
      "parents": [
        "2cf03d246998acf5c387a5855c36b25a1b791cb8",
        "83b6c99b503dced1e92761e1de8ceaf23a396453"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Fri Feb 28 17:30:35 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Fri Feb 28 17:30:35 2014 +0000"
      },
      "message": "Merge \"Handle non-zero exit code from git diff\""
    },
    {
      "commit": "2cf03d246998acf5c387a5855c36b25a1b791cb8",
      "tree": "d7bbf68d340108ee5fd7d4ba681539d1dc963c4d",
      "parents": [
        "f07a209ce01e2d34c3624244da040537b6006bf9",
        "1237922b655d8ab1690b88c718d7002415ce1201"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Fri Feb 28 07:33:42 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Fri Feb 28 07:33:42 2014 +0000"
      },
      "message": "Merge \"make service_check fatal\""
    },
    {
      "commit": "dad6e4114d07978ade5ab5594d4b5b19e998bdb5",
      "tree": "9c867402960f933ca6384a2b87d75ec954f9eba8",
      "parents": [
        "4b76faa32b21964dc72a055f65172199618edeee",
        "aee18c749b0e3a1a3a6907a33db76ae83b8d41d9"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Fri Feb 28 06:32:20 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Fri Feb 28 06:32:20 2014 +0000"
      },
      "message": "Merge \"Enforce function declaration format in bash8\""
    },
    {
      "commit": "d20f632a70565003ab8c72b2598201be79f4d782",
      "tree": "5df8b8c900b560e183822d4ae1337ba722096a12",
      "parents": [
        "3ac259c6856b0f8f7fb24b987f83868c86517396"
      ],
      "author": {
        "name": "Masayuki Igawa",
        "email": "igawa@mxs.nes.nec.co.jp",
        "time": "Fri Feb 28 09:22:37 2014 +0900"
      },
      "committer": {
        "name": "Masayuki Igawa",
        "email": "igawa@mxs.nes.nec.co.jp",
        "time": "Fri Feb 28 10:35:49 2014 +0900"
      },
      "message": "Move some comments of variables to right place\n\nsetup_develop*() in functions has been moved to functions-common. But\nsome comments about the variables are still left.\nThis commit moves it to the right place.\n\nChange-Id: Ic360454f1ee72f51c9979d0468dee0913e9b32e4\n"
    },
    {
      "commit": "a340d68b1b4d8572865c59d3c93ca8cb65a8c6d8",
      "tree": "a9271cfd95d68ecea1b6e36fab16882d9280e258",
      "parents": [
        "0ed4af02da0bd4a0f757dd8c2156913e6c7a724c",
        "f6368d3eaccc33d5afdbc53a34bf6e37b6e11eb8"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Feb 27 22:38:32 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Feb 27 22:38:33 2014 +0000"
      },
      "message": "Merge \"Fix comments about System Functions\""
    },
    {
      "commit": "1237922b655d8ab1690b88c718d7002415ce1201",
      "tree": "ebe5cb5086ced5a3c7c767c314408292882032c5",
      "parents": [
        "0ed4af02da0bd4a0f757dd8c2156913e6c7a724c"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Thu Feb 27 17:16:46 2014 -0500"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Thu Feb 27 17:16:46 2014 -0500"
      },
      "message": "make service_check fatal\n\nif we fail service check, we should do so in a fatal way, because\nsomething is not right. This will be very useful in grenade.\n\nChange-Id: I18811b0d8e6d06f364685c366cdc8f5dda3b8f7e\n"
    },
    {
      "commit": "aee18c749b0e3a1a3a6907a33db76ae83b8d41d9",
      "tree": "01a8ab5abb9867986f3e848918abd9e749b691cd",
      "parents": [
        "0ed4af02da0bd4a0f757dd8c2156913e6c7a724c"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Feb 21 15:35:08 2014 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Feb 28 07:59:03 2014 +1100"
      },
      "message": "Enforce function declaration format in bash8\n\nCheck that function calls look like ^function foo {$ in bash8, and fix\nall existing failures of that check.  Add a note to HACKING.rst\n\nChange-Id: Ic19eecb39e0b20273d1bcd551a42fe400d54e938\n"
    },
    {
      "commit": "83b6c99b503dced1e92761e1de8ceaf23a396453",
      "tree": "a07ccdccf2d154900e5068a6ca6df6416662fb88",
      "parents": [
        "003a6a3e1032d882aeff250d3098d48e1315ef1f"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Feb 27 12:41:28 2014 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Feb 27 12:41:32 2014 -0600"
      },
      "message": "Handle non-zero exit code from git diff\n\nThe check for a changed repo in setup_develop() \u0027git diff --exit-code\u0027\nreturns a status of 1 when the repo has changes; trap that so errexit\ndoes not abort the script.\n\nBug-Id: 1285780\nChange-Id: Ic97e68348f46245b271567893b447fcedbd7bd6e\n"
    },
    {
      "commit": "0ed4af02da0bd4a0f757dd8c2156913e6c7a724c",
      "tree": "4056ee5ee2cec8d7bc1f6ba03832421792f18403",
      "parents": [
        "003a6a3e1032d882aeff250d3098d48e1315ef1f",
        "09bd7c8fd5a662ef697eb61638efbe862a4875a6"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Feb 27 14:57:43 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Feb 27 14:57:43 2014 +0000"
      },
      "message": "Merge \"enable -o errexit\""
    },
    {
      "commit": "003a6a3e1032d882aeff250d3098d48e1315ef1f",
      "tree": "44393659e0f1978e01e8c9adde56800b1ddcdb29",
      "parents": [
        "52730e49e59803db3720d6e2d9ace1ec03d728bd",
        "af616d93411a9a446ce0d2e72ea4fb7d281cd940"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Feb 27 12:32:54 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Feb 27 12:32:54 2014 +0000"
      },
      "message": "Merge \"Move setup_develop() to common\""
    },
    {
      "commit": "09bd7c8fd5a662ef697eb61638efbe862a4875a6",
      "tree": "f23aece18c5b5f4e4f496f33e416f7a3bdfdc94c",
      "parents": [
        "a25a6f6d80cb844f13540fecf616b289c42e3ebe"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Mon Feb 03 08:35:26 2014 +0900"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Thu Feb 27 06:30:37 2014 -0500"
      },
      "message": "enable -o errexit\n\ndevstack should run under -o errexit to ensure that we fail early\nwhen something has gone wrong, otherwise determination of the root\nfailure location is often quite challenging.\n\nthis clears all the normal use cases for devstack, there could be\ntests which now die early, which we\u0027re going to have to check for\nlater.\n\nChange-Id: Ibd828c4f4fd95a60d3918d3d7ae90e10649479ab\n"
    },
    {
      "commit": "cf7237c505689055521a23d9ba4c18c116fec9c6",
      "tree": "e970de8c97fc6d8228d3b886882226e5874a2596",
      "parents": [
        "df43b5c8281d8abd73bd9753831e62ba154dc38b",
        "d53ad0b07d3e7bdd2668c2d3f1815d95d4b8f532"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Feb 27 04:31:40 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Feb 27 04:31:40 2014 +0000"
      },
      "message": "Merge \"Add GIT_TIMEOUT variable to watch git operations\""
    },
    {
      "commit": "a25a6f6d80cb844f13540fecf616b289c42e3ebe",
      "tree": "5a8d6536154d0faccc32477378e171f3bea42ded",
      "parents": [
        "ebd1321fcbbd3a010798a5bb1aaab523b078b385"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Feb 24 16:03:41 2014 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Feb 26 13:17:36 2014 -0600"
      },
      "message": "Unbuffer log output\n\n* Force-flush log output so we don\u0027t lose log output in certain error cases.\n* Slow down exit paths: add sleep to die(), wait until last moment to\n  kill child processes (including the awk log output filter)\n\nChange-Id: I1620fd33b89b237d9c2bb6206f3de2c81719f676\n"
    },
    {
      "commit": "45917cc4d941a530d75a84fa4dff738fe87f928b",
      "tree": "864d1991c2795949c6fc643c422fea6ee6a3d168",
      "parents": [
        "f1eb0475d9320875f1a6c4a9c398e9388350d206"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Mon Feb 24 16:09:14 2014 -0500"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Tue Feb 25 06:25:14 2014 -0500"
      },
      "message": "xtrace less\n\nwe are xtrace happy, however that\u0027s just generating bulk in log\nfiles that are mostly ignorable. For the basically bullet proof\nfunctions we should not xtrace.\n\nChange-Id: Iab4e6d270c1546e0db2a06395cefcdf7f7929c3c\n"
    },
    {
      "commit": "af616d93411a9a446ce0d2e72ea4fb7d281cd940",
      "tree": "73c5cf72c66d2a9c9c44f3a64dc7c9e4825a8917",
      "parents": [
        "4df996bcc6ffd0236576b81aaf50d09adc8042a1"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Feb 17 12:57:55 2014 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Feb 24 10:38:18 2014 -0600"
      },
      "message": "Move setup_develop() to common\n\nIt\u0027s in the wrong place for current Grenade\n\nChange-Id: Ia670198332af5945a56d708cd83d9239df0c2287\n"
    },
    {
      "commit": "d53ad0b07d3e7bdd2668c2d3f1815d95d4b8f532",
      "tree": "6d2ee0246583eb37ec60acc5c538a37ebb4a3989",
      "parents": [
        "535e0089e0656fd4fcaa36ad5abc3653a9a45ff0"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Feb 20 13:55:13 2014 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Feb 24 09:35:19 2014 +1100"
      },
      "message": "Add GIT_TIMEOUT variable to watch git operations\n\nDuring my CI testing of each devstack change I can often see git get\nitself stuck and hang indefinitely.  I\u0027m not sure if it\u0027s transient\nnetwork issues, or issues at the remote end (seen with both github.com\nand git.openstack.org) but it hits fairly frequently.  Retrying the\ncommand usually gets it going again.  Searching for \"git hanging\" and\nsimilar shows its not entirely uncommon...\n\nThis adds a watchdog timeout for remote git operations based on a new\nenvironment variable GIT_TIMEOUT.  It will retry 3 times before giving\nup.  The wrapper is applied to the main remote git calls.\n\nChange-Id: I5b0114ca26b7ac2f25993264f761cba9ec8c09e1\n"
    },
    {
      "commit": "f6368d3eaccc33d5afdbc53a34bf6e37b6e11eb8",
      "tree": "4dda49b8773031c1a9b81fd96e866af062be977e",
      "parents": [
        "4fa0401d3386b56f66efc50712463fbabdc8fc80"
      ],
      "author": {
        "name": "Masayuki Igawa",
        "email": "igawa@mxs.nes.nec.co.jp",
        "time": "Thu Feb 20 13:31:26 2014 +0900"
      },
      "committer": {
        "name": "Masayuki Igawa",
        "email": "igawa@mxs.nes.nec.co.jp",
        "time": "Thu Feb 20 13:34:28 2014 +0900"
      },
      "message": "Fix comments about System Functions\n\nThis commit fixes comments about \"System Functions\".\n * Add a missing comment about System Functions in the header\n * Fix singular to plural like others\n\nChange-Id: I3feb94cd11a6683ca80093574d60fdf7420e3af2\n"
    },
    {
      "commit": "abc7b1d765665b66a027fe93c841b62e537c7843",
      "tree": "9ef7a16dbcc1b9be32b528bdbcfdee504af77b45",
      "parents": [
        "dff49a242eef817efa23d4e808aaa6a74ac82ed0"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Feb 12 12:09:22 2014 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Feb 12 12:10:32 2014 -0600"
      },
      "message": "Backport Grenade updates\n\nBackport changes made in Grenade\u0027s copy of functions since the last sync:\n* d0654b9,i 4c7726e - get_release_name_from_branch()\n* 7907766 - edits to install_package()\n\nChange-Id: I0714c0b1072f1360c3c08fe24225e65e2a550fad\n"
    },
    {
      "commit": "dff49a242eef817efa23d4e808aaa6a74ac82ed0",
      "tree": "fee5ccd8ef9805ee1589fd58286ab37eeca8f041",
      "parents": [
        "cc3fcc8c8ebbe0a2cec43e7c6e0f96aae4949764"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Jan 30 15:37:40 2014 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Feb 12 12:10:11 2014 -0600"
      },
      "message": "Split functions\n\nMove shared and non-DevStack-specific functions to `functions-common`.  This is\na code move only with some updated comments.  The functions are now\nsorted alphabetically within function groups, eg. all git-related functions\nare grouped together.  The groups are listed at the top of the file.\n\n\u0027functions\u0027 sources \u0027functions-common\u0027 so no additional changes are required\nfor backward-compatability.\n\nAll functions shared with Grenade have also been moved.\n\nfunctions-common was created from commit e0ed8ea038299952826b27a16753775472f108d8\n\nChange-Id: I73bf7134fd6a60ec1ea44a5bfab08b0569b60ded\n"
    }
  ]
}
