)]}'
{"quantum/db/db_base_plugin_v2.py":[{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"055040af7e93acfd63ea3e7b7f9a784740184e98","unresolved":false,"context_lines":[{"line_number":445,"context_line":"                # increment the first free"},{"line_number":446,"context_line":"                range[\u0027first_ip\u0027] \u003d str(netaddr.IPAddress(ip_address) + 1)"},{"line_number":447,"context_line":"            return {\u0027ip_address\u0027: ip_address, \u0027subnet_id\u0027: subnet[\u0027id\u0027]}"},{"line_number":448,"context_line":"        raise q_exc.IpAddressGenerationFailure(net_id\u003dnetwork_id[\u0027id\u0027])"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    @staticmethod"},{"line_number":451,"context_line":"    def _allocate_specific_ip(context, subnet_id, ip_address):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F1BE%3D","line":448,"updated":"2013-01-03 14:01:50.000000000","message":"shouldn\u0027t network_id be network?","commit_id":"7845249ebfb6cc92e1bfce5bf5fcd7324829f34d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":445,"context_line":"                # increment the first free"},{"line_number":446,"context_line":"                range[\u0027first_ip\u0027] \u003d str(netaddr.IPAddress(ip_address) + 1)"},{"line_number":447,"context_line":"            return {\u0027ip_address\u0027: ip_address, \u0027subnet_id\u0027: subnet[\u0027id\u0027]}"},{"line_number":448,"context_line":"        raise q_exc.IpAddressGenerationFailure(net_id\u003dnetwork_id[\u0027id\u0027])"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    @staticmethod"},{"line_number":451,"context_line":"    def _allocate_specific_ip(context, subnet_id, ip_address):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F01Y%3D","line":448,"in_reply_to":"AAAAM3%2F%2F1BE%3D","updated":"2013-01-03 16:19:25.000000000","message":"Correct. My bad. I should also be flogged in the town square for not adding a test.","commit_id":"7845249ebfb6cc92e1bfce5bf5fcd7324829f34d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":445,"context_line":"                # increment the first free"},{"line_number":446,"context_line":"                range[\u0027first_ip\u0027] \u003d str(netaddr.IPAddress(ip_address) + 1)"},{"line_number":447,"context_line":"            return {\u0027ip_address\u0027: ip_address, \u0027subnet_id\u0027: subnet[\u0027id\u0027]}"},{"line_number":448,"context_line":"        raise q_exc.IpAddressGenerationFailure(net_id\u003dnetwork[\u0027id\u0027])"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    @staticmethod"},{"line_number":451,"context_line":"    def _allocate_specific_ip(context, subnet_id, ip_address):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F0ss%3D","line":448,"updated":"2013-01-03 17:32:16.000000000","message":"Quite interestingly, network is never used in this routine beyond the above line.\nAs all the subnets are supposed to belong to the same network, maybes network[\u0027id\u0027] could be replaced with subnets[\u00270\u0027][\u0027network_id\u0027]","commit_id":"fbe2df1b5b507d5bf1a4e7f4516f39520482f5c1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":445,"context_line":"                # increment the first free"},{"line_number":446,"context_line":"                range[\u0027first_ip\u0027] \u003d str(netaddr.IPAddress(ip_address) + 1)"},{"line_number":447,"context_line":"            return {\u0027ip_address\u0027: ip_address, \u0027subnet_id\u0027: subnet[\u0027id\u0027]}"},{"line_number":448,"context_line":"        raise q_exc.IpAddressGenerationFailure(net_id\u003dnetwork[\u0027id\u0027])"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    @staticmethod"},{"line_number":451,"context_line":"    def _allocate_specific_ip(context, subnet_id, ip_address):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FzLM%3D","line":448,"in_reply_to":"AAAAM3%2F%2F0ss%3D","updated":"2013-01-04 18:35:06.000000000","message":"Done","commit_id":"fbe2df1b5b507d5bf1a4e7f4516f39520482f5c1"}],"quantum/tests/unit/test_db_plugin.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":867,"context_line":"            id \u003d subnet[\u0027subnet\u0027][\u0027network_id\u0027]"},{"line_number":868,"context_line":"            res \u003d self._create_port(fmt, id)"},{"line_number":869,"context_line":"            self.deserialize(fmt, res)"},{"line_number":870,"context_line":"            data \u003d jsonutils.loads(res.body)"},{"line_number":871,"context_line":"            msg \u003d (\u0027No more IP addresses available on network %s.\u0027) % id"},{"line_number":872,"context_line":"            self.assertEqual(data[\u0027QuantumError\u0027], msg)"},{"line_number":873,"context_line":"            self.assertEqual(res.status_int, 409)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F0sk%3D","line":870,"updated":"2013-01-03 17:45:04.000000000","message":"huh.. is there something special about this response that we need to ignore the result of deserialize and instead using jsonutils?  Is it because its an error?","commit_id":"fbe2df1b5b507d5bf1a4e7f4516f39520482f5c1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":867,"context_line":"            id \u003d subnet[\u0027subnet\u0027][\u0027network_id\u0027]"},{"line_number":868,"context_line":"            res \u003d self._create_port(fmt, id)"},{"line_number":869,"context_line":"            self.deserialize(fmt, res)"},{"line_number":870,"context_line":"            data \u003d jsonutils.loads(res.body)"},{"line_number":871,"context_line":"            msg \u003d (\u0027No more IP addresses available on network %s.\u0027) % id"},{"line_number":872,"context_line":"            self.assertEqual(data[\u0027QuantumError\u0027], msg)"},{"line_number":873,"context_line":"            self.assertEqual(res.status_int, 409)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FzLI%3D","line":870,"in_reply_to":"AAAAM3%2F%2F0sk%3D","updated":"2013-01-04 18:35:06.000000000","message":"i wanted to be able to access the message from the exception. any other way of doing this?","commit_id":"fbe2df1b5b507d5bf1a4e7f4516f39520482f5c1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":868,"context_line":"            res \u003d self._create_port(fmt, id)"},{"line_number":869,"context_line":"            self.deserialize(fmt, res)"},{"line_number":870,"context_line":"            data \u003d jsonutils.loads(res.body)"},{"line_number":871,"context_line":"            msg \u003d (\u0027No more IP addresses available on network %s.\u0027) % id"},{"line_number":872,"context_line":"            self.assertEqual(data[\u0027QuantumError\u0027], msg)"},{"line_number":873,"context_line":"            self.assertEqual(res.status_int, 409)"},{"line_number":874,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F0sU%3D","line":871,"updated":"2013-01-03 17:32:16.000000000","message":"Those parenthesis are not necessary, in my opinion.\n\nHowever, I\u0027m not a big fan of assertions based on error messages.. but it does not matter.","commit_id":"fbe2df1b5b507d5bf1a4e7f4516f39520482f5c1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":868,"context_line":"            res \u003d self._create_port(fmt, id)"},{"line_number":869,"context_line":"            self.deserialize(fmt, res)"},{"line_number":870,"context_line":"            data \u003d jsonutils.loads(res.body)"},{"line_number":871,"context_line":"            msg \u003d (\u0027No more IP addresses available on network %s.\u0027) % id"},{"line_number":872,"context_line":"            self.assertEqual(data[\u0027QuantumError\u0027], msg)"},{"line_number":873,"context_line":"            self.assertEqual(res.status_int, 409)"},{"line_number":874,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FzJk%3D","line":871,"in_reply_to":"AAAAM3%2F%2F0NM%3D","updated":"2013-01-04 18:35:06.000000000","message":"Done","commit_id":"fbe2df1b5b507d5bf1a4e7f4516f39520482f5c1"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"595d2f539a2520b8b5b7b5d7da6e65fe835a3f78","unresolved":false,"context_lines":[{"line_number":868,"context_line":"            res \u003d self._create_port(fmt, id)"},{"line_number":869,"context_line":"            self.deserialize(fmt, res)"},{"line_number":870,"context_line":"            data \u003d jsonutils.loads(res.body)"},{"line_number":871,"context_line":"            msg \u003d (\u0027No more IP addresses available on network %s.\u0027) % id"},{"line_number":872,"context_line":"            self.assertEqual(data[\u0027QuantumError\u0027], msg)"},{"line_number":873,"context_line":"            self.assertEqual(res.status_int, 409)"},{"line_number":874,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Fzm8%3D","line":871,"in_reply_to":"AAAAM3%2F%2F0NM%3D","updated":"2013-01-04 14:06:42.000000000","message":"one reason for use  q_exc.IpAddressGenerationFailure is the message was i18n message.","commit_id":"fbe2df1b5b507d5bf1a4e7f4516f39520482f5c1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":868,"context_line":"            res \u003d self._create_port(fmt, id)"},{"line_number":869,"context_line":"            self.deserialize(fmt, res)"},{"line_number":870,"context_line":"            data \u003d jsonutils.loads(res.body)"},{"line_number":871,"context_line":"            msg \u003d (\u0027No more IP addresses available on network %s.\u0027) % id"},{"line_number":872,"context_line":"            self.assertEqual(data[\u0027QuantumError\u0027], msg)"},{"line_number":873,"context_line":"            self.assertEqual(res.status_int, 409)"},{"line_number":874,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FzJo%3D","line":871,"in_reply_to":"AAAAM3%2F%2F0sU%3D","updated":"2013-01-04 18:35:06.000000000","message":"Done","commit_id":"fbe2df1b5b507d5bf1a4e7f4516f39520482f5c1"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"86cdfbeba17405ead364f61c31e2bc8d969f5629","unresolved":false,"context_lines":[{"line_number":868,"context_line":"            res \u003d self._create_port(fmt, id)"},{"line_number":869,"context_line":"            self.deserialize(fmt, res)"},{"line_number":870,"context_line":"            data \u003d jsonutils.loads(res.body)"},{"line_number":871,"context_line":"            msg \u003d (\u0027No more IP addresses available on network %s.\u0027) % id"},{"line_number":872,"context_line":"            self.assertEqual(data[\u0027QuantumError\u0027], msg)"},{"line_number":873,"context_line":"            self.assertEqual(res.status_int, 409)"},{"line_number":874,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F0NM%3D","line":871,"in_reply_to":"AAAAM3%2F%2F0sU%3D","updated":"2013-01-04 00:20:14.000000000","message":"I think we should use the message from the exception q_exc.IpAddressGenerationFailure.","commit_id":"fbe2df1b5b507d5bf1a4e7f4516f39520482f5c1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":868,"context_line":"            res \u003d self._create_port(fmt, id)"},{"line_number":869,"context_line":"            self.deserialize(fmt, res)"},{"line_number":870,"context_line":"            data \u003d jsonutils.loads(res.body)"},{"line_number":871,"context_line":"            msg \u003d (\u0027No more IP addresses available on network %s.\u0027) % id"},{"line_number":872,"context_line":"            self.assertEqual(data[\u0027QuantumError\u0027], msg)"},{"line_number":873,"context_line":"            self.assertEqual(res.status_int, 409)"},{"line_number":874,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FzJg%3D","line":871,"in_reply_to":"AAAAM3%2F%2Fzm8%3D","updated":"2013-01-04 18:35:06.000000000","message":"Done","commit_id":"fbe2df1b5b507d5bf1a4e7f4516f39520482f5c1"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":880,"context_line":"            id \u003d subnet[\u0027subnet\u0027][\u0027network_id\u0027]"},{"line_number":881,"context_line":"            res \u003d self._create_port(fmt, id)"},{"line_number":882,"context_line":"            self.deserialize(fmt, res)"},{"line_number":883,"context_line":"            data \u003d jsonutils.loads(res.body)"},{"line_number":884,"context_line":"            msg \u003d q_exc.IpAddressGenerationFailure(net_id\u003did)._error_string"},{"line_number":885,"context_line":"            self.assertEquals(data[\u0027QuantumError\u0027], msg)"},{"line_number":886,"context_line":"            self.assertEqual(res.status_int, 409)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FyHo%3D","line":883,"updated":"2013-01-05 02:17:49.000000000","message":"I think we can get the error msg from value returned by self.deserialize(fmt, res).","commit_id":"87f0a2e363494f8cbfb3978b3e188ab33d6a9aff"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":880,"context_line":"            id \u003d subnet[\u0027subnet\u0027][\u0027network_id\u0027]"},{"line_number":881,"context_line":"            res \u003d self._create_port(fmt, id)"},{"line_number":882,"context_line":"            self.deserialize(fmt, res)"},{"line_number":883,"context_line":"            data \u003d jsonutils.loads(res.body)"},{"line_number":884,"context_line":"            msg \u003d q_exc.IpAddressGenerationFailure(net_id\u003did)._error_string"},{"line_number":885,"context_line":"            self.assertEquals(data[\u0027QuantumError\u0027], msg)"},{"line_number":886,"context_line":"            self.assertEqual(res.status_int, 409)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Fx4I%3D","line":883,"in_reply_to":"AAAAM3%2F%2FyHo%3D","updated":"2013-01-05 09:03:36.000000000","message":"Done","commit_id":"87f0a2e363494f8cbfb3978b3e188ab33d6a9aff"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":881,"context_line":"            res \u003d self._create_port(fmt, id)"},{"line_number":882,"context_line":"            self.deserialize(fmt, res)"},{"line_number":883,"context_line":"            data \u003d jsonutils.loads(res.body)"},{"line_number":884,"context_line":"            msg \u003d q_exc.IpAddressGenerationFailure(net_id\u003did)._error_string"},{"line_number":885,"context_line":"            self.assertEquals(data[\u0027QuantumError\u0027], msg)"},{"line_number":886,"context_line":"            self.assertEqual(res.status_int, 409)"},{"line_number":887,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FyIk%3D","line":884,"updated":"2013-01-05 02:17:49.000000000","message":"how about using str(q_exc.IpAddressGenerationFailure(net_id\u003did))?","commit_id":"87f0a2e363494f8cbfb3978b3e188ab33d6a9aff"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":881,"context_line":"            res \u003d self._create_port(fmt, id)"},{"line_number":882,"context_line":"            self.deserialize(fmt, res)"},{"line_number":883,"context_line":"            data \u003d jsonutils.loads(res.body)"},{"line_number":884,"context_line":"            msg \u003d q_exc.IpAddressGenerationFailure(net_id\u003did)._error_string"},{"line_number":885,"context_line":"            self.assertEquals(data[\u0027QuantumError\u0027], msg)"},{"line_number":886,"context_line":"            self.assertEqual(res.status_int, 409)"},{"line_number":887,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Fx4E%3D","line":884,"in_reply_to":"AAAAM3%2F%2FyIk%3D","updated":"2013-01-05 09:03:36.000000000","message":"Done","commit_id":"87f0a2e363494f8cbfb3978b3e188ab33d6a9aff"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":882,"context_line":"            self.deserialize(fmt, res)"},{"line_number":883,"context_line":"            data \u003d jsonutils.loads(res.body)"},{"line_number":884,"context_line":"            msg \u003d q_exc.IpAddressGenerationFailure(net_id\u003did)._error_string"},{"line_number":885,"context_line":"            self.assertEquals(data[\u0027QuantumError\u0027], msg)"},{"line_number":886,"context_line":"            self.assertEqual(res.status_int, 409)"},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"    def test_update_port_update_ip(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FyII%3D","line":885,"updated":"2013-01-05 02:17:49.000000000","message":"I think we should use assertEqual() instead of assertEquals(xx) since plurar one is going to deprecated cycle.","commit_id":"87f0a2e363494f8cbfb3978b3e188ab33d6a9aff"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":882,"context_line":"            self.deserialize(fmt, res)"},{"line_number":883,"context_line":"            data \u003d jsonutils.loads(res.body)"},{"line_number":884,"context_line":"            msg \u003d q_exc.IpAddressGenerationFailure(net_id\u003did)._error_string"},{"line_number":885,"context_line":"            self.assertEquals(data[\u0027QuantumError\u0027], msg)"},{"line_number":886,"context_line":"            self.assertEqual(res.status_int, 409)"},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"    def test_update_port_update_ip(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Fx4A%3D","line":885,"in_reply_to":"AAAAM3%2F%2FyII%3D","updated":"2013-01-05 09:03:36.000000000","message":"Done","commit_id":"87f0a2e363494f8cbfb3978b3e188ab33d6a9aff"}]}
