)]}'
{"neutron/plugins/nec/db/api.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"deace98546425959627cd3d48da20f41fbd5cbcb","unresolved":false,"context_lines":[{"line_number":215,"context_line":"    port_model \u003d models_v2.Port"},{"line_number":216,"context_line":"    port_map \u003d nmodels.OFCPortMapping"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    query \u003d context.session.query(port_model, port_map)"},{"line_number":219,"context_line":"    query \u003d query.filter(port_model.id \u003d\u003d port_map.quantum_id)"},{"line_number":220,"context_line":"    query \u003d query.filter_by(network_id\u003dnetwork_id)"},{"line_number":221,"context_line":"    if port_id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BWPI%3D","line":218,"updated":"2014-02-21 18:21:03.000000000","message":"This creates an implicit join.  Did you consider using .join() directly?","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"057fcc0416c07cc827659b41dd7c12bd1c96a24c","unresolved":false,"context_lines":[{"line_number":215,"context_line":"    port_model \u003d models_v2.Port"},{"line_number":216,"context_line":"    port_map \u003d nmodels.OFCPortMapping"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    query \u003d context.session.query(port_model, port_map)"},{"line_number":219,"context_line":"    query \u003d query.filter(port_model.id \u003d\u003d port_map.quantum_id)"},{"line_number":220,"context_line":"    query \u003d query.filter_by(network_id\u003dnetwork_id)"},{"line_number":221,"context_line":"    if port_id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAU3%2F%2F9WA%3D","line":218,"in_reply_to":"AAAAUX%2F%2BWPI%3D","updated":"2014-02-25 17:57:36.000000000","message":"Done","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"}],"neutron/plugins/nec/db/packetfilter.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"deace98546425959627cd3d48da20f41fbd5cbcb","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                                    fields\u003dfields)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _replace_unspecified_field(self, params, key):"},{"line_number":114,"context_line":"        if params[key] \u003d\u003d attributes.ATTR_NOT_SPECIFIED:"},{"line_number":115,"context_line":"            if key \u003d\u003d \u0027in_port\u0027:"},{"line_number":116,"context_line":"                params[key] \u003d None"},{"line_number":117,"context_line":"            elif key in INT_FIELDS:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BWKM%3D","line":114,"updated":"2014-02-21 18:21:03.000000000","message":"should use is operator here","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"057fcc0416c07cc827659b41dd7c12bd1c96a24c","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                                    fields\u003dfields)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _replace_unspecified_field(self, params, key):"},{"line_number":114,"context_line":"        if params[key] \u003d\u003d attributes.ATTR_NOT_SPECIFIED:"},{"line_number":115,"context_line":"            if key \u003d\u003d \u0027in_port\u0027:"},{"line_number":116,"context_line":"                params[key] \u003d None"},{"line_number":117,"context_line":"            elif key in INT_FIELDS:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAU3%2F%2F9Oo%3D","line":114,"in_reply_to":"AAAAUX%2F%2BWKM%3D","updated":"2014-02-25 17:57:36.000000000","message":"Done","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"deace98546425959627cd3d48da20f41fbd5cbcb","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            else:"},{"line_number":121,"context_line":"                params[key] \u003d \u0027\u0027"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def _replace_none_field(self, params, key):"},{"line_number":124,"context_line":"        if params[key] is None:"},{"line_number":125,"context_line":"            if key \u003d\u003d \u0027in_port\u0027:"},{"line_number":126,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BWKI%3D","line":123,"updated":"2014-02-21 18:21:03.000000000","message":"This is the basically the same implementation as the method above.  Can they not share the same implementation? i.e. add a search_value keyword?","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"057fcc0416c07cc827659b41dd7c12bd1c96a24c","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            else:"},{"line_number":121,"context_line":"                params[key] \u003d \u0027\u0027"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def _replace_none_field(self, params, key):"},{"line_number":124,"context_line":"        if params[key] is None:"},{"line_number":125,"context_line":"            if key \u003d\u003d \u0027in_port\u0027:"},{"line_number":126,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAU3%2F%2F9No%3D","line":123,"in_reply_to":"AAAAUX%2F%2BWKI%3D","updated":"2014-02-25 17:57:36.000000000","message":"Done","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"deace98546425959627cd3d48da20f41fbd5cbcb","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        pf_model \u003d PacketFilter"},{"line_number":216,"context_line":"        pf_map \u003d nmodels.OFCFilterMapping"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        query \u003d (context.session.query(pf_model, pf_map)"},{"line_number":219,"context_line":"                 .filter(pf_model.id \u003d\u003d pf_map.quantum_id)"},{"line_number":220,"context_line":"                 .filter_by(admin_state_up\u003dTrue))"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BWJ4%3D","line":218,"updated":"2014-02-21 18:21:03.000000000","message":"same observation about using .join()","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"057fcc0416c07cc827659b41dd7c12bd1c96a24c","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        pf_model \u003d PacketFilter"},{"line_number":216,"context_line":"        pf_map \u003d nmodels.OFCFilterMapping"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        query \u003d (context.session.query(pf_model, pf_map)"},{"line_number":219,"context_line":"                 .filter(pf_model.id \u003d\u003d pf_map.quantum_id)"},{"line_number":220,"context_line":"                 .filter_by(admin_state_up\u003dTrue))"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAU3%2F%2F81A%3D","line":218,"in_reply_to":"AAAAUX%2F%2BWJ4%3D","updated":"2014-02-25 17:57:36.000000000","message":"Done","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"96704b88e68d0364840558f06297e8ed92223fba","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        network_id \u003d port[\u0027network_id\u0027]"},{"line_number":211,"context_line":"        net_pf_query \u003d (query.filter(PacketFilter.network_id \u003d\u003d network_id)"},{"line_number":212,"context_line":"                        .filter(PacketFilter.in_port \u003d\u003d None))"},{"line_number":213,"context_line":"        net_filters \u003d [(pf[\u0027quantum_id\u0027], pf[\u0027ofc_id\u0027]) for pf in net_pf_query]"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        port_pf_query \u003d query.filter(PacketFilter.in_port \u003d\u003d port[\u0027id\u0027])"},{"line_number":216,"context_line":"        port_filters \u003d [(pf[\u0027quantum_id\u0027], pf[\u0027ofc_id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2F348%3D","line":213,"updated":"2014-03-03 17:50:51.000000000","message":"quantum_id? My guess is that this legacy at the backend. Just want to confirm.","commit_id":"a456b9b0524a8c45f5806e6fca7fc57d0b9a9b68"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"bc13220acb697263ff7aae38aa6102fe9b99233e","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        network_id \u003d port[\u0027network_id\u0027]"},{"line_number":211,"context_line":"        net_pf_query \u003d (query.filter(PacketFilter.network_id \u003d\u003d network_id)"},{"line_number":212,"context_line":"                        .filter(PacketFilter.in_port \u003d\u003d None))"},{"line_number":213,"context_line":"        net_filters \u003d [(pf[\u0027quantum_id\u0027], pf[\u0027ofc_id\u0027]) for pf in net_pf_query]"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        port_pf_query \u003d query.filter(PacketFilter.in_port \u003d\u003d port[\u0027id\u0027])"},{"line_number":216,"context_line":"        port_filters \u003d [(pf[\u0027quantum_id\u0027], pf[\u0027ofc_id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2F0kE%3D","line":213,"in_reply_to":"AAAAVn%2F%2F26s%3D","updated":"2014-03-03 23:09:42.000000000","message":"Sounds good...","commit_id":"a456b9b0524a8c45f5806e6fca7fc57d0b9a9b68"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"77cecf6a7c26edfa2605ff7df328aa300ffc6434","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        network_id \u003d port[\u0027network_id\u0027]"},{"line_number":211,"context_line":"        net_pf_query \u003d (query.filter(PacketFilter.network_id \u003d\u003d network_id)"},{"line_number":212,"context_line":"                        .filter(PacketFilter.in_port \u003d\u003d None))"},{"line_number":213,"context_line":"        net_filters \u003d [(pf[\u0027quantum_id\u0027], pf[\u0027ofc_id\u0027]) for pf in net_pf_query]"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        port_pf_query \u003d query.filter(PacketFilter.in_port \u003d\u003d port[\u0027id\u0027])"},{"line_number":216,"context_line":"        port_filters \u003d [(pf[\u0027quantum_id\u0027], pf[\u0027ofc_id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2F26o%3D","line":213,"in_reply_to":"AAAAVn%2F%2F348%3D","updated":"2014-03-03 19:20:22.000000000","message":"I got same question. May be, it is good to comment it.","commit_id":"a456b9b0524a8c45f5806e6fca7fc57d0b9a9b68"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"570319ea8e32d81b0292502c4c3414c63b37f16f","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        network_id \u003d port[\u0027network_id\u0027]"},{"line_number":211,"context_line":"        net_pf_query \u003d (query.filter(PacketFilter.network_id \u003d\u003d network_id)"},{"line_number":212,"context_line":"                        .filter(PacketFilter.in_port \u003d\u003d None))"},{"line_number":213,"context_line":"        net_filters \u003d [(pf[\u0027quantum_id\u0027], pf[\u0027ofc_id\u0027]) for pf in net_pf_query]"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        port_pf_query \u003d query.filter(PacketFilter.in_port \u003d\u003d port[\u0027id\u0027])"},{"line_number":216,"context_line":"        port_filters \u003d [(pf[\u0027quantum_id\u0027], pf[\u0027ofc_id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2F26s%3D","line":213,"in_reply_to":"AAAAVn%2F%2F348%3D","updated":"2014-03-03 22:50:00.000000000","message":"ID mapping tables in NEC plugin has a column named \"quantum_id\" to store UUID in Neutron/Quantum. It requires db migration, so it was kept when renaming. It is not specific to packet filter and There are four ID mapping tables (tenants, networks, ports, packetfilter).\n\nI need db migration which renames \"quantum_id\" to \"id\" (or \"neutron_id\") and would like to fix it in a later patch (during RC1?).\n\nI will add a comment on this.","commit_id":"a456b9b0524a8c45f5806e6fca7fc57d0b9a9b68"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"96704b88e68d0364840558f06297e8ed92223fba","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        net_filters \u003d [(pf[\u0027quantum_id\u0027], pf[\u0027ofc_id\u0027]) for pf in net_pf_query]"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        port_pf_query \u003d query.filter(PacketFilter.in_port \u003d\u003d port[\u0027id\u0027])"},{"line_number":216,"context_line":"        port_filters \u003d [(pf[\u0027quantum_id\u0027], pf[\u0027ofc_id\u0027])"},{"line_number":217,"context_line":"                        for pf in port_pf_query]"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        return net_filters + port_filters"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2F34s%3D","line":216,"updated":"2014-03-03 17:50:51.000000000","message":"ditto","commit_id":"a456b9b0524a8c45f5806e6fca7fc57d0b9a9b68"}],"neutron/plugins/nec/drivers/pfc.py":[{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"96704b88e68d0364840558f06297e8ed92223fba","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        if create:"},{"line_number":201,"context_line":"            # action : pass, drop (mandatory)"},{"line_number":202,"context_line":"            if filter_dict[\u0027action\u0027].upper() in [\"ACCEPT\", \"ALLOW\"]:"},{"line_number":203,"context_line":"                body[\u0027action\u0027] \u003d \"pass\""},{"line_number":204,"context_line":"            else:"},{"line_number":205,"context_line":"                body[\u0027action\u0027] \u003d \"drop\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2F314%3D","line":202,"updated":"2014-03-03 17:50:51.000000000","message":"Does it make sense to predefine the various strings being used in this module as constants?","commit_id":"a456b9b0524a8c45f5806e6fca7fc57d0b9a9b68"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"bc13220acb697263ff7aae38aa6102fe9b99233e","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        if create:"},{"line_number":201,"context_line":"            # action : pass, drop (mandatory)"},{"line_number":202,"context_line":"            if filter_dict[\u0027action\u0027].upper() in [\"ACCEPT\", \"ALLOW\"]:"},{"line_number":203,"context_line":"                body[\u0027action\u0027] \u003d \"pass\""},{"line_number":204,"context_line":"            else:"},{"line_number":205,"context_line":"                body[\u0027action\u0027] \u003d \"drop\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2F0kQ%3D","line":202,"in_reply_to":"AAAAVn%2F%2F0tY%3D","updated":"2014-03-03 23:09:42.000000000","message":"Sounds good...","commit_id":"a456b9b0524a8c45f5806e6fca7fc57d0b9a9b68"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"570319ea8e32d81b0292502c4c3414c63b37f16f","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        if create:"},{"line_number":201,"context_line":"            # action : pass, drop (mandatory)"},{"line_number":202,"context_line":"            if filter_dict[\u0027action\u0027].upper() in [\"ACCEPT\", \"ALLOW\"]:"},{"line_number":203,"context_line":"                body[\u0027action\u0027] \u003d \"pass\""},{"line_number":204,"context_line":"            else:"},{"line_number":205,"context_line":"                body[\u0027action\u0027] \u003d \"drop\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2F0tY%3D","line":202,"in_reply_to":"AAAAVn%2F%2F314%3D","updated":"2014-03-03 22:50:00.000000000","message":"I think most keys of \"body\" dict are used only in this method and there is no need to define them as constants.\n\nkeys of \"body\" are defined in the API of the backend OpenFlow controller and keys of \"filter_dict\" are defined by the plugin\u0027s extension. To define them as constants, I need to define two version for each field (the one is for the backend API and the other is for the extension API). This is the reason I didn\u0027t define them as constants.\nDoes it make sense?\n\nThe above is my basic opinion, but it seems some fields should be defined as constants. They will be updated in the next patch set.\n- [\"ACCEPT\", \"ALLOW\"] above should be ACCEPT_ACTIONS\n- the procotol names around L.225 can refer to common.constants.\n- max priority (around L.261) should be a constant.","commit_id":"a456b9b0524a8c45f5806e6fca7fc57d0b9a9b68"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"96704b88e68d0364840558f06297e8ed92223fba","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        body \u003d self._generate_body(filter_dict, create\u003dFalse)"},{"line_number":298,"context_line":"        self.client.put(ofc_filter_id, body)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def delete_filter(self, ofc_filter_id):"},{"line_number":301,"context_line":"        return self.client.delete(ofc_filter_id)"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def _extract_ofc_filter_id(self, ofc_filter_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2F3zA%3D","line":300,"updated":"2014-03-03 17:50:51.000000000","message":"why not log this?","commit_id":"a456b9b0524a8c45f5806e6fca7fc57d0b9a9b68"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"570319ea8e32d81b0292502c4c3414c63b37f16f","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        body \u003d self._generate_body(filter_dict, create\u003dFalse)"},{"line_number":298,"context_line":"        self.client.put(ofc_filter_id, body)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def delete_filter(self, ofc_filter_id):"},{"line_number":301,"context_line":"        return self.client.delete(ofc_filter_id)"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def _extract_ofc_filter_id(self, ofc_filter_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2F2ng%3D","line":300,"in_reply_to":"AAAAVn%2F%2F3zA%3D","updated":"2014-03-03 22:50:00.000000000","message":"Done","commit_id":"a456b9b0524a8c45f5806e6fca7fc57d0b9a9b68"}],"neutron/plugins/nec/packet_filter.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"deace98546425959627cd3d48da20f41fbd5cbcb","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            LOG.debug(_(\"_activate_packet_filter_if_ready(): skip, \""},{"line_number":184,"context_line":"                        \"ofc_packet_filter already exists.\"))"},{"line_number":185,"context_line":"        else:"},{"line_number":186,"context_line":"            skip \u003d False"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        if skip:"},{"line_number":189,"context_line":"            return packet_filter"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BWGo%3D","line":186,"updated":"2014-02-21 18:21:03.000000000","message":"Not sure why skip is needed.  Seems like Lines 191-205 can be inside the else block.","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"057fcc0416c07cc827659b41dd7c12bd1c96a24c","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            LOG.debug(_(\"_activate_packet_filter_if_ready(): skip, \""},{"line_number":184,"context_line":"                        \"ofc_packet_filter already exists.\"))"},{"line_number":185,"context_line":"        else:"},{"line_number":186,"context_line":"            skip \u003d False"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        if skip:"},{"line_number":189,"context_line":"            return packet_filter"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAU3%2F%2F8uE%3D","line":186,"in_reply_to":"AAAAUX%2F%2BWGo%3D","updated":"2014-02-25 17:57:36.000000000","message":"I reverted the change. L.176-184 is the logic to check whether the actual operation is needed and L.191-205 are the main logic. I just want not to place the main logic in \"else\" block.","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"deace98546425959627cd3d48da20f41fbd5cbcb","unresolved":false,"context_lines":[{"line_number":256,"context_line":"            self.deactivate_packet_filter(context, pf)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def get_packet_filters_for_port(self, context, port):"},{"line_number":259,"context_line":"        if not self.packet_filter_enabled:"},{"line_number":260,"context_line":"            return"},{"line_number":261,"context_line":"        return super(PacketFilterMixin,"},{"line_number":262,"context_line":"                     self).get_packet_filters_for_port(context, port)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BWGQ%3D","line":259,"updated":"2014-02-21 18:21:03.000000000","message":"Can be simplified a bit here.\n\nif self.packet_filter_enabled:\n    return super(...)","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"057fcc0416c07cc827659b41dd7c12bd1c96a24c","unresolved":false,"context_lines":[{"line_number":256,"context_line":"            self.deactivate_packet_filter(context, pf)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def get_packet_filters_for_port(self, context, port):"},{"line_number":259,"context_line":"        if not self.packet_filter_enabled:"},{"line_number":260,"context_line":"            return"},{"line_number":261,"context_line":"        return super(PacketFilterMixin,"},{"line_number":262,"context_line":"                     self).get_packet_filters_for_port(context, port)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAU3%2F%2F800%3D","line":259,"in_reply_to":"AAAAUX%2F%2BWGQ%3D","updated":"2014-02-25 17:57:36.000000000","message":"Done","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"}],"neutron/tests/unit/nec/test_packet_filter.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"deace98546425959627cd3d48da20f41fbd5cbcb","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        with self.packet_filter_on_network() as pf:"},{"line_number":235,"context_line":"            pf_id \u003d pf[\u0027packet_filter\u0027][\u0027id\u0027]"},{"line_number":236,"context_line":"            pf_ref \u003d self._show(\u0027packet_filters\u0027, pf_id)"},{"line_number":237,"context_line":"            import pprint"},{"line_number":238,"context_line":"            pprint.pprint(pf_ref)"},{"line_number":239,"context_line":"            self.assertEqual(pf_ref[\u0027packet_filter\u0027][\u0027status\u0027], \u0027ERROR\u0027)"},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BWF4%3D","line":237,"updated":"2014-02-21 18:21:03.000000000","message":"Oops.  Unittest shouldn\u0027t print.","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"057fcc0416c07cc827659b41dd7c12bd1c96a24c","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        with self.packet_filter_on_network() as pf:"},{"line_number":235,"context_line":"            pf_id \u003d pf[\u0027packet_filter\u0027][\u0027id\u0027]"},{"line_number":236,"context_line":"            pf_ref \u003d self._show(\u0027packet_filters\u0027, pf_id)"},{"line_number":237,"context_line":"            import pprint"},{"line_number":238,"context_line":"            pprint.pprint(pf_ref)"},{"line_number":239,"context_line":"            self.assertEqual(pf_ref[\u0027packet_filter\u0027][\u0027status\u0027], \u0027ERROR\u0027)"},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAU3%2F%2F80c%3D","line":237,"in_reply_to":"AAAAUX%2F%2BWF4%3D","updated":"2014-02-25 17:57:36.000000000","message":"Done","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"}],"neutron/tests/unit/nec/test_trema_driver.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"deace98546425959627cd3d48da20f41fbd5cbcb","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        # ofp_wildcards in body needs to be compared"},{"line_number":258,"context_line":"        # with ignoring its field order."},{"line_number":259,"context_line":"        actual_body \u003d self.do_request.call_args[1][\u0027body\u0027]"},{"line_number":260,"context_line":"        self.assertEqual(\u0027ofp_wildcards\u0027 in body,"},{"line_number":261,"context_line":"                         \u0027ofp_wildcards\u0027 in actual_body)"},{"line_number":262,"context_line":"        if \u0027ofp_wildcards\u0027 in body:"},{"line_number":263,"context_line":"            expect_wildcards \u003d set(body.pop(\u0027ofp_wildcards\u0027).split(\u0027,\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BWDM%3D","line":260,"updated":"2014-02-21 18:21:03.000000000","message":"Should we be a bit more explicit about what behavior we expect when fop_wildcards in the body?","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"057fcc0416c07cc827659b41dd7c12bd1c96a24c","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        # ofp_wildcards in body needs to be compared"},{"line_number":258,"context_line":"        # with ignoring its field order."},{"line_number":259,"context_line":"        actual_body \u003d self.do_request.call_args[1][\u0027body\u0027]"},{"line_number":260,"context_line":"        self.assertEqual(\u0027ofp_wildcards\u0027 in body,"},{"line_number":261,"context_line":"                         \u0027ofp_wildcards\u0027 in actual_body)"},{"line_number":262,"context_line":"        if \u0027ofp_wildcards\u0027 in body:"},{"line_number":263,"context_line":"            expect_wildcards \u003d set(body.pop(\u0027ofp_wildcards\u0027).split(\u0027,\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAU3%2F%2F8F4%3D","line":260,"in_reply_to":"AAAAUX%2F%2BWDM%3D","updated":"2014-02-25 17:57:36.000000000","message":"Done. I changed the code to convert a string to set() and compare values as set.","commit_id":"2b9ce77baff7c7d378e26c19cfdaad196922915f"}]}
