)]}'
{
  "log": [
    {
      "commit": "bacfb94390e0680fac13cb7f7236b9d5d0e89b89",
      "tree": "81b31280be69731159e6edd8fb50f6224f01da5f",
      "parents": [
        "fc2919ffdfe360f05ac7be7b35bdb3c9305acebb"
      ],
      "author": {
        "name": "Armando Migliaccio",
        "email": "armamig@gmail.com",
        "time": "Mon Mar 20 22:27:20 2017 -0700"
      },
      "committer": {
        "name": "Armando Migliaccio",
        "email": "armamig@gmail.com",
        "time": "Mon Mar 20 22:33:56 2017 -0700"
      },
      "message": "Enable openSUSE to work in Python 3.x environments\n\nAdd packages required to run devstack with USE_PYTHON3\u003dTrue.\n\nChange-Id: Iee43c9335bd82c10cfaeffb02d1d99290c34bb83\n"
    },
    {
      "commit": "6523d6e09789076d0a430bf7b608511fcb1c406a",
      "tree": "d96213973217dd7ff0611091f6facdced64a31ce",
      "parents": [
        "73a3e2decd2e7d9fd652fb40c4e697794d9abd05",
        "afef8bf097356d7bb37c57d0daa44653c7905c17"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Mar 08 13:31:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Mar 08 13:31:57 2017 +0000"
      },
      "message": "Merge \"Make declared variables global\""
    },
    {
      "commit": "afef8bf097356d7bb37c57d0daa44653c7905c17",
      "tree": "0aa5c440428469fa0160285cab3ca6e5573135b2",
      "parents": [
        "6f23555c959ce2a121d57c27a7460815808ac2b6"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Mon Mar 06 14:07:23 2017 -0500"
      },
      "committer": {
        "name": "John L. Villalovos",
        "email": "john.l.villalovos@intel.com",
        "time": "Tue Mar 07 22:07:29 2017 -0800"
      },
      "message": "Make declared variables global\n\nWhen variables use the \u0027declare\u0027 directive, it is by default a local\nvariable. While other variables have global scope.\n\nFor example:\n   declare -A AN_ARRAY   # local in scope\n   foo\u003d1                 # global in scope\n\nThis causes errors to occur as some of the variables will be local only\nand others will be global.\n\nUpdate the code, as appropriate, so that variables using the \u0027declare\u0027\ndirective also include the \u0027-g\u0027 flag to have them also be global. Not\nevery instance of a declared variable has been updated.\n\nCloses-Bug: #1669509\nCo-Authored-By: John L. Villalovos \u003cjohn.l.villalovos@intel.com\u003e\nChange-Id: I2180b68fe861ad19c6d4ec0df0f9f8a528347862\n"
    },
    {
      "commit": "0e1e78117e63af1d55b969469642a7337c616aa0",
      "tree": "4efb0f0a7b4b8980ce46f59b9889cf525b6f60a7",
      "parents": [
        "259c5e19a72dfab893446275bf7d26b92d63ca5b",
        "a2eb89417fbb6d61526b1819cbe3d0a60537eedd"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Feb 28 16:37:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Feb 28 16:37:49 2017 +0000"
      },
      "message": "Merge \"install LIBS_FROM_GIT using python 2 and 3 where appropriate\""
    },
    {
      "commit": "259c5e19a72dfab893446275bf7d26b92d63ca5b",
      "tree": "87fe17bcae6dfc5f62daa1d546cfd7eb9c806a0a",
      "parents": [
        "d81e422722d8fba76df2c9a7638892c08fe5c7bb",
        "94129c7d02902e0f000c09c8245be341df1c5965"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Feb 28 16:37:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Feb 28 16:37:20 2017 +0000"
      },
      "message": "Merge \"allow config to manage python3 use explicitly\""
    },
    {
      "commit": "f80e2cfee85a200ba204ac00bada74695abcd964",
      "tree": "00dd1ee9922f85dbc032e8be6959fd415c7e1478",
      "parents": [
        "eb9d42b65c8dbbe531e8124b442f13db5dff2993"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jan 18 15:42:32 2017 -0500"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jan 18 15:42:53 2017 -0500"
      },
      "message": "add install_devstack_tools\n\nAn initial install for devstack-tools, this will need to use all the\nfun pip extra variables for installation, however the current\npip_install always prefers python2, and we only want to do python3\nhere.\n\nChange-Id: I3dcdb35130f76fad81cb7b0d4001b7e96efbbd84\n"
    },
    {
      "commit": "a2eb89417fbb6d61526b1819cbe3d0a60537eedd",
      "tree": "bf3d868fefff195b8e1e62792c194a04cd279ddf",
      "parents": [
        "94129c7d02902e0f000c09c8245be341df1c5965"
      ],
      "author": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Mon Jan 09 22:11:49 2017 +0000"
      },
      "committer": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Tue Jan 10 16:08:43 2017 +0000"
      },
      "message": "install LIBS_FROM_GIT using python 2 and 3 where appropriate\n\nWhen installing a library from source and python 3 is enabled, first run\nthe installation process with python 2 enabled to ensure the library is\nalso installed under python 2 for any services not yet running under\n3. The python 3 version is installed second so that command line tools\ninstalled with libraries are installed under python 3 when python 3 is\nenabled.\n\nChange-Id: Ibb0f7a68d21081bf7652a0c1515080c0c54888ca\nSigned-off-by: Doug Hellmann \u003cdoug@doughellmann.com\u003e\n"
    },
    {
      "commit": "94129c7d02902e0f000c09c8245be341df1c5965",
      "tree": "731f84b7edfcc48ff2a7f8a229a233a9a17b1b0a",
      "parents": [
        "858a105c81f1571825d086d359ca7538079072fb"
      ],
      "author": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Mon Jan 09 21:24:24 2017 +0000"
      },
      "committer": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Tue Jan 10 16:08:14 2017 +0000"
      },
      "message": "allow config to manage python3 use explicitly\n\nAdd variables ENABLED_PYTHON3_PACKAGES and DISABLED_PYTHON3_PACKAGES to\nwork like ENABLED_SERVICES and DISABLED_SERVICES and to manage which\npackages are installed using Python 3. Move the list of whitelisted\npackages in pip_install to the default for ENABLED_PYTHON3_PACKAGES,\nexcept swift which is not enabled by default for now.\n\nAdd enable_python3_package and disable_python3_package functions to make\nediting the variables from local.conf easier.\n\nAdd python3_enabled_for and python3_disabled_for functions to check the\nsettings against packages being installed by pip.\n\nUpdate pip_install to check if python3 is disabled for a service, then\nsee if it is explicitly enabled, and only then fall back to looking at\nthe classifiers in the packaging metadata.\n\nUpdate pip_install messages to give more detail about why the choice\nbetween python 2 and 3 is being made for a given package.\n\nChange-Id: I69857d4e11f4767928614a3b637c894bcd03491f\nSigned-off-by: Doug Hellmann \u003cdoug@doughellmann.com\u003e\n"
    },
    {
      "commit": "52b10746154d57c067b152009bbc13024c2951d9",
      "tree": "5d41a7642cc8c66b8e7152f30210b3f13c74dc9e",
      "parents": [
        "72bfe17b6ae633edb4dc02dc72691faf4649d08c"
      ],
      "author": {
        "name": "Mehdi Abaakouk",
        "email": "sileht@redhat.com",
        "time": "Thu Dec 01 16:11:17 2016 +0100"
      },
      "committer": {
        "name": "Mehdi Abaakouk",
        "email": "sileht@redhat.com",
        "time": "Wed Jan 04 10:21:29 2017 +0100"
      },
      "message": "cinder: configure dlm when this one is zookeeper\n\nPrevious this was set the zake, but that was revert to missing\ndependencies issue and because zake is a test fixture and not somthing\nto deploy.\n\nThis change configures the Cinder dlm with this one is zookeeper.\nAnd it installs tooz and the extra dependencies needed for the\nzookeeper driver.\n\nTo do it, this commit have to introduce a new method for package\ninstallation: \u0027pip_install_gr_extras package extra1,extra2\u0027.\n\nChange-Id: Idca310c08e345db59840eb31434c6cb1f849fa70\n"
    },
    {
      "commit": "0c0d848b8ce151c72b21114ac741508351a0bf37",
      "tree": "b4d49ea660b345035de9651f2baadaa8526227d8",
      "parents": [
        "afa8a00c14f100cf610ac076f07db2379cfcee20"
      ],
      "author": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Tue Jan 03 08:52:25 2017 -0500"
      },
      "committer": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Tue Jan 03 08:52:28 2017 -0500"
      },
      "message": "Add swift and uwsgi to py35 whitelist\n\nReally close to getting swift and keystone under uwsgi working, so\nlet\u0027s white list them. Won\u0027t affect any existing jobs, so we should\nbe good.\n\nChange-Id: I51d56d16a5b175bd45dee09edc0b2748d72a5d06\n"
    },
    {
      "commit": "afa8a00c14f100cf610ac076f07db2379cfcee20",
      "tree": "d4136642c135cfb9ba5fe01dc30fdb1230d32a7e",
      "parents": [
        "29890549929b4f2ab9dd5c96d0a857708c683997"
      ],
      "author": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Mon Dec 19 09:51:01 2016 -0500"
      },
      "committer": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Fri Dec 23 13:15:03 2016 -0500"
      },
      "message": "Switch to python 3.5\n\nUse trueorfalse to normalize the values for USE_PYTHON3\n\nInstall 3.5 instead of 3.4 When USE_PYTHON3 is specified.\nAlso, since not many packages are classified correctly, fallback\nto looking for just \"Programming Language :: Python :: 3\" and\nlog a message for the package to highlight the problem.\n\nAlso special case some services that are *almost* ready\n\nDepends-On: Id48e1b328230fcdf97ed1cb4b97f4c3f9cf6eb8a\nDepends-On: Ib7d9aa0e0b74a936002e0eea0b3af05102b06a62\nChange-Id: I243ea4b76f0d5ef57a03b5b0798a05468ee6de9b\n"
    },
    {
      "commit": "0a099763b022ce476f921c8a4bc2ea20ce5f67b4",
      "tree": "2ebf715f41fed72d8dfa6b68368888ae398247a1",
      "parents": [
        "e56318f9bc87b0ed0e1ce6fcd1216aebe3689fe8"
      ],
      "author": {
        "name": "Lubosz \"diltram\" Kosnik",
        "email": "diltram@gmail.com",
        "time": "Wed Aug 03 10:21:41 2016 -0500"
      },
      "committer": {
        "name": "Lubosz \"diltram\" Kosnik",
        "email": "diltram@gmail.com",
        "time": "Wed Aug 03 10:21:41 2016 -0500"
      },
      "message": "Change python version to 3.5\n\nOn Ubuntu Xenial there is no way to install python3.4\nUse value specified in PYTHON3_VERSION\n\nChange-Id: Ibc69b1c8270bdd240c82cf2acfdfd0730ef0f182\n"
    },
    {
      "commit": "88ccd47c88dc39b8d746afae89dea31d46558a68",
      "tree": "fead6219e57bdb10c32d8b59c5334c805f2995e9",
      "parents": [
        "5c9c54b1ff50f7339e9f958bf053232b0c26f24e"
      ],
      "author": {
        "name": "Spyros Trigazis",
        "email": "strigazi@gmail.com",
        "time": "Sun Jul 24 22:13:57 2016 +0200"
      },
      "committer": {
        "name": "Spyros Trigazis",
        "email": "strigazi@gmail.com",
        "time": "Mon Jul 25 14:31:51 2016 +0200"
      },
      "message": "Keep old behavior of setuptools for editable installs\n\nIn the 25.0.0 release [1] of setuptools during any install\noperation the package in not overwritten. If a package is\ninstalled from another requirement via pip and then it is\ninstalled again from git, it is not updated causing\ncheck_libs_from_git to fail.\n\n[1] https://setuptools.readthedocs.io/en/latest/history.html#v25-0-0\n\nChange-Id: Ibaa1d4157816ea649f4452756fbde25951347001\nCloses-Bug: #1605998\n"
    },
    {
      "commit": "46f8cb7f208d00f89863cf57f2400309cf8f6bd4",
      "tree": "c5515957862bc7cdf5995cb33ca6af01a571db3d",
      "parents": [
        "18534b2805af27fd428fe874525e6dbb1920e373"
      ],
      "author": {
        "name": "Marc Koderer",
        "email": "marc@koderer.com",
        "time": "Fri May 13 09:08:16 2016 +0200"
      },
      "committer": {
        "name": "Marc Koderer",
        "email": "marc@koderer.com",
        "time": "Tue May 17 08:57:39 2016 +0200"
      },
      "message": "Add option to download all libs from git\n\nFor client debugging that invokes multiple libs it can be useful\nto have all libs directly in git and not listing all of them\nin LIBS_FROM_GIT.\n\nTrivialFix\n\nChange-Id: Ie631cc4045231ebbe8177d2d113e47e4bf83f61c\n"
    },
    {
      "commit": "c8c1c615f2bf63e6a1ad9be70a340058bd813919",
      "tree": "b0a6e0905759762fdc29d07454919b605bf284a1",
      "parents": [
        "0a2a7ae8471575d887a19b9bf8b7375ea1fd7f45"
      ],
      "author": {
        "name": "YAMAMOTO Takashi",
        "email": "yamamoto@midokura.com",
        "time": "Tue Mar 22 14:29:47 2016 +0900"
      },
      "committer": {
        "name": "YAMAMOTO Takashi",
        "email": "yamamoto@midokura.com",
        "time": "Tue Mar 22 21:23:23 2016 +0900"
      },
      "message": "Normalize path for upper-constraints\n\nIt seems pip distinguishes paths with .. or extra / for constraints.\nFor example, the following directories are considered different.\n\n    /path/to/dir\n    /path/to//dir\n    /path/to/dir/subdir/..\n\nThis commit tries to normalize the given directory name to avoid\n\"Could not satisfy constraints for \u0027xxxx\u0027: installation from path\nor url cannot be constrained to a version\" error due to directory\nname mismatch.\n\nReference: https://github.com/pypa/pip/pull/3582\nCloses-Bug: #1542545\nChange-Id: Iae9d58c27d3b10bca16e4a471507c4d5c16439a0\n"
    },
    {
      "commit": "c615993fe16902bfc1ac91cad7da34084c77ed99",
      "tree": "6e9a5a65c0561d95b42d8586f3dd1a1b00090453",
      "parents": [
        "535fcd008eee7ec5d11f8d788f7d48514db56bfb",
        "0842b8147f098106b679cf652edbcb5ea4330f04"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Jan 06 20:17:12 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Jan 06 20:17:12 2016 +0000"
      },
      "message": "Merge \"Support extra dependencies when setup_develop\""
    },
    {
      "commit": "0842b8147f098106b679cf652edbcb5ea4330f04",
      "tree": "c1a9d4baee12f1d51b8a07a4c111c1bab492f8b5",
      "parents": [
        "e60d52c392098192b6c666cb345c50a9a4842d1b"
      ],
      "author": {
        "name": "Brant Knudson",
        "email": "bknudson@us.ibm.com",
        "time": "Mon Aug 03 13:31:25 2015 -0500"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Jan 05 07:41:19 2016 -0500"
      },
      "message": "Support extra dependencies when setup_develop\n\nRecent pip supports using [extras] to install extra dependencies\nfrom the project setup.cfg. Add support so that projects can take\nadvantage of it.\n\nFor example, if devstack is configured to use ldap, install the\nextra ldap dependencies using:\n\n setup_develop $KEYSTONE_DIR ldap\n\nPartial-Bug: 1479962\nChange-Id: Ic13d95b99aaa4d3854b2723343e90f5de6b98aa2\n"
    },
    {
      "commit": "e208d060e17e2ad622c7b06cd90baed0eeed89f8",
      "tree": "da018a768b076a2d5938af9c36ae1748c6a713b3",
      "parents": [
        "7bd9ca8a3be6aeb50bffdce48b220615b1297f79"
      ],
      "author": {
        "name": "Federico Ressi",
        "email": "federico.ressi@intel.com",
        "time": "Sat Nov 21 11:15:39 2015 +0000"
      },
      "committer": {
        "name": "Federico Ressi",
        "email": "federico.ressi@intel.com",
        "time": "Tue Jan 05 08:21:05 2016 +0000"
      },
      "message": "Preserve result returned by apt-get and pip\n\nChange I855ffe9c7a75e9943106af0f70cf715c34ae25c5 and\nI368fec44858bd97fc6a314fb20eed2b10932cbb1 added timing\ninfrastructure which hides the return value of\nthe main commands.  Restore the prior behaviour.\n\nChange-Id: I4a536abefa7824ac6d42e7bbbf1079d9cc055984\nCloses-Bug: #1518545\n"
    },
    {
      "commit": "ddc3839bdc7ff73f6224273605db10fd88cd60df",
      "tree": "0d00622ab7f5b0e4ae8e2832a208237b19e1d318",
      "parents": [
        "b889294af7aa1ccf613da28fb08f547306e0f581"
      ],
      "author": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Thu May 07 21:06:24 2015 +0000"
      },
      "committer": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Tue Dec 01 14:52:35 2015 -0500"
      },
      "message": "Enable optional Python 3 support\n\nAdd USE_PYTHON3 and PYTHON3_VERSION variables to allow services to use\npython 3 if they indicate support in their python package metadata.\n\nTested in Heat here -\u003e I837c2fba682ab430d50e9f43913f2fed20325a7a.\nProject config change to add a dedicated job to Heat is here -\u003e I0837e62d6ccc66397a5e409f0961edd4be31f467\n\nChange-Id: I079e18b58b214bf8362945c253d6d894ca8b1a6b\n"
    },
    {
      "commit": "5509ed579773bf1a69bc5fb406a206a6da010c56",
      "tree": "d06172fadcae6f52ec4316b8ec578e0ee5c48093",
      "parents": [
        "bf81732b129675d667d2285859f32db16ef5e2f5"
      ],
      "author": {
        "name": "Atsushi SAKAI",
        "email": "sakaia@jp.fujitsu.com",
        "time": "Mon Nov 30 20:20:21 2015 +0900"
      },
      "committer": {
        "name": "Atsushi SAKAI",
        "email": "sakaia@jp.fujitsu.com",
        "time": "Mon Nov 30 20:25:17 2015 +0900"
      },
      "message": "Fix comment typos in inc/ and tests/ directories\n\nvalu3 \u003d\u003e value3\nenviromnet \u003d\u003e environment\ndirecotry \u003d\u003e directory\nvirualenv \u003d\u003e virtualenv\neditiable \u003d\u003e editable\nenvirnment \u003d\u003e environment\n\nChange-Id: I97fb2d44a37b16d02d4fbdb08bfa33414349f651\n"
    },
    {
      "commit": "d111182f218094dfdd88bda63af024c0c6e5d8cd",
      "tree": "6efbaec54afc4965767c187b5743c25b8346f438",
      "parents": [
        "5a98d4f7d0a1cf00f2aca9e0f3f6cdc285c1ee79",
        "ada886dd43ccc07f48d3a82d8d3d840fe5096c03"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Oct 14 02:43:52 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Oct 14 02:43:52 2015 +0000"
      },
      "message": "Merge \"Don\u0027t mix declaration and set of locals\""
    },
    {
      "commit": "cb658fab15dbf8074038bc76fc54ec4afccf5716",
      "tree": "f84e5354076c802cfe5801a5600529e5d03e3fa5",
      "parents": [
        "95c33d532f5d69516c0fbe123595f00f00792995"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Oct 08 17:12:03 2015 -0400"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Oct 12 23:10:09 2015 +0000"
      },
      "message": "add pip install timing\n\nChange-Id: I368fec44858bd97fc6a314fb20eed2b10932cbb1\n"
    },
    {
      "commit": "ada886dd43ccc07f48d3a82d8d3d840fe5096c03",
      "tree": "93d62f1c82edc08d813b7f9f7eb9270e7024e055",
      "parents": [
        "433a9b10ddd6fa67d7459c4943a92ce4f488cebc"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 14:06:26 2015 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 17:03:32 2015 +1100"
      },
      "message": "Don\u0027t mix declaration and set of locals\n\nIa0957b47187c3dcadd46154b17022c4213781112 proposes to have bashate\nfind instances of setting a local value.  The issue is that \"local\"\nalways returns 0, thus hiding any failure in the commands running to\nset the variable.\n\nThis is an automated replacement of such instances\n\nDepends-On: I676c805e8f0401f75cc5367eee83b3d880cdef81\nChange-Id: I9c8912a8fd596535589b207d7fc553b9d951d3fe\n"
    },
    {
      "commit": "433a9b10ddd6fa67d7459c4943a92ce4f488cebc",
      "tree": "4db530838dadc2fc4e1e4ae4d37c6213f747919c",
      "parents": [
        "561137e88a513f1c1e1cc9f08b7d3bd909702282"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 13:29:31 2015 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 16:54:29 2015 +1100"
      },
      "message": "Don\u0027t set xtrace directly in local call\n\nIa0957b47187c3dcadd46154b17022c4213781112 detects setting local\nvariables with subshell commands.\n\nAlthough this is a particuarly benign case, it trips the test.  Rather\nthan putting in an ignore for this, we can easily change it to make\nthe test pass.  This seems better than putting in special work-arounds\nto bashate, etc.\n\nChange-Id: I37c3967c0f2d780a636a7d26cda83755085c5c69\n"
    },
    {
      "commit": "713fd2f6c644e13ed8ad7e8d819f6a3d44ff5370",
      "tree": "075349bcd6fad0d3b704d0b408cc992b313c7ea1",
      "parents": [
        "767c7298332d1275110ea983c2b9d4b228cbd2c9"
      ],
      "author": {
        "name": "Sirushti Murugesan",
        "email": "sirushti.murugesan@hp.com",
        "time": "Wed Sep 30 15:12:50 2015 +0530"
      },
      "committer": {
        "name": "Sirushti Murugesan",
        "email": "sirushti.murugesan@hp.com",
        "time": "Wed Sep 30 15:24:59 2015 +0530"
      },
      "message": "Additionally install test-requirements with pip_install\n\nWhen moving to Python 3, we also need to install test-requriements\nto allow projects to install any python 3 test dependencies they\nmight be missing otherwise.\n\nChange-Id: I2d19aa2f7ec8de869a82aa7764ab72cc8693101f\n"
    },
    {
      "commit": "c71973eb04d05c2497eb930c4e1b59dcaf983085",
      "tree": "b746858c67421e46d4b393558e6cd3fb052b7e81",
      "parents": [
        "2105b9f9ce325394d205d9c5f7a7427141bc4ebd"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Sep 08 07:12:48 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Fri Sep 11 07:01:02 2015 -0400"
      },
      "message": "check LIBS_FROM_GIT\n\nafter the glance_store vs. upper-constraints bug, it\u0027s probably worth\nactually enforcing and sanity checking that devstack is doing what\nit\u0027s being asked of with LIBS_FROM_GIT. This will hopefully reduce\nuser generated error.\n\nThis *might* not work with the current oslo naming, we\u0027ll have to test\nand normalize that.\n\nChange-Id: Iffef2007f99a0e932b68c4c897ebbfb748cac2b4\n"
    },
    {
      "commit": "05aa3846a0402edc9cc49f4ba36f09592004b273",
      "tree": "2ec4bb8ed899b1a9a89736d79b057a0bad9cb2e4",
      "parents": [
        "57aafb5a9ad20e19e2c248a8e853a32d5b719c03"
      ],
      "author": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Mon Aug 03 11:14:13 2015 -0700"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Aug 18 09:39:04 2015 -0700"
      },
      "message": "Just use constraints everywhere\n\nHaving behavior on your laptop diverge from behavior in the gate is\nconfusing. Just use constraints on every devstack run to be consistent.\nUsers of devstack can edit the requirements repo in order to change\nthese constraints locally if necessary.\n\nChange-Id: I843208e2e982eb04931b76f5cb4bd219fbcd70de\n"
    },
    {
      "commit": "2d25c9290d163d682ae3958f0e09fede937c0f0f",
      "tree": "5435b2da61aa43cd2772536aa2814fb96beaba87",
      "parents": [
        "05e32fb51ef2c493dd44a40bd9f0ae01822b2874",
        "2ba4a7214c96542987e1c379a28765a242136b12"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Mon Jul 06 18:22:33 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Mon Jul 06 18:22:33 2015 +0000"
      },
      "message": "Merge \"Fixed detection of a project in projects.txt\""
    },
    {
      "commit": "7c838616c98212c808d12c3789cc17ec76cbd878",
      "tree": "70405e7c3651870e51020bf4438770040ce41cd2",
      "parents": [
        "018c50c2e279e73920d71c317fbabfe3a32c9943"
      ],
      "author": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Fri Jul 03 13:28:09 2015 +1200"
      },
      "committer": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Sat Jul 04 09:55:56 2015 +1200"
      },
      "message": "Fix library runs.\n\nLibraries were resulting in two edit-constraints runs:\n - one for the library, which adds a non-editable file path\n - then one for the editable servers, but that fails becuse\n   pkg-resources couldn\u0027t parse the prior entry.\n\nThis is fixed in two parts: the dependent patch which supports parsing\nfile urls that have egg names, and this patch which changes from a\nfile path to a file url with an egg name.\n\nChange-Id: I0f07858e96ea3baf46f8a453e253b9ed29c7f7e2\n"
    },
    {
      "commit": "635a5ba9929e1594aacfc0229663f43898479e2a",
      "tree": "63f67288f2089ff4e5fda36de1d7dc8e3ede0845",
      "parents": [
        "432268b17bff090a8ea8cbbd46c430ddd5be98a1"
      ],
      "author": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Wed Jun 10 08:48:06 2015 +1200"
      },
      "committer": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Thu Jul 02 11:37:22 2015 +1200"
      },
      "message": "constraints file support for devstack.\n\nConstraints files allow a global view of dependencies for devstack\nwithout the side effect that requirements files have of installing\neverything everytime. This is part of the cross project\nrequirements-management spec.\n\nChange-Id: If089d30146629e6cf817edd634e5c2b80f1366dd\n"
    },
    {
      "commit": "2ba4a7214c96542987e1c379a28765a242136b12",
      "tree": "5ee67adf79f53b52bd99e6a96c0c16c6935e88f3",
      "parents": [
        "c782781a4ca5fc2671a6e5d188f68e99e7a656f4"
      ],
      "author": {
        "name": "Ihar Hrachyshka",
        "email": "ihrachys@redhat.com",
        "time": "Fri Jun 26 10:45:44 2015 +0200"
      },
      "committer": {
        "name": "Jeremy Stanley",
        "email": "fungi@yuggoth.org",
        "time": "Wed Jul 01 13:42:14 2015 +0000"
      },
      "message": "Fixed detection of a project in projects.txt\n\nBefore the fix, requirements soft-update was used for projects that are\nin the file.\n\nChange-Id: I095d42521f54b45a6b13837e2f8375fa04532faa\nCloses-Bug: #1469067\n"
    },
    {
      "commit": "7af8a1b9b3180da54e2c9505228ad722db44ca27",
      "tree": "9fce8a371897a33f33e840061773853ef23902ca",
      "parents": [
        "c4067a3cc033eec0d6fa589718e35257c6bcae97"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jun 24 05:51:54 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jun 24 05:55:02 2015 -0400"
      },
      "message": "only soft enforce requirements not in projects.txt\n\nWe\u0027re adding the ability to have devstack plugins, which should be\nmuch more free to require new things not in global requirements. Our\nold thinking of locking down all the requirements doesn\u0027t really work\nin a plugin model.\n\nInstead, if the project is in projects.txt, continue with the old\nbehavior. If it is not, do a soft update (update all the requirements\nwe know about, leave the ones we don\u0027t). This was previously the SOFT\nrequirements update mode, but now it will just be the default.\n\nChange-Id: Ic0c6e01a6d7613d712ac9e7e4a378cc3a8ce75e6\n"
    },
    {
      "commit": "40f3e33f734330c32f27882898ab1bb4ab8f3217",
      "tree": "dda0dcc7b877329284f44156b6910d3be78f22b1",
      "parents": [
        "810dc1d6f4b22eee04303e01968c1762a16986e0"
      ],
      "author": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Fri Jun 19 08:04:00 2015 +1200"
      },
      "committer": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Fri Jun 19 08:04:00 2015 +1200"
      },
      "message": "Put requirements repo in a venv.\n\nThis is to prevent any possible contamination of test results from its\npresence.\n\nChange-Id: I5a929854745650cc6a182ffc4d15c50caabdd727\n"
    },
    {
      "commit": "9860876f5dbb07826b680143a4e111ad580053fe",
      "tree": "77f0ba9a7222d399565cca1a3db3a071ca9f7979",
      "parents": [
        "60996b1b60c3efb1376b9f0d659acebd05c47f09"
      ],
      "author": {
        "name": "Amrith Kumar",
        "email": "amrith@tesora.com",
        "time": "Wed Apr 08 15:37:58 2015 -0400"
      },
      "committer": {
        "name": "Amrith Kumar",
        "email": "amrith@tesora.com",
        "time": "Wed Apr 08 16:28:34 2015 -0400"
      },
      "message": "perform install_infra sooner in stack.sh\n\nThe install_infra() call needs to be done earlier since\npip_install_gr() depends on it. Also the fact that python module names\nare supposed to be lower case but some use camel case is a problem\n(for example with XenAPI).\n\nChange-Id: I7012d77134fa0d9c746d87e837934e7dcb337e5c\nCloses-Bug: #1441820\n"
    },
    {
      "commit": "60996b1b60c3efb1376b9f0d659acebd05c47f09",
      "tree": "82a570b328fa22b437aa27a10716ae9b5c3da4ff",
      "parents": [
        "d1549d624dea9b00d7aa0f935759c69290e9ea17"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Apr 08 09:06:49 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Apr 08 10:28:17 2015 -0400"
      },
      "message": "introduce pip_install_gr\n\nThis creates a new pip_install_gr that installs from global\nrequirements allowed versions. Now that stable branches are getting\ncapped all of devstack needs to be fixed to do things like this.\n\nChange-Id: I8fd0ef2bfc544ca2576fab09d3018f760b8848fe\n"
    },
    {
      "commit": "41d6f858be8431975762e65db470929c72b8f2a8",
      "tree": "611ecdd011df3c3ab60bfcc71281656f48767d00",
      "parents": [
        "c392fd3b5fd5464d87e514c173e4a5091d412caf"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Mar 25 22:42:46 2015 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Mar 26 15:36:23 2015 -0500"
      },
      "message": "Clean up additional INSTALL_TESTONLY_PACKAGES bits\n\nThe original removal is in https://review.openstack.org/#/c/167669/\n\nChange-Id: I3c59f040523d2cd1453465e80280955218880634\n"
    },
    {
      "commit": "ebdd9ac5b41da372c0276a507451ea9878be7dda",
      "tree": "4d933b332ade8428672ce8b28673691c4ef8d6d7",
      "parents": [
        "4cc060e77c58882f9728c2515e65d205d0e969dd"
      ],
      "author": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Wed Mar 04 12:35:14 2015 +0000"
      },
      "committer": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Thu Mar 26 14:27:54 2015 +0000"
      },
      "message": "Provide an option to force pip --upgrade\n\nMake it possible for someone to config\n\n  PIP_UPGRADE\u003dTrue\n\nin local.conf and thus force pip_install calls to upgrade. In\nautomated testing this is probably a bad idea, but in manual testing\nor situations where devstack is being used to spin up proof of\nconcepts having the option to use the latest and greatest Python\nmodules is a useful way of exploring the health of the ecosystem.\n\nTo help with visibility of the setting, and section has been added\nin configuration.rst near other similar settings.\n\nChange-Id: I484c954f1e1f05ed02c0b08e8e4a9c18558c05ef\n"
    },
    {
      "commit": "eeb7bda510ad29dce7bfc5eb8aed9b6fe25efea1",
      "tree": "550e2caaef10ce56f5bf96277c3293c05e969ea7",
      "parents": [
        "b23054c4b42b1c4ef8b0cdb642e63eac2a91a3f5"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Mar 25 11:55:32 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Mar 25 11:55:32 2015 -0400"
      },
      "message": "eliminate TEST_ONLY differentiation\n\ndevstack is a development and test environment, but by default we were\nonly installing the runtime dependencies. We should install all the\ntesting required packages as well.\n\nChange-Id: I7c95927b9daad15766aac9d1276b10ca62efb24c\n"
    },
    {
      "commit": "6a83c423fc1d788d9e81b58a8659eca1cb84095d",
      "tree": "60bed3e68a2d7737b50ec20ae711a96459b58695",
      "parents": [
        "1331a828dab91f2e053cb1a4b78b872af00410c1"
      ],
      "author": {
        "name": "Eli Qiao",
        "email": "liyong.qiao@intel.com",
        "time": "Tue Mar 17 16:54:16 2015 +0800"
      },
      "committer": {
        "name": "Eli Qiao",
        "email": "liyong.qiao@intel.com",
        "time": "Tue Mar 17 17:03:29 2015 +0800"
      },
      "message": "Fix pip install error\n\nIf we set mutiple proxy (ip or url), pip install will\ntreat the second proxy as a command.\nAdd quotation marks around proxy.\nexpecially for no_proxy\n\nChange-Id: I38ad3f083ba5155cda0e5e2b8f5df64492b7fecd\n"
    },
    {
      "commit": "cd8824ac04989e625d7f1ae442498383250932a9",
      "tree": "bb31db5fa112b5840df93eb22abf220d1cab8510",
      "parents": [
        "7a678bfcb2726506a6daff3893c962ade4abb96c"
      ],
      "author": {
        "name": "Joe Gordon",
        "email": "joe.gordon0@gmail.com",
        "time": "Wed Mar 04 16:40:19 2015 -0800"
      },
      "committer": {
        "name": "Joe Gordon",
        "email": "joe.gordon0@gmail.com",
        "time": "Fri Mar 06 01:33:31 2015 +0000"
      },
      "message": "Pass PIP_FIND_LINKS through sudo to pip\n\nWe weren\u0027t actually using the wheels since PIP_FIND_LINKS environmental\nvariable was getting lost during the sudo\n\nChange-Id: I4a89a70df63772a16ee5a8c3f1cd86e9c7bb5242\n"
    },
    {
      "commit": "8c2ce6ea724c9123b8cc5660c6ad52aa8ebf9865",
      "tree": "a1cb60d0152a36c76125f04d4565c11d7473d714",
      "parents": [
        "b1d8e8e274f0c220ae19ee3ea1a3b9a533459297"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Feb 18 14:47:54 2015 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Feb 18 20:19:38 2015 -0600"
      },
      "message": "Virtual environment groundwork\n\nIntroduce the tooling to build virtual environments.\n\n* tools/build_venv.sh: build a venv\n* introduce lib/stack to house functionality extracted from stack.sh that\n  is needed in other places, such as Grenade; start with stack_install_service\n  to wrap the venv install mechanics\n* declare PROJECT_VENV array to track where project venvs should be installed\n* create a venv for each project defined in PROJECT_VENV in stack_install_service()\n\nChange-Id: I508588c0e2541b976dd94569d44b61dd2c35c01c\n"
    },
    {
      "commit": "a6de7e962c3293d3a5e5e6ef1ead97c0ea0067f0",
      "tree": "a7d111dfc7fac8a937119e983bbbe2f64d3e6115",
      "parents": [
        "2e9d32baf274fc0bd7edc5fd3b9df3f3fa01e2bd",
        "2b564763aafe6466f42bc5cf2ccc47ddf4169986"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Feb 18 20:59:20 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Feb 18 20:59:20 2015 +0000"
      },
      "message": "Merge \"Teach pip_install() about virtual envs\""
    },
    {
      "commit": "d5ac7852473a8a34ae097c33ed173d640db80379",
      "tree": "a149e49e3aa77709ba7dfbb0fa9a67e960b224c5",
      "parents": [
        "d26da45b98a75b9d61d0a33d216ca15543a7faf2"
      ],
      "author": {
        "name": "Joe Gordon",
        "email": "joe.gordon0@gmail.com",
        "time": "Fri Feb 06 19:29:23 2015 -0800"
      },
      "committer": {
        "name": "Joe Gordon",
        "email": "joe.gordon0@gmail.com",
        "time": "Tue Feb 17 11:48:06 2015 -0800"
      },
      "message": "Add new function get_from_global_requirements\n\nInstead of specifying the version of a library in devstack, use the version from\nglobal-requirements\n\nAdd new function get_from_global_requirements and use it\nwhere it makes sense.\n\nChange-Id: I6b2f062761ac05ef72fc6cc9993bc204faf06fa5\n"
    },
    {
      "commit": "2b564763aafe6466f42bc5cf2ccc47ddf4169986",
      "tree": "134ea203d74a8de02afa9bb7957685df54b24a42",
      "parents": [
        "2a811912c6e8a2f85d4a9ef03694cd29cb5fd1cd"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Feb 11 17:01:02 2015 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Feb 12 12:19:20 2015 -0600"
      },
      "message": "Teach pip_install() about virtual envs\n\nSet PIP_VIRTUAL_ENV to install the package(s) into an existing virtual\nenvironment.  This works by simply using the pip command already\nin the venv, and not using sudo.\n\nChange-Id: I910e1752e58a666174f83b4f97e547851e66e655\n"
    },
    {
      "commit": "490430dbe3b7d9979b4623f2c327bb0a74436401",
      "tree": "527289f426c49bb51234a1e0621a0afe1ffac20e",
      "parents": [
        "a1b82cc1b5a7172c3fdf17d2c3f0725660911ad7"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jan 30 14:38:35 2015 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jan 30 14:59:48 2015 -0600"
      },
      "message": "Split functions-common: python functions\n\nMove Python-related functions into inc/python\n\nShould be transparent to all callers as it is sourced from functions-common\n\nChange-Id: I88043830cef9211b4e0baa91bfcc7a92125afa9f\n"
    }
  ]
}
