)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"68e509918c94ff9a7d14c85228e3ac77e8e996f4","unresolved":false,"context_lines":[{"line_number":11,"context_line":"The following patch proposes using the NotFound exception"},{"line_number":12,"context_line":"which does the same work."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"[1]:https://github.com/openstack/python-neutronclient/blob/master/neutronclient/neutron/v2_0/__init__.py#L72"},{"line_number":15,"context_line":"[2]:https://github.com/openstack/python-neutronclient/blob/master/neutronclient/neutron/v2_0/__init__.py#L109"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ib23d1e53947b5dffcff8db0dde77cae0a0b31243"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a5ae5dd_ed471e1b","line":14,"range":{"start_line":14,"start_character":40,"end_line":14,"end_character":53},"updated":"2016-02-05 00:27:42.000000000","message":"You should use permanent urls (and prefer git.openstack.org?)","commit_id":"764c76c076dce7fbcb0a6685d0261c99328ae20b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"b53c9b86c8fa9a9eda7eb2c3de17bbee1bff1912","unresolved":false,"context_lines":[{"line_number":11,"context_line":"The following patch proposes using the NotFound exception"},{"line_number":12,"context_line":"which does the same work."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"[1]:https://github.com/openstack/python-neutronclient/blob/master/neutronclient/neutron/v2_0/__init__.py#L72"},{"line_number":15,"context_line":"[2]:https://github.com/openstack/python-neutronclient/blob/master/neutronclient/neutron/v2_0/__init__.py#L109"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ib23d1e53947b5dffcff8db0dde77cae0a0b31243"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a5ae5dd_cd4022a8","line":14,"range":{"start_line":14,"start_character":40,"end_line":14,"end_character":53},"in_reply_to":"5a5ae5dd_ed471e1b","updated":"2016-02-05 00:40:32.000000000","message":"Done","commit_id":"764c76c076dce7fbcb0a6685d0261c99328ae20b"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"e2dbe49ae86ac0a4af86e2adcd792297af0b52a3","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix the exception when ID/Name not found"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently NeutronClient raises a broad exception"},{"line_number":10,"context_line":"(NeutronClientException) from [1]-[2], which is not appropriate."},{"line_number":11,"context_line":"The following patch proposes using the NotFound exception"},{"line_number":12,"context_line":"which does the same work."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5a5ae5dd_57e58ed9","line":10,"updated":"2016-02-05 11:22:37.000000000","message":"You could just give a general explanation on when this is done instead of pointing to the lines of code.","commit_id":"0b9f149734ef60d2c6a5191108290244e3e333f6"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"a9eb3a5dfee8ac37d46a3a626892063a5a4cf82c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix the exception when ID/Name not found"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently NeutronClient raises a broad exception"},{"line_number":10,"context_line":"(NeutronClientException) from [1]-[2], which is not appropriate."},{"line_number":11,"context_line":"The following patch proposes using the NotFound exception"},{"line_number":12,"context_line":"which does the same work."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5a5ae5dd_70bd14b6","line":10,"in_reply_to":"5a5ae5dd_57e58ed9","updated":"2016-02-06 00:38:46.000000000","message":"@Richard: \nJust wanted to be precise :)","commit_id":"0b9f149734ef60d2c6a5191108290244e3e333f6"}],"neutronclient/neutron/v2_0/__init__.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"966f26186e42d54527e1b33be1f498fc5973137a","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    not_found_message \u003d (_(\"Unable to find %(resource)s with id \""},{"line_number":69,"context_line":"                           \"\u0027%(id)s\u0027\") %"},{"line_number":70,"context_line":"                         {\u0027resource\u0027: resource, \u0027id\u0027: resource_id})"},{"line_number":71,"context_line":"    # 404 is used to simulate server side behavior"},{"line_number":72,"context_line":"    raise exceptions.NeutronClientException("},{"line_number":73,"context_line":"        message\u003dnot_found_message, status_code\u003d404)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_c499d0d2","side":"PARENT","line":71,"range":{"start_line":71,"start_character":3,"end_line":71,"end_character":50},"updated":"2016-02-18 23:54:10.000000000","message":"Isn\u0027t this comment still valid?","commit_id":"89372f1cb9b0ac062aecd715bd3e80ba436dd9a5"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"966f26186e42d54527e1b33be1f498fc5973137a","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        not_found_message \u003d (_(\"Unable to find %(resource)s with name \""},{"line_number":106,"context_line":"                               \"\u0027%(name)s\u0027\") %"},{"line_number":107,"context_line":"                             {\u0027resource\u0027: resource, \u0027name\u0027: name})"},{"line_number":108,"context_line":"        # 404 is used to simulate server side behavior"},{"line_number":109,"context_line":"        raise exceptions.NeutronClientException("},{"line_number":110,"context_line":"            message\u003dnot_found_message, status_code\u003d404)"},{"line_number":111,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_a49e4cb6","side":"PARENT","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":54},"updated":"2016-02-18 23:54:10.000000000","message":"Same as the above.","commit_id":"89372f1cb9b0ac062aecd715bd3e80ba436dd9a5"}],"neutronclient/tests/unit/test_name_or_id.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"966f26186e42d54527e1b33be1f498fc5973137a","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            headers\u003dmox.ContainsKeyValue(\u0027X-Auth-Token\u0027, test_cli20.TOKEN)"},{"line_number":121,"context_line":"        ).AndReturn((test_cli20.MyResp(200), resstr))"},{"line_number":122,"context_line":"        self.mox.ReplayAll()"},{"line_number":123,"context_line":"        try:"},{"line_number":124,"context_line":"            neutronV20.find_resourceid_by_name_or_id("},{"line_number":125,"context_line":"                self.client, \u0027network\u0027, name)"},{"line_number":126,"context_line":"        except exceptions.NeutronClientNoUniqueMatch as ex:"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_24d99c84","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":12},"updated":"2016-02-18 23:54:10.000000000","message":"If you change the below two try-except, consider fixing this as well.","commit_id":"b3d0fb2dab95e4ea889d2d78e369a0bde54ba991"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"70499d62b616acd7e2eb90ad0251d17b2f54a2bc","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            headers\u003dmox.ContainsKeyValue(\u0027X-Auth-Token\u0027, test_cli20.TOKEN)"},{"line_number":121,"context_line":"        ).AndReturn((test_cli20.MyResp(200), resstr))"},{"line_number":122,"context_line":"        self.mox.ReplayAll()"},{"line_number":123,"context_line":"        try:"},{"line_number":124,"context_line":"            neutronV20.find_resourceid_by_name_or_id("},{"line_number":125,"context_line":"                self.client, \u0027network\u0027, name)"},{"line_number":126,"context_line":"        except exceptions.NeutronClientNoUniqueMatch as ex:"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_6a4a4bae","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":12},"in_reply_to":"dae33548_24d99c84","updated":"2016-02-19 01:27:01.000000000","message":"Done","commit_id":"b3d0fb2dab95e4ea889d2d78e369a0bde54ba991"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"966f26186e42d54527e1b33be1f498fc5973137a","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            headers\u003dmox.ContainsKeyValue(\u0027X-Auth-Token\u0027, test_cli20.TOKEN)"},{"line_number":142,"context_line":"        ).AndReturn((test_cli20.MyResp(200), resstr))"},{"line_number":143,"context_line":"        self.mox.ReplayAll()"},{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            neutronV20.find_resourceid_by_name_or_id("},{"line_number":146,"context_line":"                self.client, \u0027network\u0027, name)"},{"line_number":147,"context_line":"        except exceptions.NotFound as ex:"},{"line_number":148,"context_line":"            self.assertIn(\u0027Unable to find\u0027, ex.message)"},{"line_number":149,"context_line":"            self.assertEqual(404, ex.status_code)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_get_id_from_name_multiple_with_project(self):"},{"line_number":152,"context_line":"        name \u003d \u0027web_server\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_4495c086","line":149,"range":{"start_line":144,"start_character":8,"end_line":149,"end_character":49},"updated":"2016-02-18 23:54:10.000000000","message":"Instead of try-except, consider using assertRaiess.\nI think it is a good chance to fix it.","commit_id":"b3d0fb2dab95e4ea889d2d78e369a0bde54ba991"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"70499d62b616acd7e2eb90ad0251d17b2f54a2bc","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            headers\u003dmox.ContainsKeyValue(\u0027X-Auth-Token\u0027, test_cli20.TOKEN)"},{"line_number":142,"context_line":"        ).AndReturn((test_cli20.MyResp(200), resstr))"},{"line_number":143,"context_line":"        self.mox.ReplayAll()"},{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            neutronV20.find_resourceid_by_name_or_id("},{"line_number":146,"context_line":"                self.client, \u0027network\u0027, name)"},{"line_number":147,"context_line":"        except exceptions.NotFound as ex:"},{"line_number":148,"context_line":"            self.assertIn(\u0027Unable to find\u0027, ex.message)"},{"line_number":149,"context_line":"            self.assertEqual(404, ex.status_code)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_get_id_from_name_multiple_with_project(self):"},{"line_number":152,"context_line":"        name \u003d \u0027web_server\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_8a4d0fc7","line":149,"range":{"start_line":144,"start_character":8,"end_line":149,"end_character":49},"in_reply_to":"dae33548_4495c086","updated":"2016-02-19 01:27:01.000000000","message":"Done","commit_id":"b3d0fb2dab95e4ea889d2d78e369a0bde54ba991"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"d0f9cf36f155b99b9f26294da44846214f7c5938","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            headers\u003dmox.ContainsKeyValue(\u0027X-Auth-Token\u0027, test_cli20.TOKEN)"},{"line_number":142,"context_line":"        ).AndReturn((test_cli20.MyResp(200), resstr))"},{"line_number":143,"context_line":"        self.mox.ReplayAll()"},{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            neutronV20.find_resourceid_by_name_or_id("},{"line_number":146,"context_line":"                self.client, \u0027network\u0027, name)"},{"line_number":147,"context_line":"        except exceptions.NotFound as ex:"},{"line_number":148,"context_line":"            self.assertIn(\u0027Unable to find\u0027, ex.message)"},{"line_number":149,"context_line":"            self.assertEqual(404, ex.status_code)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_get_id_from_name_multiple_with_project(self):"},{"line_number":152,"context_line":"        name \u003d \u0027web_server\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_d0fd0a0a","line":149,"range":{"start_line":144,"start_character":8,"end_line":149,"end_character":49},"in_reply_to":"dae33548_8a4d0fc7","updated":"2016-02-19 02:01:49.000000000","message":"@Akihiro: \nOn second thought, I think this can be catered in a separate patch.\nI found similar instances in other test files as well like:\nneutronclient/tests/unit/vpn/test_cli20_ipsecpolicy.py:134,neutronclient/tests/unit/vpn/test_cli20_ikepolicy.py:137 etc.\nLets keep this patch limited to the raising the correct exception.\nChanging try-catch to assertRaises will be done in a followup patch.","commit_id":"b3d0fb2dab95e4ea889d2d78e369a0bde54ba991"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"456da85b36694667913c838fdaa1554e15f4c151","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            headers\u003dmox.ContainsKeyValue(\u0027X-Auth-Token\u0027, test_cli20.TOKEN)"},{"line_number":142,"context_line":"        ).AndReturn((test_cli20.MyResp(200), resstr))"},{"line_number":143,"context_line":"        self.mox.ReplayAll()"},{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            neutronV20.find_resourceid_by_name_or_id("},{"line_number":146,"context_line":"                self.client, \u0027network\u0027, name)"},{"line_number":147,"context_line":"        except exceptions.NotFound as ex:"},{"line_number":148,"context_line":"            self.assertIn(\u0027Unable to find\u0027, ex.message)"},{"line_number":149,"context_line":"            self.assertEqual(404, ex.status_code)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_get_id_from_name_multiple_with_project(self):"},{"line_number":152,"context_line":"        name \u003d \u0027web_server\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_f0cdaeb8","line":149,"range":{"start_line":144,"start_character":8,"end_line":149,"end_character":49},"in_reply_to":"dae33548_d0fd0a0a","updated":"2016-02-19 02:08:20.000000000","message":"No problem in fixing it in a separate patch.","commit_id":"b3d0fb2dab95e4ea889d2d78e369a0bde54ba991"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"966f26186e42d54527e1b33be1f498fc5973137a","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        ).AndReturn((test_cli20.MyResp(200), resstr))"},{"line_number":191,"context_line":"        self.mox.ReplayAll()"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        try:"},{"line_number":194,"context_line":"            neutronV20.find_resourceid_by_name_or_id("},{"line_number":195,"context_line":"                self.client, \u0027security_group\u0027, name, project)"},{"line_number":196,"context_line":"        except exceptions.NotFound as ex:"},{"line_number":197,"context_line":"            self.assertIn(\u0027Unable to find\u0027, ex.message)"},{"line_number":198,"context_line":"            self.assertEqual(404, ex.status_code)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_648c4480","line":198,"range":{"start_line":193,"start_character":8,"end_line":198,"end_character":49},"updated":"2016-02-18 23:54:10.000000000","message":"ditto","commit_id":"b3d0fb2dab95e4ea889d2d78e369a0bde54ba991"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"70499d62b616acd7e2eb90ad0251d17b2f54a2bc","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        ).AndReturn((test_cli20.MyResp(200), resstr))"},{"line_number":191,"context_line":"        self.mox.ReplayAll()"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        try:"},{"line_number":194,"context_line":"            neutronV20.find_resourceid_by_name_or_id("},{"line_number":195,"context_line":"                self.client, \u0027security_group\u0027, name, project)"},{"line_number":196,"context_line":"        except exceptions.NotFound as ex:"},{"line_number":197,"context_line":"            self.assertIn(\u0027Unable to find\u0027, ex.message)"},{"line_number":198,"context_line":"            self.assertEqual(404, ex.status_code)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_aaca9318","line":198,"range":{"start_line":193,"start_character":8,"end_line":198,"end_character":49},"in_reply_to":"dae33548_648c4480","updated":"2016-02-19 01:27:01.000000000","message":"Done","commit_id":"b3d0fb2dab95e4ea889d2d78e369a0bde54ba991"}]}
