)]}'
{
  "log": [
    {
      "commit": "5f953dd1fe45a60dd92356d744fac613df21e9bb",
      "tree": "7e9409a51e794908a19ed630ff00011256c8126a",
      "parents": [
        "d7af0fe7a61115709681f8dcfee34207199bfe7b",
        "63d25d978ba0a0cdb1b689cafcebdaae7d609e06"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Dec 11 14:26:10 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Dec 11 14:26:10 2014 +0000"
      },
      "message": "Merge \"Allow use of dnf instead of yum on Fedora\""
    },
    {
      "commit": "63d25d978ba0a0cdb1b689cafcebdaae7d609e06",
      "tree": "b611e4ad3ef4bdab0cd4a2a013a7bc7f6a8a9198",
      "parents": [
        "53aaf15af37c718af8b47d1d2ba0052a875faed7"
      ],
      "author": {
        "name": "Daniel P. Berrange",
        "email": "berrange@redhat.com",
        "time": "Tue Dec 09 15:21:22 2014 +0000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Dec 11 09:37:55 2014 +1100"
      },
      "message": "Allow use of dnf instead of yum on Fedora\n\nSince Fedora 20 it has been possible to use \u0027dnf\u0027 as a drop-in\nreplacement for \u0027yum\u0027, and it is targetted to become the default\nin Fedora 22\n\n   http://fedoraproject.org/wiki/Changes/ReplaceYumWithDNF\n\nThere are many benefits of \u0027dnf\u0027 over \u0027yum\u0027 but the biggest\nfrom the POV of an openstack developer is its speed.\n\nAssuming an existing running devstack install ie all required\nRPMs already installed on the system. Now look at how long it\ntakes to run stack.sh, during which yum does not have to\nactually install anything\n\n # ./unstack.sh\n # time ./stack.sh\n real 11m12.193s\n user 10m17.129s\n sys  0m15.275s\n\nNow, with \u0027export YUM\u003ddnf\u0027 set in local.conf, run the same\ntest again\n\n # ./unstack.sh\n # time ./stack.sh\n real 0m48.610s\n user 0m28.939s\n sys  0m7.801s\n\nSo, this is showing that devstack is wasting 10 minutes just\nfor yum to figure out that everything is already installed.\nThe overhead of yum vs dnf is even worse when yum has to\nacutally depsolve to install new packages.\n\nChange-Id: Ia01a5f330a47b32207586902a861bedfc8a0f6e2\n"
    },
    {
      "commit": "d09a1db5a449fc758bf840858f6fecba173705b3",
      "tree": "19f949a600c09109c306dd86ad830c474693bb58",
      "parents": [
        "3fe578d41d52577e6af4dc948287dfbc2eb06f46",
        "e263c82e48a431e502bd6baceb6dfcfdc1750cbb"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Dec 10 20:32:15 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Dec 10 20:32:15 2014 +0000"
      },
      "message": "Merge \"add shebang lines to all lib files\""
    },
    {
      "commit": "e263c82e48a431e502bd6baceb6dfcfdc1750cbb",
      "tree": "5ca592e668dedb4debc6c7170f3abf37cc4bc0c6",
      "parents": [
        "2f8e08b5728f4272b415b1c0aab8ff62eae29b06"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Fri Dec 05 14:25:28 2014 -0500"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Dec 10 11:28:05 2014 -0500"
      },
      "message": "add shebang lines to all lib files\n\nWith gerrit 2.8, and the new change screen, this will trigger syntax\nhighlighting in gerrit. Thus making reviewing code a lot nicer.\n\nChange-Id: Id238748417ffab53e02d59413dba66f61e724383\n"
    },
    {
      "commit": "245daa27da40cb94410c7a8f8f19961c21821231",
      "tree": "ff152c217668f14f157e83fb982a7329a158a914",
      "parents": [
        "7adfe91ca6d83cf91fcfc0642b62f5e69e9afa52"
      ],
      "author": {
        "name": "Steve Martinelli",
        "email": "stevemar@ca.ibm.com",
        "time": "Fri Nov 14 02:17:22 2014 -0500"
      },
      "committer": {
        "name": "Steve Martinelli",
        "email": "stevemar@ca.ibm.com",
        "time": "Sun Dec 07 21:20:38 2014 -0500"
      },
      "message": "Use --or-show for get_or_create_user/project/role function\n\nExploit the --or-show functionality of openstackclient,\nrather than issuing two different commands at the shell level,\nlet the CLI handle things.\n\nChange-Id: I1db239fd3473eb580def1c5fb28ce472a1363569\n"
    },
    {
      "commit": "81a016dbcd7bbf9fde791386fcc294fca0a59d71",
      "tree": "7e5afe9f11936865a10df3b66d8233be771013f5",
      "parents": [
        "dd69403ff4608f8fe2c50c71962aee042ae0c1fa"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Sat Nov 15 17:18:13 2014 -0300"
      },
      "committer": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Mon Nov 24 09:51:17 2014 -0500"
      },
      "message": "Rename apts to debs\n\napts aren\u0027t a thing, debs are. apt-get installs debs, like yum installs\nrpms. Another option would be to rename rpms to yums, but that is even\nsillier, considering then for suse we\u0027d have to call it \"zypper-suse\" or\nsomething, even though it would want to consume yums-general as a base.\n\nInclude a symlink to the old name to help out with grenade. The symlink\nshould go away later.\n\nThis is a long-standing annoyance of mine.\n\nRelated-to: I915f0e59c13d8cf5fb3549c6202f8aa2f8be0856\nChange-Id: I0416180db5b6add996ce5b48c6966c1b68adbcb0\n"
    },
    {
      "commit": "e08ab104e62da041fcc6b2aafba4349326f4a969",
      "tree": "859fc4953f6b45b75b9f4810ba0bf33477799f31",
      "parents": [
        "94f8bea9e4ff0434df1723cf269c4300a4373524"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Nov 13 17:09:28 2014 -0500"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Nov 13 17:17:38 2014 -0500"
      },
      "message": "fix python-* lib from git installation\n\nWe\u0027re using all the magic variables based on python-fooclient, however\nall the inline code was using fooclient for variables. So we had a\nmismatch, which was kindly pointed out by some of the 3rd party ci\ntesters.\n\nChange-Id: I27a56222c7e8e610fba8bf97672d2a42f5cf14ca\n"
    },
    {
      "commit": "8f8e2d1fbfa4c51f6b68a6967e330cd478f979ee",
      "tree": "da3ebb16087f2d2796bdb4fce0b95cc6acc83b37",
      "parents": [
        "51d203f5a09be804dab4870018b8a604075979d5",
        "5cb190697c1bce5dcd2ad843922813b0cc74bd24"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Nov 12 19:50:44 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Nov 12 19:50:44 2014 +0000"
      },
      "message": "Merge \"support installing clients at released versions\""
    },
    {
      "commit": "af81d672937fb4cefb7d723769af232cac714c22",
      "tree": "31a1f14fb30c30e412f32a401a7f43addc311949",
      "parents": [
        "e6165e80bab0c06035a0b7002200bcbcfe4e62ab"
      ],
      "author": {
        "name": "Attila Fazekas",
        "email": "afazekas@redhat.com",
        "time": "Mon Nov 10 09:04:54 2014 +0100"
      },
      "committer": {
        "name": "Attila Fazekas",
        "email": "afazekas@redhat.com",
        "time": "Mon Nov 10 09:04:54 2014 +0100"
      },
      "message": "Drop PIP_USE_MIRRORS environment variable\n\nThe PIP_USE_MIRRORS does not do anything else than adding\n the --use-mirrors option to the pip command line.\n\nThe --use-mirrors is deprecated since pip-1.5,\nand does not do anything else than printing a warning message.\n\nFor using alternate pypi index url this option is not required and\nnot sufficient. The current way for using alternate mirrors\nis to defining them in the .pip/pip.conf either manually (before\ndevstack), or by using the PYPI_ALTERNATIVE_URL and PYPI_OVERRIDE\nenvironment variables.\n\nChange-Id: Ia33e783360e5661c2ef03b77e9f7af32b2633f2f\n"
    },
    {
      "commit": "5cb190697c1bce5dcd2ad843922813b0cc74bd24",
      "tree": "ba87095ef1603c957902abadcb692ccf653e6f59",
      "parents": [
        "2d18b83600bf53df3a41aec619eee67328fe154f"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Sat Nov 01 01:37:45 2014 +0100"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Nov 04 10:18:58 2014 +0100"
      },
      "message": "support installing clients at released versions\n\nexpand the devstack support for libraries from released versions to\nsupport python-* clients and tempest_lib.\n\nDepends-On: I81b0d228e7769758c61e5b0323ecfce8c8886d39\n\nChange-Id: I26fac0ccf8fd4818e24618d56bf04b32306f88f6\n"
    },
    {
      "commit": "3073a93f6aa4105866d1f7b8d50a61584051f8c3",
      "tree": "586464a8a8e0d8f25ed790ba23255f76e21e0772",
      "parents": [
        "182c0c459dc6e420c0c5a1b2a14c078b926a484b",
        "5a91c3548370d3de856e5522f2d11775278115cf"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Mon Nov 03 12:11:15 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Mon Nov 03 12:11:15 2014 +0000"
      },
      "message": "Merge \"USe `trueorfalse` for INSTALL_TESTONLY_PACKAGES\""
    },
    {
      "commit": "5a91c3548370d3de856e5522f2d11775278115cf",
      "tree": "8f36015c312e9302101d82028064fc10d32c5a24",
      "parents": [
        "219a58e57bfab5d8071e636399963bd31d9eca2a"
      ],
      "author": {
        "name": "Flavio Percoco",
        "email": "flaper87@gmail.com",
        "time": "Fri Oct 31 18:48:00 2014 +0100"
      },
      "committer": {
        "name": "Flavio Percoco",
        "email": "flaper87@gmail.com",
        "time": "Fri Oct 31 18:48:00 2014 +0100"
      },
      "message": "USe `trueorfalse` for INSTALL_TESTONLY_PACKAGES\n\nINSTALL_TESTONLY_PACKAGES is assumed to be set to `True` or `False`.\nHowever, in devstack-gate this variable is set to 0 or 1. The patch uses\nthe already existing `trueorfalse` function to evaluate\nINSTALL_TESTONLY_PACKAGES and normalize its value.\n\nChange-Id: I0e4a31e422bad2a31d919d9f871e24833a0faa99\n"
    },
    {
      "commit": "292b2a7ee61f9b034230e8c99d2e5c7154dcf79b",
      "tree": "ce45a85e11f7e7ec0ad71e5466338f29229f1291",
      "parents": [
        "bd5263cd37bc3d451a4a1680ffb79b9f639a5e88"
      ],
      "author": {
        "name": "YAMAMOTO Takashi",
        "email": "yamamoto@valinux.co.jp",
        "time": "Fri Oct 31 13:48:58 2014 +0900"
      },
      "committer": {
        "name": "YAMAMOTO Takashi",
        "email": "yamamoto@valinux.co.jp",
        "time": "Fri Oct 31 14:29:17 2014 +0900"
      },
      "message": "Workaround openrc failure on zsh\n\nThe recent GIT_DEPTH change introduced a [[ ]] construct\nwhich doesn\u0027t work for zsh 5.0.2.  Workaround it by tweaking the test.\n\nThe following is a demonstration to show how zsh behaves:\n\n    % if [[ \"\" ]];then echo hoge;fi\n    zsh: parse error near `]]\u0027\n    % if [[ \"x\" ]];then echo hoge;fi\n    zsh: parse error near `]]\u0027\n    % if [[ -n \"\" ]];then echo hoge;fi\n    % if [[ -n \"x\" ]];then echo hoge;fi\n    hoge\n    %\n\nCloses-Bug: #1387943\nChange-Id: Ia88de876dacb3664a7c3d8f5a035e8e50fddb678\n"
    },
    {
      "commit": "483940350eaaeffe83f67ca5255a06fd7acf78ff",
      "tree": "c08407fd93a9021733dbb424ad6e4c2032c37e4e",
      "parents": [
        "33d079bcca031e3a02ae0107b20228fa618dca34",
        "def1534ce06409c4c70d6569ea6314a82897e28b"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Oct 29 19:08:03 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Oct 29 19:08:03 2014 +0000"
      },
      "message": "Merge \"allow for soft updating of global-requirements\""
    },
    {
      "commit": "3c92eb9b7fb844ab4ea760e1e444c65f412e4769",
      "tree": "ff862c470c02957e23a388029e32d51fde494811",
      "parents": [
        "7f55e0d36eeedff6230e005935cefcaff9179eac",
        "24779f65a675f2e78c09b2520ebefcd52b4f0be0"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Oct 28 03:16:03 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Oct 28 03:16:03 2014 +0000"
      },
      "message": "Merge \"Add swift user and project in non-default domain\""
    },
    {
      "commit": "def1534ce06409c4c70d6569ea6314a82897e28b",
      "tree": "6bc90ee54addedd9b2d9270ae48c36ec9f492ed6",
      "parents": [
        "ce1f133732e298eb1b5d0814d1670756493c2a32"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Mon Oct 27 12:26:04 2014 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Mon Oct 27 12:26:04 2014 -0400"
      },
      "message": "allow for soft updating of global-requirements\n\nThis creates a devstack REQUIREMENTS_MODE which is how we handle\nsyncing of global requirements. The default is \u0027strict\u0027, which is\ncurrent behavior. There is a new \u0027soft\u0027 mode which does a\n--soft-update for projects *not* found in projects.txt, which lets\nthem specify additional requirements.\n\nChange-Id: I4aa606514131b5dde67d87f5c8db5a3f3e50fc03\nDepends-On: I1f195ef9ff1509659848e14ec9936ff6f66a6496\n"
    },
    {
      "commit": "51f0de5c5d5aa779db0ed647804d7d9488a9122b",
      "tree": "861422e32a7025bfbe4f64899d52d1352e7b8d26",
      "parents": [
        "514c82030cf04da742d16582a23cc64962fdbda1"
      ],
      "author": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Mon Oct 20 16:32:34 2014 +0200"
      },
      "committer": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Fri Oct 24 10:24:13 2014 +0200"
      },
      "message": "Allow depth limiting git clones\n\nDepending on how you are using devstack you probably don\u0027t need the\nentire history of a project so we should allow people to specify a clone\ndepth to speed up the devstack process.\n\nChange-Id: I804a5abcc80f6a81e915c0bb4dceae72486441a7\nBlueprint: git-depth\n"
    },
    {
      "commit": "24779f65a675f2e78c09b2520ebefcd52b4f0be0",
      "tree": "bd4ce41a2e7d8aa1def79d9398a1beef2547aed6",
      "parents": [
        "572a4c4c3c5553beea01f519dbdcadfb9c6f78b7"
      ],
      "author": {
        "name": "Alistair Coles",
        "email": "alistair.coles@hp.com",
        "time": "Wed Oct 15 18:57:59 2014 +0100"
      },
      "committer": {
        "name": "Alistair Coles",
        "email": "alistair.coles@hp.com",
        "time": "Tue Oct 21 14:36:15 2014 +0100"
      },
      "message": "Add swift user and project in non-default domain\n\nSwift has functional tests that check access controls\nbetween users and projects in differing domains. Those tests\nare currently skipped by default since swift tests are\nconfigured to use keystone v2 API. In order for those\ntests to pass when using keystone v3 API, a user and\nproject must be setup in a non-default domain.\n\nThis patch creates a domain, and a user and project in\nthat domain, in support of swift functional tests moving\nto using keystone v3 API.\n\nChanges:\nlib/swift\n    - create a new domain, project and user for\n      swift testing\n    - add new project and user credentials to swift\n      test config file\n    - set correct identity service url in swift test\n      config file according to kesytone API version\n\nfunctions-common\n    - add function get_or_create_domain\n    - modify get_or_create_user and get_or_create_project\n      functions to optionally specify a domain\n\nChange-Id: I557de01bf196075f2f3adcdf4dd1b43756d8a0ae\n"
    },
    {
      "commit": "8543a0f763c1f4fcc3ca7e13efece54a0ff7fbb6",
      "tree": "40e56602096cd06f7e101639f7dac5c973902db4",
      "parents": [
        "22ec45e63a45bb38f63ca995446338859dacb207"
      ],
      "author": {
        "name": "Adam Gandelman",
        "email": "adamg@ubuntu.com",
        "time": "Thu Oct 16 17:42:33 2014 -0700"
      },
      "committer": {
        "name": "Adam Gandelman",
        "email": "adamg@ubuntu.com",
        "time": "Mon Oct 20 13:42:52 2014 -0700"
      },
      "message": "Make screen_service() useful for more than services\n\nscreen_service() can currently only be used to launch things that\npass the \u0027is_service_enabled\u0027 check, even though its calling functions\nwill have already done this.  This removes such check, renames it\nto screen_process() and updates its usage elsewhere.\n\nChange-Id: I480a4560a45b131a95c1b2d2d2379aeba542a9bc\n"
    },
    {
      "commit": "751ad1aadf8447c2b6945b6ae4ab73bf71a244ca",
      "tree": "dd29652859f3a425f8a7f2853149c157d743f6f4",
      "parents": [
        "ddfbacef9fd0bd64b38674524f7829b42ed08bbd"
      ],
      "author": {
        "name": "Robert Li",
        "email": "baoli@cisco.com",
        "time": "Wed Oct 15 21:40:53 2014 -0400"
      },
      "committer": {
        "name": "Robert Li",
        "email": "baoli@cisco.com",
        "time": "Wed Oct 15 21:44:31 2014 -0400"
      },
      "message": "Allow multi-line config items in meta-section of local.conf\n\nIt would behave such as the contents from each meta-section in\nlocal.conf is copied to the destination files. One exception is the multiline\noptions not grouped together. In that case, the contents will be grouped\ntogether in its destination config file.\n\nCheck tests/test_config.sh for examples.\n\nThis was originally committed in https://review.openstack.org/128805.\nBut the original change used AWK syntax that is not supported in AWK\n3.1.8, and caused syntax error on servers with that AWK version. This\npatch makes the necessary change so that it\u0027s compatible with AWK\n3.1.8.\n\nChange-Id: Id1e1fe01f05bd0f19ea6e89c4f4c0f8be695dfce\nPartial-Bug: #1374118\n"
    },
    {
      "commit": "ddfbacef9fd0bd64b38674524f7829b42ed08bbd",
      "tree": "e581449c0f8059530f4f7f4648392f5810305b3b",
      "parents": [
        "e0d6a46b8afaeacc070a84f58ecf8e03ffe8275c",
        "8f38572588af308d433a3bd7fbd93163348d98d3"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Oct 15 22:02:08 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Oct 15 22:02:08 2014 +0000"
      },
      "message": "Merge \"support proposed/* branches\""
    },
    {
      "commit": "8f38572588af308d433a3bd7fbd93163348d98d3",
      "tree": "c504ae3d743b3b40408bdb5880512c0a6d72027b",
      "parents": [
        "e9c70ab4097cd8d1991a893811dbd862ee001f10"
      ],
      "author": {
        "name": "Adam Gandelman",
        "email": "adamg@ubuntu.com",
        "time": "Tue Oct 14 15:50:18 2014 -0700"
      },
      "committer": {
        "name": "Adam Gandelman",
        "email": "adamg@ubuntu.com",
        "time": "Tue Oct 14 15:51:56 2014 -0700"
      },
      "message": "support proposed/* branches\n\nProvide support for named proposed branches for selection logic\n\nThis syncs the get_release_name_from_branch() function from grenade.\n\nChange-Id: I1adabf07cdc3ea6863cd30d8b6454fb40fc20288\n"
    },
    {
      "commit": "a7eb07a3e22eb0362b28cec4bd289201a9adf699",
      "tree": "f71ea7688ba146a393e4e17acfecf2592a486cef",
      "parents": [
        "e9c70ab4097cd8d1991a893811dbd862ee001f10"
      ],
      "author": {
        "name": "Kevin Benton",
        "email": "blak111@gmail.com",
        "time": "Tue Oct 14 04:35:59 2014 -0700"
      },
      "committer": {
        "name": "Kevin Benton",
        "email": "blak111@gmail.com",
        "time": "Tue Oct 14 04:38:56 2014 -0700"
      },
      "message": "Revert \"Allow multi-line config items in meta-section of local.conf\"\n\nThis reverts commit 6ff21acf4c4d4ef08bbef419ba582cade4da8da7.\n\nThis commit has broken config options with colons in them.\nThe following is a sample configuration that no longer works:\n\n[[post-config|/etc/neutron/plugins/ml2/ml2_conf.ini]]\n[restproxy]\nserver_ssl\u003dFalse\nservers\u003d10.211.1.9:80\nserver_ssl\u003dFalse\n\nWith the above config and the code present that this reverts,\nthe \u0027servers\u0027 option will come out blank.\n\nChange-Id: I328852d2d941605051a1bf5eaf0f7674191f8c48\n"
    },
    {
      "commit": "6ff21acf4c4d4ef08bbef419ba582cade4da8da7",
      "tree": "b5acb9e70c03cb15be733339b742f3bf9d10ae87",
      "parents": [
        "cc87c2871dc436b2134f60e9fa4663723a094ebd"
      ],
      "author": {
        "name": "Robert Li",
        "email": "baoli@cisco.com",
        "time": "Fri Oct 10 12:43:05 2014 -0400"
      },
      "committer": {
        "name": "Robert Li",
        "email": "baoli@cisco.com",
        "time": "Fri Oct 10 12:53:24 2014 -0400"
      },
      "message": "Allow multi-line config items in meta-section of local.conf\n\nIt would behave such as the contents from each meta-section in\nlocal.conf is copied to the destination files. One exception is the multiline\noptions not grouped together. In that case, the contents will be grouped\ntogether in its destination config file.\n\nCheck tests/test_config.sh for examples.\n\nChange-Id: I8c046b558eeb98ed221f6f1a59182d4179956ced\nPartial-Bug: #1374118\n"
    },
    {
      "commit": "e5dbec252aac0ca665696a5b69267f13882478c2",
      "tree": "7a7fc675e9c6ef6cd725b7136ab68836d438ef7c",
      "parents": [
        "f33e76bf9bd9a3bc39e8b3b99257a4ae98a10d25",
        "3324f19f5aeb3c8933447752dbc2c1b8c7f9b2de"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Oct 08 22:14:51 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Oct 08 22:14:51 2014 +0000"
      },
      "message": "Merge \"Fix docs build errors\""
    },
    {
      "commit": "39ceb484a49234147ce6670a542e2bd20ceb369f",
      "tree": "5eff7a9ab976e859f965cb61ee02cfb3c0dec4f7",
      "parents": [
        "24516d04fb6d0b3a5213e9d962fdf307e6a38d55",
        "944b28280b86bba7592b1c7a2032dbd0eaa39014"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Sat Oct 04 09:25:47 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Sat Oct 04 09:25:47 2014 +0000"
      },
      "message": "Merge \"Drop workaround for pip \u003c 1.4\""
    },
    {
      "commit": "5e02da7c8442688e0c51872e9e1e35dd61589c73",
      "tree": "606039281b68e92aa3dc70c51d8e73cf900d195b",
      "parents": [
        "38aad4cfd7a9a2143a338ecebc1f847d760df7e8",
        "cc52406a7843367c42e276b85cb9e73e4c525d51"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Fri Oct 03 01:38:35 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Fri Oct 03 01:38:36 2014 +0000"
      },
      "message": "Merge \"use released library versions by default\""
    },
    {
      "commit": "3324f19f5aeb3c8933447752dbc2c1b8c7f9b2de",
      "tree": "84248dfdde0ce32a415c565db32dcb04776ea51e",
      "parents": [
        "7672ad1dbc00ec5ff80f3aa670404e413e86e506"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Sep 18 09:26:39 2014 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Oct 02 15:30:50 2014 -0500"
      },
      "message": "Fix docs build errors\n\nFix shocco errors during docs generation\n\nCloses-Bug: 1362691\nChange-Id: I2b7fb008c89f0b4e7280b2d0a054320765e83e47\n"
    },
    {
      "commit": "944b28280b86bba7592b1c7a2032dbd0eaa39014",
      "tree": "536f4a12c918cdef4077be75d032270244966ae3",
      "parents": [
        "c53e83601a4ffc572ae99b3a4f330a940066cc1d"
      ],
      "author": {
        "name": "Joe Gordon",
        "email": "joe.gordon0@gmail.com",
        "time": "Wed Oct 01 18:21:08 2014 -0700"
      },
      "committer": {
        "name": "Joe Gordon",
        "email": "joe.gordon0@gmail.com",
        "time": "Wed Oct 01 19:52:23 2014 -0700"
      },
      "message": "Drop workaround for pip \u003c 1.4\n\nNow that we are on pip 1.5.6 lets drop the workaround to make pip 1.4\nwork. As this is a development/testing tool requiring a newer pip\nshouldn\u0027t be an issue. Also stack.sh installs pip by default.\n\nWork around introduced in https://github.com/pypa/pip/issues/709\n\nChange-Id: I0e7aad1d21f4fce4c020ce36685bb56893c66bdc\n"
    },
    {
      "commit": "cc52406a7843367c42e276b85cb9e73e4c525d51",
      "tree": "04ed2b376d34c6849aff19671a51914362d9b509",
      "parents": [
        "8e087fa83b1a1b1a2cdbae6f855c9d742e5650f5"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Oct 01 09:06:43 2014 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Oct 01 16:20:22 2014 -0400"
      },
      "message": "use released library versions by default\n\nThis patch provides a new path for installing libraries in devstack so\nthat it\u0027s possible to either test with upstream released libraries, or\nwith git versions of individual libraries.\n\nLibraries are added by name to 3 associative arrays GITREPO,\nGITBRANCH, GITDIR. When we get to the library install phase we inspect\nLIBS_FROM_GIT and look for libraries by name (i.e. \"oslo.config\") and\nif they exist we\u0027ll clone and install those libraries from\ngit. Otherwise we won\u0027t, and just let pip pull them as dependencies\nwhen it needs them.\n\nThis patch provides the conversion of the oslo libraries, including\npbr.\n\nDevstack-gate jobs for these libraries will need to change to support\nactually forward testing their content.\n\nChange-Id: I6161fa3194dbe8fbc25b6ee0e2fe3cc722a1cea4\n"
    },
    {
      "commit": "c53e83601a4ffc572ae99b3a4f330a940066cc1d",
      "tree": "2ef16df0bf235d51d895fb232947551464a6d4e5",
      "parents": [
        "8e087fa83b1a1b1a2cdbae6f855c9d742e5650f5"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Sep 30 22:37:52 2014 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Sep 30 22:37:52 2014 -0400"
      },
      "message": "remove deprecated pip option\n\n--build is a deprecated option in pip, remove it\n\nChange-Id: I8cb5f570431dcbd3389cd3b8d54d9ef40aa66dee\n"
    },
    {
      "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"
    }
  ]
}
