)]}'
{
  "log": [
    {
      "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": "9e63b59a8ed1069b1494615619441fa9a7774baf",
      "tree": "cc2950a745bbb1817ec954c6f9be81c49d6c45d9",
      "parents": [
        "67ca2d5004f08a3a461510be7db93f4383b5cd12",
        "32d6bc6ad1f5d857c8e34e15001f8eb8666c601c"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Fri Apr 03 16:25:00 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Fri Apr 03 16:25:00 2015 +0000"
      },
      "message": "Merge \"Add inc/rootwrap\""
    },
    {
      "commit": "d7c874bca6825441f3990733e7676201e7bc31e8",
      "tree": "d5f9b44fe80f3d07e69f16040052b69d2a1aa5c3",
      "parents": [
        "43479db9105db75d7762e9cfbc950841725fa644",
        "1bd79596c3c5f62cbbef92558156401447a9b5d3"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Mon Mar 30 15:05:59 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Mon Mar 30 15:05:59 2015 +0000"
      },
      "message": "Merge \"Move back isset to the functions-common\""
    },
    {
      "commit": "32d6bc6ad1f5d857c8e34e15001f8eb8666c601c",
      "tree": "ade89fecd1c5db1a4090df0c6b1cb1eda6d96c69",
      "parents": [
        "43479db9105db75d7762e9cfbc950841725fa644"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Sun Mar 29 14:16:44 2015 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Sun Mar 29 22:29:28 2015 -0500"
      },
      "message": "Add inc/rootwrap\n\nRootwrap shouldn\u0027t be a unique snowflake.  Plus the binaries tend\nto be called assuming PATH will find them.  Not so with venvs\nso we need to work around that brokenness.\n\nConfigure Cinder and Nova to use configure_rootwrap().\n\nChange-Id: I8ee1f66014875caf20a2d14ff6ef3672673ba85a\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": "1bd79596c3c5f62cbbef92558156401447a9b5d3",
      "tree": "3498da8181326cc9421975135d9123268339f974",
      "parents": [
        "4cc060e77c58882f9728c2515e65d205d0e969dd"
      ],
      "author": {
        "name": "Attila Fazekas",
        "email": "afazekas@redhat.com",
        "time": "Tue Feb 24 14:06:56 2015 +0100"
      },
      "committer": {
        "name": "Attila Fazekas",
        "email": "afazekas@redhat.com",
        "time": "Thu Mar 26 14:00:02 2015 +0100"
      },
      "message": "Move back isset to the functions-common\n\nisset function was moved to config file related functions by accident,\nthis change also simplfies the isset in a bash \u003e\u003d4.2 way.\n\nAll supported distro has at least bash 4.2. (RHEL6 used 4.1)\n\nChange-Id: Id644b46ff9cdbe18cde46e96aa72764e1c8653ac\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": "bf2ad7015d068f9a85c01813cea0aa79143b1d0f",
      "tree": "ab1a91e8e13a882ee4dab1a70141c31133a5815b",
      "parents": [
        "924079b8905669a646cfa328d6bf52e56b79acdc"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Mar 09 15:16:10 2015 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Mar 09 22:52:19 2015 -0500"
      },
      "message": "Move configuration functions into inc/*\n\n* config/INI functions from functions-common to to inc/ini-config\n* local.conf meta-config functions from lib/config to inc/meta-config\n\nChange-Id: I00fab724075a693529273878875cfd292d00b18a\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"
    }
  ]
}
