)]}'
{
  "log": [
    {
      "commit": "855c5875c7756db192fe7078bed207ab280f7780",
      "tree": "460c492a9721fbde8272b12d70d3999f68dac9b8",
      "parents": [
        "3cf1ffbcdda2f74a7f0d57eb2b8bac8d90af108f"
      ],
      "author": {
        "name": "Vincent Untz",
        "email": "vuntz@suse.com",
        "time": "Thu Oct 04 13:36:46 2012 +0200"
      },
      "committer": {
        "name": "Vincent Untz",
        "email": "vuntz@suse.com",
        "time": "Thu Oct 04 13:55:54 2012 +0200"
      },
      "message": "Directly use GetDistro instead of failing if $DISTRO is not set\n\nChange-Id: I81d73a767e1c7f5e83eb535b2e1645e6ab29f347\n"
    },
    {
      "commit": "1a3c9fe41b9b20d98b0b7afe6dbec9fcb025d551",
      "tree": "42621e35292c7597fd779c9d3d330c391bb64efa",
      "parents": [
        "e0ed68f51f17d99a8b652189bf2da75ea55df0c7"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Sat Sep 29 17:25:02 2012 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Sat Sep 29 17:25:02 2012 -0500"
      },
      "message": "Fix setup_develop\n\nChange-Id: I64324436eebebfb05ad724335eece10cba107d91\n"
    },
    {
      "commit": "636a3ff4294a6841f6076283bbed561dc2676e30",
      "tree": "5a06394fbd7e9c5058174d94d56f4bd3de572902",
      "parents": [
        "d85135ee4087d5aef6b81408a941a8cbeed24619"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Sep 14 11:36:07 2012 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Sep 14 13:48:16 2012 -0500"
      },
      "message": "Spiff up the upload_image() format handling\n\n* attempt to detect format of *.img files automatically, recognizing:\n  qcow2,raw,vdi,vmdk,vpc\n\nChange-Id: I92ec141584ba8237b67ca640e401a1b88860747e\n"
    },
    {
      "commit": "71ebc6ff65e6ae3982a7e8a7ecf9ff80fd18d6bb",
      "tree": "67c928b32f58d7eaef0d1c75a32790c3dc33100d",
      "parents": [
        "c132625d1dcdc4d8ea824c0efb2b7428ab07341f"
      ],
      "author": {
        "name": "Vincent Untz",
        "email": "vuntz@suse.com",
        "time": "Tue Jun 12 13:45:15 2012 +0200"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Sun Sep 09 17:40:19 2012 -0500"
      },
      "message": "Add is_package_installed function to know if a package is installed\n\nThis helps reduce the distro-dependent code in stack.sh, and also fixes\nthe bug where \"rpm -qa | grep sudo\" will work if gnome-sudoku is\ninstalled.\n\nRebased\n\nChange-Id: Ib1330b29b915b41d9724197edd791f0d4e0fe373\n"
    },
    {
      "commit": "c0482e6efcc34515b9383e6a0de1e03b75d6ce62",
      "tree": "963c5c011696ab08120ea8c7f7756bf4a7d5f661",
      "parents": [
        "3ceb380012a8d3700d438e773ebc7c830a1ae027"
      ],
      "author": {
        "name": "Vincent Untz",
        "email": "vuntz@suse.com",
        "time": "Tue Jun 12 11:30:43 2012 +0200"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Sun Sep 09 14:12:52 2012 -0500"
      },
      "message": "Add contitional update package repositories to install_package()\n\nThis helps us ensure that we update the repositories only the first time\nwe need to install packages\n\nRebased and incorporated into install_package()\n\nChange-Id: Id987aa7742f5d6807bc97eb6784cf18557c919d2\n"
    },
    {
      "commit": "7d0810ec2a20037f4cc8a4e30bf59e2cfbf4cf46",
      "tree": "ede6f27ebb15d616c789a02c731346eae05a3104",
      "parents": [
        "b2cbbb06ce70bfacf4eacdd94ab865d855362e4c",
        "f900bd79463821c8f5a677c566f9af053d81a860"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Sat Sep 08 05:42:19 2012 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Sat Sep 08 05:42:19 2012 +0000"
      },
      "message": "Merge \"Add git_update_remote_branch to functions.\""
    },
    {
      "commit": "15733351ad5650fc9ab93eb3b7b405d51ac2a3d6",
      "tree": "a670ed45300c3f61215eb2ac080b491de17b007a",
      "parents": [
        "6a1c8497733073ec5855acf7e6de2f57cbf6bf9a"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Sep 06 11:51:30 2012 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Sep 06 12:25:25 2012 -0500"
      },
      "message": "Move screen_it() and screen_rc() to functions\n\nChange-Id: I9b119e2c6d4d88a67d485f61662037984c2d9b15\n"
    },
    {
      "commit": "f900bd79463821c8f5a677c566f9af053d81a860",
      "tree": "5f6f1526dc07dd63911a29107c98d353851725bf",
      "parents": [
        "6a1c8497733073ec5855acf7e6de2f57cbf6bf9a"
      ],
      "author": {
        "name": "Andrew Laski",
        "email": "alaski@gmail.com",
        "time": "Wed Sep 05 17:23:14 2012 -0400"
      },
      "committer": {
        "name": "Andrew Laski",
        "email": "andrew.laski@rackspace.com",
        "time": "Wed Sep 05 17:31:00 2012 -0400"
      },
      "message": "Add git_update_remote_branch to functions.\n\nWhen $RECLONE\u003dyes, and the branch specified for a project in stackrc is\na remote branch, the git_clone function would not recognize it as a\nbranch.  git_clone now attempts to recognize a remote branch and handle\nit appropriately.\n\nChange-Id: Ie23ff12eb5a7905088a9c2bb0ea2b02453ec0258\n"
    },
    {
      "commit": "4a43b7bd90f8e42baaf950a8177cb13fc30f5f2f",
      "tree": "99fbeb92988fb40381d547057130e7842f3c0396",
      "parents": [
        "5090fffa8b2495bab479e1749bfeb358575a1a5a"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Tue Aug 28 17:43:40 2012 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Tue Aug 28 21:12:47 2012 -0500"
      },
      "message": "Cosmetic, comment and text cleanups\n\n* functions\n* stack.sh\n* stackrc\n* unstack.sh\n\nA recent commit to stack.sh broke the RST formatting done by shocco to\nproduce the HTML-formatted files on devstack.org.  A bunch of comment\nand spacing fixes were done (ala pep8 if there were such a thing for\nshell scripts).\n\nThe only non-comment changes made were to the content of some error\nmessages.\n\nFixes bug 1042271\n\nChange-Id: Id1c74cf25c03c4f18ed741f8026e36b0d4a598dd\n"
    },
    {
      "commit": "ca0e3d0230879fbad55472f742d3166a5579208c",
      "tree": "db3a8a836b2597c26529e1543b8df7be05deffc6",
      "parents": [
        "555767abbf2191feb1c2ecfeff1356a9e2e52ef8"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Apr 13 15:58:37 2012 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Aug 17 12:12:46 2012 -0500"
      },
      "message": "Add tools/upload_image.sh\n\n* moves the image upload logic from stack.sh to functions upload_image()\n* tools/upload_image.sh which is a thin wrapper around upload_image()\n\nChange-Id: I8746beebf50cf623b6fe903d6497e66e3fa5dda6\n"
    },
    {
      "commit": "555767abbf2191feb1c2ecfeff1356a9e2e52ef8",
      "tree": "2459e08c3a9f56720aa0394048a087224c616d6f",
      "parents": [
        "f2e3bb4ba7069f7e05a376659e79427639a56fa9",
        "93361643c6f06319fd3b6b7bb8aff48eb0473edd"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Fri Aug 17 14:58:15 2012 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Fri Aug 17 14:58:15 2012 +0000"
      },
      "message": "Merge \"Add ceilometer\""
    },
    {
      "commit": "7b49598f7e8ac5a5ad0391088b5a0316175d2eb7",
      "tree": "f370c408a8111d601c1765a2771f41641b0710da",
      "parents": [
        "7d8f0366627e2c5f3873782c4a279d5e67bc51c5",
        "6a3912de8589d505a019e9630ce930a4cf5f7354"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Aug 16 17:20:22 2012 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Aug 16 17:20:22 2012 +0000"
      },
      "message": "Merge \"Add git update tag support\""
    },
    {
      "commit": "93361643c6f06319fd3b6b7bb8aff48eb0473edd",
      "tree": "e24d7ae6469c4f45bc6144041f28d02a08183273",
      "parents": [
        "7b0f002b7cf38b261e645ebb0adcbd0679a213d7"
      ],
      "author": {
        "name": "John H. Tran",
        "email": "jhtran@att.com",
        "time": "Thu Jul 26 11:22:05 2012 -0700"
      },
      "committer": {
        "name": "John H. Tran",
        "email": "jhtran@att.com",
        "time": "Tue Aug 14 13:29:22 2012 -0700"
      },
      "message": "Add ceilometer\n\nImplements bug 1023972. Add mongodb and pymongo installation.\n\nChange-Id: I631dc8a37f3269e55112ec5a5f375d3a2fd3a604\n"
    },
    {
      "commit": "a8cdd355d25a808f02505f2848fdd8b8857c410c",
      "tree": "fdfacbf4b2b13589eb046452527c97b51ac64fc2",
      "parents": [
        "ceaa75fdb3b237f48e91f62e0862eb7b014dac91",
        "c9ad14bd3879e54c30cc88b186128dca3f6ab21a"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Fri Aug 10 21:43:48 2012 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Fri Aug 10 21:43:48 2012 +0000"
      },
      "message": "Merge \"Use default route to find HOST_IP\""
    },
    {
      "commit": "ceaa75fdb3b237f48e91f62e0862eb7b014dac91",
      "tree": "21d28316fbd208e8b6c239a6a1b5312a38e62522",
      "parents": [
        "c42922090ba92cd1be870650dee9fa16c2838e45",
        "7abe4f24a3b77a1507ab0d1c994c3f5052aa0fe9"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Fri Aug 10 21:43:46 2012 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Fri Aug 10 21:43:46 2012 +0000"
      },
      "message": "Merge \"support no_proxy environment variable\""
    },
    {
      "commit": "7abe4f24a3b77a1507ab0d1c994c3f5052aa0fe9",
      "tree": "826f831002ae67bfaf894584a54698eb7669e66e",
      "parents": [
        "14ab37eb4174b8a1be8c5ff5e531cff5db3791c9"
      ],
      "author": {
        "name": "Osamu Habuka",
        "email": "xiu.yushen@gmail.com",
        "time": "Wed Jul 25 12:39:32 2012 +0900"
      },
      "committer": {
        "name": "Osamu Habuka",
        "email": "xiu.yushen@gmail.com",
        "time": "Tue Jul 31 13:49:34 2012 +0900"
      },
      "message": "support no_proxy environment variable\n\nChange-Id: I5175f9752abe358cca0d2e3e5cf6d94605df451a\n"
    },
    {
      "commit": "c9ad14bd3879e54c30cc88b186128dca3f6ab21a",
      "tree": "61838122b759fef284607596a82d282a99b659ff",
      "parents": [
        "14ab37eb4174b8a1be8c5ff5e531cff5db3791c9"
      ],
      "author": {
        "name": "Vishvananda Ishaya",
        "email": "vishvananda@gmail.com",
        "time": "Tue Jul 03 20:29:01 2012 +0000"
      },
      "committer": {
        "name": "Vishvananda Ishaya",
        "email": "vishvananda@gmail.com",
        "time": "Mon Jul 30 15:28:41 2012 -0700"
      },
      "message": "Use default route to find HOST_IP\n\nWhen running devstack, nova moves the host ip from eth0 onto the\nbridge. This causes devstack to fail on the second run unless you\nexplicitly set HOST_IP in localrc.\n\nThis patch searches for an ip on the interface that is used for\nthe default route. This will be eth0 (or en0) in most cases, but\nit will search br100 instead if nova has moved the ip, since it\nmoves the default route as well.\n\nIt also will filter out ips from the potential list that are part\nof the fixed range and floating range if the netaddr library is\ninstalled. This allows us to find the proper ip even if we have\naccidentally left a floating ip or fixed ip on the bridge.\n\nChange-Id: I13288e53ee2786c5ae0edb3f9ab457be8303f1f6\n"
    },
    {
      "commit": "47f02060ad0500ccb2d4ceeb6015ad7a4c56b4e9",
      "tree": "a6df46450d7b63230b44e4ee7e5350b4991dfb91",
      "parents": [
        "d5b18ecb724ba64a57a7bf97f4982b670d639da5"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Thu Jul 26 11:09:24 2012 -0500"
      },
      "committer": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Thu Jul 26 13:18:40 2012 -0500"
      },
      "message": "Optionally install all pip into a global venv.\n\nThis is useful for tracking what pip is causing to be\ninstalled over and beyond os pacakges.\n\nIn support of this, move all package installation to before\nthe section where we install via pip. Leave the deferred configuration\nuntil later though.\n\nChange-Id: I89677fd54635e82b10ab674ddeb9ffb3f1a755f0\n"
    },
    {
      "commit": "798da01906b0ecd827fb4562feebaf149317403c",
      "tree": "74cf5f5bcc16f8f6fcdd7343952b733f88fb0ceb",
      "parents": [
        "3aabdbad1d1b73144ad5aad522706dd473ff5bb4",
        "a9e0a488cf72431aabc972f7aac76abb56aaba02"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Jul 18 18:45:32 2012 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Jul 18 18:45:32 2012 +0000"
      },
      "message": "Merge \"Update info.sh\""
    },
    {
      "commit": "b5a1f92b490a1292f1588af5087882f83df62f7d",
      "tree": "3d85fb3d812be6123c3b34f5d0b40e652a791fd4",
      "parents": [
        "070d492da95629e56609c91a631efe8534c02ac5",
        "4d5e29d906068a7a2ed8815b27c48c3b3622af76"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Mon Jul 16 15:59:46 2012 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Mon Jul 16 15:59:46 2012 +0000"
      },
      "message": "Merge \"Allow user to override pip cache location\""
    },
    {
      "commit": "4d5e29d906068a7a2ed8815b27c48c3b3622af76",
      "tree": "64fff7b6007355ce81784dd4105fc04124718fd5",
      "parents": [
        "efb80509f397e4a01589de96a2e2d83c4722b164"
      ],
      "author": {
        "name": "Doug Hellmann",
        "email": "doug.hellmann@dreamhost.com",
        "time": "Fri Jul 13 11:11:50 2012 -0400"
      },
      "committer": {
        "name": "Doug Hellmann",
        "email": "doug.hellmann@dreamhost.com",
        "time": "Fri Jul 13 11:11:50 2012 -0400"
      },
      "message": "Allow user to override pip cache location\n\nBuilding a VM containing devstack is faster if you can save\nthe cache files for pip in a location that is not deleted\nwhen the VM is rebuilt. This change allows the user to\nset the PIP_DOWNLOAD_CACHE in their localrc file to point\nto any directory writable by root, including a directory\nmounted from the host containing the VM.\n\nChange-Id: I27179c1c212140d6734f6725f498be52fd18e9ed\nSigned-off-by: Doug Hellmann \u003cdoug.hellmann@dreamhost.com\u003e\n"
    },
    {
      "commit": "6a3912de8589d505a019e9630ce930a4cf5f7354",
      "tree": "edf8827e31271dbb7cef75dd978d839777147815",
      "parents": [
        "8156062dc4f0e8338590dcb74cfade5af31daa8a"
      ],
      "author": {
        "name": "Evgeniy Afonichev",
        "email": "eafonichev@mirantis.com",
        "time": "Tue Jul 10 14:02:43 2012 +0300"
      },
      "committer": {
        "name": "Evgeniy Afonichev",
        "email": "eafonichev@mirantis.com",
        "time": "Wed Jul 11 13:29:33 2012 +0300"
      },
      "message": "Add git update tag support\n\nChange-Id: I5ce1f05186d05b9cf0ccd74708af926ba054d2f0\n"
    },
    {
      "commit": "a9e0a488cf72431aabc972f7aac76abb56aaba02",
      "tree": "b26774e5d14cee141ecac2278879c3897b98e23b",
      "parents": [
        "08bc3048b10b7dbe62b38109274b0cd32a460de9"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Jul 09 14:07:23 2012 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Jul 09 14:59:52 2012 -0500"
      },
      "message": "Update info.sh\n\n* Works properly on Fedora 17 now, possibly other RPM-based distros\n* Add GetDistro() function taken from logic in stack.sh\n* Source functions in tools/info.sh\n* Use GetDistro() and get_packages() in tools/info.sh\n* Report all installed pips\n* Don\u0027t sort localrc output as order is important\n\nChange-Id: I1b3e48e94786378c7313a0a6bea88d5cf9d0f0c0\n"
    },
    {
      "commit": "f04178fd12731a58c899c309ad43f55d339909c5",
      "tree": "0183e5361383370cd5b0c104ece6b45731379f50",
      "parents": [
        "08bc3048b10b7dbe62b38109274b0cd32a460de9"
      ],
      "author": {
        "name": "Doug Hellmann",
        "email": "doug.hellmann@dreamhost.com",
        "time": "Thu Jul 05 17:10:03 2012 -0400"
      },
      "committer": {
        "name": "Doug Hellmann",
        "email": "doug.hellmann@dreamhost.com",
        "time": "Fri Jul 06 15:52:06 2012 -0400"
      },
      "message": "add functions to manipulate ENABLED_SERVICES\n\nEditing ENABLED_SERVICES directly can get tricky when\nthe user wants to disable something. This patch includes\ntwo new functions for adding or removing services\nsafely, and a third (for completeness) to clear the\nsettings entirely before adding a minimal set of\nservices.\n\nIt also moves the logic for dealing with \"negated\"\nservices into a function so it can be tested and\napplied by the new functions for manipulating\nENABLED_SERVICES.\n\nChange-Id: I88f205f3666b86e6f0b6a94e0ec32a26c4bc6873\nSigned-off-by: Doug Hellmann \u003cdoug.hellmann@dreamhost.com\u003e\n"
    },
    {
      "commit": "7e27051ccb125de4e419cc9b6d33528ca66b9774",
      "tree": "26a9c2d9161fd61e54a2c14231df5581592e03f8",
      "parents": [
        "8d618ca855e9aa4f09073040490cb5ca769b7142"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Jun 14 15:23:24 2012 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Jun 28 18:00:15 2012 -0500"
      },
      "message": "Move get_packages() to functions.\n\nThis is a prerequisite to fixing the tools/build_uec* scripts to properly\ninstall prereq packages.\n\nChange-Id: I1c60f7b9a9d07076841d9aff524c0833dc987c66\n"
    },
    {
      "commit": "94cb960009cabe0afbf35bd843ae7580fbbd56d1",
      "tree": "14fafe8369321f48cfb21a88fa3b69ada44ac17c",
      "parents": [
        "8d2c8faf36abd0808226542e0a68c7576d4006e7"
      ],
      "author": {
        "name": "James E. Blair",
        "email": "jeblair@hp.com",
        "time": "Fri Jun 22 15:28:29 2012 -0700"
      },
      "committer": {
        "name": "James E. Blair",
        "email": "jeblair@hp.com",
        "time": "Fri Jun 22 16:47:43 2012 -0700"
      },
      "message": "Add ERROR_ON_CLONE.\n\nThis lets the user assert that stack.sh should never need to clone\nany git repositories.  If set to True, and devstack does need to\nclone a git repo, stack.sh will exit with an error.\n\nThis is useful in testing environments to make sure that the correct\ncode is being tested instead of silently falling back on cloning\nfrom the public repos.\n\nChange-Id: Ic0312ab4df492c5cf2e04c08aa7669a81736daa6\n"
    },
    {
      "commit": "67787e6b4c6f31388cbee6d83b67371b31c443d4",
      "tree": "ae56f924e8e1395a4187cf8c2626e9ca90ab62a7",
      "parents": [
        "1c620dfcc66401041131c9b5a675bca243aa4a4f"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed May 02 11:48:15 2012 -0500"
      },
      "committer": {
        "name": "John Griffith",
        "email": "john.griffith@solidfire.com",
        "time": "Wed Jun 20 14:11:19 2012 -0600"
      },
      "message": "Add cinder support\n\n* using the new functional pattern: cinder_XXX functions are in\n  lib/cinder\n* enable with \u0027c-api,c-sch,c-vol\u0027 in ENABLED_SERVICES, n-vol is still the default\n* exercises/volumes.sh runs for cinder and n-vol\n* move config to /etc/cinder\n* change volume_group to stack-volumes; this also renames the backing file\n  to /opt/stack/data/stack-volumes-backing-file.\n* removes osapi_volume from nova.conf enabled_apis\n* integrates cinder + keystone\n* launches c-sch\n* tweaks for multi node\n* move enabled_apis substitution to init_cinder\n\n18Jun2010\n* restored \u0026 rebased\n* update setup.py to use setup_develop() in lib/cinder\n\nChange-Id: I1e1aa4387031c56e4fa239eb73bea2af8cef0e38\n"
    },
    {
      "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"
    }
  ]
}
