)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"2200b7e4d54a2ef24a878ef4ab41bad9e2f94671","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Isaku Yamahata \u003cisaku.yamahata@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-12-12 19:21:38 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"ml2: gre, vxlan type driver can leak segment_id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ia27b7e2c0ff4ab58be304e54123a679a5e35ab00"},{"line_number":10,"context_line":"Closes-Bug: #1260262"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F9WVQ%3D","line":7,"updated":"2013-12-12 12:07:30.000000000","message":"Please add a description of the change to provide a context for the commit.","commit_id":"106f75b768b83afa01e83636cb03ab4f4841375e"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"e32832725191982e8c0c0f5fb84d31458d0ef12a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Isaku Yamahata \u003cisaku.yamahata@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-12-12 19:21:38 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"ml2: gre, vxlan type driver can leak segment_id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ia27b7e2c0ff4ab58be304e54123a679a5e35ab00"},{"line_number":10,"context_line":"Closes-Bug: #1260262"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F9SSE%3D","line":7,"in_reply_to":"AAAATn%2F9WVQ%3D","updated":"2013-12-13 01:42:15.000000000","message":"Done","commit_id":"106f75b768b83afa01e83636cb03ab4f4841375e"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"c10bbe69f1186a617d829995c4eb0cbae688d14d","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ia27b7e2c0ff4ab58be304e54123a679a5e35ab00"},{"line_number":13,"context_line":"Closes-Bug: #1260262"},{"line_number":14,"context_line":"Signed-off-by: Isaku Yamahata \u003cisaku.yamahata@intel.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATn%2F9IY0%3D","line":14,"updated":"2013-12-16 14:28:57.000000000","message":"Nit: Signed-off-by not needed since you\u0027ve already signed the CLA.","commit_id":"5528f6a069915cba7ab19e42c68896b881bf55be"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"02f0b23a81e47951ed709ce3d129c261f5f5ca11","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ia27b7e2c0ff4ab58be304e54123a679a5e35ab00"},{"line_number":13,"context_line":"Closes-Bug: #1260262"},{"line_number":14,"context_line":"Signed-off-by: Isaku Yamahata \u003cisaku.yamahata@intel.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATn%2F9E8Q%3D","line":14,"in_reply_to":"AAAATn%2F9IY0%3D","updated":"2013-12-17 01:16:13.000000000","message":"Done","commit_id":"5528f6a069915cba7ab19e42c68896b881bf55be"}],"neutron/plugins/ml2/drivers/type_vxlan.py":[{"author":{"_account_id":5217,"name":"Shiv Haris","email":"shivharis@hotmail.com","username":"shh"},"change_message_id":"d170485b0d8438397c20402a8880445d599f4222","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                        LOG.debug(_(\"Releasing vxlan tunnel %s to pool\"),"},{"line_number":129,"context_line":"                                  vxlan_vni)"},{"line_number":130,"context_line":"                        break"},{"line_number":131,"context_line":"                else:"},{"line_number":132,"context_line":"                    session.delete(alloc)"},{"line_number":133,"context_line":"                    LOG.debug(_(\"Releasing vxlan tunnel %s outside pool\"),"},{"line_number":134,"context_line":"                              vxlan_vni)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9STc%3D","line":131,"updated":"2013-12-13 01:33:13.000000000","message":"Is there something wrong with this indentation?","commit_id":"106f75b768b83afa01e83636cb03ab4f4841375e"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"e32832725191982e8c0c0f5fb84d31458d0ef12a","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                        LOG.debug(_(\"Releasing vxlan tunnel %s to pool\"),"},{"line_number":129,"context_line":"                                  vxlan_vni)"},{"line_number":130,"context_line":"                        break"},{"line_number":131,"context_line":"                else:"},{"line_number":132,"context_line":"                    session.delete(alloc)"},{"line_number":133,"context_line":"                    LOG.debug(_(\"Releasing vxlan tunnel %s outside pool\"),"},{"line_number":134,"context_line":"                              vxlan_vni)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9SR4%3D","line":131,"in_reply_to":"AAAATn%2F9STc%3D","updated":"2013-12-13 01:42:15.000000000","message":"This else should be for for-statment. Not if-statement.","commit_id":"106f75b768b83afa01e83636cb03ab4f4841375e"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"84b74a6df1f218fcc09797e82cbd0489f60813b6","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                        LOG.debug(_(\"Releasing vxlan tunnel %s to pool\"),"},{"line_number":129,"context_line":"                                  vxlan_vni)"},{"line_number":130,"context_line":"                        break"},{"line_number":131,"context_line":"                else:"},{"line_number":132,"context_line":"                    session.delete(alloc)"},{"line_number":133,"context_line":"                    LOG.debug(_(\"Releasing vxlan tunnel %s outside pool\"),"},{"line_number":134,"context_line":"                              vxlan_vni)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F8%2BBo%3D","line":131,"updated":"2013-12-18 09:37:04.000000000","message":"TIL - thanks! this is the first time I\u0027ve come across this particular python construct (for... else)","commit_id":"4808f91eb2c245344517fc89c37c6c4c88e9051b"}],"neutron/tests/unit/ml2/test_type_gre.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"08e91e875f107c8b5b7ca8ec0f12bc00ca996f9f","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        self.addCleanup(db.clear_db)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def test_release_segment(self):"},{"line_number":199,"context_line":"        segment0 \u003d self.driver.allocate_tenant_segment(self.session)"},{"line_number":200,"context_line":"        segment1 \u003d self.driver.allocate_tenant_segment(self.session)"},{"line_number":201,"context_line":"        segment2 \u003d self.driver.allocate_tenant_segment(self.session)"},{"line_number":202,"context_line":"        segment3 \u003d self.driver.allocate_tenant_segment(self.session)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9WdQ%3D","line":199,"updated":"2013-12-12 11:29:32.000000000","message":"segments \u003d [self.driver.allocate_tenant_segment(self.session) for i in range(4)]","commit_id":"106f75b768b83afa01e83636cb03ab4f4841375e"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"e32832725191982e8c0c0f5fb84d31458d0ef12a","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        self.addCleanup(db.clear_db)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def test_release_segment(self):"},{"line_number":199,"context_line":"        segment0 \u003d self.driver.allocate_tenant_segment(self.session)"},{"line_number":200,"context_line":"        segment1 \u003d self.driver.allocate_tenant_segment(self.session)"},{"line_number":201,"context_line":"        segment2 \u003d self.driver.allocate_tenant_segment(self.session)"},{"line_number":202,"context_line":"        segment3 \u003d self.driver.allocate_tenant_segment(self.session)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9SRc%3D","line":199,"in_reply_to":"AAAATn%2F9WdQ%3D","updated":"2013-12-13 01:42:15.000000000","message":"Done","commit_id":"106f75b768b83afa01e83636cb03ab4f4841375e"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"08e91e875f107c8b5b7ca8ec0f12bc00ca996f9f","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        segment2 \u003d self.driver.allocate_tenant_segment(self.session)"},{"line_number":202,"context_line":"        segment3 \u003d self.driver.allocate_tenant_segment(self.session)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.driver.release_segment(self.session, segment0)"},{"line_number":205,"context_line":"        self.driver.release_segment(self.session, segment2)"},{"line_number":206,"context_line":"        self.driver.release_segment(self.session, segment1)"},{"line_number":207,"context_line":"        self.driver.release_segment(self.session, segment3)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9WdM%3D","line":204,"updated":"2013-12-12 11:29:32.000000000","message":"for segment in segments:\n self.driver.release_segment(self.session, segment)","commit_id":"106f75b768b83afa01e83636cb03ab4f4841375e"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"e32832725191982e8c0c0f5fb84d31458d0ef12a","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        segment2 \u003d self.driver.allocate_tenant_segment(self.session)"},{"line_number":202,"context_line":"        segment3 \u003d self.driver.allocate_tenant_segment(self.session)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.driver.release_segment(self.session, segment0)"},{"line_number":205,"context_line":"        self.driver.release_segment(self.session, segment2)"},{"line_number":206,"context_line":"        self.driver.release_segment(self.session, segment1)"},{"line_number":207,"context_line":"        self.driver.release_segment(self.session, segment3)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9SRY%3D","line":204,"in_reply_to":"AAAATn%2F9WdM%3D","updated":"2013-12-13 01:42:15.000000000","message":"Done","commit_id":"106f75b768b83afa01e83636cb03ab4f4841375e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b84f3d453c3b0bbfa023c18701ac2bc6ce2cf9a1","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo.config import cfg"},{"line_number":17,"context_line":"import testtools"},{"line_number":18,"context_line":"from testtools import matchers"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9IQs%3D","line":16,"updated":"2013-12-16 14:59:38.000000000","message":"No need to import. See a comment below.","commit_id":"5528f6a069915cba7ab19e42c68896b881bf55be"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"02f0b23a81e47951ed709ce3d129c261f5f5ca11","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo.config import cfg"},{"line_number":17,"context_line":"import testtools"},{"line_number":18,"context_line":"from testtools import matchers"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9E8I%3D","line":16,"in_reply_to":"AAAATn%2F9IQs%3D","updated":"2013-12-17 01:16:13.000000000","message":"Done","commit_id":"5528f6a069915cba7ab19e42c68896b881bf55be"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b84f3d453c3b0bbfa023c18701ac2bc6ce2cf9a1","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        self.driver.gre_id_ranges \u003d self.TUNNEL_MULTI_RANGES"},{"line_number":193,"context_line":"        self.driver._sync_gre_allocations()"},{"line_number":194,"context_line":"        self.session \u003d db.get_session()"},{"line_number":195,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":196,"context_line":"        self.addCleanup(db.clear_db)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def test_release_segment(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9IRo%3D","line":195,"updated":"2013-12-16 14:59:38.000000000","message":"cfg.CONF.reset is unnecessary here since BaseTestCase does it.","commit_id":"5528f6a069915cba7ab19e42c68896b881bf55be"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"02f0b23a81e47951ed709ce3d129c261f5f5ca11","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        self.driver.gre_id_ranges \u003d self.TUNNEL_MULTI_RANGES"},{"line_number":193,"context_line":"        self.driver._sync_gre_allocations()"},{"line_number":194,"context_line":"        self.session \u003d db.get_session()"},{"line_number":195,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":196,"context_line":"        self.addCleanup(db.clear_db)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def test_release_segment(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9E78%3D","line":195,"in_reply_to":"AAAATn%2F9IRo%3D","updated":"2013-12-17 01:16:13.000000000","message":"Done","commit_id":"5528f6a069915cba7ab19e42c68896b881bf55be"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b84f3d453c3b0bbfa023c18701ac2bc6ce2cf9a1","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        self.driver._sync_gre_allocations()"},{"line_number":194,"context_line":"        self.session \u003d db.get_session()"},{"line_number":195,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":196,"context_line":"        self.addCleanup(db.clear_db)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def test_release_segment(self):"},{"line_number":199,"context_line":"        segments \u003d [self.driver.allocate_tenant_segment(self.session)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9IRM%3D","line":196,"updated":"2013-12-16 14:59:38.000000000","message":"Isn\u0027t it required for GreTypeTest too?","commit_id":"5528f6a069915cba7ab19e42c68896b881bf55be"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"02f0b23a81e47951ed709ce3d129c261f5f5ca11","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        self.driver._sync_gre_allocations()"},{"line_number":194,"context_line":"        self.session \u003d db.get_session()"},{"line_number":195,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":196,"context_line":"        self.addCleanup(db.clear_db)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def test_release_segment(self):"},{"line_number":199,"context_line":"        segments \u003d [self.driver.allocate_tenant_segment(self.session)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9E7U%3D","line":196,"in_reply_to":"AAAATn%2F9IRM%3D","updated":"2013-12-17 01:16:13.000000000","message":"I file it as https://bugs.launchpad.net/devstack/+bug/1261593\nWill send a patch later","commit_id":"5528f6a069915cba7ab19e42c68896b881bf55be"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b84f3d453c3b0bbfa023c18701ac2bc6ce2cf9a1","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    def test_release_segment(self):"},{"line_number":199,"context_line":"        segments \u003d [self.driver.allocate_tenant_segment(self.session)"},{"line_number":200,"context_line":"                    for i in range(4)]"},{"line_number":201,"context_line":"        for i in (0, 2, 1, 3):"},{"line_number":202,"context_line":"            self.driver.release_segment(self.session, segments[i])"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        for key in (self.TUN_MIN0, self.TUN_MAX0,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9IOg%3D","line":201,"updated":"2013-12-16 14:59:38.000000000","message":"Does the order have any meaning? Just for randomization?","commit_id":"5528f6a069915cba7ab19e42c68896b881bf55be"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"02f0b23a81e47951ed709ce3d129c261f5f5ca11","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    def test_release_segment(self):"},{"line_number":199,"context_line":"        segments \u003d [self.driver.allocate_tenant_segment(self.session)"},{"line_number":200,"context_line":"                    for i in range(4)]"},{"line_number":201,"context_line":"        for i in (0, 2, 1, 3):"},{"line_number":202,"context_line":"            self.driver.release_segment(self.session, segments[i])"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        for key in (self.TUN_MIN0, self.TUN_MAX0,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9E8A%3D","line":201,"in_reply_to":"AAAATn%2F9IOg%3D","updated":"2013-12-17 01:16:13.000000000","message":"Just for randomization. Added the comment","commit_id":"5528f6a069915cba7ab19e42c68896b881bf55be"}],"neutron/tests/unit/ml2/test_type_vxlan.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"08e91e875f107c8b5b7ca8ec0f12bc00ca996f9f","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":215,"context_line":"        self.addCleanup(db.clear_db)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def test_release_segment(self):"},{"line_number":218,"context_line":"        segment0 \u003d self.driver.allocate_tenant_segment(self.session)"},{"line_number":219,"context_line":"        segment1 \u003d self.driver.allocate_tenant_segment(self.session)"},{"line_number":220,"context_line":"        segment2 \u003d self.driver.allocate_tenant_segment(self.session)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9WdI%3D","line":217,"updated":"2013-12-12 11:29:32.000000000","message":"same comments as on previos file","commit_id":"106f75b768b83afa01e83636cb03ab4f4841375e"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"72efa1d5122e513a36d1b497b76d8df7e617683b","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        self.driver.vxlan_vni_ranges \u003d self.TUNNEL_MULTI_RANGES"},{"line_number":212,"context_line":"        self.driver._sync_vxlan_allocations()"},{"line_number":213,"context_line":"        self.session \u003d db.get_session()"},{"line_number":214,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":215,"context_line":"        self.addCleanup(db.clear_db)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def test_release_segment(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9Dyk%3D","line":214,"updated":"2013-12-17 07:26:56.000000000","message":"nit: not needed here as well. However this is not a thing that should stop the patch from merging.","commit_id":"4808f91eb2c245344517fc89c37c6c4c88e9051b"}]}
