)]}'
{
  "log": [
    {
      "commit": "d06ca1c26e7a1ee3e789ffb9417103d096717ab4",
      "tree": "5ecc37316cc4de02bb285f102a6be060de186922",
      "parents": [
        "620384cda19a8ac90e41055f9f8063d3dfa0fcc8"
      ],
      "author": {
        "name": "ChangBo Guo(gcb)",
        "email": "eric.guo@easystack.cn",
        "time": "Sat Dec 26 11:10:41 2015 +0800"
      },
      "committer": {
        "name": "ChangBo Guo(gcb)",
        "email": "eric.guo@easystack.cn",
        "time": "Sat Dec 26 12:49:56 2015 +0800"
      },
      "message": "Trival: Remove unused logging import\n\nChange-Id: I13298e642f25c9f70dcff9b1e056b418edf0a461\n"
    },
    {
      "commit": "6be90cc08dc955b39ce8f8bd9b127be1efe52666",
      "tree": "249dbb5295d56a2f7476fae0eba18ed7b72588a7",
      "parents": [
        "edfefab83e55cb9fe3ae210e27309f54cf0379c4"
      ],
      "author": {
        "name": "xiexs",
        "email": "xiexs@cn.fujitsu.com",
        "time": "Fri Nov 27 03:41:52 2015 -0500"
      },
      "committer": {
        "name": "xiexs",
        "email": "xiexs@cn.fujitsu.com",
        "time": "Wed Dec 02 11:10:31 2015 +0000"
      },
      "message": "Optimize \"open\" method with context manager\n\nReplace the classic open() method with opening context\nmanager to open file so that the file will be closed\neven if an exception occurs.\n\nChange-Id: I0d53b7a38fee6a2ef8ce74496d220adc954afb98\n"
    },
    {
      "commit": "b1ee0673779c629eca59eef738939ad272bd0353",
      "tree": "e9602c780f18e0df60f670be566cc4ed509a5da8",
      "parents": [
        "ca25c9864ae52cade219c84cc11fb8d691fb59cf"
      ],
      "author": {
        "name": "Brandon Palm",
        "email": "bapalm@us.ibm.com",
        "time": "Wed Oct 28 14:51:25 2015 -0500"
      },
      "committer": {
        "name": "Brandon Palm",
        "email": "bapalm@us.ibm.com",
        "time": "Fri Oct 30 08:54:41 2015 -0500"
      },
      "message": "Fixed a bunch of typos throughout Neutron\n\nWent through all of the docstrings in Neutron and did\nsome cleanup.  I\u0027m sure there are bunch more that I have missed.\n\nChange-Id: Ib29d2de1c580880c89ed4fd069e1515d0977a3e7\n"
    },
    {
      "commit": "041c620dda06d2cd004de036dfbfcefaaa8368b1",
      "tree": "3708a7d7233a63b41dcf2a5a7d6e2c03bab61763",
      "parents": [
        "1eedd9ac1c185dbcab2ae48cc3d60f2f309f232e"
      ],
      "author": {
        "name": "Kevin Benton",
        "email": "blak111@gmail.com",
        "time": "Tue Aug 11 06:01:25 2015 -0700"
      },
      "committer": {
        "name": "Kevin Benton",
        "email": "blak111@gmail.com",
        "time": "Tue Aug 11 06:05:37 2015 -0700"
      },
      "message": "Replace \u0027import json\u0027 with oslo_serialization\n\nReplace remaining occurences of \u0027import json\u0027 with\n\u0027from oslo_serialization import jsonutils as json\u0027\nso pylint doesn\u0027t complain every time someone happens\nto make a change to one of the modules that still\nuses it.\n\nChange-Id: Ife9f0fc54ad36887bdb939028f8903be16e590d6\n"
    },
    {
      "commit": "0584d56ec181e7086e9d5c4443dc8aa779ad181c",
      "tree": "b976a3cec92ba6d214d0838f4103b33f7f05ff78",
      "parents": [
        "83350346d1d7bdd5df283754e93ef244456d9dc6"
      ],
      "author": {
        "name": "sonu.kumar",
        "email": "sonu.kumar@nectechnologies.in",
        "time": "Mon Aug 03 17:15:52 2015 +0530"
      },
      "committer": {
        "name": "sonu.kumar",
        "email": "sonu.kumar@nectechnologies.in",
        "time": "Mon Aug 03 17:23:20 2015 +0530"
      },
      "message": "Replaces reduce with six.moves.reduce for py 2/3 compatibility\n\nThis patch replaces \"reduce\" with \"six.moves.reduce\" to comply with\nthe newer python version i.e. python3.\n\nPartially-Implements: Blueprint neutron-python3\n\nChange-Id: Iddb52d86665123ade5920bc09f7802e29440e7dd\n"
    },
    {
      "commit": "ef10445b8c81d8c3c644f25c9a672babce96a2df",
      "tree": "681fc5523c30995f0f2e2b49e0d558c9e1b31b59",
      "parents": [
        "e0944b430a0f7d79b6dbbaabf0487e9b9f41a4a0"
      ],
      "author": {
        "name": "Martin Roy",
        "email": "mroy@iweb.com",
        "time": "Thu Jun 18 13:45:02 2015 -0400"
      },
      "committer": {
        "name": "Martin Roy",
        "email": "mroy@iweb.com",
        "time": "Mon Jun 22 09:13:56 2015 -0400"
      },
      "message": "Use string exception casting everywhere\n\nInstead of the deprecated \"message\" member access,\ncasting to a string invokes the __str__ method of the exception\nthat is wired to return the message\n\nAdded a test of the failure cases of IpRouteCommand::delete_gateway\nbecause they were missing\n\nRunning unit and functional tests locally no longer shows the warning\nreported in the bug.\n\nChange-Id: Ia79f526aa973ece1145615d65349f860aa3fd465\nCloses-Bug: #1466542\n"
    },
    {
      "commit": "5e1d579bc1e82a5b31355a351ab3bbb348aaec97",
      "tree": "7178d5463b82a263732ff2be040e6d14de694ec5",
      "parents": [
        "9ed7cf307130f9feae082b1f4895faaf827ad642"
      ],
      "author": {
        "name": "Cyril Roelandt",
        "email": "cyril@redhat.com",
        "time": "Mon Jun 15 15:07:28 2015 +0000"
      },
      "committer": {
        "name": "Cyril Roelandt",
        "email": "cyril@redhat.com",
        "time": "Mon Jun 15 17:08:44 2015 +0200"
      },
      "message": "Python 3: use dict.values instead of dict.itervalues\n\nThis works with both Python 2 and 3, and should not have any performance\nimpact.\n\nChange-Id: I2a14945c60de513b91c6f022ff5dcc503ce2a8ad\nBlueprint: neutron-python3\n"
    },
    {
      "commit": "5ab09168047ea8c07ba4383db497bdac27898088",
      "tree": "77fe497ae53775c0d0a1711caf5947eb1ddfc03b",
      "parents": [
        "9f4885205b0c8ab605912ff140255df1a21186f0"
      ],
      "author": {
        "name": "Cyril Roelandt",
        "email": "cyril@redhat.com",
        "time": "Mon Jun 08 16:09:49 2015 +0000"
      },
      "committer": {
        "name": "Cyril Roelandt",
        "email": "cyril@redhat.com",
        "time": "Tue Jun 09 20:26:09 2015 +0200"
      },
      "message": "Python 3: use next() instead of iterator.next()\n\nThe latter only works in Python 2.\n\nAlso define a __next__ method in the classes that define a next method.\n\nChange-Id: Iaa1a1e500facab50d8bcdffda39ccad3f2e4e9bb\nBlueprint: neutron-python3\n"
    },
    {
      "commit": "ca1c293d1d9729e6e205e5506491839cac3187da",
      "tree": "bedcf23048b1e287edc877cfa42ad6663b72a5c4",
      "parents": [
        "97510dce6953e9026dad336f7b2852227e906597"
      ],
      "author": {
        "name": "Cyril Roelandt",
        "email": "cyril@redhat.com",
        "time": "Mon Jun 01 20:53:46 2015 +0000"
      },
      "committer": {
        "name": "Cyril Roelandt",
        "email": "cyril.roelandt@enovance.com",
        "time": "Mon Jun 01 23:13:42 2015 +0200"
      },
      "message": "Python3: use six.iteritems() instead of dict.iteritems()\n\nThis also adds a check to neutron/hacking/checks.py that should catch this\nerror in the future.\n\nBlueprint: neutron-python3\nChange-Id: Ie7b833ffa173772d39b85ee3ecaddace18e1274f\n"
    },
    {
      "commit": "d7737b1d039ca15efe6fbaeb588854308d0a94bc",
      "tree": "53a84e0016df012f26d9e75192e64ea2845b26c7",
      "parents": [
        "d9ac53b2e238a32c250d31f01363352394d8bb15"
      ],
      "author": {
        "name": "Adrien Vergé",
        "email": "adrienverge@gmail.com",
        "time": "Tue May 19 11:05:27 2015 +0200"
      },
      "committer": {
        "name": "Adrien Vergé",
        "email": "adrienverge@gmail.com",
        "time": "Tue May 19 17:32:17 2015 +0200"
      },
      "message": "Python 3: Use six.moves.range\n\nThe function `xrange` was renamed to `range` in Python 3.\n\n* Remove `xrange` occurences so that Python 3 tests can pass. Use\n  `six.moves.range` instead to get the right function in both cases.\n* Generalize the use of the efficient `range` (ex-`xrange`) in\n  critical sections (when iterating over large lists).\n* Simplify code.\n* Add a hacking check to prevent future usage of `xrange`.\n\nChange-Id: I080acaaa1d4753619fbbb76dddba6d946d84e73f\nPartially implements: blueprint neutron-python3\n"
    },
    {
      "commit": "bde4a4bdd0848bab18d6d7d39f2482a1d63e942d",
      "tree": "85256f9dd699e9e833ace11bd06ab9aeae5ef86b",
      "parents": [
        "ab1ab82fe58d8a8acef322fa97901157de2296fe"
      ],
      "author": {
        "name": "Cyril Roelandt",
        "email": "cyril.roelandt@enovance.com",
        "time": "Thu May 07 13:00:38 2015 +0000"
      },
      "committer": {
        "name": "Cyril Roelandt",
        "email": "cyril.roelandt@enovance.com",
        "time": "Mon May 11 16:09:51 2015 +0200"
      },
      "message": "Allow users to run \u0027tox -epy34\u0027\n\nWith this commit, it is possible to successfully run \u0027tox -epy34\u0027, even though\nonly a small amount of tests will actually be run. This is a required step in\nmaking Neutron compatible with Python 3, as described in the \u0027Porting to Python\n3\u0027 specification.\n\nThis commit:\n- fixes some broken imports, while making sure they still work with Python 3;\n- updates a call to gettext.install;\n- adds a py34 target in tox.ini.\n\nChange-Id: I91cc7a992d05ea85f7004d1c5a45a1c02cbf1c85\nBlueprint: neutron-python3\n"
    },
    {
      "commit": "70cbd043a0877a81b5d03ea29d7446683154fcef",
      "tree": "ae5d9338a542b1940d7dc5a2402cce9168e7f610",
      "parents": [
        "95fb3d6a58297afe4cd985e2b8eb9f32354ac772"
      ],
      "author": {
        "name": "Maru Newby",
        "email": "marun@redhat.com",
        "time": "Tue Mar 24 16:21:57 2015 +0000"
      },
      "committer": {
        "name": "Maru Newby",
        "email": "marun@redhat.com",
        "time": "Tue Mar 31 23:05:07 2015 +0000"
      },
      "message": "Move API tests to neutron.test.api\n\nTo make api test development simpler, move the tests to\nneutron.tests.api.  The neutron.tests.tempest subtree will remain\nwhile work continues to transition the required functionality to\ntempest-lib.\n\nChange-Id: Ie90671fbfe2f633e851da82728e152482133fd87\n"
    },
    {
      "commit": "5690a35d64c166147daad0e7422cb100403cfbf1",
      "tree": "83961f15c56d3ec5deec1f867ad5f3373824fbb9",
      "parents": [
        "1b9aefd002df575dbc9210c680223345b8a56faf"
      ],
      "author": {
        "name": "Maru Newby",
        "email": "marun@redhat.com",
        "time": "Fri Mar 13 18:46:40 2015 +0000"
      },
      "committer": {
        "name": "Maru Newby",
        "email": "marun@redhat.com",
        "time": "Fri Mar 13 18:46:40 2015 +0000"
      },
      "message": "Update api tests from tempest\n\nThis change is the result of running tools/copy_api_tests_from_tempest.sh\n\nChange-Id: Ibcb6d11b3f7ed8b859c69d4c591bf785b0611416\n"
    },
    {
      "commit": "c695f9fadc200d2f3c210f66555c7875974f52b7",
      "tree": "86c4693bc4b2b599068bf8fd6f533e97653c3c8e",
      "parents": [
        "73364dc815b6781cb99a4002e6e0d2e828be467e"
      ],
      "author": {
        "name": "Ihar Hrachyshka",
        "email": "ihrachys@redhat.com",
        "time": "Thu Feb 26 23:26:41 2015 +0100"
      },
      "committer": {
        "name": "Ihar Hrachyshka",
        "email": "ihrachys@redhat.com",
        "time": "Thu Mar 12 11:22:56 2015 +0100"
      },
      "message": "Migrate to oslo.log\n\nIt\u0027s mostly a matter of changing imports to a new location.\n\nNon-obvious changes needed:\n* pass overwrite\u003d argument to oslo_context since oslo.log reads context\n  from its thread local store and not local.store from incubator\n* don\u0027t store context at local.store now that there is no code that\n  would consume it\n* LOG.deprecated() -\u003e versionutils.report_deprecated_feature()\n* dropped LOG.audit check from hacking rule since now the method does\n  not exist\n* WritableLogger is now located in oslo_log.loggers\n\nDropped log module from the tree. Also dropped local module that is now\nof no use (and obsolete, as per oslo team).\n\nAdded versionutils back to openstack-common.conf since now we use the\nmodule directly from neutron code and not just as a dependency of some\nother oslo-incubator module.\n\nNote: tempest tests are expected to be broken now, so instead of fixing\nall the oslo.log related issues for the subtree in this patch, I only\nadded TODOs with directions for later fix.\n\nCloses-Bug: #1425013\nChange-Id: I310e059a815377579de6bb2aa204de168e72571e\n"
    },
    {
      "commit": "b096d9f85db70568b51f0948190792c340d472fb",
      "tree": "01ad1be2e308ac9c827157a624d5ef5cc2176ca6",
      "parents": [
        "deb4631fa6800b0493fa67dcda2f6a6329745a3e"
      ],
      "author": {
        "name": "Maru Newby",
        "email": "marun@redhat.com",
        "time": "Mon Mar 09 18:54:54 2015 +0000"
      },
      "committer": {
        "name": "Maru Newby",
        "email": "marun@redhat.com",
        "time": "Mon Mar 09 21:24:55 2015 +0000"
      },
      "message": "Initial copy of api tests from tempest\n\nThis change is the result of running\ntools/copy_api_tests_from_tempest.sh.\n\nChange-Id: Ica02dbe1ed26f1bc9526ea9682756ebc5877cf4a\n"
    }
  ]
}
