)]}'
{"neutron/db/migration/alembic_migrations/versions/1428abfbe9e3_midonet_icehouse.py":[{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"ebabd4fd3cac21fdc188b845d2f474daafea40fa","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\"midonet_icehouse"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Revision ID: 1428abfbe9e3"},{"line_number":21,"context_line":"Revises: 50d5ba354c23"},{"line_number":22,"context_line":"Create Date: 2014-02-26 03:29:27.448866"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2FktI%3D","line":21,"updated":"2014-02-25 21:38:54.000000000","message":"This typically should match down_revision. I also left it as is in one of my patch-set before Sumit pointed out to me.","commit_id":"9f821e9ff2aabfd4418118982f2c2c04ea1418e7"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"efa00adc329fe35fa76205ff9081c7e1b20e3a9f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\"midonet_icehouse"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Revision ID: 1428abfbe9e3"},{"line_number":21,"context_line":"Revises: 50d5ba354c23"},{"line_number":22,"context_line":"Create Date: 2014-02-26 03:29:27.448866"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2Fh8c%3D","line":21,"in_reply_to":"AAAAU3%2F%2FktI%3D","updated":"2014-02-26 04:27:59.000000000","message":"Ah totally missed it!  Will fix it, thanks.","commit_id":"9f821e9ff2aabfd4418118982f2c2c04ea1418e7"}],"neutron/plugins/midonet/plugin.py":[{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":79,"context_line":"def _is_vif_port(port):"},{"line_number":80,"context_line":"    \"\"\"Check whether the given port is a standard VIF port.\"\"\""},{"line_number":81,"context_line":"    device_owner \u003d port[\u0027device_owner\u0027]"},{"line_number":82,"context_line":"    return (not device_owner.startswith(\u0027network:dhcp\u0027) and"},{"line_number":83,"context_line":"            device_owner not in (l3_db.DEVICE_OWNER_ROUTER_GW,"},{"line_number":84,"context_line":"                                 l3_db.DEVICE_OWNER_ROUTER_INTF))"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdQs%3D","line":82,"updated":"2014-02-21 03:04:23.000000000","message":"Use DEVICE_OWNER_DHCP instead of static string from neutron/common/constant.py","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":79,"context_line":"def _is_vif_port(port):"},{"line_number":80,"context_line":"    \"\"\"Check whether the given port is a standard VIF port.\"\"\""},{"line_number":81,"context_line":"    device_owner \u003d port[\u0027device_owner\u0027]"},{"line_number":82,"context_line":"    return (not device_owner.startswith(\u0027network:dhcp\u0027) and"},{"line_number":83,"context_line":"            device_owner not in (l3_db.DEVICE_OWNER_ROUTER_GW,"},{"line_number":84,"context_line":"                                 l3_db.DEVICE_OWNER_ROUTER_INTF))"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2Fvls%3D","line":82,"in_reply_to":"AAAAUX%2F%2BdQs%3D","updated":"2014-02-25 19:30:22.000000000","message":"Done","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        try:"},{"line_number":178,"context_line":"            self.mido_api.create_subnet(sn_entry)"},{"line_number":179,"context_line":"        except Exception as ex:"},{"line_number":180,"context_line":"            LOG.error(_(\"Failed to create a subnet %(s_id)s in Midonet:\""},{"line_number":181,"context_line":"                      \"%(err)s\"), {\u0027s_id\u0027: sn_entry[\u0027id\u0027], \"err\": ex})"},{"line_number":182,"context_line":"            super(MidonetPluginV2, self).delete_subnet(context, sn_entry[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdIo%3D","line":179,"updated":"2014-02-21 03:04:23.000000000","message":"save_and_reraise_exception() here as well like rest of the code?","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        try:"},{"line_number":178,"context_line":"            self.mido_api.create_subnet(sn_entry)"},{"line_number":179,"context_line":"        except Exception as ex:"},{"line_number":180,"context_line":"            LOG.error(_(\"Failed to create a subnet %(s_id)s in Midonet:\""},{"line_number":181,"context_line":"                      \"%(err)s\"), {\u0027s_id\u0027: sn_entry[\u0027id\u0027], \"err\": ex})"},{"line_number":182,"context_line":"            super(MidonetPluginV2, self).delete_subnet(context, sn_entry[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2FvkU%3D","line":179,"in_reply_to":"AAAAUX%2F%2BdIo%3D","updated":"2014-02-25 19:30:22.000000000","message":"Done","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        try:"},{"line_number":228,"context_line":"            self.mido_api.create_network(net)"},{"line_number":229,"context_line":"        except Exception as ex:"},{"line_number":230,"context_line":"            LOG.error(_(\"Failed to create a network %(net_id)s in Midonet:\""},{"line_number":231,"context_line":"                      \"%(err)s\"), {\u0027net_id\u0027: net[\u0027id\u0027], \"err\": ex})"},{"line_number":232,"context_line":"            super(MidonetPluginV2, self).delete_network(context, net[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdIk%3D","line":229,"updated":"2014-02-21 03:04:23.000000000","message":"save_and_reraise_exception() here as well like rest of the code?","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        try:"},{"line_number":228,"context_line":"            self.mido_api.create_network(net)"},{"line_number":229,"context_line":"        except Exception as ex:"},{"line_number":230,"context_line":"            LOG.error(_(\"Failed to create a network %(net_id)s in Midonet:\""},{"line_number":231,"context_line":"                      \"%(err)s\"), {\u0027net_id\u0027: net[\u0027id\u0027], \"err\": ex})"},{"line_number":232,"context_line":"            super(MidonetPluginV2, self).delete_network(context, net[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2FvjE%3D","line":229,"in_reply_to":"AAAAUX%2F%2BdIk%3D","updated":"2014-02-25 19:30:22.000000000","message":"Done","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        LOG.info(_(\"MidonetPluginV2.create_network exiting: net\u003d%r\"), net)"},{"line_number":236,"context_line":"        return net"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def _extend_provider_net(self, net, mido_net):"},{"line_number":239,"context_line":"        net[mpnet.SEGMENTS] \u003d mido_net.get(mpnet.SEGMENTS)"},{"line_number":240,"context_line":"        net[pnet.NETWORK_TYPE] \u003d mido_net.get(pnet.NETWORK_TYPE)"},{"line_number":241,"context_line":"        net[pnet.PHYSICAL_NETWORK] \u003d mido_net.get(pnet.PHYSICAL_NETWORK)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdMQ%3D","line":238,"updated":"2014-02-21 03:04:23.000000000","message":"Making this a staticmethod might be useful if you want to use it in unit tests.","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        LOG.info(_(\"MidonetPluginV2.create_network exiting: net\u003d%r\"), net)"},{"line_number":236,"context_line":"        return net"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def _extend_provider_net(self, net, mido_net):"},{"line_number":239,"context_line":"        net[mpnet.SEGMENTS] \u003d mido_net.get(mpnet.SEGMENTS)"},{"line_number":240,"context_line":"        net[pnet.NETWORK_TYPE] \u003d mido_net.get(pnet.NETWORK_TYPE)"},{"line_number":241,"context_line":"        net[pnet.PHYSICAL_NETWORK] \u003d mido_net.get(pnet.PHYSICAL_NETWORK)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2Fvhc%3D","line":238,"in_reply_to":"AAAAUX%2F%2BdMQ%3D","updated":"2014-02-25 19:30:22.000000000","message":"Since this method has no reason to be a member method, I moved it out of the class.","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        return net"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    @handle_api_error"},{"line_number":263,"context_line":"    def get_networks(self, context, filters\u003dNone, fields\u003dNone,"},{"line_number":264,"context_line":"                     sorts\u003dNone, limit\u003dNone, marker\u003dNone,"},{"line_number":265,"context_line":"                     page_reverse\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdME%3D","line":262,"updated":"2014-02-21 03:04:23.000000000","message":"Wouldnt it be clearer to put this decorator above _get_mido_network_dict instead of here?","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        return net"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    @handle_api_error"},{"line_number":263,"context_line":"    def get_networks(self, context, filters\u003dNone, fields\u003dNone,"},{"line_number":264,"context_line":"                     sorts\u003dNone, limit\u003dNone, marker\u003dNone,"},{"line_number":265,"context_line":"                     page_reverse\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2FvgQ%3D","line":262,"in_reply_to":"AAAAUX%2F%2BdME%3D","updated":"2014-02-25 19:30:22.000000000","message":"Done","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                                                           net)"},{"line_number":297,"context_line":"            self._process_l3_update(context, net, network[\u0027network\u0027])"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        self.mido_api.update_network(net)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        LOG.info(_(\"MidonetPluginV2.update_network exiting: net\u003d%r\"), net)"},{"line_number":302,"context_line":"        return net"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdLc%3D","line":299,"updated":"2014-02-21 03:04:23.000000000","message":"Shouldnt self.mido_api.update_network be within with statement at 289?","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                                                           net)"},{"line_number":297,"context_line":"            self._process_l3_update(context, net, network[\u0027network\u0027])"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        self.mido_api.update_network(net)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        LOG.info(_(\"MidonetPluginV2.update_network exiting: net\u003d%r\"), net)"},{"line_number":302,"context_line":"        return net"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2Fun8%3D","line":299,"in_reply_to":"AAAAUX%2F%2BdLc%3D","updated":"2014-02-25 19:30:22.000000000","message":"Done","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        \"\"\"Create a L2 port in Neutron/MidoNet.\"\"\""},{"line_number":351,"context_line":"        LOG.info(_(\"MidonetPluginV2.create_port called: port\u003d%r\"), port)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":354,"context_line":"            new_port \u003d self._process_create_port(context, port)"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdK8%3D","line":353,"updated":"2014-02-21 03:04:23.000000000","message":"This with statement is not required","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        \"\"\"Create a L2 port in Neutron/MidoNet.\"\"\""},{"line_number":351,"context_line":"        LOG.info(_(\"MidonetPluginV2.create_port called: port\u003d%r\"), port)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":354,"context_line":"            new_port \u003d self._process_create_port(context, port)"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2Funs%3D","line":353,"in_reply_to":"AAAAUX%2F%2BdK8%3D","updated":"2014-02-25 19:30:22.000000000","message":"Done","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            self._process_portbindings_create_and_update(context,"},{"line_number":416,"context_line":"                                                         port[\u0027port\u0027],"},{"line_number":417,"context_line":"                                                         p)"},{"line_number":418,"context_line":"        self.mido_api.update_port(p)"},{"line_number":419,"context_line":"        LOG.info(_(\"MidonetPluginV2.update_port exiting: p\u003d%r\"), p)"},{"line_number":420,"context_line":"        return p"},{"line_number":421,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdKI%3D","line":418,"updated":"2014-02-21 03:04:23.000000000","message":"Shouldnt this be within with statement at 392?","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            self._process_portbindings_create_and_update(context,"},{"line_number":416,"context_line":"                                                         port[\u0027port\u0027],"},{"line_number":417,"context_line":"                                                         p)"},{"line_number":418,"context_line":"        self.mido_api.update_port(p)"},{"line_number":419,"context_line":"        LOG.info(_(\"MidonetPluginV2.update_port exiting: p\u003d%r\"), p)"},{"line_number":420,"context_line":"        return p"},{"line_number":421,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2FumA%3D","line":418,"in_reply_to":"AAAAUX%2F%2BdKI%3D","updated":"2014-02-25 19:30:22.000000000","message":"Done","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":437,"context_line":"        r \u003d super(MidonetPluginV2, self).create_router(context, router)"},{"line_number":438,"context_line":"        try:"},{"line_number":439,"context_line":"            self.mido_api.create_router(r)"},{"line_number":440,"context_line":"        except Exception as ex:"},{"line_number":441,"context_line":"            LOG.error(_(\"Failed to create a router %(r_id)s in Midonet:\""},{"line_number":442,"context_line":"                      \"%(err)s\"), {\u0027r_id\u0027: r[\u0027id\u0027], \"err\": ex})"},{"line_number":443,"context_line":"            super(MidonetPluginV2, self).delete_router(context, r[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdIM%3D","line":440,"updated":"2014-02-21 03:04:23.000000000","message":"save_and_reraise_exception() here as well like rest of the code?","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":437,"context_line":"        r \u003d super(MidonetPluginV2, self).create_router(context, router)"},{"line_number":438,"context_line":"        try:"},{"line_number":439,"context_line":"            self.mido_api.create_router(r)"},{"line_number":440,"context_line":"        except Exception as ex:"},{"line_number":441,"context_line":"            LOG.error(_(\"Failed to create a router %(r_id)s in Midonet:\""},{"line_number":442,"context_line":"                      \"%(err)s\"), {\u0027r_id\u0027: r[\u0027id\u0027], \"err\": ex})"},{"line_number":443,"context_line":"            super(MidonetPluginV2, self).delete_router(context, r[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2FuXg%3D","line":440,"in_reply_to":"AAAAUX%2F%2BdIM%3D","updated":"2014-02-25 19:30:22.000000000","message":"Done","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        info \u003d super(MidonetPluginV2, self).remove_router_interface("},{"line_number":511,"context_line":"            context, router_id, interface_info)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        self.mido_api.remove_router_interface(router_id, interface_info)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        LOG.info(_(\"MidonetPluginV2.remove_router_interface exiting: \""},{"line_number":516,"context_line":"                   \"info\u003d%r\"), info)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdHw%3D","line":513,"updated":"2014-02-21 03:04:23.000000000","message":"Shouldnt this be called above line 510?","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        info \u003d super(MidonetPluginV2, self).remove_router_interface("},{"line_number":511,"context_line":"            context, router_id, interface_info)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        self.mido_api.remove_router_interface(router_id, interface_info)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        LOG.info(_(\"MidonetPluginV2.remove_router_interface exiting: \""},{"line_number":516,"context_line":"                   \"info\u003d%r\"), info)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2FujY%3D","line":513,"in_reply_to":"AAAAUX%2F%2BdHw%3D","updated":"2014-02-25 19:30:22.000000000","message":"I put this under transaction for data consistency.  But I think this should be after super().remove_router_interface since we don\u0027t want this to be called until all the validations performed by the super method pass.","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":527,"context_line":"        try:"},{"line_number":528,"context_line":"            self.mido_api.create_floating_ip(fip)"},{"line_number":529,"context_line":"        except Exception as ex:"},{"line_number":530,"context_line":"            # Try removing the fip"},{"line_number":531,"context_line":"            LOG.error(_(\"Failed to create floating ip %(fip)s: \""},{"line_number":532,"context_line":"                      \"%(err)s\"), {\"fip\": fip, \"err\": ex})"},{"line_number":533,"context_line":"            self.delete_floatingip(context, fip[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdHs%3D","line":530,"updated":"2014-02-21 03:04:23.000000000","message":"save_and_reraise_exception() here as well like at many places in this code?","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":527,"context_line":"        try:"},{"line_number":528,"context_line":"            self.mido_api.create_floating_ip(fip)"},{"line_number":529,"context_line":"        except Exception as ex:"},{"line_number":530,"context_line":"            # Try removing the fip"},{"line_number":531,"context_line":"            LOG.error(_(\"Failed to create floating ip %(fip)s: \""},{"line_number":532,"context_line":"                      \"%(err)s\"), {\"fip\": fip, \"err\": ex})"},{"line_number":533,"context_line":"            self.delete_floatingip(context, fip[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2Fuh8%3D","line":530,"in_reply_to":"AAAAUX%2F%2BdHs%3D","updated":"2014-02-25 19:30:22.000000000","message":"Done","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                      {\"sg\": sg})"},{"line_number":592,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":593,"context_line":"                with context.session.begin(subtransactions\u003dTrue):"},{"line_number":594,"context_line":"                    sg \u003d self._get_security_group(context, sg[\"id\"])"},{"line_number":595,"context_line":"                    context.session.delete(sg)"},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"        LOG.info(_(\"MidonetPluginV2.create_security_group exiting: sg\u003d%r\"), sg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdFg%3D","line":594,"updated":"2014-02-21 03:04:23.000000000","message":"Replace Line 593 - 595 with following:\nsuper(MidonetPluginV2, self).delete_security_group(context, sg[\u0027id\u0027])","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                      {\"sg\": sg})"},{"line_number":592,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":593,"context_line":"                with context.session.begin(subtransactions\u003dTrue):"},{"line_number":594,"context_line":"                    sg \u003d self._get_security_group(context, sg[\"id\"])"},{"line_number":595,"context_line":"                    context.session.delete(sg)"},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"        LOG.info(_(\"MidonetPluginV2.create_security_group exiting: sg\u003d%r\"), sg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2FufY%3D","line":594,"in_reply_to":"AAAAUX%2F%2BdFg%3D","updated":"2014-02-25 19:30:22.000000000","message":"Done","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":637,"context_line":"        try:"},{"line_number":638,"context_line":"            self.mido_api.create_security_group_rule(rule)"},{"line_number":639,"context_line":"        except Exception as ex:"},{"line_number":640,"context_line":"            LOG.error(_(\u0027Failed to create security group rule %(sg)s,\u0027"},{"line_number":641,"context_line":"                      \u0027error: %(err)s\u0027), {\u0027sg\u0027: rule, \u0027err\u0027: ex})"},{"line_number":642,"context_line":"            super(MidonetPluginV2, self).delete_security_group_rule("},{"line_number":643,"context_line":"                context, rule[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdEs%3D","line":640,"updated":"2014-02-21 03:04:23.000000000","message":"save_and_reraise_exception() here as well like at many places in this code?","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":637,"context_line":"        try:"},{"line_number":638,"context_line":"            self.mido_api.create_security_group_rule(rule)"},{"line_number":639,"context_line":"        except Exception as ex:"},{"line_number":640,"context_line":"            LOG.error(_(\u0027Failed to create security group rule %(sg)s,\u0027"},{"line_number":641,"context_line":"                      \u0027error: %(err)s\u0027), {\u0027sg\u0027: rule, \u0027err\u0027: ex})"},{"line_number":642,"context_line":"            super(MidonetPluginV2, self).delete_security_group_rule("},{"line_number":643,"context_line":"                context, rule[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2FufM%3D","line":640,"in_reply_to":"AAAAUX%2F%2BdEs%3D","updated":"2014-02-25 19:30:22.000000000","message":"Done","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":687,"context_line":""},{"line_number":688,"context_line":"        super(MidonetPluginV2, self).delete_security_group_rule(context,"},{"line_number":689,"context_line":"                                                                sg_rule_id)"},{"line_number":690,"context_line":"        self.mido_api.delete_security_group_rule(sg_rule_id)"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"        LOG.info(_(\"MidonetPluginV2.delete_security_group_rule exiting: \""},{"line_number":693,"context_line":"                   \"id\u003d%r\"), id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdEY%3D","line":690,"updated":"2014-02-21 03:04:23.000000000","message":"Shouldnt this be call ahead of 688?","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"6d44c40d14758b62d0d71e5fa8a9b91774a2f2a7","unresolved":false,"context_lines":[{"line_number":687,"context_line":""},{"line_number":688,"context_line":"        super(MidonetPluginV2, self).delete_security_group_rule(context,"},{"line_number":689,"context_line":"                                                                sg_rule_id)"},{"line_number":690,"context_line":"        self.mido_api.delete_security_group_rule(sg_rule_id)"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"        LOG.info(_(\"MidonetPluginV2.delete_security_group_rule exiting: \""},{"line_number":693,"context_line":"                   \"id\u003d%r\"), id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2Fkng%3D","line":690,"in_reply_to":"AAAAU3%2F%2Fuek%3D","updated":"2014-02-25 21:16:32.000000000","message":"Ideally what we want is a validator method in the parent class which is a part of the code currently within delete_security_group_rule.\n\nSo than the code would be like:\nsuper(MidonetPluginV2, self).delete_security_group_rule_precheck(context, sg_rule_id) \u003e\u003e\u003e New method.\n\nself.mido_api.delete_security_group_rule(sg_rule_id)\n\nsuper(MidonetPluginV2, self).delete_security_group_rule(context, sg_rule_id)\n\nWanna propose that after this code merges?","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":687,"context_line":""},{"line_number":688,"context_line":"        super(MidonetPluginV2, self).delete_security_group_rule(context,"},{"line_number":689,"context_line":"                                                                sg_rule_id)"},{"line_number":690,"context_line":"        self.mido_api.delete_security_group_rule(sg_rule_id)"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"        LOG.info(_(\"MidonetPluginV2.delete_security_group_rule exiting: \""},{"line_number":693,"context_line":"                   \"id\u003d%r\"), id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2Fuek%3D","line":690,"in_reply_to":"AAAAUX%2F%2BdEY%3D","updated":"2014-02-25 19:30:22.000000000","message":"I have it here on purpose so that all the validations implemented in the parent class are executed and passed before executing this.","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"}],"neutron/tests/unit/midonet/test_midonet_plugin.py":[{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self.module_patcher \u003d mock.patch.dict(\u0027sys.modules\u0027, modules)"},{"line_number":57,"context_line":"        self.module_patcher.start()"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        from midonetclient.neutron.client import MidonetClient"},{"line_number":60,"context_line":"        client_class \u003d MidonetClient"},{"line_number":61,"context_line":"        self.mock_class \u003d client_class()"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdT8%3D","line":59,"updated":"2014-02-21 03:04:23.000000000","message":"Please move this import statement to top of the file if its unconditional.","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self.module_patcher \u003d mock.patch.dict(\u0027sys.modules\u0027, modules)"},{"line_number":57,"context_line":"        self.module_patcher.start()"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        from midonetclient.neutron.client import MidonetClient"},{"line_number":60,"context_line":"        client_class \u003d MidonetClient"},{"line_number":61,"context_line":"        self.mock_class \u003d client_class()"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2FuWs%3D","line":59,"in_reply_to":"AAAAUX%2F%2BdT8%3D","updated":"2014-02-25 19:30:22.000000000","message":"Actually I had to put it here because this depends on the mock setup done right above.  I will update with comments to clarify this point.","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"b6343ac9f99821f6970f71850fd9548ae9648736","unresolved":false,"context_lines":[{"line_number":82,"context_line":"              service_plugins\u003dNone):"},{"line_number":83,"context_line":"        super(TestMidonetL3NatTestCase, self).setUp(plugin\u003dplugin,"},{"line_number":84,"context_line":"                                                    ext_mgr\u003dNone,"},{"line_number":85,"context_line":"                                                    service_plugins\u003dNone)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_floatingip_with_invalid_create_port(self):"},{"line_number":88,"context_line":"        self._test_floatingip_with_invalid_create_port(MIDONET_PLUGIN_NAME)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2BdSc%3D","line":85,"updated":"2014-02-21 03:04:23.000000000","message":"Not sure why this setUp is required. Please remove it.","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"},{"author":{"_account_id":156,"name":"Ryu Ishimoto","email":"ryu@midokura.com","username":"ryu-midokura"},"change_message_id":"a91f6aeb198c1551306c4f143bb9910158346002","unresolved":false,"context_lines":[{"line_number":82,"context_line":"              service_plugins\u003dNone):"},{"line_number":83,"context_line":"        super(TestMidonetL3NatTestCase, self).setUp(plugin\u003dplugin,"},{"line_number":84,"context_line":"                                                    ext_mgr\u003dNone,"},{"line_number":85,"context_line":"                                                    service_plugins\u003dNone)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_floatingip_with_invalid_create_port(self):"},{"line_number":88,"context_line":"        self._test_floatingip_with_invalid_create_port(MIDONET_PLUGIN_NAME)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2FuVY%3D","line":85,"in_reply_to":"AAAAUX%2F%2BdSc%3D","updated":"2014-02-25 19:30:22.000000000","message":"Done","commit_id":"f67055c29e2a82269f6ddfc138f64448e03c83c6"}]}
