)]}'
{"dragonflow/neutron/ml2/mech_driver.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"fa7cfa4e29e53dbe00d28c59bedcecc7ba5632a6","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                del rule[\u0027project_id\u0027]"},{"line_number":157,"context_line":"            else:"},{"line_number":158,"context_line":"                rule[\u0027topic\u0027] \u003d rule.get(\u0027tenant_id\u0027)"},{"line_number":159,"context_line":"                del rule[\u0027tenant_id\u0027]"},{"line_number":160,"context_line":"        sg_obj \u003d neutron_secgroups.security_group_from_neutron_obj(sg)"},{"line_number":161,"context_line":"        if event \u003d\u003d events.AFTER_CREATE:"},{"line_number":162,"context_line":"            self.nb_api.create(sg_obj)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_119186f1","line":159,"range":{"start_line":159,"start_character":0,"end_line":159,"end_character":37},"updated":"2017-12-11 12:57:42.000000000","message":"Maybe this entire block can be:\ntry:\n    rule[\u0027topic\u0027] \u003d rule.pop(\u0027project_id\u0027)\nexcept KeyError:\n    rule[\u0027topic\u0027] \u003d rule.pop(\u0027topic_id\u0027, None)\nelse:\n    rule.pop(\u0027topic_id\u0027, None)\n\nThis way both \u0027project_id\u0027 and \u0027topic_id\u0027 are both looked up exactly once?","commit_id":"ae15126a4d3766d0321b34e839ea0aa6e14fc1a8"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"3d4ff5908b38a891ae2fd2687da12b7505e18e70","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                del rule[\u0027project_id\u0027]"},{"line_number":157,"context_line":"            else:"},{"line_number":158,"context_line":"                rule[\u0027topic\u0027] \u003d rule.get(\u0027tenant_id\u0027)"},{"line_number":159,"context_line":"                del rule[\u0027tenant_id\u0027]"},{"line_number":160,"context_line":"        sg_obj \u003d neutron_secgroups.security_group_from_neutron_obj(sg)"},{"line_number":161,"context_line":"        if event \u003d\u003d events.AFTER_CREATE:"},{"line_number":162,"context_line":"            self.nb_api.create(sg_obj)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_aa129860","line":159,"range":{"start_line":159,"start_character":0,"end_line":159,"end_character":37},"in_reply_to":"df87a7cf_119186f1","updated":"2017-12-11 17:28:13.000000000","message":"done","commit_id":"ae15126a4d3766d0321b34e839ea0aa6e14fc1a8"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"422c1a1df4e61b1afc2a69c033e6f369fb27a1a6","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            try:"},{"line_number":155,"context_line":"                rule[\u0027topic\u0027] \u003d rule.pop(\u0027project_id\u0027)"},{"line_number":156,"context_line":"            except KeyError:"},{"line_number":157,"context_line":"                rule[\u0027topic\u0027] \u003d rule.pop(\u0027tenant_id\u0027, None)"},{"line_number":158,"context_line":"        sg_obj \u003d neutron_secgroups.security_group_from_neutron_obj(sg)"},{"line_number":159,"context_line":"        if event \u003d\u003d events.AFTER_CREATE:"},{"line_number":160,"context_line":"            self.nb_api.create(sg_obj)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_764eac97","line":157,"updated":"2017-12-12 09:00:19.000000000","message":"You forgot the else block. It\u0027s important in case both \u0027project_id\u0027 *and* \u0027tenant_id\u0027 are present. (Unless this is not possible)","commit_id":"46f37ad7ee346f6007ef200cc3c065e1ba0c2278"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"c89e74ea9f489e93ca9999e455630ed773ef09fa","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            try:"},{"line_number":155,"context_line":"                rule[\u0027topic\u0027] \u003d rule.pop(\u0027project_id\u0027)"},{"line_number":156,"context_line":"            except KeyError:"},{"line_number":157,"context_line":"                rule[\u0027topic\u0027] \u003d rule.pop(\u0027tenant_id\u0027, None)"},{"line_number":158,"context_line":"        sg_obj \u003d neutron_secgroups.security_group_from_neutron_obj(sg)"},{"line_number":159,"context_line":"        if event \u003d\u003d events.AFTER_CREATE:"},{"line_number":160,"context_line":"            self.nb_api.create(sg_obj)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_f9de2d6b","line":157,"in_reply_to":"df87a7cf_764eac97","updated":"2017-12-12 09:12:28.000000000","message":"If both are present they must be identical: \n(see here : https://developer.openstack.org/api-ref/network/v2/index.html#api-guide under \"Tenant and project attributes in responses\")","commit_id":"46f37ad7ee346f6007ef200cc3c065e1ba0c2278"}],"dragonflow/neutron/services/bgp/bgp_plugin.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"fa7cfa4e29e53dbe00d28c59bedcecc7ba5632a6","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        if port_id:"},{"line_number":101,"context_line":"            # Associate floatingip"},{"line_number":102,"context_line":"            try:"},{"line_number":103,"context_line":"                project_id \u003d context.project_id"},{"line_number":104,"context_line":"            except AttributeError:"},{"line_number":105,"context_line":"                project_id \u003d context.tenant_id"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"            external_ip \u003d self._get_external_ip_of_lport(port_id,"},{"line_number":108,"context_line":"                                                         project_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_51b4ee7f","line":105,"range":{"start_line":102,"start_character":0,"end_line":105,"end_character":46},"updated":"2017-12-11 12:57:42.000000000","message":"Maybe extract to a function?","commit_id":"ae15126a4d3766d0321b34e839ea0aa6e14fc1a8"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"3d4ff5908b38a891ae2fd2687da12b7505e18e70","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        if port_id:"},{"line_number":101,"context_line":"            # Associate floatingip"},{"line_number":102,"context_line":"            try:"},{"line_number":103,"context_line":"                project_id \u003d context.project_id"},{"line_number":104,"context_line":"            except AttributeError:"},{"line_number":105,"context_line":"                project_id \u003d context.tenant_id"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"            external_ip \u003d self._get_external_ip_of_lport(port_id,"},{"line_number":108,"context_line":"                                                         project_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_8a2234b8","line":105,"range":{"start_line":102,"start_character":0,"end_line":105,"end_character":46},"in_reply_to":"df87a7cf_51b4ee7f","updated":"2017-12-11 17:28:13.000000000","message":"done","commit_id":"ae15126a4d3766d0321b34e839ea0aa6e14fc1a8"}]}
