)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"2380f2776819e26e5ee600f5e89501fbea7d019f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"A resource and a subresource has a parent-child relationship, for"},{"line_number":11,"context_line":"example:"},{"line_number":12,"context_line":"A qos resource has a subresource of bandwith_limit_rules. This patch"},{"line_number":13,"context_line":"will"},{"line_number":14,"context_line":"allow urls like : /qos/policies/{policy_id}/bandwidth_limit_rules to"},{"line_number":15,"context_line":"work."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ib2288234710fd6eed7fb9f6b880f57c9dd3beade"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3aaa91ec_9b41fbab","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":68},"updated":"2016-07-01 01:00:42.000000000","message":"nit: you can join both lines, will look much more readable.","commit_id":"4f58daea20f7d75612de0cbd1bc0a3c8c2f046c4"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"b8f71445c1552022e182f53ea9063a08593ea2d5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"A resource and a subresource has a parent-child relationship, for"},{"line_number":11,"context_line":"example:"},{"line_number":12,"context_line":"A qos resource has a subresource of bandwith_limit_rules. This patch"},{"line_number":13,"context_line":"will"},{"line_number":14,"context_line":"allow urls like : /qos/policies/{policy_id}/bandwidth_limit_rules to"},{"line_number":15,"context_line":"work."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ib2288234710fd6eed7fb9f6b880f57c9dd3beade"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aa78d24_86cc008a","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":68},"in_reply_to":"3aaa91ec_9b41fbab","updated":"2016-07-07 14:37:42.000000000","message":"Done","commit_id":"4f58daea20f7d75612de0cbd1bc0a3c8c2f046c4"}],"neutron/pecan_wsgi/controllers/resource.py":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"2380f2776819e26e5ee600f5e89501fbea7d019f","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def get(self, *args, **kwargs):"},{"line_number":39,"context_line":"        neutron_context \u003d request.context[\u0027neutron_context\u0027]"},{"line_number":40,"context_line":"        getter_args \u003d [neutron_context, self.item]"},{"line_number":41,"context_line":"        # NOTE(tonytan4ever): This implicitly forces the getter method"},{"line_number":42,"context_line":"        # uses the parent_id as the last argument, thus easy for future"},{"line_number":43,"context_line":"        # refactoring"},{"line_number":44,"context_line":"        if \u0027parent_id\u0027 in request.context:"},{"line_number":45,"context_line":"            getter_args.append(request.context[\u0027parent_id\u0027])"},{"line_number":46,"context_line":"        fields \u003d request.context[\u0027query_params\u0027].get(\u0027fields\u0027)"},{"line_number":47,"context_line":"        return {self.resource: self.plugin_shower(*getter_args, fields\u003dfields)}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @utils.when(index, method\u003d\u0027HEAD\u0027)"},{"line_number":50,"context_line":"    @utils.when(index, method\u003d\u0027POST\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_3b5ba787","line":47,"range":{"start_line":40,"start_character":0,"end_line":47,"end_character":79},"updated":"2016-07-01 01:00:42.000000000","message":"This code, and two below, look very similar. Could you refactor this, and reuse?","commit_id":"4f58daea20f7d75612de0cbd1bc0a3c8c2f046c4"}],"neutron/pecan_wsgi/controllers/utils.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"f8ade6b93eb5c267d32d3fb9a18c1ffbfefca69c","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @property"},{"line_number":166,"context_line":"    def plugin_updater(self):"},{"line_number":167,"context_line":"        print self.resource, self._parent_id_name"},{"line_number":168,"context_line":"        return getattr(self.plugin, self._plugin_handlers[self.UPDATE])"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_a31c326b","line":167,"updated":"2016-07-14 18:46:51.000000000","message":"I don\u0027t think you want this in","commit_id":"c18db23de13d2987ad989498d0775ab370ceef65"}],"neutron/pecan_wsgi/hooks/policy_enforcement.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"03fcbe4e620aa021ee2dcc218d19aefa4972f5fa","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    if plugin:"},{"line_number":54,"context_line":"        getter \u003d getattr(plugin, \u0027get_%s\u0027 % resource)"},{"line_number":55,"context_line":"        getter_args \u003d [neutron_context, resource_id]"},{"line_number":56,"context_line":"        if parent_id is not None:"},{"line_number":57,"context_line":"            getter_args.append(parent_id)"},{"line_number":58,"context_line":"        return getter(*getter_args, fields\u003dfield_list)"},{"line_number":59,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_b59ddb67","line":56,"range":{"start_line":56,"start_character":20,"end_line":56,"end_character":32},"updated":"2016-07-01 06:41:32.000000000","message":"if parent_id:","commit_id":"4f58daea20f7d75612de0cbd1bc0a3c8c2f046c4"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"b8f71445c1552022e182f53ea9063a08593ea2d5","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    if plugin:"},{"line_number":54,"context_line":"        getter \u003d getattr(plugin, \u0027get_%s\u0027 % resource)"},{"line_number":55,"context_line":"        getter_args \u003d [neutron_context, resource_id]"},{"line_number":56,"context_line":"        if parent_id is not None:"},{"line_number":57,"context_line":"            getter_args.append(parent_id)"},{"line_number":58,"context_line":"        return getter(*getter_args, fields\u003dfield_list)"},{"line_number":59,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_c6be08ad","line":56,"range":{"start_line":56,"start_character":20,"end_line":56,"end_character":32},"in_reply_to":"3aaa91ec_b59ddb67","updated":"2016-07-07 14:37:42.000000000","message":"Done","commit_id":"4f58daea20f7d75612de0cbd1bc0a3c8c2f046c4"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a4bfa540f901681e72436b6c8dd91b04c8fabae2","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # _plugin_handlers"},{"line_number":90,"context_line":"        controller \u003d manager.NeutronManager.get_controller_for_resource("},{"line_number":91,"context_line":"            collection)"},{"line_number":92,"context_line":"        action \u003d controller._plugin_handlers["},{"line_number":93,"context_line":"            pecan_constants.ACTION_MAP[state.request.method]]"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # NOTE(salv-orlando): As bulk updates are not supported, in case of PUT"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_a3f3df71","line":92,"range":{"start_line":92,"start_character":28,"end_line":92,"end_character":44},"updated":"2016-07-22 04:59:21.000000000","message":"probably better to make an @property called plugin_handlers for this.  We shouldn\u0027t access private attributes from outside the class.","commit_id":"9a419f3ec8f1f0bc0c0270df8c889463360feaa4"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"aea25b6fa445d3000a61e8ff16ac7a4bd285525a","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # _plugin_handlers"},{"line_number":90,"context_line":"        controller \u003d manager.NeutronManager.get_controller_for_resource("},{"line_number":91,"context_line":"            collection)"},{"line_number":92,"context_line":"        action \u003d controller._plugin_handlers["},{"line_number":93,"context_line":"            pecan_constants.ACTION_MAP[state.request.method]]"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # NOTE(salv-orlando): As bulk updates are not supported, in case of PUT"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_b654a321","line":92,"range":{"start_line":92,"start_character":28,"end_line":92,"end_character":44},"in_reply_to":"dada55a8_a3f3df71","updated":"2016-07-22 15:03:17.000000000","message":"Done","commit_id":"9a419f3ec8f1f0bc0c0270df8c889463360feaa4"}],"neutron/tests/functional/pecan_wsgi/test_controllers.py":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"2380f2776819e26e5ee600f5e89501fbea7d019f","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        uri_collection \u003d body_collection.replace(\u0027_\u0027, \u0027-\u0027)"},{"line_number":675,"context_line":"        # there is only one subresource so far"},{"line_number":676,"context_line":"        sub_resource_collection \u003d ("},{"line_number":677,"context_line":"            pecan_utils.FakeExtension.SUB_RESOURCE_ATTRIBUTE_MAP.keys()[0])"},{"line_number":678,"context_line":"        temp_id \u003d str(uuid.uuid1())"},{"line_number":679,"context_line":"        url \u003d \u0027/v2.0/{0}/{1}/{2}\u0027.format("},{"line_number":680,"context_line":"            uri_collection,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_7b09af30","line":677,"range":{"start_line":677,"start_character":12,"end_line":677,"end_character":75},"updated":"2016-07-01 01:00:42.000000000","message":"Right now it works, but when someone will expand *_MAP it can break. Maybe it\u0027s better idea to just put a string here?","commit_id":"4f58daea20f7d75612de0cbd1bc0a3c8c2f046c4"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"b8f71445c1552022e182f53ea9063a08593ea2d5","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        uri_collection \u003d body_collection.replace(\u0027_\u0027, \u0027-\u0027)"},{"line_number":675,"context_line":"        # there is only one subresource so far"},{"line_number":676,"context_line":"        sub_resource_collection \u003d ("},{"line_number":677,"context_line":"            pecan_utils.FakeExtension.SUB_RESOURCE_ATTRIBUTE_MAP.keys()[0])"},{"line_number":678,"context_line":"        temp_id \u003d str(uuid.uuid1())"},{"line_number":679,"context_line":"        url \u003d \u0027/v2.0/{0}/{1}/{2}\u0027.format("},{"line_number":680,"context_line":"            uri_collection,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_c643a8ad","line":677,"range":{"start_line":677,"start_character":12,"end_line":677,"end_character":75},"in_reply_to":"3aaa91ec_7b09af30","updated":"2016-07-07 14:37:42.000000000","message":"Done","commit_id":"4f58daea20f7d75612de0cbd1bc0a3c8c2f046c4"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"03fcbe4e620aa021ee2dcc218d19aefa4972f5fa","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        uri_collection \u003d body_collection.replace(\u0027_\u0027, \u0027-\u0027)"},{"line_number":675,"context_line":"        # there is only one subresource so far"},{"line_number":676,"context_line":"        sub_resource_collection \u003d ("},{"line_number":677,"context_line":"            pecan_utils.FakeExtension.SUB_RESOURCE_ATTRIBUTE_MAP.keys()[0])"},{"line_number":678,"context_line":"        temp_id \u003d str(uuid.uuid1())"},{"line_number":679,"context_line":"        url \u003d \u0027/v2.0/{0}/{1}/{2}\u0027.format("},{"line_number":680,"context_line":"            uri_collection,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_b5479bba","line":677,"range":{"start_line":677,"start_character":12,"end_line":677,"end_character":75},"in_reply_to":"3aaa91ec_7b09af30","updated":"2016-07-01 06:41:32.000000000","message":"or a constant in the FakeExtension class","commit_id":"4f58daea20f7d75612de0cbd1bc0a3c8c2f046c4"}],"neutron/tests/functional/pecan_wsgi/utils.py":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"2380f2776819e26e5ee600f5e89501fbea7d019f","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    def get_meh_mehs(self, context, filters\u003dNone, fields\u003dNone):"},{"line_number":201,"context_line":"        return [{\u0027fake\u0027: \u0027fake\u0027}]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def getmeh_meh_fake_subresources(self, context, id_, fields\u003dNone, filters\u003dNone):"},{"line_number":204,"context_line":"        return {\u0027foo\u0027: id_}"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_beb2e546","line":203,"range":{"start_line":203,"start_character":8,"end_line":203,"end_character":18},"updated":"2016-07-01 01:00:42.000000000","message":"It seems to be incorrect.","commit_id":"4f58daea20f7d75612de0cbd1bc0a3c8c2f046c4"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"b8f71445c1552022e182f53ea9063a08593ea2d5","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    def get_meh_mehs(self, context, filters\u003dNone, fields\u003dNone):"},{"line_number":201,"context_line":"        return [{\u0027fake\u0027: \u0027fake\u0027}]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def getmeh_meh_fake_subresources(self, context, id_, fields\u003dNone, filters\u003dNone):"},{"line_number":204,"context_line":"        return {\u0027foo\u0027: id_}"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_d1dfe0d3","line":203,"range":{"start_line":203,"start_character":8,"end_line":203,"end_character":18},"in_reply_to":"3aaa91ec_beb2e546","updated":"2016-07-07 14:37:42.000000000","message":"This is in accordance with:\nhttps://review.openstack.org/#/c/334736/2/neutron/pecan_wsgi/controllers/utils.py@114\nI made a comment there.","commit_id":"4f58daea20f7d75612de0cbd1bc0a3c8c2f046c4"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"2380f2776819e26e5ee600f5e89501fbea7d019f","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    def get_meh_mehs(self, context, filters\u003dNone, fields\u003dNone):"},{"line_number":201,"context_line":"        return [{\u0027fake\u0027: \u0027fake\u0027}]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def getmeh_meh_fake_subresources(self, context, id_, fields\u003dNone, filters\u003dNone):"},{"line_number":204,"context_line":"        return {\u0027foo\u0027: id_}"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_fb2f5ff3","line":204,"range":{"start_line":203,"start_character":0,"end_line":204,"end_character":27},"updated":"2016-07-01 01:00:42.000000000","message":"pep8 is complaining about too long line.","commit_id":"4f58daea20f7d75612de0cbd1bc0a3c8c2f046c4"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"b8f71445c1552022e182f53ea9063a08593ea2d5","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    def get_meh_mehs(self, context, filters\u003dNone, fields\u003dNone):"},{"line_number":201,"context_line":"        return [{\u0027fake\u0027: \u0027fake\u0027}]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def getmeh_meh_fake_subresources(self, context, id_, fields\u003dNone, filters\u003dNone):"},{"line_number":204,"context_line":"        return {\u0027foo\u0027: id_}"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_d1a4004c","line":204,"range":{"start_line":203,"start_character":0,"end_line":204,"end_character":27},"in_reply_to":"3aaa91ec_9519bfd3","updated":"2016-07-07 14:37:42.000000000","message":"Done","commit_id":"4f58daea20f7d75612de0cbd1bc0a3c8c2f046c4"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"03fcbe4e620aa021ee2dcc218d19aefa4972f5fa","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    def get_meh_mehs(self, context, filters\u003dNone, fields\u003dNone):"},{"line_number":201,"context_line":"        return [{\u0027fake\u0027: \u0027fake\u0027}]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def getmeh_meh_fake_subresources(self, context, id_, fields\u003dNone, filters\u003dNone):"},{"line_number":204,"context_line":"        return {\u0027foo\u0027: id_}"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_9519bfd3","line":204,"range":{"start_line":203,"start_character":0,"end_line":204,"end_character":27},"in_reply_to":"3aaa91ec_fb2f5ff3","updated":"2016-07-01 06:41:32.000000000","message":"well the line above @203","commit_id":"4f58daea20f7d75612de0cbd1bc0a3c8c2f046c4"}]}
