)]}'
{
  "log": [
    {
      "commit": "33bd721e8843ca0cdd95481eea22e2c6f369beb1",
      "tree": "e4b17add8d3d90491019c0ecdf4df1f8ac8fc8d6",
      "parents": [
        "0317583d5eca3382872c4123e194325425b8e764",
        "bbafb1b5b24377f9d471fc73de3ef07f97deed96"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Jun 14 20:08:32 2012 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Jun 14 20:08:32 2012 +0000"
      },
      "message": "Merge \"Fix issues when working through an outbound proxy\""
    },
    {
      "commit": "bbafb1b5b24377f9d471fc73de3ef07f97deed96",
      "tree": "444263c7131af51e0746ab8da250896a6818222e",
      "parents": [
        "fda9df8795d422679387b2ea8b20556fe4116645"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Jun 11 16:51:39 2012 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Jun 11 16:53:44 2012 -0500"
      },
      "message": "Fix issues when working through an outbound proxy\n\n* reqork setup-develop() to handle proxy operations and empty dependency lists\n* use keystone to get admin token (eliminate a direct curl invocation)\n* check for cached image files of 0 bytes and re-download if needed\n\nChange-Id: Ief356667ed3ef8d05c6604f12513ae81f68cec04\n"
    },
    {
      "commit": "c7214e838e65b51b81b84e2a3e2ce3c34490fd46",
      "tree": "26e7a1666e24a958203dd9860833206fa9eb47b9",
      "parents": [
        "e959dbc1324047a47cde1ccfb26d05a1d26fdb3f"
      ],
      "author": {
        "name": "Chmouel Boudjnah",
        "email": "chmouel@chmouel.com",
        "time": "Wed Jun 06 13:56:39 2012 +0200"
      },
      "committer": {
        "name": "Chmouel Boudjnah",
        "email": "chmouel@chmouel.com",
        "time": "Wed Jun 06 13:56:39 2012 +0200"
      },
      "message": "Use swift config files shipped with swift.\n\n- Fixes bug 1004548.\n- Add function iniuncomment.\n- Trying to match the indent as the other stack.sh file.\n\nChange-Id: I70339f7b4c0dd3ef8a018daecb2e1b3fb72c741b\n"
    },
    {
      "commit": "5218d451dc6d21c32e5bf5ab81c53bdd1db50234",
      "tree": "819ee74485e720bad41b141e2f30b7f5414610e8",
      "parents": [
        "c1a37a5d463a04675c5718be1b7510ffbd31a020"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Sat Feb 04 02:13:23 2012 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Apr 11 14:55:47 2012 -0500"
      },
      "message": "E) Add support for Fedora 16\n\nHighlights:\n* Add files/rpms/*\n* get_packages() only loads deps for services that are enabled\n\n11Apr2012\n* change mod_wsgi cwd to $HORIZON_DIR\n* fix horizon apache log file name and location\n\nNote: This superceeds https://review.openstack.org/4364\n\nChange-Id: I95486584561e4418907a6a4feb0ffbe4f4ea1843\n"
    },
    {
      "commit": "09e636e435ed15302e3960affef0a450fa7accf6",
      "tree": "27416092e0e4e26238ee076b6fdef4c283e41374",
      "parents": [
        "e474403d5e950bc275916e752075ed0976c62128"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Mar 19 16:31:12 2012 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Apr 05 18:10:13 2012 -0500"
      },
      "message": "B) Use keystone config files from source; move to /etc/keystone\n\n* Put all config files in /etc/keystone\n* keystone.conf rewritten\n* logging.conf.sample rewritten to logging.conf\n* default_catalog.templates copied from devstack/files\n* iniset() now properly adds options that do not previously exist\n\nFixed to re-configure the catalog templated backend; sql is the\ndefault in trunk now but DevStack needs a bit more work before\nit can use it.\n\nChange-Id: Ic7060ef897e47495cd08ca3786e49fdebadf6723\n"
    },
    {
      "commit": "13dc5ccd13a636dcde03324ef7586728caa59db2",
      "tree": "79cd8122870a48a5d1a16c0baed521fe815c1043",
      "parents": [
        "60df29a234a03bb6b94c030c1661dbc8d1421156"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Tue Mar 27 14:50:45 2012 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Mar 29 20:35:04 2012 -0500"
      },
      "message": "A) Add/move functions to \u0027functions\u0027 file\n\nAdd ini*() and tests\nAdd GetOSVersion()\nAdd install_package(), yum_install()\nAdd *_service()\n\nRebased\n\nChange-Id: I570dba5ed4d2b988cdd1771cf6bed0aaf8e0fe27\n"
    },
    {
      "commit": "408b009ccda94a95d3b3999f6db2bd62e92cdfb9",
      "tree": "7011b3ccd44a5e9d943514b84c6ae3f9b1e5616a",
      "parents": [
        "17ff9763da677f3db0339a395c558cdb881d5d56"
      ],
      "author": {
        "name": "Chmouel Boudjnah",
        "email": "chmouel@chmouel.com",
        "time": "Thu Mar 15 23:21:55 2012 +0000"
      },
      "committer": {
        "name": "Chmouel Boudjnah",
        "email": "chmouel@chmouel.com",
        "time": "Wed Mar 28 11:34:51 2012 +0100"
      },
      "message": "Allow skipping exercises.\n\n- Catch a special exit signal 55 to notify that we want to skip an\n  excercise.\n- Move is_enabled_service to functions.\n- Fix bug 928390.\n\nChange-Id: Iebf7a6f30a0f305a2a70173fb6b988bc07e34292\n"
    },
    {
      "commit": "27e326995aaddf9e34cdf54a56f0ed02fc04bfcc",
      "tree": "9abba1609d309b887f2960db9c00c92fb2f7bc0a",
      "parents": [
        "09407d90a841c05d83f82b588af0769161326a4d"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Mar 16 16:16:56 2012 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Mar 19 10:06:15 2012 -0500"
      },
      "message": "Simplify die_if_error\n\n* Replace die_if_error() with the simpler die()\n* Attempt to clean up unnecessary trace output\n* Formatting cleanups on all exercise scripts\n\nChange-Id: I72a542b3a59ee9bf12bee6bcc605edd7579205e0\n"
    },
    {
      "commit": "d0b21e2d1967f650ddd123c1ecc1659b1baff783",
      "tree": "cc42f9cac1da7cdd8e2740d949f99584658a977f",
      "parents": [
        "51aa401ff1bc5a217c53dcdfe74c3d13a6a991f6"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Mar 07 14:52:25 2012 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Mar 07 15:36:50 2012 -0600"
      },
      "message": "Fix dependency list generation corner cases\n\n* Handle empty install lists in apt_get() and pip_install()\n* pip_install now uses get_packages() to get the dependency list\n\nFixes bug 948714\n\nChange-Id: I174a60976df18c670eab2067edcd1871c51d07d6\n"
    },
    {
      "commit": "489bd2a62b5949665bc7c4a05a52d27a987e0489",
      "tree": "baed5bdd9d9f3bdba8d1325125f61f7a72ddc56a",
      "parents": [
        "4807df8e5bc0e5e78536ecea37a0ca7621720524"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Mar 02 10:44:29 2012 -0600"
      },
      "committer": {
        "name": "Jesse Andrews",
        "email": "anotherjesse@gmail.com",
        "time": "Fri Mar 02 17:55:37 2012 -0800"
      },
      "message": "Improve exercise robustness\n\n* Test returns and exit codes on most command invocations\n* Add start and end banners to make output easier to find in\n  long log files\n* Adds die_if_error(), die_if_not_set() and is_set() to functions\n* Add some function tests\n\nFixes bug 944593\n\nChange-Id: I55e2962c5fec9aad237b674732b1e922ad37a62e\n"
    },
    {
      "commit": "7f9aa71bcea98a27d144a71841842069106bb3bc",
      "tree": "eb8e97edcb4e24eea5ad92cbf4b114bc90ef1203",
      "parents": [
        "d1ee828f339ac8efe1f6d693f13ee9a871dc8fc5"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Tue Jan 31 12:11:56 2012 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Tue Jan 31 12:18:16 2012 -0600"
      },
      "message": "Extract common functions into a separate file\n\nThis is the start of an effort to organize devstack\u0027s code\nto better document the requirements for configuring the individual\ncomponents.\n\nChange-Id: I3476b76b9d1f9ee63687fb9898a98729118cbd84\n"
    }
  ]
}
